Funções GroupBy e Ungroup no Power Apps

Agrupa e desagrupa os registos de uma tabela.

Descrição

A função GroupBy devolve uma tabela com registos agrupados em conjunto com base nos valores de uma ou mais colunas. Os registos no mesmo grupo são colocados num único registo, com uma coluna adicionada que contém uma tabela aninhada das restantes colunas.

A função Ungroup inverte o processo GroupBy. Esta função devolve uma tabela, que divide em diferentes registos os que foram agrupados em conjunto.

Pode agrupar registos utilizando GroupBy, modificar a tabela que a devolve e, em seguida, desagrupa registos na tabela modificada ao utilizar Ungroup. Por exemplo, pode remover um grupo de registos com abordagem:

  • Utilize a função GroupBy.
  • Utilize a função Filter para remover o grupo de registos por completo.
  • Utilize a função Ungroup.

Também pode agregar os resultados com base num agrupamento:

  • Utilize a função GroupBy.
  • Utilize a função AddColumns com as funções Sum, Average e outras funções de agregação para adicionar uma nova coluna que seja uma agregação das tabelas de grupo.
  • Utilize a função DropColumns para largar a tabela de grupos.

Ungroup tenta preservar a ordem original dos registos fornecidos para GroupBy. Esta operação não é sempre possível (por exemplo, se a tabela original tiver registos blank).

Uma tabela é um valor no Power Apps, tal como uma cadeia ou um número. Pode especificar uma tabela como um argumento para uma função e uma função pode devolver uma tabela. GroupBy e Ungroup não modificam uma tabela; em vez disso, utilizam uma tabela como argumento e devolvem uma tabela diferente. Consulte trabalhar com tabelas para obter mais detalhes.

Sintaxe

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

  • Table – Obrigatório. Tabela a agrupar.

  • ColumnName(s) – Obrigatório. Os nomes das colunas na Tabela através da qual os registos são agrupados. Estas colunas tornam-se colunas na tabela resultante.

  • GroupColumnName - Obrigatório. O nome da coluna para o armazenamento de dados do registo que não estão em ColumnName(s).

    Nota

    Para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".

Ungroup( Table, GroupColumnName )

  • Table – Obrigatório. Tabela a desagrupar.

  • GroupColumnName - Obrigatório. A coluna que contém a configuração de dados do registo com a função GroupBy.

    Nota

    Para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".

Exemplos

Criar uma coleção

  1. Adicione um botão e defina a respetiva propriedade Text para que o botão mostre Original.
  2. Defina a propriedade OnSelect do botão Original para 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. Mantenha a tecla Alt premida e selecione o botão Original.

    Criou uma coleção, denominada CityPopulations, que contém estes dados:

  2. Para visualizar esta coleção, selecione Coleções no menu Ficheiro e, em seguida, selecione a coleção CityPopulations. São apresentados os cinco primeiros registos na coleção:

Agrupar registos

  1. Adicione outro botão e defina a respetiva propriedade Text como "Grupo".

  2. Defina a propriedade OnSelect deste botão para esta fórmula:

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

  3. Mantenha a tecla Alt premida e selecione o botão Grupo.

    Acabou de criar uma coleção, denominada CitiesByCountry, na qual os registos da coleção anterior estão agrupados pela coluna País.

  4. Para apresentar os registos primeiro cinco nesta coleção, selecione Coleções no menu Ficheiro.

  5. Para apresentar as populações de cidades num país, selecione o ícone de tabela na coluna Cidades coluna desse país (por exemplo, Alemanha):

Filtrar e desagrupar registos

  1. Adicione outro botão e defina a respetiva propriedade Text para que o botão mostre "Filtrar".

  2. Defina a propriedade OnSelect deste botão para esta fórmula:

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

  3. Mantenha a tecla Alt premida e selecione o botão que adicionou.

    Acabou de criar uma terceira coleção, designada CitiesByCountryFiltered, que inclui apenas os países com um "i" nos respetivos nomes (ou seja, não Espanha ou Itália).

  4. Adicione mais um botão e defina a respetiva propriedade Text para que o botão mostre "Desagrupar".

  5. Defina a propriedade OnSelect deste botão para esta fórmula:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, "Cidades" ) )

    Que resulta em:

Agregar os resultados

Outra ação que podemos fazer com uma tabela agrupada consiste em agregar os resultados. Neste exemplo, vamos somar a população das cidades principais de cada país.

  1. Adicione outro botão e defina a respetiva propriedade Text para que o botão mostre "Soma".

  2. Defina a propriedade OnSelect do botão "Soma" como esta fórmula:

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, "Soma da população das cidades", Sum(Cidades, População ) ) )

    Que resulta em:

    AddColumns começa com a coleção de base CitiesByCountry e adiciona uma nova coluna Soma da população das cidades. Os valores desta coluna são calculados linha por linha, com base na fórmula Sum(cidades, população). AddColumns fornece o valor da coluna Cidades (uma tabela) para cada linha e Sum adiciona a população de cada linha desta subtabela.

    Agora que temos a soma pretendida, podemos utilizar DropColumns para remover as subtabelas.

  3. Adicione outro botão e defina a propriedade Texto para que o botão mostre "SumOnly".

  4. Defina a propriedade OnSelect do botão "SumOnly" para esta fórmula:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, "Cidades" ) )

    Que resulta em:

    Repare que não foi preciso desagrupar esta tabela.

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).