Funkce GroupBy a Ungroup v PowerAppsGroupBy and Ungroup functions in PowerApps

Seskupí a oddělí záznamy tabulky.Groups and ungroups records of a table.

PopisDescription

Funkce GroupBy vrátí tabulku se záznamy seskupenými na základě hodnot v jednom nebo několika sloupcích.The GroupBy function returns a table with records grouped together based on the values in one or more columns. Záznamy ve stejné skupině jsou umístěné do jednoho záznamu s přidaným sloupcem, ve kterém je vnořená tabulka zbývajících sloupců.Records in the same group are placed into a single record, with a column added that holds a nested table of the remaining columns.

Funkce Ungroup je opakem funkce GroupBy.The Ungroup function reverses the GroupBy process. Tato funkce vrátí tabulku, ve které jsou všechny záznamy, které byly seskupeny, rozdělené na samostatné záznamy.This function returns a table, breaking into separate records any records that were grouped together.

Záznamy můžete seskupit funkcí GroupBy, změnit vrácenou tabulku a pak záznamy v této změněné tabulce oddělit funkcí Ungroup.You can group records by using GroupBy, modify the table that it returns, and then ungroup records in the modified table by using Ungroup. Tímto postupem můžete například odebrat skupinu záznamů:For example, you can remove a group of records by following this approach:

  • Použijte funkci GroupBy.Use the GroupBy function.
  • Pomocí funkce Filter odeberte celou skupinu záznamů.Use the Filter function to remove the entire group of records.
  • Použijte funkci Ungroup.Use the Ungroup function.

Výsledky můžete rovněž agregovat na základě seskupení:You can also aggregate results based on a grouping:

  • Použijte funkci GroupBy.Use the GroupBy function.
  • Pomocí funkce AddColumns s funkcemi Sum, Average a jinými agregačními funkcemi přidejte nový sloupec, který je agregací seskupených tabulek.Use the AddColumns function with Sum, Average, and other aggregate functions to add a new column which is an aggregate of the group tables.
  • Pomocí funkce DropColumns seskupenou tabulku zrušte.Use the DropColumns function to drop the group table.

Funkce Ungroup se snaží zachovat původní pořadí záznamů předaných funkci GroupBy.Ungroup tries to preserve the original order of the records that were fed to GroupBy. To není vždycky možné (třeba když původní tabulka obsahuje prázdné záznamy).This isn't always possible (for example, if the original table contains blank records).

Tabulka je v PowerApps hodnotou, stejně jako třeba řetězec nebo číslo.A table is a value in PowerApps, just like a string or a number. Tabulku můžete zadat jako argument funkce, přičemž funkce může vrátit tabulku.You can specify a table as an argument for a function, and a function can return a table. Funkce GroupBy a Ungroup tabulku nemění; místo toho převezmou tabulku jako argument a vrátí jinou tabulku.GroupBy and Ungroup don't modify a table; instead they take a table as an argument and return a different table. Další podrobnosti najdete v části týkající se práce s tabulkami.See working with tables for more details.

SyntaxeSyntax

GroupBy( Tabulka; NázevSloupce1 [; NázevSloupce2; ... ]; NázevSloupceSkupiny )GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )

  • Tabulka – povinné.Table - Required. Tabulka, která se má seskupit.Table to be grouped.
  • NázevSloupce – povinné.ColumnName(s) - Required. Názvy sloupců v Tabulce, podle kterých se mají záznamy seskupit.The column names in Table by which to group records. Z těchto sloupců se stanou sloupce ve výsledné tabulce.These columns become columns in the resulting table.
  • NázevSloupceSkupiny – povinné.GroupColumnName - Required. Název sloupce pro uložení dat záznamů, které nejsou v NázvechSloupců.The column name for the storage of record data not in the ColumnName(s).

    Poznámka: V případě sharepointových a excelových zdrojů dat obsahujících názvy sloupců s mezerami zadejte každou mezeru jako _x0020_.Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Místo Název sloupce tedy zadejte Název_x0020_sloupce.For example, specify "Column Name" as "Column_x0020_Name".

Ungroup( Tabulka; NázevSloupceSkupiny )Ungroup( Table, GroupColumnName )

  • Tabulka – povinné.Table - Required. Tabulka, která se má oddělit.Table to be ungrouped.
  • NázevSloupceSkupiny – povinné.GroupColumnName - Required. Sloupec, který obsahuje data záznamů nastavené pomocí funkce GroupBy.The column that contains the record data setup with the GroupBy function.

    Poznámka: V případě sharepointových a excelových zdrojů dat obsahujících názvy sloupců s mezerami zadejte každou mezeru jako _x0020_.Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Místo Název sloupce tedy zadejte Název_x0020_sloupce.For example, specify "Column Name" as "Column_x0020_Name".

PříkladyExamples

