Compartilhar via


Funções GroupBy e Ungroup

Aplica-se a: Aplicativos Canvas Aplicativos baseados em modelos Power Pages

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.

Desagrupar tenta preservar a ordem original dos registros que foram alimentados para 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. GroupBy e Ungroup não modificam uma tabela; em vez disso, eles pegam uma tabela como argumento e retornam uma tabela diferente. Consulte Trabalhando com tabelas para obter mais detalhes.

Observação

Antes da versão 3.24042 do Power Apps, os nomes das colunas eram especificados com uma cadeia de texto usando aspas duplas e, se conectados a uma fonte de dados também precisavam ser nomes lógicos. Por exemplo, o nome lógico "cr43e_name" entre aspas duplas foi usado em vez do nome de exibição Name sem aspas. Para fontes 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, todos os aplicativos foram atualizados automaticamente para a nova sintaxe descrita neste artigo.

Sintaxe

GroupBy( Tabela, NomeColuna1 [, NomeColuna2, ... ], NomeColunaGrupo )

  • Tabela - Obrigatório. A tabela a ser agrupada.
  • ColumnNames - 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).

Desagrupar( Tabela, GroupColumnName )

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

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(CidadesPorPaís, GroupBy(PopulaçõesDeCidades, País, Cidades))

  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(CidadesPorPaísFiltrado, Filtro(CidadesPorPaís, "e" em País))

  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 operação que podemos realizar em uma tabela agrupada é compilar 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, 'Soma das populações das cidades', Sum( Cidades, População ) ) )

    Que resulta em:

    Soma das cidades.

    AddColumns começa com a coleção base CitiesByCountry e adiciona uma nova coluna Soma das Populações da Cidade. Os valores dessa coluna são calculados linha a linha com a fórmula Sum( Cities, Population ). AddColumns fornece o valor da coluna Cities (uma tabela) para cada linha, e Sum soma a Population para cada linha desta 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, Cidades))

    Que resulta em:

    Soma dos países/regiões.

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