Функции GroupBy и Ungroup в PowerAppsGroupBy and Ungroup functions in PowerApps

Эти функции группируют записи таблицы и отменяют их группировку.Groups and ungroups records of a table.

ОписаниеDescription

Функция GroupBy возвращает таблицу, записи в которой сгруппированы по значениям в одном или нескольких столбцах.The GroupBy function returns a table with records grouped together based on the values in one or more columns. Записи каждой группы помещаются в одну запись, к которой в новом столбце добавляется вложенная таблица со значениями остальных столбцов.Records in the same group are placed into a single record, with a column added that holds a nested table of the remaining columns.

Функция Ungroup выполняет действие, обратное функции GroupBy.The Ungroup function reverses the GroupBy process. Эта функция возвращает таблицу, в которой разделены на отдельные записи все данные, которые могли быть сгруппированы.This function returns a table, breaking into separate records any records that were grouped together.

Вы можете сгруппировать записи с помощью GroupBy, затем изменить полученную таблицу, и разгруппировать записи измененной таблицы с помощью Ungroup.You can group records by using GroupBy, modify the table that it returns, and then ungroup records in the modified table by using Ungroup. Например, так можно удалить некоторую группу записей.For example, you can remove a group of records by following this approach:

  • Выполните функцию GroupBy.Use the GroupBy function.
  • Выполните функцию Filter, чтобы удалить сразу целую группу записей.Use the Filter function to remove the entire group of records.
  • Выполните функцию Ungroup.Use the Ungroup function.

Также можно получить статистические данные на основе группирования.You can also aggregate results based on a grouping:

  • Выполните функцию GroupBy.Use the GroupBy function.
  • Выполните функцию AddColumns вместе с Sum, Average или другими статистическими функциями, чтобы добавить новый столбец со статистическими данными по таблицам групп.Use the AddColumns function with Sum, Average, and other aggregate functions to add a new column which is an aggregate of the group tables.
  • Выполните функцию DropColumns, чтобы удалить таблицы группы.Use the DropColumns function to drop the group table.

Ungroup старается восстановить исходный порядок записей, в котором они передавались в функцию GroupBy.Ungroup tries to preserve the original order of the records that were fed to GroupBy. Иногда это невозможно (например, если исходная таблица содержит пустые записи).This isn't always possible (for example, if the original table contains blank records).

Таблица в PowerApps считается значением, как любая строка или число.A table is a value in PowerApps, just like a string or a number. Вы можете указать таблицу в качестве аргумента для функции, и функция может возвращать таблицу.You can specify a table as an argument for a function, and a function can return a table. GroupBy и Ungroup не изменяют исходную таблицу. Они принимают таблицу в качестве аргумента и возвращают новую таблицу.GroupBy and Ungroup don't modify a table; instead they take a table as an argument and return a different table. Подробнее это описано здесь.See working with tables for more details.

СинтаксисSyntax

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

  • Table — обязательный аргумент.Table - Required. Таблица, которую нужно сгруппировать.Table to be grouped.
  • ColumnName — обязательный аргумент.ColumnName(s) - Required. Имена столбцов из таблицы Table, по которой следует сгруппировать записи.The column names in Table by which to group records. Эти столбцы становятся столбцами в итоговой таблице.These columns become columns in the resulting table.
  • GroupColumnName — обязательный аргумент.GroupColumnName - Required. Имя столбца для хранения данных, не включенных в столбцы ColumnName.The column name for the storage of record data not in the ColumnName(s).

    Примечание. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Например, Имя столбца укажите как Имя_x0020_столбца.For example, specify "Column Name" as "Column_x0020_Name".

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

  • Table — обязательный аргумент.Table - Required. Таблица, которую нужно разгруппировать.Table to be ungrouped.
  • GroupColumnName — обязательный аргумент.GroupColumnName - Required. Столбец, содержащий данные о записях, созданные функцией GroupBy.The column that contains the record data setup with the GroupBy function.

    Примечание. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Например, Имя столбца укажите как Имя_x0020_столбца.For example, specify "Column Name" as "Column_x0020_Name".

ПримерыExamples

