Funkce GroupBy a Ungroup
Platí pro: aplikace plátna modelem řízené aplikace Power Pages
Seskupí a oddělí záznamytabulky.
Description
Funkce GroupBy vrátí tabulku se záznamy seskupenými na základě hodnot v jednom nebo několika sloupcích. 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ů.
Funkce Ungroup je opakem funkce GroupBy. Tato funkce vrátí tabulku, ve které jsou všechny záznamy, které byly seskupeny, rozdělené na samostatné záznamy.
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. Tímto postupem můžete například odebrat skupinu záznamů:
- Použijte funkci GroupBy.
- Pomocí funkce Filter odeberte celou skupinu záznamů.
- Použijte funkci Ungroup.
Výsledky můžete rovněž agregovat na základě seskupení:
- Použijte funkci GroupBy.
- Pomocí funkce AddColumns s funkcemi Sum, Average a jinými agregačními funkcemi přidejte nový sloupec, který je agregací seskupených tabulek.
- Pomocí funkce DropColumns seskupenou tabulku zrušte.
Ungroup se pokusí zachovat původní pořadí záznamů, které byly dodány do GroupBy. To není vždycky možné (třeba když původní tabulka obsahuje prázdné záznamy).
Tabulka je v Power Apps, hodnotou, stejně jako třeba řetězec nebo číslo. Tabulku můžete zadat jako argument funkce, přičemž funkce může vrátit tabulku. GroupBy a Ungroup neupravujte tabulku; místo toho vezmou tabulku jako argument a vrátí jinou tabulku. Další podrobnosti najdete v části týkající se práce s tabulkami.
Poznámka:
V Power Apps před verzí 3.24042 byly názvy sloupců zadány pomocí textového řetězce pomocí dvojitých uvozovek, a pokud byly připojeny ke zdroji dat, také musely mít logické názvy. Například místo zobrazovaného názvu Název bez uvozovek byl použit logický název "cr43e_name" s dvojitými uvozovkami. U zdrojů dat SharePoint a Excel, které obsahují názvy sloupců s mezerami, byla každá mezera specifikována pomocí "_x0020_", například "Název sloupce" jako "Název_x0020_sloupce". Po této verzi byly všechny aplikace automaticky aktualizovány na novou syntaxi popsanou v tomto článku.
Syntaxe
Seskupit podle( Tabulka, Název sloupce1 [, Název sloupce2 , ... ], Název sloupce skupiny )
- Tabulka – Povinné. Tabulka, která se má seskupit.
- Názvy sloupců – Povinné. Názvy sloupců v Tabulce, podle kterých se mají záznamy seskupit. Z těchto sloupců se stanou sloupce ve výsledné tabulce.
- GroupColumnName – povinné. Název sloupce pro uložení dat záznamů, které nejsou v NázvechSloupců.
Zrušit seskupení( Tabulka, Název sloupce skupiny )
- Tabulka – Povinné. Tabulka, která se má oddělit.
- GroupColumnName – povinné. Sloupec, který obsahuje data záznamů nastavené pomocí funkce GroupBy.
Příklady
Vytvoření kolekce
- Přidejte tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Original.
- Vlastnost OnSelect tlačítka Original nastavte na tento vzorec:
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}
)
Podržte stisknutou klávesu Alt a vyberte tlačítko Original.
Právě jste vytvořili kolekci s názvem CityPopulations, která obsahuje tato data:
Tuto kolekci zobrazíte tak, že vyberete Kolekce v nabídce Soubor a pak vyberete kolekci CityPopulations. Objeví se prvních pět záznamů v této kolekci:
Seskupení záznamů
Přidejte další tlačítko a nastavte jeho vlastnost Text na Group.
Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities) )
Podržte stisknutou klávesu Alt a vyberte tlačítko Group.
Právě jste vytvořili kolekci s názvem CitiesByCountry, ve které jsou záznamy předchozí kolekce seskupené podle sloupce Country.
Prvních pět záznamů v této kolekci zobrazíte tak, že vyberete Kolekce v nabídce Soubor.
Pokud chcete zobrazit počet obyvatel měst v nějaké zemi/oblasti, vyberte ikonu tabulky ve sloupci Cities této země/oblasti (například Germany):
Filtrování a oddělení záznamů
Přidejte další tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Filter.
Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country) )
Podržte stisknutou klávesu Alt a vyberte vámi přidané tlačítko.
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).
Přidejte ještě jedno tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Ungroup.
Vlastnost OnSelect tohoto tlačítka nastavte na tento vzorec:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities) )
Výsledek bude následující:
Agregace výsledků
Další operací, kterou můžeme provést na seskupené tabulce, je kompilace výsledků. V tomto příkladu sečteme počet obyvatel hlavních měst v jednotlivých zemích/regionech.
Přidejte další tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo Sum.
Vlastnost OnSelect tlačítka Sum nastavte na tento vzorec:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Součet městských populací', Sum( Cities, Population) ) )
Výsledek bude následující:
AddColumns začíná základní kolekcí CitiesByCountry a přidá nový sloupec Součet obyvatel měst. Hodnoty v tomto sloupci se počítají řádek po řádku na základě vzorce Sum( Cities; Population ). AddColumns poskytuje hodnotu sloupce Města (tabulku) pro každý řádek a Součet sčítá Populace pro každý řádek této podtabulky.
Teď, když jsme sečetli požadované údaje, můžeme pomocí funkce DropColumns podtabulky odebrat.
Přidejte další tlačítko a nastavte jeho vlastnost Text tak, aby zobrazovalo SumOnly.
Vlastnost OnSelect tlačítka SumOnly nastavte na tento vzorec:
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )
Výsledek bude následující:
Všimněte si, že jsme tuto tabulku nepotřebovali oddělit.