Funktionerna GroupBy och Ungroup
Gäller appar: Arbetsyteappar
Modellbaserade program
Grupperar och delar upp poster i en tabell.
Description
Funktionen GroupBy returnerar en tabell med poster som grupperas tillsammans, baserat på värdena i en eller flera kolumner. Poster i samma grupp placeras i en enda post, där en kolumn som innehåller en kapslad tabell med övriga kolumner läggs till.
Funktionen Ungroup reverserar processen GroupBy. Den här funktionen returnerar en tabell och delar upp alla poster som har grupperats i separata poster.
Du kan gruppera poster med hjälp av GroupBy, ändra tabellen som den returnerar och sedan dela upp posterna i den ändrade tabellen med hjälp av Ungroup. Du kan till exempel ta bort en grupp poster genom att följa den här metoden:
- Använd funktionen GroupBy.
- Använd funktionen Filter för att ta bort hela gruppen med poster.
- Använd funktionen Ungroup.
Du kan också aggregera resultat baserat på en gruppering:
- Använd funktionen GroupBy.
- Använd funktionen AddColumns med Sum, Average och andra mängdfunktioner för att lägga till en ny kolumn som är en mängd av grupptabellerna.
- Använd funktionen DropColumns för att ta bort grupptabellen.
Ungroup försöker bevara den ursprungliga ordningen för de poster som har skickas till GroupBy. Detta är inte alltid möjligt (till exempel om den ursprungliga tabellen innehåller tomma poster).
En tabell är ett värde i Power Apps, precis som en sträng eller ett tal. Du kan ange en tabell som ett argument för en funktion och en funktion kan returnera en tabell. GroupBy och Ungroup ändrar inte en tabell, utan använder i stället tabellen som ett argument och returnerar en annan tabell. Mer information finns i Arbeta med tabeller.
Kommentar
I Power Apps före version 3.24042, angav kolumnnamn specificerades med en textsträng med dubbla citattecken och om de var anslutna till en datakälla behövde de också vara logiska namn. Det logiska namnet "cr43e_name" med dubbla citattecken användes till exempel i stället för visningsnamnet Namn utan citattecken. För SharePoint och Excel-datakällor som innehåller kolumnnamn med blanksteg angavs varje blanksteg med "_x0020_", till exempel "Kolumnnamn" som "Column_x0020_Name". Av den här versionen uppdaterades alla appar automatiskt till den nya syntax som beskrivs i den här artikeln.
Syntax
GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )
- Table – krävs. Tabell som ska grupperas.
- ColumnName(s) – obligatoriskt. Kolumnnamnen i Table som du vill gruppera posterna efter. Dessa kolumner blir kolumner i den resulterande tabellen.
- GroupColumnName – Krävs. Kolumnnamnet för lagring av postdata som inte finns i ColumnName(s).
Ungroup( Table, GroupColumnName )
- Table – krävs. Tabell som ska delas upp.
- GroupColumnName – Krävs. Den kolumn som innehåller inställningar av postdata med funktionen GroupBy.
Exempel
Skapa en samling
- Lägg till en knapp och ange egenskapen Text så att knappen visar Original.
- Ange egenskapen OnSelect för knappen Original till den här formeln:
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}
)
Håll ned Alt-tangenten och välj knappen Original.
Du har nu skapat en samling med namnet CityPopulations, som innehåller följande data:
Om du vill visa den här samlingen väljer du Samlingar i menyn Arkiv och sedan samlingen CityPopulations. De första fem posterna i samlingen visas:
Gruppera poster
Lägg till en ny knapp och ange egenskapen Text till "Group".
Ange egenskapen OnSelect för knappen till den här formeln:
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities ) )
Håll ned Alt-tangenten och välj knappen Grupp.
Du har nu skapat en samling med namnet CitiesByCountry, där posterna i den tidigare samlingen grupperas efter kolumnen Country.
Om du vill visa de första fem posterna i den här samlingen väljer du Samlingar i menyn Arkiv.
Om du vill visa ortsbefolkningen i ett land/en region väljer du tabellikonen i kolumnen Städer för landet/regionen (exempelvis Tyskland):
Filtrera och dela upp poster
Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Filter".
Ange egenskapen OnSelect för knappen till den här formeln:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )
Håll ned Alt-tangenten och välj den knapp som du lade till.
Du har nu skapat en tredje samling med namnet CitiesByCountryFiltered, som innehåller de länder som har ett ”e” i sina namn (dvs. inte Spain eller Italy).
Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Ungroup".
Ange egenskapen OnSelect för knappen till den här formeln:
ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )
Vilket resulterar i:
Mängdresultat
En annan åtgärd som kan utföras i en grupperad tabell är att sammanställa resultaten. I det här exemplet ska vi summera befolkningen i större städer i varje land/region.
Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Sum".
Ange egenskapen OnSelect för knappen "Sum" till den här formeln:
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Sum of City Populations', Sum( Cities, Population ) ) )
Vilket resulterar i:
AddColumns startar med bassamlingen CitiesByCountry och lägger till den nya kolumnen Sum of City Populations. Kolumnvärdena är beräknade rad för rad, baserat på formeln Sum( Cities, Population ). AddColumns ger värdet för kolumnen Cities (en tabell) för varje rad och Sum summerar Population för varje rad i den underordnade tabellen.
Nu har vi summan som vi ville ha och vi kan använda DropColumns till att ta bort de underordnade tabellerna.
Lägg till en ny knapp och ange egenskapen Text så att knappen visar "SumOnly".
Ange egenskapen OnSelect för knappen "SumOnly" till den här formeln:
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )
Vilket resulterar i:
Observera att vi inte behövde dela upp den här tabellen.