Funções GroupBy e Ungroup

Aplica-se a: Aplicativos de tela Aplicativos baseados em modelo

Agrupa e desagrupa registros de uma tabela.

Description

A função GroupBy retorna uma tabela com registros agrupados de acordo com os valores em uma ou mais colunas. Os registros de um mesmo grupo são incluídos em um único registro junto com uma coluna que contém uma tabela aninhada das colunas restantes.

A função Ungroup reverte o processo da função GroupBy. Essa função retorna uma tabela, separando todos os registros agrupados.

Você pode usar a função GroupBy para agrupar registros, modificar a tabela retornada e, em seguida, usar a função Ungroup para desagrupar os registros na tabela modificada. Por exemplo, você pode usar a seguinte abordagem para remover um grupo de registros:

  • Use a função GroupBy.
  • Use a função Filter para remover o grupo de registros inteiro.
  • Use a função Ungroup.

Você também pode agregar resultados com base em um agrupamento:

  • Use a função GroupBy.
  • Use 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 do grupo.
  • Use a função DropColumns para remover a tabela do grupo.

A função Ungroup tenta preservar a ordem original dos registros que foram adicionados a GroupBy. Isso nem sempre é possível (por exemplo, se a tabela original contiver registros em branco).

Uma tabela é um valor no Power Apps, assim como uma cadeia de caracteres ou um número. Você pode especificar uma tabela como um argumento para uma função, e uma função pode retornar uma tabela. As funções GroupBy e Ungroup não modificam uma tabela; em vez disso, elas a consideram um argumento e retornam uma tabela diferente. Consulte Trabalhando com tabelas para obter mais detalhes.

Sintaxe

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

  • Table - obrigatório. A tabela a ser agrupada.

  • ColumnName(s) - obrigatório. Os nomes de coluna em Table pelos quais os registros são agrupados. Essas colunas são transformadas nas colunas da tabela resultante.

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

    Nota

    Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".

Ungroup( Table, GroupColumnName )

  • Table - obrigatório. A tabela a ser desagrupada.

  • GroupColumnName - obrigatório. A coluna que contém a configuração dos dados do registro com a função GroupBy.

    Nota

    Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".

Exemplos

Criar uma coleção

  1. Adicione um botão e defina sua propriedade Text para que ele mostre Original.
  2. Defina a propriedade OnSelect do botão Original com 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. Enquanto mantém pressionada a tecla Alt, selecione o botão Original.

    Você acaba de criar uma coleção, chamada CityPopulations, que contém estes dados:

    Exemplo de CityPopulations.

  2. Para exibir essa coleção, selecione Coleções no menu Arquivo e, em seguida, a coleção CityPopulations. Os cinco primeiros registros da coleção são exibidos:

    Coleção CityPopulations.

Agrupar registros

  1. Adicione outro botão e defina sua propriedade Text como "Group".

  2. Defina a propriedade OnSelect desse botão com esta fórmula:

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

  3. Enquanto mantém pressionada a tecla Alt, selecione o botão Grupo.

    Você acaba de criar uma coleção, chamada CitiesByCountry, na qual os registros da coleção anterior foram agrupados pela coluna Country.

    Cidades agrupadas.

  4. Para exibir os cinco primeiros registros desta coleção, selecione Coleções no menu Arquivo.

    Cidades por país/região.

  5. Para exibir as populações das cidades de um país/região, selecione o ícone de tabela na coluna Cidades desse país/região (por exemplo, Alemanha):

    População - Alemanha.

Filtrar e desagrupar registros

  1. Adicione outro botão e defina sua propriedade Text para que ele mostre "Filter".

  2. Defina a propriedade OnSelect desse botão com esta fórmula:

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

  3. Enquanto mantém pressionada a tecla Alt, selecione o botão que você adicionou.

    Você acaba de criar uma terceira coleção, chamada CitiesByCountryFiltered, que inclui apenas os países que possuem a letra "e" em seus nomes (ou seja, Spain e Italy não foram incluídos nela).

    CitiesByCountryFiltered.

  4. Adicione mais um botão e defina sua propriedade Text para que ele mostre "Ungroup".

  5. Defina a propriedade OnSelect desse botão com esta fórmula:

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

    Que resulta em:

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

Agregar resultados

Outra coisa que podemos fazer com uma tabela agrupada é agregar os resultados. Neste exemplo, somaremos a população das principais cidades de cada país/região.

  1. Adicione outro botão e defina sua propriedade Text para que ele mostre "Sum".

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

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, "Sum of City Populations", Sum( Cities, Population ) ) )

    Que resulta em:

    Soma das cidades.

    A função AddColumns começa com a coleção base CitiesByCountry e adiciona uma nova coluna Sum of City Populations. Os valores dessa coluna são calculados linha a linha com a fórmula Sum( Cities, Population ). A função AddColumns fornece o valor da coluna Cities (uma tabela) para cada linha, e Sum soma os valores em cada linha de Population nesta subtabela.

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

  3. Adicione outro botão e defina a propriedade Text para que ele 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/regiões.

    Observe que não foi necessário desagrupar esta tabela.