Funciones GroupBy y Ungroup

Se aplica a: Aplicaciones de Canvas Aplicaciones basadas en modelos Power Pages

Agrupa y desagrupa registros de una tabla.

Description

La función GroupBy devuelve una tabla con registros agrupados en función de los valores de una o varias columnas. Los registros del mismo grupo se colocan en un único registro, con una columna agregada que contiene una tabla anidada de las columnas restantes.

La función Ungroup invierte el proceso realizado por GroupBy. Esta función devuelve una tabla y divide en registros individuales todos los registros que estaban agrupados.

Puede agrupar los registros mediante GroupBy, modificar la tabla que devuelve y, a continuación, desagrupar los registros de la tabla modificada mediante la función Ungroup. Por ejemplo, puede quitar un grupo de registros siguiendo este enfoque:

  • Use la función GroupBy.
  • Use la función Filter para quitar todo el grupo de registros.
  • Use la función Ungroup.

También puede agregar los resultados en función de una agrupación:

  • Use la función GroupBy.
  • Use la función AddColumns con Sum, Average y otras funciones de agregación para crear una nueva columna que sea un agregado de las tablas de grupos.
  • Use la función DropColumns para quitar la tabla de grupo.

Ungroup intenta preservar el orden original de los registros que se introdujeron en GroupBy. Esto no siempre es posible (por ejemplo, si la tabla original contiene registros blank).

Una tabla es un valor en Power Apps, como una cadena o un número. Puede especificar una tabla como argumento para una función y una función puede devolver una tabla. GroupBy y Ungroup no modifican una tabla; en su lugar, toman una tabla como argumento y devuelven una tabla diferente. Consulte cómo trabajar con tablas para más detalles.

Nota

En Power Apps antes de la versión 3.24042, los nombres de las columnas se especificaban con una cadena de texto usando comillas dobles y, si estaban conectadas a un origen de datos también debían ser nombres lógicos. Por ejemplo, se utilizó el nombre lógico "cr43e_name" con comillas dobles en lugar del nombre Name sin comillas. Para orígenes de datos de SharePoint y Excel que contienen nombres de columnas con espacios, cada espacio se especificó con "_x0020_", por ejemplo "Column Name" como "Column_x0020_Name". Después de esta versión, todas las aplicaciones se actualizaron automáticamente a la nueva sintaxis descrita en este artículo.

Sintaxis

GroupBy( Tabla, NombreColumna1 [, NombreColumna2 , ... ], Nombre de columna de grupo )

  • Tabla - Obligatorio. Tabla que se desea agrupar.
  • ColumnNames - Obligatorio. Los nombres de columna en Table mediante los que se van a agrupar los registros. Estas columnas se convierten en columnas en la tabla resultante.
  • GroupColumnName : Obligatorio. El nombre de la columna para el almacenamiento de datos de registro que no están en el ColumnName(s).

Desagrupar( Tabla, NombreDeColumnaDeGrupo )

  • Tabla - Obligatorio. Tabla que se desea desagrupar.
  • GroupColumnName : Obligatorio. La columna que contiene la configuración de los datos de registro con la función GroupBy.

Ejemplos

Cree una recopilación

  1. Agregue un botón y establezca su propiedad Text para que el botón muestre Original.
  2. Establezca la propiedad OnSelect del botón Original en esta fórmula:
ClearCollect( CityPopulations,
    { City: "London",    Country: "United Kingdom", Population: 8615000},
    { City: "Berlin",    Country: "Germany",        Population: 3562000},
    { City: "Madrid",    Country: "Spain",          Population: 3165000},
    { City: "Rome",      Country: "Italy",          Population: 2874000},
    { City: "Paris",     Country: "France",         Population: 2273000},
    { City: "Hamburg",   Country: "Germany",        Population: 1760000},
    { City: "Barcelona", Country: "Spain",          Population: 1602000},
    { City: "Munich",    Country: "Germany",        Population: 1494000},
    { City: "Milan",     Country: "Italy",          Population: 1344000}
)
  1. Mientras mantiene presionada la tecla Alt, seleccione el botón Original.

    Acaba de crear una colección, que se denomina CityPopulations, que contiene estos datos:

    Ejemplo de CityPopulations.

  2. Para mostrar esta colección, seleccione Colecciones en el menú Archivo y, a continuación, seleccione la colección CityPopulations. Aparecerán los cinco primeros registros de la colección:

    Colección CityPopulations.

