Funções GroupBy e Ungroup
Aplica-se a: Aplicativos de tela Aplicativos controlados por modelo Power Pages
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 Sum, Average e outras funções de agregação para adicionar uma nova coluna, que é 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 registros que foram alimentados 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, tomam uma tabela como argumento e retornam uma tabela diferente. Consulte trabalhar com tabelas para obter mais detalhes.
Nota
Antes da versão 3.24042 do Power Apps, os nomes das colunas eram especificados com uma cadeia de texto com aspas duplas e, se estivessem ligados a uma origem de dados também precisavam de ser nomes lógicos. Por exemplo, foi utilizado o nome lógico "cr43e_name" com aspas em vez do nome a apresentar Nome sem aspas. Para as origens de dados do SharePoint e do Excel que contêm nomes de colunas com espaços, cada espaço foi especificado com "_x0020_", por exemplo, "Nome da Coluna" como "Column_x0020_Name". Após esta versão, todas as aplicações foram atualizadas automaticamente para a nova sintaxe descrita neste artigo.
Sintaxe
GroupBy( Tabela,ColumnName1 [, ColumnName2, ... ], GroupColumnName)
- Tabela - Obrigatório. Tabela a agrupar.
- ColumnNames - 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).
Ungroup( Tabela,GroupColumnName )
- Tabela - 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.
Exemplos
Criar uma coleção
- Adicione um botão e defina a respetiva propriedade Text para que o botão mostre Original.
- 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}
)
Mantenha a tecla Alt premida e selecione o botão Original.
Criou uma coleção, denominada CityPopulations, que contém estes dados:
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
Adicione outro botão e defina a respetiva propriedade Text como "Grupo".
Defina a propriedade OnSelect deste botão para esta fórmula:
ClearCollect( CitiesByCountry, GroupBy( CidadesPopulações, País, Cidades )
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.
Para apresentar os registos primeiro cinco nesta coleção, selecione Coleções no menu Ficheiro.
Para apresentar as populações de cidades num país/região, selecione o ícone de tabela na coluna Cidades coluna desse país/região (por exemplo, Alemanha):
Filtrar e desagrupar registos
Adicione outro botão e defina a respetiva propriedade Text para que o botão mostre "Filtrar".
Defina a propriedade OnSelect deste botão para esta fórmula:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" no País )
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).
Adicione mais um botão e defina a respetiva propriedade Text para que o botão mostre "Desagrupar".
Defina a propriedade OnSelect deste botão para esta fórmula:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cidades )
Que resulta em:
Agregar os resultados
Outra operação que podemos executar numa tabela agrupada é compilar os resultados. Neste exemplo, vamos somar a população das cidades principais de cada país/região.
Adicione outro botão e defina a respetiva propriedade Text para que o botão mostre "Soma".
Defina a propriedade OnSelect do botão "Soma" como esta fórmula:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Soma das Populações da Cidade', Soma( Cidades, População ) )
Que resulta em:
AddColumns começa com a coleção base CitiesByCountry e adiciona uma nova coluna Soma das Populações da Cidade. 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 Soma soma a População para cada linha desta subtabela.
Agora que temos a soma pretendida, podemos utilizar DropColumns para remover as subtabelas.
Adicione outro botão e defina a propriedade Text para que o botão mostre "SumOnly".
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.