Funções GroupBy e Ungroup no PowerAppsGroupBy and Ungroup functions in PowerApps

Agrupa e desagrupa registros de uma tabela.Groups and ungroups records of a table.

DescriçãoDescription

A função GroupBy retorna uma tabela com registros agrupados de acordo com os valores em uma ou mais colunas.The GroupBy function returns a table with records grouped together based on the values in one or more columns. 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.Records in the same group are placed into a single record, with a column added that holds a nested table of the remaining columns.

A função Ungroup reverte o processo da função GroupBy.The Ungroup function reverses the GroupBy process. Essa função retorna uma tabela, separando todos os registros agrupados.This function returns a table, breaking into separate records any records that were grouped together.

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.You can group records by using GroupBy, modify the table that it returns, and then ungroup records in the modified table by using Ungroup. Por exemplo, você pode usar a seguinte abordagem para remover um grupo de registros:For example, you can remove a group of records by following this approach:

  • Use a função GroupBy.Use the GroupBy function.
  • Use a função Filter para remover o grupo de registros inteiro.Use the Filter function to remove the entire group of records.
  • Use a função Ungroup.Use the Ungroup function.

Você também pode agregar resultados com base em um agrupamento:You can also aggregate results based on a grouping:

  • Use a função GroupBy.Use the GroupBy function.
  • 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 the AddColumns function with Sum, Average, and other aggregate functions to add a new column which is an aggregate of the group tables.
  • Use a função DropColumns para remover a tabela do grupo.Use the DropColumns function to drop the group table.

A função Ungroup tenta preservar a ordem original dos registros que foram adicionados a GroupBy.Ungroup tries to preserve the original order of the records that were fed to GroupBy. Isso nem sempre é possível (por exemplo, se a tabela original contiver registros em branco).This isn't always possible (for example, if the original table contains blank records).

Uma tabela é um valor no PowerApps, assim como uma cadeia de caracteres ou um número.A table is a value in PowerApps, just like a string or a number. Você pode especificar uma tabela como um argumento para uma função, e uma função pode retornar uma tabela.You can specify a table as an argument for a function, and a function can return a table. As funções GroupBy e Ungroup não modificam uma tabela; em vez disso, elas a consideram um argumento e retornam uma tabela diferente.GroupBy and Ungroup don't modify a table; instead they take a table as an argument and return a different table. Consulte Trabalhando com tabelas para obter mais detalhes.See working with tables for more details.

SintaxeSyntax

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

  • Table – Obrigatório.Table - Required. A tabela a ser agrupada.Table to be grouped.
  • ColumnName(s) – Obrigatório.ColumnName(s) - Required. Os nomes de coluna em Table pelos quais os registros são agrupados.The column names in Table by which to group records. Essas colunas são transformadas nas colunas da tabela resultante.These columns become columns in the resulting table.
  • GroupColumnName – Obrigatório.GroupColumnName - Required. O nome da coluna para o armazenamento de dados de registro que não está em ColumnName(s).The column name for the storage of record data not in the 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_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".For example, specify "Column Name" as "Column_x0020_Name".

Ungroup( Table, GroupColumnName )Ungroup( Table, GroupColumnName )

  • Table – Obrigatório.Table - Required. A tabela a ser desagrupada.Table to be ungrouped.
  • GroupColumnName – Obrigatório.GroupColumnName - Required. A coluna que contém a configuração dos dados do registro com a função GroupBy.The column that contains the record data setup with the GroupBy function.

    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_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".For example, specify "Column Name" as "Column_x0020_Name".

ExemplosExamples

Criar uma coleçãoCreate a collection

  1. Adicione um botão e defina sua propriedade Text para que ele mostre Original.Add a button, and set its Text property so that the button shows Original.
  2. Defina a propriedade OnSelect do botão Original com esta fórmula:Set the OnSelect property of the Original button to this formula:

    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})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.Press F5, select the Original button, and then press Esc.

    Você acaba de criar uma coleção, chamada CityPopulations, que contém estes dados:You just created a collection, named CityPopulations, that contains this data:

  4. Para exibir essa coleção, selecione Coleções no menu Arquivo e, em seguida, a coleção CityPopulations.To display this collection, select Collections on the File menu and then select the CityPopulations collection. Os cinco primeiros registros da coleção são exibidos:The first five records in the collection appear:

Agrupar registrosGroup records

  1. Adicione outro botão e defina sua propriedade Text como "Group".Add another button, and set its Text property to "Group".
  2. Defina a propriedade OnSelect desse botão com esta fórmula:Set the OnSelect property of this button to this formula:

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

  3. Pressione F5, selecione o botão Agrupar e pressione Esc.Press F5, select the Group button, and then press Esc.

    Você acaba de criar uma coleção, chamada CitiesByCountry, na qual os registros da coleção anterior foram agrupados pela coluna Country.You just created a collection, named CitiesByCountry, in which the records of the previous collection are grouped by the Country column.

  4. Para exibir os cinco primeiros registros desta coleção, selecione Coleções no menu Arquivo.To display the first five records in this collection, select Collections on the File menu.

  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):To display the populations of cities in a country, select the table icon in the Cities column for that country (for example, Germany):

Filtrar e desagrupar registrosFilter and ungroup records

  1. Adicione outro botão e defina sua propriedade Text para que ele mostre "Filtrar".Add another button, and set its Text property so that the button shows "Filter".
  2. Defina a propriedade OnSelect desse botão com esta fórmula:Set the OnSelect property of this button to this formula:

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

  3. Pressione F5, selecione o botão que você adicionou e pressione Esc.Press F5, select the button that you added, and then press 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).You just created a third collection, named CitiesByCountryFiltered, that includes only those countries that have an "e" in their names (that is, not Spain or Italy).

  4. Adicione mais um botão e defina sua propriedade Text para que ele mostre "Desagrupar".Add one more button, and set its Text property so that the button shows "Ungroup".
  5. Defina a propriedade OnSelect desse botão com esta fórmula:Set the OnSelect property of this button to this formula:

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

    Que resulta em:Which results in:

Agregar resultadosAggregate results

Outra coisa que podemos fazer com uma tabela agrupada é agregar os resultados.Something else we can do with a grouped table is to aggregate the results. Neste exemplo, somaremos a população das principais cidades de cada país.In this example, we will sum the population of the major cities in each country.

  1. Adicione outro botão e defina sua propriedade Text para que ele mostre "Somar".Add another button, and set its Text property so that the button shows "Sum".
  2. Defina a propriedade OnSelect do botão "Somar" com esta fórmula:Set the OnSelect property of the "Sum" button to this formula:

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

    Que resulta em:Which results in:

    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.AddColumns starts with the base CitiesByCountry collection and adds a new column Sum of City Populations. Os valores dessa coluna são calculados linha a linha com a fórmula Sum( Cities, Population ).This column's values are calculated row-by-row, based on the formula 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.AddColumns provides the value of the Cities column (a table) for each row, and Sum adds up the Population for each row of this sub table.

  3. Agora que temos a soma, podemos usar DropColumns para remover as subtabelas.Now that we have the sum that we want, we can use DropColumns to remove the sub tables. Modifique a propriedade OnSelect para usar esta fórmula:Modify the OnSelect property to use this formula:

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

    Que resulta em:Which results in:

    Observe que não é necessário desagrupar esta tabela.Note that we did not need to ungroup this table.