L’objectif de cet exercice est de créer un regroupement de données à partir d’une collection de données. Cette collection est constituée des 3 champs suivants : Ville, Pays, Habitants.
Le regroupement doit créer une nouvelle collection de données, nommée PaysHabitants. Celle -ci doit exposer le nombre total d’habitants par pays, en utilisant la fonction GroupBy().
Pour faire cet exercice, téléchargez les fichiers. Ensuite, dézippez le fichier. Dans le dossier Collections, vous devrez utiliser le fichier Collection du nombre habitants par villes. Le mode opératoire est indiqué ci-dessous.
Pour vous aider, regardez la copie d’écran ci-dessous qui présente le résultat attendu.
Attention, il s’agit d’un total sur 2 ou 3 villes du pays et non pas le nombre total d’habitants par pays 😉

Créer une application Power Apps
Ouvrez le site web Microsoft Power Apps.
Dans le volet de navigation (à gauche), cliquez sur Applications.
Dans la bannière du volet central (en haut), cliquez sur Nouvelle application (en haut, vers la gauche).
Dans le menu qui s’affiche, cliquez sur : Zone de dessin.
Dans le volet central du nouvel onglet, cliquez sur Mode téléphone sous Application vide.
Pour vous aider, regardez la copie d’écran ci-dessous.

Notez que vous auriez pu aussi bien choisir la disposition de la tablette sous Application vide, car les manipulations sont strictement identiques. Il s’agit d’un choix purement arbitraire.
Si la fenêtre Bienvenue dans Power Apps Studio s’ouvre, cliquez sur : Ignorer.
Enregistrer et renommer l’application
Cliquez sur le ruban Fichier puis dans le volet de gauche, cliquez sur Enregistrer.
Dans le volet central (vers la droite), remplacez le nom de l’application (« Application ») par canGraphiques.
En bas et à droite de l’écran, cliquez sur le bouton Enregistrer.
Si vous ne voyez pas le bouton Enregistrer, c’est parce que vous êtes dans les Paramètres de l’application. Dans ce cas, cliquez sur Enregistrer.
Cliquez sur la flèche en haut et à gauche pour revenir à l’accueil.
Créer la collection de données
Dans les exercices téléchargés, ouvrez le fichier Collection du nombre habitants par villes. Ce fichier contient une fonction ClearCollect() qui crée une collection nommée VillesHabitants. Cette collection expose le nombre d’habitants de quelques villes de certains pays.
Pour créer la collection, vous allez ajouter et paramétrer un bouton.
Dans l’application canGraphiques, ajoutez un bouton, puis changez le texte du bouton :
Button1.Text = "Habitants par villes"
Ensuite copiez le contenu du fichier Collection du nombre habitants par villes dans sa propriété OnSelect (à la place de false).
Appuyez sur la touche F5 de votre clavier.
Cliquez sur le bouton pour créer la collection VillesHabitants.
Dans le ruban Fichier, vérifiez la présence de la collection.
Pour vous aider, regardez la copie d’écran ci-dessous.

Regrouper les données
Le regroupement doit créer une nouvelle collection de données, nommée PaysHabitants. Celle -ci doit exposer le nombre total d’habitants par pays, en utilisant la fonction GroupBy().
Pour ce faire, ajoutez un bouton, puis changez le texte du bouton :
Button2.Text = "Total par pays"
Pour vous aider, regardez la copie d’écran ci-dessous.

