Функції GroupBy та Ungroup
Застосовується до: програм Canvas Програм на основі моделі Power Pages
Групування та розгрупування записів таблиці.
Опис
Функція 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_", наприклад "Ім’я стовпця" як "Column_x0020_Name". Після цієї версії всі програми були автоматично оновлені до нового синтаксису, описаного в цій статті.
Синтаксис
GroupBy(Table,ColumnName1 [, ColumnName2 , ... ],GroupColumnName )
- Таблиця - обов’язковий. Таблиця, яку потрібно згрупувати.
- ColumnNames- Обов’язковий . Імена стовпців у таблиці, за якими потрібно групувати записи. Ці стовпці стають стовпцями отриманої таблиці.
- GroupColumnName - Обов’язковий. Ім’я стовпця для зберігання даних запису за межами ColumnName(s).
Ungroup(Таблиця,НазваСтовпцяГрупи )
- Таблиця - обов’язковий. Таблиця, яку потрібно розгрупувати.
- GroupColumnName - Обов’язковий. Стовпець, що містить дані запису, оброблені функцією GroupBy.
Приклади
Створення набору
- Додайте кнопку та настройте її властивість Text на відображення слова Original (Вихідна).
- Настройте властивість OnSelect кнопки з ім’ям Original відповідно до нижчезазначеної формули.
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, виберіть кнопку Original.
Щойно було створено колекцію з іменем CityPopulations (Чисельність населення міст), що містить наведені нижче дані.
Для відображення цієї колекції виберіть елемент Колекції в меню Файл, а потім – колекцію CityPopulations. Відобразяться перші п’ять записів у колекції.
Групування записів
Додайте іншу кнопку та настройте її властивість Text на відображення слова Group (Групування).
Настройте властивість OnSelect цієї кнопки відповідно до зазначеної нижче формули.
ClearCollect( CitiesByCountry, GroupBy( МістаНаселення, Країна, Міста ) )
Утримуючи натиснутою клавішу Alt, виберіть кнопку Group.
Щойно було створено колекцію з іменем CitiesByCountry (Міста за країною), у якій записи попередньої колекції згруповані за стовпцем Country (Країна).
Для відображення перших п’яти записів у цій колекції виберіть Колекції в меню Файл.
Щоб відобразити чисельність населення міст у країні або регіоні, виберіть піктограму таблиці у стовпці Міста для цієї країни або регіону (наприклад, Німеччини):
Фільтрація та розгрупування записів
Додайте іншу кнопку та настройте її властивість Text на відображення слова Filter (Фільтрація).
Настройте властивість OnSelect цієї кнопки відповідно до зазначеної нижче формули.
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" в країні ) )
Утримуючи натиснутою клавішу Alt, виберіть додану кнопку.
Щойно було створено третю колекцію з ім’ям CitiesByCountryFiltered (Міста за країною/регіоном, відфільтровані), що містить тільки країни/регіони, в англомовних назвах яких є літера «e» (тобто не Іспанія або Італія).
Додайте ще одну кнопку та настройте її властивість Text на відображення слова Ungroup (Розгрупування).
Настройте властивість OnSelect цієї кнопки відповідно до зазначеної нижче формули.
ClearCollect( МістаНаселенняНегруповані, Розгруповані( МістаЗаКраїноюФільтровані, Міста ) )
У результаті буде отримано таку таблицю.
Об’єднання результатів
Ще одна операція, яку ми можемо виконати над згрупованою таблицею, - це компіляція результатів. У цьому прикладі ми підсумуємо населення великих міст кожної країни або регіону.
Додайте чергову кнопку та настройте її властивість Text на відображення слова Sum (Підсумовування).
Настройте властивість OnSelect кнопки Sum відповідно до нижчезазначеної формули.
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, ’Сума міських населень’, Sum( Міста, Населення ) ) )
У результаті буде отримано таку таблицю.
AddColumns починається з базової колекції CitiesByCountry і додає новий стовпець Сума населення міст. Значення цього стовпця обчислюються рядок за рядком залежно від формули Sum( Cities, Population ). AddColumns надає значення стовпця «Міста » (таблиці) для кожного рядка, а «Сума » додає чисельність населення для кожного рядка цієї підтаблиці.
Тепер, коли в нас є потрібна сума, можна використати функцію DropColumns, щоб видалити вкладені таблиці.
Додайте іншу кнопку та настройте її властивість Text на відображення слова SumOnly (Підсумовування тільки...).
Настройте властивість OnSelect кнопки SumOnly відповідно до наведеної нижче формули.
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )
У результаті буде отримано таку таблицю.
Зверніть увагу, що цю таблицю не потрібно було розгруповувати.