Agrupa e desagrupa registros de uma tabela.

Descrição

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 PowerApps, 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).

    Observação: 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.

    Observação: 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})

  3. Pressione F5, selecione o botão Original e pressione Esc.

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

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

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. Pressione F5, selecione o botão Agrupar e pressione Esc.

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

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

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

Filtrar e desagrupar registros

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

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

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

  3. Pressione F5, selecione o botão que você adicionou e pressione Esc.

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

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

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

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

    Que resulta em:

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.

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

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

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

    Que resulta em:

    A função AddColumns começa com a coleção base CitiesByCountry e adiciona a nova coluna Sum of City Populations, com a soma das populações das cidades. 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.

  3. Agora que temos a soma, podemos usar DropColumns para remover as subtabelas. Modifique a propriedade OnSelect para usar esta fórmula:

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

    Que resulta em:

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