Vytvoření kolekceCreate a collection

  1. Přidejte tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Original.Add a button, and set its Text property so that the button shows Original.
  2. Vlastnost OnSelect tlačítka Original nastavte na tento vzorec:Set the OnSelect property of the Original button to this formula:

    ClearCollect(CityPopulations; {City:"Londýn"; Country:"Spojené království"; Population:8615000}; {City:"Berlín"; Country:"Německo"; Population:3562000}; {City:"Madrid"; Country:"Španělsko"; Population:3165000}; {City:"Řím"; Country:"Itálie"; Population:2874000}; {City:"Paříž"; Country:"Francie"; Population:2273000}; {City:"Hamburg"; Country:"Německo"; Population:1760000}; {City:"Barcelona"; Country:"Španělsko"; Population:1602000}; {City:"Mnichov"; Country:"Německo"; Population:1494000}; {City:"Milán"; Country:"Itálie"; Population:1344000})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})

  3. Stiskněte klávesu F5, vyberte tlačítko Original a pak stiskněte klávesu Esc.Press F5, select the Original button, and then press Esc.

    Právě jste vytvořili kolekci s názvem CityPopulations, která obsahuje tato data:You just created a collection, named CityPopulations, that contains this data:

  4. Tuto kolekci zobrazíte tak, že vyberete Kolekce v nabídce Soubor a pak vyberete kolekci CityPopulations.To display this collection, select Collections on the File menu and then select the CityPopulations collection. Objeví se prvních pět záznamů v této kolekci:The first five records in the collection appear:

Seskupení záznamůGroup records

  1. Přidejte další tlačítko a nastavte jeho vlastnost Text na Group.Add another button, and set its Text property to "Group".
  2. Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:Set the OnSelect property of this button to this formula:

    ClearCollect( CitiesByCountry; GroupBy( CityPopulations; "Country"; "Cities" ) )ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )

  3. Stiskněte klávesu F5, vyberte tlačítko Group a pak stiskněte klávesu Esc.Press F5, select the Group button, and then press Esc.

    Právě jste vytvořili kolekci s názvem CitiesByCountry, ve které jsou záznamy předchozí kolekce seskupené podle sloupce Country.You just created a collection, named CitiesByCountry, in which the records of the previous collection are grouped by the Country column.

  4. Prvních pět záznamů v této kolekci zobrazíte tak, že vyberete Kolekce v nabídce Soubor.To display the first five records in this collection, select Collections on the File menu.

  5. Pokud chcete zobrazit počet obyvatel měst v nějaké zemi, vyberte ikonu tabulky ve sloupci Cities této země (například Germany):To display the populations of cities in a country, select the table icon in the Cities column for that country (for example, Germany):

Filtrování a oddělení záznamůFilter and ungroup records

  1. Přidejte další tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Filter.Add another button, and set its Text property so that the button shows "Filter".
  2. Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:Set the OnSelect property of this button to this formula:

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

  3. Stiskněte klávesu F5, vyberte přidané tlačítko a pak stiskněte klávesu Esc.Press F5, select the button that you added, and then press Esc.

    Právě jste vytvořili třetí kolekci s názvem CitiesByCountryFiltered, která obsahuje jenom země, které mají v názvu písmeno „a“ (například Spain nebo Italy).You just created a third collection, named CitiesByCountryFiltered, that includes only those countries that have an "e" in their names (that is, not Spain or Italy).

  4. Přidejte ještě jedno tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Ungroup.Add one more button, and set its Text property so that the button shows "Ungroup".
  5. Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:Set the OnSelect property of this button to this formula:

    ClearCollect( CityPopulationsUngrouped; Ungroup( CitiesByCountryFiltered; "Cities" ) )ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, "Cities" ) )

    Výsledek bude následující:Which results in:

Agregace výsledkůAggregate results

U seskupené tabulky je možné agregovat výsledky.Something else we can do with a grouped table is to aggregate the results. V tomto příkladu sečteme počet obyvatel hlavních měst v jednotlivých zemích.In this example, we will sum the population of the major cities in each country.

  1. Přidejte další tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Sum.Add another button, and set its Text property so that the button shows "Sum".
  2. Vlastnost OnSelect tlačítka Sum nastavte na tento vzorec:Set the OnSelect property of the "Sum" button to this formula:

    ClearCollect( CityPopulationsSum; AddColumns( CitiesByCountry; "Sum of City Populations"; Sum( Cities; Population ) ) )ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, "Sum of City Populations", Sum( Cities, Population ) ) )

    Výsledek bude následující:Which results in:

    Funkce AddColumns začne se základní kolekcí CitiesByCountry a přidá nový sloupec Sum of City Populations.AddColumns starts with the base CitiesByCountry collection and adds a new column Sum of City Populations. Hodnoty v tomto sloupci se počítají řádek po řádku na základě vzorce Sum( Cities; Population ).This column's values are calculated row-by-row, based on the formula Sum( Cities, Population ). Funkce AddColumns poskytuje hodnotu sloupce Cities (tabulku) každého řádku a funkce Sum sečte hodnoty Population jednotlivých řádků této podtabulky.AddColumns provides the value of the Cities column (a table) for each row, and Sum adds up the Population for each row of this sub table.

  3. Teď, když jsme sečetli požadované údaje, můžeme pomocí funkce DropColumns podtabulky odebrat.Now that we have the sum that we want, we can use DropColumns to remove the sub tables. Upravte vlastnost OnSelect tak, aby obsahovala tento vzorec:Modify the OnSelect property to use this formula:

    ClearCollect( CityPopulationsSumOnly; DropColumns( CityPopulationsSum; "Cities" ) )ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, "Cities" ) )

    Výsledek bude následující:Which results in:

    Všimněte si, že jsme tuto tabulku nepotřebovali oddělit.Note that we did not need to ungroup this table.