GroupBy és Ungroup függvények
A következőkre vonatkozik: Vászonalapú alkalmazások
Modellvezérelt alkalmazások
Power Pages
Csoportosítja egy táblarekordjait, illetve megszünteti a csoportosításukat.
Description
A GroupBy függvény egy táblát ad vissza egy vagy több oszlop értékei szerint csoportosított rekordokkal. Az azonos csoportba tartozó rekordok egyetlen rekordba kerülnek, és a rendszer hozzáad egy olyan oszlopot, amely a többi oszlopot tartalmazó beágyazott táblát tartalmazza.
Az Ungroup függvény a GroupBy függvény műveletének ellenkezőjét hajtja végre. Ez a függvény egy táblát ad vissza, és külön rekordokra bontja a csoportosított rekordokat.
Csoportosíthatja a rekordokat a GroupBy függvénnyel, módosíthatja a visszaadott táblázatot, majd megszüntetheti a rekordok csoportosítását a módosított táblában az Ungroup függvénnyel. Eltávolíthat például egy rekordcsoportot a következő módszerrel:
- Használja a GroupBy függvényt.
- Használja a Filter függvényt a teljes rekordcsoport eltávolításához.
- Használja az Ungroup függvényt.
Az eredményeket egy csoportosítás alapján összesítheti is:
- Használja a GroupBy függvényt.
- Az AddColumns függvényt a Sum, Average és más összesítő függvényekkel együtt használva új oszlopot vehet fel, amely a csoporttáblák összesítése.
- Használja a DropColumns függvényt a csoporttábla elvetéséhez.
A csoportbontás megpróbálja megőrizni a GroupBy programba továbbított rekordok eredeti sorrendjét. Ez nem mindig lehetséges (például ha az eredeti tábla üres rekordokat tartalmaz).
A táblák éppúgy értékek a Power Apps rendszerben, mint a sztringek vagy a számok, Megadhat egy táblát argumentumként egy függvényhez, és egy függvény visszaadhat egy táblát. A GroupBy és a Ungroup nem módosít egy táblát, hanem egy táblát argumentumként fogad el, és egy másik táblát ad vissza. További részleteket a táblákkal való munkával foglalkozó témakörben talál.
Feljegyzés
A Power Apps 3.24042 verzió előtt az oszlopneveket idézőjelbe tett szöveges karakterlánccal adták meg, és ha adatforrás kapcsolódtak, logikai neveknek is kellett lenniük. Például a "cr43e_name" logikai nevet idézőjelek nélkül használtuk a megjelenítendő név Név idézőjelek nélkül. A szóközöket tartalmazó oszlopneveket tartalmazó SharePoint- és Excel-adatforrások esetében minden szóköz a "_x0020_" szóval lett megadva, például "Oszlopnév" mint "Column_x0020_Name". Ezt a verziót követően az összes alkalmazás automatikusan frissült a cikkben ismertetett új szintaxisra.
Szintaxis
GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )
- Tábla - Kötelező. A csoportosítani kívánt tábla.
- ColumnNames - Kötelező. A Tábla oszlopnevei, amelyek alapján a rekordok csoportosítása történik. Ezek az oszlopok lesznek az eredményül kapott tábla oszlopai.
- GroupColumnName – Kötelező. Az Oszlopnevek között nem tartalmazott rekordadatok tárolójának oszlopneve.
Ungroup( Tábla; GroupColumnName )
- Tábla - Kötelező. A tábla, amelynek a csoportosítását meg kívánja szüntetni.
- GroupColumnName – Kötelező. A GroupBy függvénnyel beállított rekordadatokat tartalmazó oszlop.
Példák
Gyűjtemény létrehozása
- Adjon hozzá egy gombot, és állítsa be a Text tulajdonságát úgy, hogy a gomb az Eredeti feliratot mutassa.
- Az Eredeti gomb OnSelect tulajdonságához adja meg a következő képletet:
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}
)
Az Alt billentyűt lenyomva tartva válassza ki az Eredeti gombot.
Ezzel létrehozott egy VárosokNépessége nevű gyűjteményt, amely a következő adatokat tartalmazza:
A gyűjtemény megjelenítéséhez válassza ki a Fájl menü Gyűjtemények elemét, majd a VárosokNépessége gyűjteményt. A gyűjtemény első öt rekordja a következőképpen jelenik meg:
Rekordok csoportosítása
Adjon hozzá még egy gombot, és állítsa a Text tulajdonságát „Csoport” értékre.
A gomb OnSelect tulajdonságához adja meg a következő képletet:
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Ország, Városok ) )
Az Alt billentyűt lenyomva tartva válassza ki a Csoport gombot.
Ezzel létrehozott egy CitiesByCountry nevű gyűjteményt, amelyben az előző gyűjtemény rekordjai az Ország oszlop szerint vannak csoportosítva.
A gyűjtemény első öt rekordjának megjelenítéséhez válassza ki a Fájl menü Gyűjtemények elemét.
Egy ország/régió városainak népességének megjelenítéséhez válassza az adott ország/régió (például Németország) Városok oszlopában található táblázat ikont:
Rekordok szűrése és a csoportosításuk megszüntetése
Adjon hozzá még egy gombot, és állítsa be a Text tulajdonságát úgy, hogy a gomb a „Szűrő” feliratot mutassa.
A gomb OnSelect tulajdonságához adja meg a következő képletet:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" az országban ) )
Az Alt billentyűt lenyomva tartva válassza ki a hozzáadott gombot.
Ezzel létrehozott egy harmadik gyűjteményt CitiesByCountryFiltered néven, amely csak azokat az országokat tartalmazza, amelyeknek a neve „e” betűt tartalmaz (tehát a „Spain” és az „Italy” elem nincs köztük).
Adjon hozzá még egy gombot, és állítsa be a Text tulajdonságát úgy, hogy a gomb a „Csoportosítás megszüntetése” feliratot mutassa.
A gomb OnSelect tulajdonságához adja meg a következő képletet:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )
Ez a következőt eredményezi:
Eredmények összesítése
Egy másik művelet, amelyet egy csoportosított táblán végezhetünk, az eredmények összeállítása. Ebben a példában összegezzük az egyes országok/régiók nagyobb városainak népességét.
Adjon hozzá még egy gombot, és állítsa be a Text tulajdonságát úgy, hogy a gomb az „Összeg” feliratot mutassa.
Az „Összeg” gomb OnSelect tulajdonságához adja meg a következő képletet:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Várospopulációk összege', Sum( Városok, Népesség ) ) )
Ez a következőt eredményezi:
Az AddColumns az alap CitiesByCountry gyűjteménnyel kezdődik, és hozzáad egy új oszlopot Várospopulációk összege néven. Az oszlop értékeit a rendszer soronként számítja ki a Sum( Cities, Population ) képlet alapján. Az AddColumns oszlop megadja a Cities oszlop (egy táblázat) értékét minden sorhoz, a Sum pedig összeadja a Population értéket az altábla egyes soraihoz.
Most, hogy megvan a kívánt összeg, a DropColumns függvény segítségével eltávolíthatjuk az altáblákat.
Adjon hozzá még egy gombot, és állítsa be a Text tulajdonságát úgy, hogy a gomb a „CsakÖsszeg” feliratot mutassa.
A „CsakÖsszeg” gomb OnSelect tulajdonságához adja meg a következő képletet:
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, városok ) )
Ez a következőt eredményezi:
Látható, hogy nem kellett megszüntetni a tábla csoportosítását.