Power Query: Vérifier si les expressions d’une colonne comprennent un des mots contenus dans une liste

Publié le 07 juin 2018
par Sophie Marchand M.Sc., CPA, CGA, MVP
Appeler fonction personnalisée

Power Query: Vérifier si les expressions d’une colonne comprennent un des mots contenus dans une liste

Récemment, une apprenante m’a soumis une problématique à résoudre dans Power Query qui m’apparaissait très simple au départ et qui s’est finalement avérée un peu plus complexe que prévu. L’apprenante souhaitait vérifier si les expressions contenues dans une colonne de ses données comprenaient un ou l’autre des mots faisant partie d’une liste. S’il est simple de vérifier les équivalences “exactes”, il est plus ardu de vérifier si les expressions contiennent une mot sans pour autant être une expression équivalente. Cet article vise à démontrer une démarche possible pour résoudre cette problématique.

 

Données de départ

Pour illustrer le cas, nous avons utilisé les données ci-dessous. La problématique consiste à déterminer si les mots de la colonne MOT comprennent un des mots de la liste à droite. La colonne STATUT indique le résultat recherché.
 
Tableaux de départ et résultat recherché

 

Résolution avec Power Query

Nous avons d’abord défini un paramètre “SearchInParameter”, que nous avons d’abord établi comme étant “Chien-loup”.
 
Searchin Parameter

 

Dans notre liste, nous avons ajouté une colonne, qui insère tout simplement la valeur du paramètre. Comme notre paramètre initial est “Chien-loup”, nous voyons donc apparaître cette valeur dans la nouvelle colonne “SearchIn”.
 
SearchIn

 

Dans la même requête, nous avons ajouté une autre colonne qui, à l’aide de la fonction Text.Contains, vérifie si le mot de la colonne “Liste” est présent dans l’expression de la colonne “SearchIn”. La fonction retourne donc un TRUE (VRAI) pour le mot “Chien” dans la liste.
 
TextContains

 

L’idée est donc de procéder à l’envers. Nous allons vérifier si chacun des mots de notre liste est contenu ou non dans chacune des expressions de notre colonne MOT de nos données originales.

 

À cette étape-ci, nous avons donc filtré sur les TRUE (VRAI).
 
Trouver les vrais

 

Nous avons ensuite compté le nombre de lignes qui retournent un TRUE (VRAI).
 
Regroupement par

 

Dans ce cas-ci, nous obtenons une ligne, donc 1.
 
Nombre de lignes

 

IMPORTANT: À ce stade-ci, nous avons converti cette requête en fonction, que nous avons nommée fnContains. Cette fonction a un paramètre, soit l’expression dans laquelle on recherche les différents mots de la liste.

 
 

Vous devez analyser de grandes quantités de données et les présenter dans des rapports et tableaux de bord, avec des indicateurs de performance pertinents ? Développez vos compétences avec nos formations en Power BI.

 
Nous sommes ensuite allée dans notre requête avec la table des mots d’origine et nous avons ajouté une colonne pour appeler notre fonction personnalisée.
 
Appeler fonction personnalisée

 

Ce faisant, la fonction vérifie si les mots de la liste sont compris ou non dans chacun des mots de la colonne MOT et retourne “null” quand il n’y a pas de TRUE (VRAI) donc quand il n’y a pas de correspondance et retourne un chiffre lorsqu’il y a au moins une correspondance. Nous avons ensuite ajouté une colonne pour retourner un FALSE quand la colonne “Nombre” = null et TRUE dans les autres cas.
 
Ajout colonnes

 

Au final, nous obtenons bien les résultats recherchés au départ.
 
Résultat

 

Pour plus de performance, il peut s’avérer utile d’imbriquer notre liste dans une fonction Table.Buffer (pour éviter qu’elle se réactualise à chaque évaluation de la fonction).
 
Table.Buffer

 


Fichier d’accompagnement VIP à télécharger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.

 

Formation complémentaire

Afin d’approfondir vos connaissances avec Power BI et plus particulièrement vos compétences avec l’éditeur de requête Power Query, nous vous recommandons notre formation Recettes magiques pour transformer vos données.
 
Voici quelques commentaires d’apprenants ayant suivi la formation en ligne Recettes magiques pour transformer vos données :

Sylvain LEPRÊTRE
Écrit il y a 6 mois
Formation très intéressante

Formation très intéressante si on veut monter au niveau supérieur dans Power Query


CFO-Masque_Formations-en-ligne_FB Le CFO masqué offre un vaste choix de formations en informatique décisionnelle avec Excel et Power BI, via un portail en ligne et à distance en temps réel, selon un calendrier. Si vous désirez organiser des formations privées, faites nous simplement parvenir un courriel à info@lecfomasque.com . Des certificats convenant aux normes de formation continue des divers ordres professionnels du Québec sont offerts pour l'ensemble des formations.  

Découvrez quelles formations vous conviennent

 

3 réflexions sur “Power Query: Vérifier si les expressions d’une colonne comprennent un des mots contenus dans une liste”

  1. Bonjour
    Pour répondre avec une formule Excel à cette question je propose =ESTNUM(EQUIV(1;EQUIV(“*”&Tableau2[Liste]&”*”;[@Mot];0);0)) en matricielle

    Je rencontre un problème similaire auquel j’ai répondu avec une méthode un peu différente sur laquelle je coince avec PowerQuery :
    – comment traduire une recherche avec les caractères joker : * et ? (Ch*t pour Chiot et Chat) ;
    – comment gérer la casse (si on cherche “Chauve-souris” et non “Chauve-Souris” PowerQuery répondra FAUX)

    EQUIV gère les caractères joker (on peut même chercher les “vrais” caractères * et ? en mettant un ~ devant) et ne tient pas compte de la casse

    Je vais donc mettre un fichier exemple de mon problème sur le blog

    Stéphane

  2. Bonjour,

    Merci pour l’info. Mais comment faire si je souhaite utiliser cette fonction au niveau de mon visuel afin de modifier la recherche côté interface utilisateur. Exemple, lors de la création de votre exemple on recherche le mot chien. Ok. Mais si l’utilisateur final souhaite chercher un autre mot comment faut t’il procéder au niveau visuel. Merci

    1. Sophie Marchand

      Bonjour,

      Pour utiliser un paramètre spécifié par l’usager, il faudrait le faire avec Power Query dans Excel (l’usager entrerait alors la valeur dans une cellule Excel qui serait reprise dans le code M) ou si on veut demeurer dans Power BI, il faudrait utiliser Microsoft Flow pour automatiser le processus.

      Au plaisir,

      Sophie

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to Top