Функции GroupBy и Ungroup
Применимо к: приложениям на основе холста приложениям на основе модели
Эти функции группируют записитаблицы и отменяют их группировку.
Description
Функция GroupBy возвращает таблицу, записи в которой сгруппированы по значениям в одном или нескольких столбцах. Записи каждой группы помещаются в одну запись, к которой в новом столбце добавляется вложенная таблица со значениями остальных столбцов.
Функция Ungroup выполняет действие, обратное функции GroupBy. Эта функция возвращает таблицу, в которой разделены на отдельные записи все данные, которые могли быть сгруппированы.
Вы можете сгруппировать записи с помощью GroupBy, затем изменить полученную таблицу, и разгруппировать записи измененной таблицы с помощью Ungroup. Например, так можно удалить некоторую группу записей:
- Выполните функцию GroupBy.
- Выполните функцию Filter, чтобы удалить сразу целую группу записей.
- Выполните функцию Ungroup.
Также можно получить статистические данные на основе группирования.
- Выполните функцию GroupBy.
- Выполните функцию AddColumns вместе с Sum, Average или другими статистическими функциями, чтобы добавить новый столбец со статистическими данными по таблицам групп.
- Выполните функцию DropColumns, чтобы удалить таблицы группы.
Ungroup старается восстановить исходный порядок записей, в котором они передавались в функцию GroupBy. Иногда это невозможно (например, если исходная таблица содержит пустые записи).
Таблица в Power Apps считается значением, как любая строка или число. Вы можете указать таблицу в качестве аргумента для функции, и функция может возвращать таблицу. GroupBy и Ungroup не изменяют исходную таблицу. Они принимают таблицу в качестве аргумента и возвращают новую таблицу. Подробнее см. в описании работы с таблицами.
Заметка
В Power Apps до версии 3.24042 имена столбцов задавались текстовой строкой с использованием двойных кавычек, а при подключении к источнику данных они также должны были быть логическими именами. Например, вместо отображаемого имени Имя без кавычек использовалось логическое имя "cr43e_name" в двойных кавычках. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, каждый пробел был указан с помощью "_x0020_", например "Имя столбца" как "Имя_x0020_столбца". После этой версии все приложения были автоматически обновлены до нового синтаксиса, описанного в этой статье.
Синтаксис
GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )
- таблица — обязательный аргумент. Таблица, которую нужно сгруппировать.
- ColumnName(s) — обязательный аргумент. Имена столбцов из таблицы Table, по которой следует сгруппировать записи. Эти столбцы становятся столбцами в итоговой таблице.
- GroupColumnName — обязательный аргумент. Имя столбца для хранения данных, не включенных в столбцы ColumnName.
Ungroup( Table, GroupColumnName )
- таблица — обязательный аргумент. Таблица, которую нужно разгруппировать.
- GroupColumnName — обязательный аргумент. Столбец, содержащий данные о записях, созданные функцией GroupBy.
Примеры
Создание коллекции
- Добавьте кнопку и задайте для нее свойство Text, чтобы она отображала текст Исходные данные.
- Задайте для свойства OnSelect кнопки Исходные данные такую формулу:
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}
)
Удерживая клавишу ALT, нажмите кнопку Исходные данные.
Вы только что создали коллекцию с именем CityPopulations, которая содержит такие данные:
Чтобы отобразить эту коллекцию, выберите пункт Коллекции в меню Файл, затем выберите коллекцию CityPopulations. Отображаются первые пять записей из этой коллекции:
Записи группы
Добавьте еще одну кнопку и задайте для ее свойства Text значение Группировка.
Задайте для свойства OnSelect этой кнопки такую формулу:
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities ) )
Удерживая клавишу ALT, нажмите кнопку Группировка.
Вы только что создали коллекцию с именем CitiesByCountry, в которой записи из предыдущей коллекции сгруппированы по столбцу Country.
Чтобы отобразить первые пять записей из этой коллекции, выберите пункт Коллекции в меню Файл.
Чтобы отобразить население городов одной страны/региона, выберите значок таблицы в столбце Cities для строки с этой страной/регионом, например, Germany (Германия):
Фильтрация и разгруппировка записей
Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Фильтрация.
Задайте для свойства OnSelect этой кнопки такую формулу:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )
Удерживая клавишу ALT, нажмите добавленную кнопку.
Вы только что создали третью коллекцию с именем CitiesByCountryFiltered, которая включает те страны, в имени которых есть буква "e" (мы исключили, например, Испанию (Spain) и Италию (Italy)).
Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Разгруппировка.
Задайте для свойства OnSelect этой кнопки такую формулу:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )
Вы получите такой результат:
Статистическая обработка результатов
Другая операция, которую мы можем выполнить над сгруппированной таблицей, — это компиляция результатов. В этом примере мы просуммируем население крупнейших городов в каждой стране или регионе.
Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст "Сумма".
Задайте для свойства OnSelect кнопки "Сумма" эту формулу:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Sum of City Populations', Sum( Cities, Population ) ) )
Вы получите такой результат:
Функция AddColumns принимает базовую коллекцию CitiesByCountry и добавляет к ней новый столбец Sum of City Populations. Значения для этого столбца вычисляются отдельно для каждой строки по формуле Sum( Cities, Population ). AddColumns предоставляет значение (таблицу) для столбца Cities в каждой строке, а затем функция Sum суммирует значения Population из каждой строки этой вложенной таблицы.
Теперь мы получили нужную сумму и можем удалить вложенные таблицы с помощью функции DropColumns.
Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы на ней отображался текст Только сумма.
Задайте для свойства OnSelect кнопки Только сумма эту формулу:
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )
Вы получите такой результат:
Обратите внимание, что мы обошлись без разгруппировки этой таблицы.