Funciones GroupBy y Ungroup

Se aplica a: Aplicaciones de lienzo Aplicaciones basadas en modelos

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 agregado para agregar 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 conservar el orden original de los registros que se proporcionan a 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 lugar de eso, toman una tabla como argumento y devuelven una tabla diferente. Consulte cómo trabajar con tablas para más detalles.

Sintaxis

GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )

  • Table - obligatorio. Tabla que se desea agrupar.

  • ColumnName(s) (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 - requerido. El nombre de la columna para el almacenamiento de datos de registro que no están en el ColumnName(s).

    Nota

    En el caso de orígenes de datos de SharePoint y Excel que contengan nombres de columna con espacios, especifique cada uno de ellos como "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".

Ungroup( Table, GroupColumnName )

  • Table - obligatorio. Tabla que se desea desagrupar.

  • GroupColumnName - requerido. La columna que contiene la configuración de los datos de registro con la función GroupBy.

    Nota

    En el caso de orígenes de datos de SharePoint y Excel que contengan nombres de columna con espacios, especifique cada uno de ellos como "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".

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( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )

  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" in Country ) )

  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( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, "Cities" ) )

    Que da como resultado:

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

Agregación de resultados

Otra cosa que podemos hacer con una tabla agrupada consiste en agregar los resultados. En este ejemplo, se sumará la población de las ciudades más importantes de cada país o 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, "Sum of City Populations", Sum( Cities, Population ) ) )

    Que da como resultado:

    Suma de ciudades.

    AddColumns comienza con la colección básica de CitiesByCountry y agrega una nueva columna denominada Sum of City Populations. 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 Cities (una tabla) para cada fila y Sum el valor de Population de 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( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, "Cities" ) )

    Que da como resultado:

    Suma de países.

    Tenga en cuenta que no fue necesario desagrupar esta tabla.