De functies GroupBy en Ungroup

Van toepassing op: Canvas-apps Modelgestuurde apps

Hiermee kunt u records van een tabel groeperen en de groepering opheffen.

Omschrijving

De functie GroupBy retourneert een tabel met records die zijn gegroepeerd op basis van de waarden in een of meer kolommen. Records in dezelfde groep worden in één record geplaatst. Er wordt een kolom toegevoegd die een geneste tabel van de overige kolommen bevat.

De functie Ungroup keert het GroupBy-proces om. Deze functie retourneert een tabel en breekt alle records die waren gegroepeerd op in afzonderlijke records.

U kunt records groeperen door GroupBy te gebruiken, de tabel die hij retourneert te wijzigen en de records in de gewijzigde tabel vervolgens met behulp van Ungroup op te splitsen. U kunt bijvoorbeeld een groep records verwijderen door deze benadering te volgen:

  • Gebruik de functie GroupBy.
  • Gebruik de functie Filter om de hele groep met records te verwijderen.
  • Gebruik de functie Ungroup.

U kunt ook resultaten samenvoegen op basis van een groepering:

  • Gebruik de functie GroupBy.
  • Gebruik de functie AddColumns met Sum, Average, en andere samenvoegingsfuncties om een nieuwe kolom toe te voegen, die een samenvoeging van de groepstabellen vormt.
  • Gebruik de functie DropColumns om de groepstabel te verwijderen.

Ungroup probeert de oorspronkelijke volgorde van de records die in GroupBy werden ingevoerd te behouden. Dit is niet altijd mogelijk (bijvoorbeeld als de oorspronkelijke tabel lege records bevat).

Een tabel is een waarde in Power Apps, net zoals een tekenreeks of getal. U kunt een tabel opgeven als een argument voor een functie en een functie kan een tabel retourneren. GroupBy en Ungroup wijzigen een tabel niet. In plaats daarvan gebruiken ze een tabel als argument en retourneren ze een andere tabel. Zie werken met tabellen voor meer informatie.

Notitie

In Power Apps vóór versie 3.24042 werden kolomnamen voor de zoekfunctie Search gespecificeerd met een tekenreeks met dubbele aanhalingstekens, en indien verbonden met een gegevensbron het moesten ook logische namen zijn. Zo werd bijvoorbeeld de logische naam "cr43e_name" met dubbele aanhalingstekens gebruikt in plaats van de weergavenaam Naam zonder aanhalingstekens. Voor SharePoint- en Excel-gegevensbronnen die kolomnamen met spaties bevatten, werd elke spatie gespecificeerd met "_x0020_", bijvoorbeeld "Column Name" als "Column_x0020_Name". Na deze versie werden alle apps automatisch bijgewerkt naar de nieuwe syntaxis die in dit artikel wordt beschreven.

Syntaxis

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

  • Table: vereist. Tabel die moet worden gegroepeerd.
  • ColumnName(s): vereist. De kolomnamen in Table waarop records moeten worden gegroepeerd. Deze kolommen worden kolommen in de resulterende tabel.
  • GroupColumnName: vereist. De kolomnaam voor de opslag van recordgegevens die niet in de ColumnName(s) zijn.

Ungroup( Table, GroupColumnName )

  • Table: vereist. Tabel waarvan de groep moet worden opgeheven.
  • GroupColumnName: vereist. De kolom die de recordgegevensconfiguratie met de functie GroupBy bevat.

Voorbeelden

Een verzameling maken

  1. Voeg een knop toe en stel de eigenschap Text zo in dat de knop Oorspronkelijk weergeeft.
  2. Stel de eigenschap OnSelect van de knop Origineel in op deze formule:
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}
)
  1. Selecteer de knop Origineel terwijl u de Alt-toets ingedrukt houdt.

    U hebt zojuist een verzameling met de naam Inwonersaantallen gemaakt die deze gegevens bevat:

    Voorbeeld CityPopulations.

  2. Selecteer Collections in het menu File en selecteer vervolgens de verzameling CityPopulations om deze verzameling weer te geven. De eerste vijf records in de verzameling worden weergegeven:

    CityPopulations-verzameling.

Records groeperen

  1. Voeg een andere knop toe en stel de eigenschap Text ervan in op "Group".

  2. Stel de eigenschap OnSelect van deze knop in op deze formule:

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

  3. Selecteer de knop Group terwijl u de Alt-toets ingedrukt houdt.

    U hebt zojuist een verzameling met de naam CitiesByCountry gemaakt, waarin de records van de vorige verzameling zijn gegroepeerd op de kolom Country.

    Steden gegroepeerd.

  4. Selecteer Collections in het menu File om de eerste vijf records van deze verzameling weer te geven.

    Steden per land/regio.

  5. Selecteer het pictogram met de tabel in de kolom Steden voor een bepaald land of een bepaalde regio (bijvoorbeeld Duitsland) om de bevolking van steden in dat land of die regio weer te geven:

    Bevolking - Duitsland.

Records filteren en groepen opheffen

  1. Voeg nog een knop toe en stel de eigenschap Text zo in dat de knop "Filter" weergeeft.

  2. Stel de eigenschap OnSelect van deze knop in op deze formule:

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

  3. Selecteer de knop die u hebt toegevoegd terwijl u de Alt-toets ingedrukt houdt.

    U hebt zojuist een derde verzameling met de naam StedenPerLandGefilterd gemaakt die alleen de landen bevat die een "e" in hun namen hebben (dus niet Duitsland of Frankrijk).

    CitiesByCountryFiltered.

  4. Voeg nog een knop toe en stel de eigenschap Text zo in dat de knop "Groepering opheffen" wordt weergegeven.

  5. Stel de eigenschap OnSelect van deze knop in op deze formule:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )

    Dit resulteert in:

    Steden per land/regio na opheffen van groepering.

Resultaten samenvoegen

Een andere bewerking die we op een gegroepeerde tabel kunnen uitvoeren, is het compileren van de resultaten. In dit voorbeeld zullen we de bevolking van de grote steden in elk land/elke regio optellen.

  1. Voeg nog een knop toe en stel de eigenschap Text zo in dat de knop "Som" wordt weergegeven.

  2. Stel de eigenschap OnSelect van de knop "Som" in op deze formule:

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

    Dit resulteert in:

    Som van steden.

    AddColumns start met de basisverzameling StedenPerLand en voegt een nieuwe kolom Som van inwonersaantallen steden toe. De waarden van deze kolom worden per rij berekend op basis van de formule Sum( Steden, Inwonersaantal). AddColumns biedt de waarde van de kolom Steden (een tabel) voor elke rij en Sum telt de Inwonersaantal voor elke rij van deze subtabel op.

    Nu we de som hebben die we willen, kunnen we DropColumns gebruiken om de subtabellen te verwijderen.

  3. Voeg nog een knop toe en stel de eigenschap Text zo in dat de knop "AlleenSom" wordt weergegeven.

  4. Stel de eigenschap OnSelect van de knop "AlleenSom" in op deze formule:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

    Dit resulteert in:

    Som voor Landen/regio's.

    Het zal u zijn opgevallen dat we de groep in deze tabel niet hoefden op te heffen.