Функциите GroupBy и Ungroup
Отнася се за: Приложения за платно Приложения, управлявани от модел 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(Таблица; Име на колона1[, Име на колона2 , ... ]; Име на колона)
- Таблица - Задължително. Таблица за групиране.
- ColumnNames - Задължително. Имената на колоните в Таблица чрез които да групирате записи. Тези колони стават колони в получената таблица.
- GroupColumnName - Задължително. Името на колоната за съхранение на записи от данни, които не са в ColumnName(s).
Ungroup( Table; GroupColumnName )
- Таблица - Задължително. Таблица за разгрупиране.
- GroupColumnName - Задължително. Графата, която съдържа настройката на данните от записа с GroupBy функция.
Примери
Създаване на колекция
- Добавете бутон и задайте Текст свойство, така че бутонът да се показва оригинал.
- Задайте свойството 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 колекция. Появяват се първите пет записа в колекцията:
Групиране на записи
Добавете друг бутон и задайте свойството му Текст на "Group".
Задайте свойството OnSelect на този бутон на тази формула:
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities ) )
Докато държите клавиша Alt, изберете бутона Group.
Току-що създадохте колекция, на име CitiesByCountry, в който записите от предишния сборник са групирани от Страна колона.
За да покажете първите пет записа в тази колекция, изберете Колекции на менюто Файл.
За да покажете населението на градовете в дадена държава/регион, изберете иконата на таблицата в графата Градове за тази държава/регион (например Германия):
Филтриране и разгрупиране на записи
Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "Filter".
Задайте свойството OnSelect на този бутон на тази формула:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" в държава ) )
Докато държите клавиша Alt, изберете бутона, който добавихте.
Току-що създадохте трета колекция, на име CitiesByCountryFiltered, което включва само онези държави, които имат "e" в имената си (тоест не са Испания или Италия).
Добавете още един бутон и задайте Текст свойство, така че бутонът да се показва "Ungroup".
Задайте свойството OnSelect на този бутон на тази формула:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities )
Което води до:
Обобщени резултати
Друга операция, която можем да извършим върху групирана таблица, е да компилираме резултатите. В този пример ще обобщим населението на големите градове във всяка държава/регион.
Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "Sum".
Задайте свойството OnSelect на бутона "Sum" на тази формула:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Сума на населението на градовете', Sum( Градове, Население ) ) )
Което води до:
AddColumns започва с базовата колекция CitiesByCountry и добавя нова колона Сума на населението на градовете. Стойностите на тази колона се изчисляват по ред, въз основа на формулата Sum( Cities, Population ). AddColumns предоставя стойността на колоната Градове (таблица) за всеки ред, а Sum събира Население за всеки ред от тази подтаблица.
Сега, когато имаме сумата, която искаме, можем да използваме DropColumns, за да премахнете под таблиците.
Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "SumOnly".
Задайте свойството OnSelect на бутона "SumOnly" на тази формула:
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Градове )
Което води до:
Обърнете внимание, че не е необходимо да разгрупираме тази таблица.