Agrupar registros

  1. Agregue otro botón y establezca su propiedad Text en "Group".

  2. Establezca la propiedad OnSelect de este botón en esta fórmula:

    ClearCollect( CiudadesPorPaís, AgruparPor( PoblacionesDeCiudades, País, Ciudades ) )

  3. Mientras mantiene presionada la tecla Alt, seleccione el botón Grupo.

    Acaba de crear una recopilación denominada CitiesByCountry, en la que se agrupan los registros de la colección anterior mediante la columna Country.

    Ciudades agrupadas.

  4. Para mostrar los primeros cinco registros de esta colección, seleccione Colecciones en el menú Archivo.

    Ciudades por paísj o región.

  5. Para mostrar la población de las ciudades de un país o región, seleccione el icono de tabla de la columna Cities de ese país o región (por ejemplo, Alemania):

    Población - Alemania.

Filtrado y desagrupación de registros

  1. Agregue otro botón y establezca su propiedad Text para que el botón muestre "Filtrar".

  2. Establezca la propiedad OnSelect de este botón en esta fórmula:

    ClearCollect(CitiesByCountryFiltered, Filter(CitiesByCountry, "e" en País) )

  3. Mientras mantiene presionada la tecla Alt, seleccione el botón que ha agregado.

    Acaba de crear una tercera colección denominada CitiesByCountryFiltered, que incluye solo aquellos países que tienen una "e" en sus nombres (es decir, no España o Italia, por ejemplo).

    CitiesByCountryFiltered.

  4. Agregue un botón más y establezca su propiedad Text para que el botón muestre "Desagrupar".

  5. Establezca la propiedad OnSelect de este botón en esta fórmula:

    ClearCollect( PoblacionesDeCiudadesDesagrupadas, Desagrupar( CiudadesPorPaísFiltradas, Ciudades ) )

    Que da como resultado:

    Ciudades por país o región después de desagrupar.

Agregación de resultados

Otra operación que podemos realizar en una tabla agrupada es compilar los resultados. En este ejemplo, se sumará la población de las ciudades más importantes de cada país/región.

  1. Agregue otro botón y establezca su propiedad Text para que el botón muestre "Sum".

  2. Establezca la propiedad OnSelect del botón "Sum" en esta fórmula:

    ClearCollect(CityPopulationsSum, AddColumns(CitiesByCountry, 'Suma de las poblaciones de las ciudades', Sum(Cities, Population) ) )

    Que da como resultado:

    Suma de ciudades.

    AddColumns comienza con la colección base CitiesByCountry y agrega una nueva columna Suma de poblaciones de ciudades. Los valores de esta columna se calculan fila por fila según la fórmula Sum( Cities, Population ). AddColumns proporciona el valor de la columna Ciudades (una tabla) para cada fila, y Sum suma la Población para cada fila de esta subtabla.

    Ahora que tenemos la suma que queremos, podemos usar la función DropColumns para quitar las subtablas.

  3. Agregue otro botón y establezca su propiedad Text para que el botón muestre "SumOnly".

  4. Establezca la propiedad OnSelect del botón "SumOnly" en esta fórmula:

    ClearCollect(SumaPoblacionesCiudadSolo, DropColumns(SumaPoblacionesCiudad, Ciudades) )

    Que da como resultado:

    Suma de países.

    Tenga en cuenta que no fue necesario desagrupar esta tabla.