Regroupe et dissocie les enregistrements d’une table.

Description

La fonction GroupBy renvoie une table dans laquelle les enregistrements sont regroupés en fonction des valeurs contenues dans une ou plusieurs colonnes. Les enregistrements d’un même groupe sont placés dans un enregistrement unique, avec une colonne en plus qui contient une table imbriquée des colonnes restantes.

La fonction Ungroup inverse le processus de la fonction GroupBy. Cette fonction renvoie une table dans laquelle les enregistrements qui avaient été regroupés sont séparés en enregistrements distincts.

Vous pouvez regrouper les enregistrements à l’aide de la fonction GroupBy, modifier la table renvoyée, puis dissocier les enregistrements dans la table modifiée à l’aide de la fonction Ungroup. Par exemple, vous pouvez supprimer un groupe d’enregistrements en suivant cette approche :

  • Utilisez la fonction GroupBy.
  • Utilisez la fonction Filter pour supprimer le groupe d’enregistrements complet.
  • Utilisez la fonction Ungroup.

Vous pouvez également agréger des résultats en fonction d’un regroupement :

  • Utilisez la fonction GroupBy.
  • Utilisez la fonction AddColumns avec les fonctions Sum, Average et d’autres fonctions d’agrégation pour ajouter une nouvelle colonne constituant un agrégat des tables de groupes.
  • Utilisez la fonction DropColumns pour supprimer la table de groupes.

La fonction Ungroup essaie de préserver l’ordre d’origine des enregistrements auxquels la fonction GroupBy a été appliquée. Cela n’est pas toujours possible (par exemple, si la table d’origine contient des enregistrements vides).

Une table est une valeur dans PowerApps, au même titre qu’une chaîne ou qu’un chiffre. Vous pouvez spécifier une table en tant qu’argument pour une fonction et une fonction peut renvoyer une table. Les fonctions GroupBy et Ungroup ne modifient pas une table ; au lieu de cela, elles prennent une table en tant qu’argument et renvoient une autre table. Pour plus d’informations, voir Utilisation des tables.

Syntaxe

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

  • Table - Requis. Table contenant les enregistrements à regrouper.
  • ColumnName(s) - Requis. Noms des colonnes de la table en fonction desquelles regrouper les enregistrements. Ces colonnes deviennent des colonnes dans la table renvoyée.
  • GroupColumnName* : requis. Nom de colonne pour le stockage des données d’enregistrements ne figurant pas dans les *ColumnName(s).

Ungroup( Table, GroupColumnName )

  • Table - Requis. Table contenant les enregistrements à dissocier.
  • *GroupColumnName* : requis. Colonne qui contient les données d’enregistrements à part obtenues à l’aide de la fonction GroupBy.

Exemples

Créer une collection

  1. Ajoutez un bouton, puis définissez sa propriété Text de sorte qu’il affiche Original.

  2. Définissez la propriété OnSelect du bouton Original sur la formule suivante :

    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. Appuyez sur F5, sélectionnez le bouton Original, puis appuyez sur Échap.

    Vous venez de créer une collection, nommée CityPopulations, qui contient ces données :

  4. Pour afficher cette collection, sélectionnez Collections dans le menu File (Fichier), puis sélectionnez la collection CityPopulations. Les cinq premiers enregistrements de la collection s’affichent :

Regrouper les enregistrements

  1. Ajoutez un autre bouton, puis définissez sa propriété Text sur "Group".

  2. Définissez la propriété OnSelect de ce bouton sur la formule suivante :

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

  3. Appuyez sur F5, sélectionnez le bouton Group, puis appuyez sur Échap.

    Vous venez de créer une collection nommée CitiesByCountry, dans laquelle les enregistrements de la collection précédente sont regroupés en fonction de la colonne Country.

  4. Pour afficher les cinq premiers enregistrements de cette collection, sélectionnez Collections dans le menu File (Fichier).

  5. Pour afficher la population des villes d’un pays spécifique, sélectionnez l’icône de table dans la colonne Cities pour ce pays (par exemple, Germany (Allemagne)) :

Filtrer et dissocier les enregistrements

  1. Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Filter.

  2. Définissez la propriété OnSelect de ce bouton sur la formule suivante :

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

  3. Appuyez sur F5, sélectionnez le bouton que vous avez ajouté, puis appuyez sur Échap.

    Vous venez de créer une troisième collection, nommée CitiesByCountryFiltered, qui inclut uniquement les pays dont le nom contient la lettre « e » (à savoir tous les pays à l’exception de Spain (Espagne) et Italy (Italie)).

  4. Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Ungroup.

  5. Définissez la propriété OnSelect de ce bouton sur la formule suivante :

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

    Ce qui donne la résultat suivant :

Agréger les résultats

Une table d’enregistrements regroupés permet également d’agréger les résultats. Dans cet exemple, nous allons additionner la population des villes principales de chaque pays.

  1. Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Sum.

  2. Définissez la propriété OnSelect du bouton Sum sur la formule suivante :

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

    Ce qui donne la résultat suivant :

    La fonction AddColumns commence par la collection de base CitiesByCountry et ajoute une nouvelle colonne Sum of City Populations. Les valeurs de cette colonne sont calculées ligne par ligne selon la formule Sum( Cities, Population ). La fonction AddColumns fournit la valeur de la colonne Cities (une table) pour chaque ligne, et la fonction Sum additionne les valeurs de la colonne Population pour chaque ligne de cette sous-table.

  3. Maintenant que nous avons la somme souhaitée, nous pouvons utiliser la fonction DropColumns pour supprimer les sous-tables. Modifiez la propriété OnSelect de sorte qu’elle utilise la formule suivante :

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

    Ce qui donne la résultat suivant :

    Notez que nous n’avons pas eu besoin de dissocier cette table.