Ensuite, paramétrez la propriété OnSelect :
Button2.OnSelect = ClearCollect(PaysHabitants; DropColumns(AddColumns(GroupBy(VillesHabitants; "Pays"; "PaysTotal"); "Total";Sum(PaysTotal;Habitants));"PaysTotal"))
Comprendre le raisonnement
Avant d’expliquer en détail la formule, il faut comprendre le raisonnement qui aboutit à trouver cette formule.
L’objectif est d’avoir un total par pays à partir de la collection VillesHabitants.
Si vous regardez comment est construite cette collection, vous voyez ceci :
{ Ville: "Bruxelles"; Pays: "Belgique"; Habitants: 180000}; { Ville: "Liège"; Pays: "Belgique"; Habitants: 200000}; { Ville: "Anvers"; Pays: "Belgique"; Habitants: 500000}; { Ville: "Genève"; Pays: "Suisse"; Habitants: 500000}; { Ville: "Zurich"; Pays: "Suisse"; Habitants: 400000}; { Ville: "Luxembourg"; Pays: "Luxembourg"; Habitants: 620000}; { Ville: "Paris"; Pays: "France"; Habitants: 2200000}; { Ville: "Nantes"; Pays: "France"; Habitants: 300000}
Celle-ci stocke le nombre d’habitants par ville et par pays : il est donc naturel de regrouper les données par pays. Dans la formule, c’est le rôle de la colonne PaysTotal, qui est créée avec la fonction GroupBy().
Ensuite, il suffit de faire la somme du nombre d’habitants qui se trouve pour chaque ligne de la colonne PaysTotal. Pour chaque pays, cette somme est stockée dans la colonne Total. La somme est calculée avec la fonction Sum(). La colonne Total est créée avec la fonction AddColumns().
Enfin, la colonne intermédiaire PaysTotal est supprimée avec la fonction DropColumns().
Ci-dessous, vous trouverez une explication plus détaillée.
Mettre en forme la formule
Pour comprendre cette formule, il faut repérer le début et la fin de chaque fonction. Pour cela, le mieux est d’utiliser la mise en forme proposée par Power Apps.
Pour vous aider, regardez la copie d’écran ci-dessous.

Fonction ClearCollect()
La fonction ClearCollect(…) demande à Power Apps de créer une collection. Pour ce faire, Power Apps créé une table en mémoire qui sera la future collection de données. Ensuite, le premier argument donne le nom de la collection : PaysHabitants. Power Apps le note.
Le second argument contient les champs avec leurs données. Dans un premier temps, oublions les fonctions DropColumns() et AddColumns().
Intéressons-nous à la fonction GroupBy().
Fonction GroupBy()
La fonction suivante va créer une nouvelle colonne qui se nomme PaysTotal, à partir des données de la collection VillesHabitants :
GroupBy(VillesHabitants;"Pays";"PaysTotal")
Par construction, cette colonne est donc une table qui regroupe les données de VillesHabitants par pays.
Par exemple pour la Belgique, son contenu ressemble à cette copie d’écran:

Fonctions AddColumns() et Sum()
Nous venons de voir que le premier argument de la fonction suivante renvoie une table par pays :
AddColumns(GroupBy(VillesHabitants;"Pays";"PaysTotal");"Total";Sum(PaysTotal;Habitants))
Le second argument créé une nouvelle colonne, qui se nomme « Total ». Par construction, celle-ci est alimentée avec la formule du troisième argument.
En effet, la somme de la colonne Habitants de chaque table est faite avec la fonction :
Sum(PaysTotal;Habitants)
Fonction DropColumns()
Dans la mesure où la colonne PaysTotal ne contient pas le résultat final, il ne sert à rien de la garder. C’est un simple résultat intermédiaire.
La colonne PaysTotal est donc supprimée avec la fonction :
DropColumns(AddColumns(GroupBy(VillesHabitants; "Pays"; "PaysTotal"); "Total";Sum(PaysTotal;Habitants));"PaysTotal"))
En résumé, la colonne PaysTotal a été créée avec la fonction GroupBy(), elle a servi à calculer le total par pays puis elle a été supprimée avec la fonction DropColumns().
Vérifier la formule
Appuyez sur la touche F5 de votre clavier.
Cliquez sur le bouton avec l’intitulé Habitants par villes, pour créer la collection VillesHabitants, qui contient les données en entrée.
Ensuite, cliquez sur le bouton avec l’intitulé Total par pays, pour créer la collection PaysHabitants, qui contient le regroupement.
Dans le ruban Fichier, vérifiez la présence de la collection.
Pour vous aider, regardez la copie d’écran ci-dessous qui présente le résultat attendu.

L’exercice est terminé.
Résumé
Dans cet exercice, vous avez découvert comment regrouper les données d’une collection, et vous avez vu une méthode de résolution de problème. Ces techniques sont évidemment applicables à d’autres sources de données (Listes SharePoint, Tables SQL Server, Entités CDS, etc.)
Vous avez aussi appris comment mettre en forme une formule Power Apps complexe.
Article mis à jour le 12.04.2020.
Laisser un commentaire