Grupperar och delar upp poster i en tabell.

Beskrivning

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 PowerApps, 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.

Syntax

GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )

  • Table – obligatoriskt. 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 – obligatoriskt. Tabell som ska delas upp.
  • GroupColumnName – Krävs. Den kolumn som innehåller inställningar av postdata med funktionen GroupBy.

Exempel

Skapa en samling

  1. Lägg till en knapp och ange egenskapen Text så att knappen visar Original.

  2. 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})

  3. Tryck på F5, välj knappen Original och tryck sedan på Esc.

    Du har nu skapat en samling med namnet CityPopulations, som innehåller följande data:

  4. 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

  1. Lägg till en ny knapp och ange egenskapen Text till "Group".

  2. Ange egenskapen OnSelect för knappen till den här formeln:

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

  3. Tryck på F5, välj knappen Group och tryck sedan på Esc.

    Du har nu skapat en samling med namnet CitiesByCountry, där posterna i den tidigare samlingen grupperas efter kolumnen Country.

  4. Om du vill visa de första fem posterna i den här samlingen väljer du Samlingar i menyn Arkiv.

  5. Om du vill visa stadsbefolkningen i ett land, väljer du tabellikonen i kolumnen Cities för det landet (exempelvis Tyskland):

Filtrera och dela upp poster

  1. Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Filter".

  2. Ange egenskapen OnSelect för knappen till den här formeln:

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

  3. Tryck på F5, välj den knappen som du nyss lade till och tryck sedan på Esc.

    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).

  4. Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Ungroup".

  5. Ange egenskapen OnSelect för knappen till den här formeln:

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

    Vilket resulterar i:

Mängdresultat

En annan sak vi kan göra med en grupperad tabell är att skapa mängdresultat. I det här exemplet ska vi summera befolkningen i större städer i varje land.

  1. Lägg till en ny knapp och ange egenskapen Text så att knappen visar "Sum".

  2. 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.

  3. Nu har vi summan som vi ville ha och vi kan använda DropColumns till att ta bort de underordnade tabellerna. Ändra egenskapen OnSelect till att använda följande formel:

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

    Vilket resulterar i:

    Observera att vi inte behövde dela upp den här tabellen.