Ceci est un post invité.
Power Query est un outil puissant et pratique permettant de matcher des données de diverses sources de manière rapide. Bref, je l’utilise presque quotidiennement.
Cependant, il ne dispose pas de toutes les fonctions qu’un DBA utilise en SQL, par exemple COALESCE. Cette fonction permet de retourner la première valeur non null de ces arguments.
En Power Query, on peut utiliser une série de « if then else » en M, mais ça devient très fastidieux lorsqu’il y a 15 colonnes à traiter.
Imaginons, le cas suivant :
Un des hacks permettant d’éviter de fastidieux « if then else » est le suivant :
- Créer une liste des valeurs de chaque colonne : List.Distinct( { [A], [B], [C] })
- Retirer les nulls : List.RemoveNulls( <list>)
- Retourner la première valeur : List.First( <list>)
Ce qui nous donne la formule M suivante (après ajout d’une colonne custom) :
Ce qui nous donne au final, le résultat escompté.
S’il le besoin est de concaténer toutes les valeurs non nulls, alors il suffit de changer List.First par Text.Combine. Cette dernière fonction prend comme 2ième argument le séparateur entre chaque valeur (vide par défaut).
Par exemple,
.
Une réflexion sur “Power Query : regrouper des valeurs de plusieurs colonnes en une”