Поделиться через


Функции GroupBy и Ungroup

Применимо к: Приложениям Canvas Приложениям, управляемым моделями Power Pages

Эти функции группируют записитаблицы и отменяют их группировку.

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( Таблица, Имя столбца1 [, Имя столбца2 , ... ], GroupColumnName )

  • Таблица - Обязательно. Таблица, которую нужно сгруппировать.
  • ColumnNames - Обязательно. Имена столбцов из таблицы Table, по которой следует сгруппировать записи. Эти столбцы становятся столбцами в итоговой таблице.
  • GroupColumnName - Обязательно. Имя столбца для хранения данных, не включенных в столбцы ColumnName.

Разгруппировать( Таблица, ИмяСтолбцаГруппы )

  • Таблица - Обязательно. Таблица, которую нужно разгруппировать.
  • GroupColumnName - Обязательно. Столбец, содержащий данные о записях, созданные функцией GroupBy.

Примеры

Создание коллекции

  1. Добавьте кнопку и задайте для нее свойство Text, чтобы она отображала текст Исходные данные.
  2. Задайте для свойства 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}
)
  1. Удерживая клавишу ALT, нажмите кнопку Исходные данные.

    Вы только что создали коллекцию с именем CityPopulations, которая содержит такие данные:

    Пример CityPopulations.

  2. Чтобы отобразить эту коллекцию, выберите пункт Коллекции в меню Файл, затем выберите коллекцию CityPopulations. Отображаются первые пять записей из этой коллекции:

    Коллекция CityPopulations.

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

  1. Добавьте еще одну кнопку и задайте для ее свойства Text значение Группировка.

  2. Задайте для свойства OnSelect этой кнопки такую формулу:

    ОчиститьСобрать(ГородаПоСтране, ГруппироватьПо(ГородНаселение, Страна, Города) )

  3. Удерживая клавишу ALT, нажмите кнопку Группировка.

    Вы только что создали коллекцию с именем CitiesByCountry, в которой записи из предыдущей коллекции сгруппированы по столбцу Country.

    Города сгруппированы.

  4. Чтобы отобразить первые пять записей из этой коллекции, выберите пункт Коллекции в меню Файл.

    Города по странам/регионам.

  5. Чтобы отобразить население городов одной страны/региона, выберите значок таблицы в столбце Cities для строки с этой страной/регионом, например, Germany (Германия):

    Население — Германия.

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

  1. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Фильтрация.

  2. Задайте для свойства OnSelect этой кнопки такую формулу:

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

  3. Удерживая клавишу ALT, нажмите добавленную кнопку.

    Вы только что создали третью коллекцию с именем CitiesByCountryFiltered, которая включает те страны, в имени которых есть буква "e" (мы исключили, например, Испанию (Spain) и Италию (Italy)).

    CitiesByCountryFiltered.

  4. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст Разгруппировка.

  5. Задайте для свойства OnSelect этой кнопки такую формулу:

    ОчиститьСобрать(ГородНаселениеРазгруппировано, Разгруппировать(ГородаПоСтранеФильтрованные, Города) )

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

    Города по странам/регионам после разгруппировки.

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

Другая операция, которую мы можем выполнить над сгруппированной таблицей, — это компиляция результатов. В этом примере мы просуммируем население крупнейших городов в каждой стране или регионе.

  1. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы она отображала текст "Сумма".

  2. Задайте для свойства OnSelect кнопки "Сумма" эту формулу:

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Сумма населения городов', Sum( Cities, Population ) ) )

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

    Сумма по городам.

    AddColumns начинает с базовой коллекции CitiesByCountry и добавляет новый столбец Sum of City Populations. Значения для этого столбца вычисляются отдельно для каждой строки по формуле Sum( Cities, Population ). AddColumns предоставляет значение столбца Cities (таблицы) для каждой строки, а Sum суммирует Population для каждой строки этой подтаблицы.

    Теперь мы получили нужную сумму и можем удалить вложенные таблицы с помощью функции DropColumns.

  3. Добавьте еще одну кнопку и задайте для нее свойство Text, чтобы на ней отображался текст Только сумма.

  4. Задайте для свойства OnSelect кнопки Только сумма эту формулу:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

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

    Сумма по странам.

    Обратите внимание, что мы обошлись без разгруппировки этой таблицы.