Funcións GroupBy e Desagrupar

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

Rexistros de grupos e desagrupacións dunha táboa.

Descripción

A función GrupoBy devolve unha táboa cos rexistros agrupados en función dos valores dunha ou máis columnas. Os rexistros do mesmo grupo colócanse nun único rexistro, engadindo unha columna que contén unha táboa aniñada das columnas restantes.

A función Desagrupar inverte o proceso GrupoBy. Esta función devolve unha táboa, dividindo en rexistros separados todos os rexistros agrupados.

Pode agrupar rexistros usando GrupoBy, modificar a táboa que devolve e, a continuación, desagrupar os rexistros da táboa modificada mediante Desagrupar. Por exemplo, pode eliminar un grupo de rexistros seguindo este enfoque:

  • Use a función GrupoBy.
  • Use a función Filter para eliminar todo o grupo de rexistros.
  • Use a función Desagrupar.

Tamén pode agregar resultados en función dunha agrupación:

  • Use a función GrupoBy.
  • Use a función Engadir columnas con Suma, Media, e outras funcións agregadas para engadir unha nova columna, que é un agregado das táboas de grupos.
  • Use a función DropColumns función para soltar a táboa de grupos.

Desagrupar tenta conservar a orde orixinal dos rexistros dos que se enviaron a GrupoBy. Isto non sempre é posible (por exemplo, se a táboa orixinal contén rexistros en branco).

Unha táboa é un valor en Power Apps, ao igual que unha cadea ou un número. Pode especificar unha táboa como argumento para unha función e as funcións poden devolver unha táboa. GroupBy e Desagrupar non modifican unha táboa; no seu lugar toman unha táboa como argumento e devolven unha táboa diferente. Para obter máis detalles, consulte Traballar con táboas.

Nota

En Power Apps anterior á versión 3.24042, os nomes das columnas eran especificados cunha cadea de texto usando comiñas dobres e, se estaban conectados a un orixe de datos, tamén debían ser nomes lóxicos. Por exemplo, utilizouse o nome lóxico "cr43e_name" con comiñas dobres en lugar do nome para mostrar Nome sen comiñas. Para fontes de datos SharePoint e Excel que conteñen nomes de columnas con espazos, cada espazo especificouse con "_x0020_", por exemplo "Nome da columna" as "Nome_x0020_columna". Despois desta versión, todas as aplicacións actualizáronse automaticamente á nova sintaxe descrita neste artigo.

Sintaxe

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

  • Table - Obrigatorio. Táboa a agrupar.
  • ColumnName(s) - Obrigatorio. Os nomes de columnas de Táboa mediante os que agrupar rexistros. Estas columnas convértense en columnas da táboa resultante.
  • GroupColumnName - Obrigatorio. O nome da columna para o almacenamento de datos de rexistros que non se atopan en ColumnName(s).

Ungroup( Table, GroupColumnName )

  • Table - Obrigatorio. Táboa a desagrupar.
  • GroupColumnName - Obrigatorio. A columna que contén a configuración de datos do rexistro coa función GrupoBy.

Exemplos

Crear unha colección

  1. Engada un botón e configure a súa propiedade Text para que o botón mostre Orixinal.
  2. Axuste a propiedade OnSelect do botón Orixinal nesta 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. Seleccione o botón Orixinal mantendo premida a tecla Alt.

    Acaba de crear unha colección chamada CityPopulations que contén estes datos:

    Exemplo de CityPopulations.

  2. Para ver esta colección, seleccione Coleccións no menú Ficheiro e logo seleccione a colección CityPopulations. Aparecerán os cinco primeiros rexistros da colección:

    Colección CityPopulations.

Rexistros de grupos

  1. Engada outro botón e axuste a súa propiedade Text en "Grupo".

  2. Axuste a propiedade OnSelect deste botón nesta fórmula:

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

  3. Seleccione o botón Agrupar mantendo premida a tecla Alt.

    Acaba de crear unha colección, chamada CitiesByCountry, na que os rexistros da colección anterior están agrupados por columna de País.

    Cidades agrupadas.

  4. Para ver os primeiros cinco rexistros desta colección, seleccione Coleccións no menú Ficheiro.

    Cidades por país/rexión.

  5. Para mostrar as poboacións das cidades dun país/rexión, seleccione a icona da táboa na columna Cidades dese país/rexión (por exemplo, Alemaña):

    Poboación: Alemaña.

Filtrar e desagrupar rexistros

  1. Engada outro botón e configure a súa propiedade Text para que o botón mostre "Filtro".

  2. Axuste a propiedade OnSelect deste botón nesta fórmula:

    ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )

  3. Seleccione o botón que engadiu mantendo premida a tecla Alt.

    Acaba de crear unha terceira colección, chamada CitiesByCountryFiltered, que inclúe só aqueles países que teñen unha "e" nos seus nomes (é dicir, non inclúe Francia nin Italia).

    CitiesByCountryFiltered.

  4. Engada un botón máis e configure a súa propiedade Text para que o botón mostre "Desagrupar".

  5. Axuste a propiedade OnSelect deste botón nesta fórmula:

    ClearCollect (Poboacións da cidade non agrupadas, Desagrupar (CidadesPorPaísFiltradas, Cidades))

    Que dá como resultado:

    Cidades por país/rexión despois de desagrupar.

Resultados agregados

Outra operación que podemos realizar nunha táboa agrupada é compilar os resultados. Neste exemplo, sumaremos a poboación das principais cidades de cada país/rexión.

  1. Engada outro botón e configure a súa propiedade Text para que o botón mostre "Sumar".

  2. Axuste a propiedade OnSelect do botón "Sumar" nesta fórmula:

    ClearCollect( CityPopulationsSum, AddColumns(CitiesByCountry, 'Suma de poboacións de cidades', Sum(Cities, Population) ) )

    Que dá como resultado:

    Suma de cidades.

    AddColumns comeza coa colección CitiesByCountry base e engade unha nova columna de Suma das poboacións de cidade. Os valores desta columna calcúlanse fila por fila, en función da fórmula Sum( Cities, Population ). AddColumns fornece o valor da columna Cidades (unha táboa) para cada fila e Sum engade a Poboación para cada fila desta táboa secundaria.

    Agora que temos a suma que queremos, podemos usar DropColumns para eliminar as táboas secundarias.

  3. Engada outro botón e configure a súa propiedade Text para que o botón mostre "SumOnly".

  4. Axuste a propiedade OnSelect do botón "SumOnly" nesta fórmula:

    ClearCollect( CityPopulationsSumOnly, DropColumns(CityPopulationsSum, Cities) )

    Que dá como resultado:

    Suma de países.

    Teña en conta que non tivemos que desagrupar esta táboa.