Функции "Групиране по" и "Разгрупиране"

Отнася се за: Приложения за платно Приложения, задвижвани от модели

Групира и разгрупира записи на таблица.

Описание

Функцията 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 )

  • Table – Задължително. Таблица за групиране.
  • ColumnName(s) - Задължително. Имената на колоните в Таблица чрез които да групирате записи. Тези колони стават колони в получената таблица.
  • GroupColumnName - Задължително. Името на колоната за съхранение на записи от данни, които не са в ColumnName(s).

Ungroup( Table, GroupColumnName )

  • Table – Задължително. Таблица за разгрупиране.
  • GroupColumnName - Задължително. Графата, която съдържа настройката на данните от записа с GroupBy функция.

Примери

Създаване на колекция

  1. Добавете бутон и задайте Текст свойство, така че бутонът да се показва оригинал.
  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, която съдържа тези данни:

    Пример за градско население.

  2. За да покажете тази колекция, изберете Колекции в менюто Файл и след това изберете CityPopulations колекция. Появяват се първите пет записа в колекцията:

    Колекция CityPopulations.

Групиране на записи

  1. Добавете друг бутон и задайте свойството му Текст на "Group".

  2. Задайте свойството OnSelect на този бутон на тази формула:

    ClearCollect( ГрадовеПо държава, GroupBy( CityPopulations, Държава, Градове ) )

  3. Докато държите клавиша Alt, изберете бутона Group.

    Току-що създадохте колекция, на име CitiesByCountry, в който записите от предишния сборник са групирани от Страна колона.

    Градове, групирани.

  4. За да покажете първите пет записа в тази колекция, изберете Колекции на менюто Файл.

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

  5. За да покажете населението на градовете в дадена страна/регион, изберете иконата на таблицата в колоната Градове за тази страна/регион (например Германия):

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

Филтриране и разгрупиране на записи

  1. Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "Filter".

  2. Задайте свойството OnSelect на този бутон на тази формула:

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

  3. Докато държите клавиша Alt, изберете бутона, който добавихте.

    Току-що създадохте трета колекция, на име CitiesByCountryFiltered, което включва само онези държави, които имат "e" в имената си (тоест не са Испания или Италия).

    CitiesByCountryFiltered.

  4. Добавете още един бутон и задайте Текст свойство, така че бутонът да се показва "Ungroup".

  5. Задайте свойството OnSelect на този бутон на тази формула:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )

    Което води до:

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

Обобщени резултати

Друга операция, която можем да извършим върху групирана таблица, е да компилираме резултатите. В този пример ще сумираме населението на големите градове във всяка страна/регион.

  1. Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "Sum".

  2. Задайте свойството OnSelect на бутона "Sum" на тази формула:

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Sum of City Populations', Sum( Градове, Население ) )

    Което води до:

    Сума на градовете.

    AddColumns започва с основата CitiesByCountry и добавя нова колона Сума от населението на градовете. Стойностите на тази колона се изчисляват по ред, въз основа на формулата Sum( Cities, Population ). AddColumns осигурява стойността на градове колона (таблица) за всеки ред и Sum добавя население за всеки ред от тази под таблица.

    Сега, когато имаме сумата, която искаме, можем да използваме DropColumns, за да премахнете под таблиците.

  3. Добавете друг бутон и задайте Текст свойство, така че бутонът да се показва "SumOnly".

  4. Задайте свойството OnSelect на бутона "SumOnly" на тази формула:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Градове ) )

    Което води до:

    Сума на държави.

    Обърнете внимание, че не е необходимо да разгрупираме тази таблица.