Создание коллекцииCreate a collection

  1. Добавьте кнопку и задайте для нее свойство Text, чтобы она отображала текст Исходные данные.Add a button, and set its Text property so that the button shows Original.
  2. Задайте для свойства OnSelect кнопки Исходные данные такую формулу: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. Нажмите клавишу F5, нажмите кнопку Исходные данные, затем нажмите клавишу ESC.Press F5, select the Original button, and then press Esc.

    Вы только что создали коллекцию с именем CityPopulations, которая содержит такие данные:You just created a collection, named CityPopulations, that contains this data:

  4. Чтобы отобразить эту коллекцию, выберите пункт Коллекции в меню Файл, затем выберите коллекцию CityPopulations.To display this collection, select Collections on the File menu and then select the CityPopulations collection. Отображаются первые пять записей из этой коллекции:The first five records in the collection appear:

Записи группыGroup records

  1. Добавьте еще одну кнопку и задайте для ее свойства Text значение Группировка.Add another button, and set its Text property to "Group".
  2. Задайте для свойства OnSelect этой кнопки такую формулу:Set the OnSelect property of this button to this formula:

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

  3. Нажмите клавишу F5, нажмите кнопку Группировка, затем нажмите клавишу ESC.Press F5, select the Group button, and then press Esc.

    Вы только что создали коллекцию с именем CitiesByCountry, в которой записи из предыдущей коллекции сгруппированы по столбцу Country.You just created a collection, named CitiesByCountry, in which the records of the previous collection are grouped by the Country column.

  4. Чтобы отобразить первые пять записей из этой коллекции, выберите пункт Коллекции в меню Файл.To display the first five records in this collection, select Collections on the File menu.

  5. Чтобы отобразить население городов одной страны, выберите значок таблицы в столбце Cities для строки с этой страной, например, Germany (Германия):To display the populations of cities in a country, select the table icon in the Cities column for that country (for example, Germany):

Фильтрация и разгруппировка записейFilter and ungroup records

  1. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Фильтрация.Add another button, and set its Text property so that the button shows "Filter".
  2. Задайте для свойства OnSelect этой кнопки такую формулу: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. Нажмите клавишу F5, нажмите новую кнопку, затем нажмите клавишу ESC.Press F5, select the button that you added, and then press Esc.

    Вы только что создали третью коллекцию с именем CitiesByCountryFiltered, которая включает те страны, в имени которых есть буква "e" (мы исключили, например, Испанию (Spain) и Италию (Italy)).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. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Разгруппировка.Add one more button, and set its Text property so that the button shows "Ungroup".
  5. Задайте для свойства OnSelect этой кнопки такую формулу:Set the OnSelect property of this button to this formula:

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

    Вы получите такой результат:Which results in:

Статистическая обработка результатовAggregate results

Мы можем применить сгруппированную таблицу еще и для статистической обработки результатов.Something else we can do with a grouped table is to aggregate the results. В этом примере мы просуммируем население крупнейших городов в каждой стране.In this example, we will sum the population of the major cities in each country.

  1. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Сумма.Add another button, and set its Text property so that the button shows "Sum".
  2. Задайте для свойства OnSelect кнопки Сумма эту формулу: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 ) ) )

    Вы получите такой результат:Which results in:

    Функция AddColumns принимает базовую коллекцию CitiesByCountry и добавляет к ней новый столбец Sum of City Populations.AddColumns starts with the base CitiesByCountry collection and adds a new column Sum of City Populations. Значения для этого столбца вычисляются отдельно для каждой строки по формуле Sum( Cities, Population ).This column's values are calculated row-by-row, based on the formula Sum( Cities, Population ). AddColumns предоставляет значение (таблицу) для столбца Cities в каждой строке, а затем функция Sum суммирует значения Population из каждой строки этой вложенной таблицы.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. Теперь мы получили нужную сумму и можем удалить вложенные таблицы с помощью функции DropColumns.Now that we have the sum that we want, we can use DropColumns to remove the sub tables. Измените значение свойства OnSelect на следующую формулу:Modify the OnSelect property to use this formula:

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

    Вы получите такой результат:Which results in:

    Обратите внимание, что мы обошлись без разгруппировки этой таблицы.Note that we did not need to ungroup this table.