Magazine Informatique

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

Publié le 07 juin 2018 par Sopmar01 @mon_cher_watson

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.

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

NOTRE OFFRE DE FORMATIONS


Microsoft Most Valuable Professional

Le CFO masqué vous offre un vaste choix de formations Excel et Power BI, réparties dans 8 catégories: Excel – Tableaux de bord, Excel – Modélisation financière, Excel – VBA, Excel – Power Tools, Excel – Ninja, Power BI, Analytique d’affaires et Finance corporative. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et ils sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel. De plus, nos formations peuvent mener à l’obtention d’une accréditation.

Découvrez quelles formations vous conviennent

Pour info: 514-605-7112 ou [email protected]


Retour à La Une de Logo Paperblog

A propos de l’auteur


Sopmar01 3934 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte