Funcions GroupBy i Ungroup

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Agrupa i desagrupa els registres d'una taula.

Descripció

La funció GroupBy torna una taula amb els registres agrupats en funció dels valors d'una o més columnes. Els registres del mateix grup es col·loquen en un únic registre, amb una columna afegida que conté una taula imbricada de les columnes restants.

La funció Ungroup reverteix el procés GroupBy. Aquesta funció torna una taula, separant en registres independents tots els registres que s'havien agrupat.

Podeu agrupar els registres mitjançant l'ús de GroupBy, modificar la taula que torna i, a continuació, desagrupar els registres de la taula modificada mitjançant l'ús de Ungroup. Per exemple, podeu suprimir un grup de registres seguint aquest enfocament:

  • Utilitzeu la funció GroupBy.
  • Utilitzeu la funció Filter per suprimir tot el grup de registres.
  • Utilitzeu la funció Ungroup.

També podeu afegir resultats en funció d'una agrupació:

  • Utilitzeu la funció GroupBy.
  • Utilitzeu la funció AddColumns amb Suma, Mitjana i altres funcions agregades per afegir una columna nova, que és un agregat de les taules de grup.
  • Utilitzeu la funció DropColumns per suprimir la taula del grup.

Ungroup prova de preservar l'ordre original dels registres que s'han alimentat a GroupBy. Això no sempre és possible (per exemple, si la taula original conté registres en blanc).

Una taula és un valor del Power Apps, igual que una cadena o un número. Podeu especificar una taula com a argument per una funció i una funció pot retornar una taula. GroupBy i Ungroup no modifiquen una taula: agafen una taula com a argument i tornen una taula diferent. Vegeu Treballar amb taules per obtenir més informació.

Nota

Abans Power Apps de la versió 3.24042, els noms de columna s'especificaven amb una cadena de text utilitzant cometes dobles i, si es connectaven a un font de dades, també havien de ser noms lògics. Per exemple, es va utilitzar el nom lògic "cr43e_name" amb cometes dobles en lloc del nom de visualització Nom sense cometes. Per a SharePoint les fonts de dades de l'Excel i que contenen noms de columna amb espais, cada espai s'ha especificat amb "_x0020_", per exemple "Nom de la columna" com"Column_x0020_Name ". A partir d'aquesta versió, totes les aplicacions s'han actualitzat automàticament a la nova sintaxi descrita en aquest article.

Sintaxi

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

  • Taula: obligatori. Taula que s'agruparà.
  • ColumnName: obligatori. Els noms de columna de Taula pels quals agrupeu els registres. Aquestes columnes es converteixen en columnes a la taula resultant.
  • GroupColumnName: obligatori. Nom de columna per a l'emmagatzematge de dades de registre que no formen part de ColumnName.

Ungroup( Taula, GroupColumnName )

  • Taula: obligatori. Taula que es desagruparà.
  • GroupColumnName: obligatori. La columna que conté la configuració del registre de dades amb la funció GroupBy.

Exemples

Crear una col·lecció

  1. Afegiu un botó i definiu la propietat Text per tal que el botó mostri Original.
  2. Definiu la propietat OnSelect del botó Original a aquesta 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. Mentre manteniu premuda la tecla Alt, seleccioneu el botó Original.

    Acabeu de crear una col·lecció, anomenada CityPopulations, que conté aquestes dades:

    Exemple CityPopulations.

  2. Per visualitzar aquesta col·lecció, seleccioneu Col·leccions al menú Fitxer i, a continuació, seleccioneu la col·lecció CityPopulations. Apareixen els primers cinc registres de la col·lecció:

    Col·lecció CityPopulations

Agrupar registres

  1. Afegiu un altre botó i definiu-ne la propietat Text a aquesta "Agrupa".

  2. Definiu la propietat OnSelect d'aquest botó a aquesta fórmula:

    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities ) )

  3. Mentre manteniu premuda la tecla Alt, seleccioneu el botó Agrupa.

    Acabeu de crear una col·lecció, anomenada CitiesByCountry, en què els registres de la col·lecció anterior s'agrupen per la columna País.

    Ciutats agrupades

  4. Per visualitzar els primers cinc registres d'aquesta col·lecció, seleccioneu Col·leccions al menú Fitxer.

    Ciutats per país/regió.

  5. Per mostrar les poblacions de les ciutats d'un país/regió, seleccioneu la icona de taula a la columna Ciutats d'aquest país o regió (per exemple, Alemanya):

    Població: Alemanya

Filtrar i desagrupar registres

  1. Afegiu un altre botó i definiu la propietat Text per tal que el botó mostri Filtra.

  2. Definiu la propietat OnSelect d'aquest botó a aquesta fórmula:

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

  3. Mentre manteniu premuda la tecla Alt, seleccioneu el botó que heu afegit.

    Acabeu de crear una tercera col·lecció, anomenada CitiesByCountryFiltered, que només inclou els països que tenen una "e" en els seus noms (és a dir, ni França ni Itàlia).

    CitiesByCountryFiltered

  4. Afegiu un botó més i definiu la propietat Text per tal que el botó mostri "Desagrupa".

  5. Definiu la propietat OnSelect d'aquest botó a aquesta fórmula:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )

    Que resulta en:

    Ciutats per país/regió després de desagrupar-se.

Resultats agregats

Una altra operació que podem realitzar sobre una taula agrupada és recopilar els resultats. En aquest exemple, sumarem la població de les principals ciutats de cada país o regió.

  1. Afegiu un altre botó i definiu la propietat Text per tal que el botó mostri Suma.

  2. Definiu la propietat OnSelect del botó "Suma" a aquesta fórmula:

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Suma de poblacions de ciutats', Sum( ciutats, població ) ) )

    Que resulta en:

    Suma de ciutats

    AddColumns comença amb la col·lecció CitiesByCountry bàsica i afegeix una nova columna Suma de les poblacions de les ciutats. Els valors d'aquesta columna es calculen fila per fila, segons la fórmula Sum( Ciutats, Població ). AddColumns proporciona el valor de la columna Ciutats (una taula) de cada fila i Sum suma la Població de cada fila d'aquesta subtaula.

    Ara que tenim la suma que volem, podem utilitzar DropColumns per suprimir les subtaules.

  3. Afegiu un altre botó i definiu la propietat Text per tal que el botó mostri Només suma.

  4. Definiu la propietat OnSelect del botó "Només suma" a aquesta fórmula:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

    Que resulta en:

    Suma de països

    Heu de tenir en compte que no hem hagut de desagrupar aquesta taula.