Fonctions GroupBy et Ungroup

S’applique à : Applications canevas Applications pilotées par modèle

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

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 )

  • Table : obligatoire. Table contenant les enregistrements à regrouper.
  • ColumnName(s) : 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).

Ungroup( Table, GroupColumnName )

  • Table : 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

  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}
)
  1. 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 :

    Exemple CityPopulations.

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

    Collection CityPopulations.

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

    Villes regroupées.

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

    Villes d’un pays ou d’une région

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

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

    CitiesByCountryFiltered.

  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 :

    Villes par pays/région après dissociation.

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.

  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 :

    Somme des villes.

    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.

    Maintenant que nous avons la somme souhaitée, nous pouvons utiliser la fonction DropColumns pour supprimer les sous-tables.

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

  4. Définissez la propriété OnSelect du bouton "SumOnly" dans la formule suivante :

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

    Ce qui donne la résultat suivant :

    Somme des pays.

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