Fonctions GroupBy et Ungroup
S’applique à : Applications canevas Applications pilotées par modèle Power Pages
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.
Ungroup tente de préserver l’ordre d’origine des enregistrements qui ont été transmis à GroupBy. Cela n’est pas toujours possible (par exemple, si la table d’origine contient des enregistrements vides).
Une table est une valeur dans Power Apps, 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. GroupBy et Ungroup ne modifient pas une table ; à la place, ils prennent une table comme argument et renvoient une table différente. Pour plus d’informations, voir Utilisation des tables.
Note
Dans Power Apps avant la version 3.24042, les noms de colonnes étaient spécifiés avec une chaîne de texte utilisant des guillemets doubles et, s’ils étaient connectés à une source de données, ils devaient également être des noms logiques. Par exemple, le nom logique "cr43e_name" avec des guillemets doubles a été utilisé à la place du nom complet Nom sans guillemets. Pour les sources de données SharePoint et Excel contenant des noms de colonnes avec des espaces, chaque espace était spécifié avec "_x0020_", par exemple "Nom de la colonne" comme "Column_x0020_Name". Après cette version, toutes les applications ont été automatiquement mises à jour sur la nouvelle syntaxe décrite dans cet article.
Syntaxe
GroupBy( Table, ColumnName1 [, ColumnName2 , ... ], GroupColumnName )
- Tableau - Obligatoire. Table contenant les enregistrements à regrouper.
- ColumnNames - Obligatoire. Noms des colonnes de la table en fonction desquelles regrouper les enregistrements. Ces colonnes deviennent des colonnes dans la table renvoyée.
- GroupColumnName - Obligatoire. Nom de colonne pour le stockage des données d’enregistrements ne figurant pas dans les ColumnName(s).
Dissocier( Table, GroupColumnName )
- Tableau - Obligatoire. Table contenant les enregistrements à dissocier.
- GroupColumnName - Obligatoire. Colonne qui contient les données d’enregistrements à part obtenues à l’aide de la fonction GroupBy.
Examples
Créer une collection
- Ajoutez un bouton, puis définissez sa propriété Text de sorte qu’il affiche Original.
- 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}
)
Tout en maintenant la touche Alt enfoncée, sélectionnez le bouton Original.
Vous venez de créer une collection, nommée CityPopulations, qui contient ces données :
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
Ajoutez un autre bouton, puis définissez sa propriété Text sur "Group".
Définissez la propriété OnSelect de ce bouton sur la formule suivante :
ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Pays, Villes ) )
Tout en maintenant la touche Alt enfoncée, sélectionnez le bouton Group.
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.
Pour afficher les cinq premiers enregistrements de cette collection, sélectionnez Collections dans le menu File (Fichier).
Pour afficher la population des villes d’un pays/une région spécifique, sélectionnez l’icône de table dans la colonne Cities pour ce pays ou cette région (par exemple, Germany (Allemagne)) :
Filtrer et dissocier les enregistrements
Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Filter.
Définissez la propriété OnSelect de ce bouton sur la formule suivante :
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" dans Pays ) )
Tout en maintenant la touche Alt enfoncée, sélectionnez le bouton que vous avez ajouté.
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)).
Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Ungroup.
Définissez la propriété OnSelect de ce bouton sur la formule suivante :
ClearCollect(VillePopulationsDégroupées, Ungroup(VillesParPaysFiltré, Villes) )
Ce qui donne la résultat suivant :
Agréger les résultats
Une autre opération que nous pouvons effectuer sur une table groupée est de compiler les résultats. Dans cet exemple, nous allons additionner la population des villes principales de chaque pays/région.
Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche Sum.
Définissez la propriété OnSelect du bouton Sum sur la formule suivante :
ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, ’Somme des populations des villes’, Sum( Cities, Population ) ) )
Ce qui donne la résultat suivant :
AddColumns commence par la collection de base CitiesByCountry et ajoute une nouvelle colonne Somme des populations des villes. Les valeurs de cette colonne sont calculées ligne par ligne selon la formule Sum( Cities, Population ). AddColumns fournit la valeur de la colonne Villes (un tableau) pour chaque ligne, et Sum additionne la Population pour chaque ligne de ce sous-tableau.
Maintenant que nous avons la somme souhaitée, nous pouvons utiliser la fonction DropColumns pour supprimer les sous-tables.
Ajoutez un autre bouton, puis définissez sa propriété Text de sorte qu’il affiche "SumOnly".
Définissez la propriété OnSelect du bouton "SumOnly" dans la formule suivante :
ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Villes ) )
Ce qui donne la résultat suivant :
Notez que nous n’avons pas eu besoin de dissocier cette table.