Power Query : Tout sur GroupKind pour des groupements pertinents
Le paramètre GroupKind dans la fonction Table.Group permet de contrôler comment les données sont regroupées, ce qui peut être crucial pour certaines analyses ou transformations de données.
Dans l’exemple suivant, je vous démontre comment utiliser ce 4e paramètre de Table.Group
Dans le cas présent, nous voulons transformer le tableau de gauche qui liste, par jour, le nombre de rendez-vous comblés pour une clinique.
Le nombre maximal de rendez-vous pouvant être de 5, nous voulons savoir pendant combien de jours consécutifs l’on a affiché Complet. Puis appliquer le même concept pour les journées où seulement une partie des rendez-vous a été octroyée.
Nous pouvons voir dans le tableau de droite qu’il y a eu au départ 3 journées où la clinique a affiché complet, soit du 1er février au 3 février. Et que les 2 jours suivants, les 4 et 5 février, la clinique n’a pas comblé tous ses rendez-vous.
Voici les 3 étapes pour y arriver
1. Ajouter une colonne conditionnelle
En premier, il faut ajouter une colonne conditionnelle pour identifier l’atteinte de la capacité pour chacune des journées en indiquant « Complet » ou « Partiel » selon le cas. Nous avons nommé la nouvelle colonne « Capacité ».
2. Regrouper les données
Il faut ensuite sélectionner la nouvelle colonne Capacité dans le jeu de données et puis se diriger dans le menu Transformer puis cliquer sur Regrouper par.
Il faut alors inscrire les éléments suivants dans la fenêtre du Regrouper par, et ainsi obtenir le nombre de jours par capacité avec la date de début et la date de fin.
Nous obtenons maintenant les données suivantes :
Vous remarquez que présentement,il y a 2 lignes, une pour Complet et une autre pour Partiel. Par contre nous voulons comparer chacun des groupes de jours consécutifs où c’est Complet, puis les groupes de jours consécutifs où c’est Partiel.
Ce comportement est expliqué par le 4e paramètre qui est facultatif. Nous n’avons rien spécifié pour l’instant et donc par défaut l’option GroupKind.Global a été utilisée.
Avant d’aller plus loin, voici les options que nous avons pour ce 4e paramètre
Si vous regardez l’image ci-dessus, qui montre les paramètres de la fonction Table.Group au niveau du 4e paramètre, nous retrouvons l’inscription groupKind as nullable number.
Il faut donc ajouter la propriété GroupKind qui permet de spécifier le type de regroupement et qui possède 2 options :
- Local
- Ce type de regroupement forme des groupes à partir d’une séquence consécutive de lignes d’une table d’entrée.
- Cela implique que deux lignes ayant la même valeur seront réparties dans des groupes distincts si une ligne avec une valeur différente se trouve entre elles.
- L’ordre dans lequel s’affichent les données est alors très important. Il faut donc trier nos données adéquatement.
- Global
- Ce type de regroupement forme des groupes à partir de toutes les lignes d’une table d’entrée.
- Le résultat est indépendant de la position des données dans la table.
- C’est l’option par défaut de ce paramètre.
3. Modification du code M de la fonction Table.Group
Reprenons maintenant le code M du regroupement que nous avons fait plus tôt :
J’ai identifié par couleur les 3 différents paramètres présentement utilisés dans la fonction Table.Group.
Comme le 4e paramètre n’est pas spécifié, l’option GroupKind.Global a été utilisée par défaut.
Pour modifier ce 4e paramètre et utiliser GroupKind.Local, nous devons modifier le code M.
Il faut ajouter, avant la dernière parenthèse, une virgule pour passer au 4e paramètre puis inscrire GroupKind.Local.
Ceci a pour effet de passer à travers les lignes de la colonne Capacité et grouper les lignes avec la même valeur jusqu’au moment où cette valeur devient différente.
Si l’on reprend les données avant le regroupement (ci-dessous), les 3 premières lignes de la colonne Capacité contiennent la valeur « Complet ». Mais cette valeur change à la ligne 4,
Les 3 premières lignes sont donc groupées. Et un 2e groupe est alors formé avec les 2 autres lignes qui contiennent la valeur « Partiel », et ainsi de suite.
C’est pour cette raison que les données doivent être triées en ordre croissant de date, sinon le résultat ne sera pas celui escompté.
Par exemple, si je trie les données par Nb de rendez-vous comblés comme ceci :
Le résultat avec l’option GroupKind.Local donnera alors le résultat suivant, puisque toutes les journées avec la valeur « Partiel » dans la colonne Capacité se trouve au début et les valeurs « Complet » se trouvent à la fin :
Petite astuce pour vous aider dans vos regroupements
Dans la fenêtre de paramètres de Regrouper Par, pour vous aider à comprendre le comportement de vos groupements, vous pouvez ajouter un regroupement avec l’opération Toutes les lignes. Ici, j’ai nommé la nouvelle colonne « Détails ».
Dans la nouvelle colonne Détails, vous pouvez cliquer à côté du mot Table dans la ligne de votre choix pour voir ce que contient ce groupement. Ici, ça nous permet de voir les lignes qui sont contenues dans le 1er groupement.
N’oubliez pas qu’il faudra enlever cette transformation de votre code une fois que vous aurez testé le tout et que vous aurez obtenu le bon résultat.
Conclusion sur le 4e paramètre de Table.Group dans Power Query
En maîtrisant le 4e paramètre de la fonction Table.Group dans Power Query, vous pouvez optimiser vos analyses de données et obtenir des résultats plus précis et pertinents. Que vous choisissiez l’option GroupKind.Local ou GroupKind.Global, chaque méthode offre des avantages uniques selon vos besoins spécifiques.
Nous espérons que cet article vous a été utile et vous a permis de mieux comprendre l’importance de ce paramètre !
N’hésitez pas à partager vos expériences et à poser vos questions dans les commentaires ci-dessous.
Fichier d’accompagnement VIP à télécharger
Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.
J.ignorais complètement l’existence de ce paramètre et le potentiel d’usage est super intéressant même si je pense que cela doit concerner des configurations très spécifiques.
En revanche pour moi l’énorme take-away de l’article, c’est l’excellent truc du « détail » (toutes lignes) qui me semble a contrario utilisable presque tout le temps.
Cela faisait longtemps que je n’etais pas repassé sur votre blog mais la qualité des sujets et de leur traitement est toujours aussi satisfaisante.
Merci et bravo!
Merci pour les bons mots!
Au plaisir,
Kim