Funções GroupBy e Ungroup

Aplica-se a: Aplicações de tela Aplicações condicionadas por modelo

Agrupa e desagrupa os registos de uma tabela.

Description

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 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.

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 )

  • 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).

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.

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:

    Exemplo CityPopulations.

  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:

    Coleção CityPopulations.

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.

    Cidades agrupadas.

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

    Cidades por país/região.

  5. 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):

    População - 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).

    CitiesByCountryFiltered.

  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, Cities ) )

    Que resulta em:

    Cidades por país/região após desagrupar.

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.

  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, 'Sum of City Populations', Sum( Cities, Population ) ) )

    Que resulta em:

    Soma das cidades.

    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 Text para que o botão mostre "SumOnly".

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

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

    Que resulta em:

    Soma dos Países.

    Repare que não foi preciso desagrupar esta tabela.