Vous souhaitez modifier le prix d’un produit si son libellé contient le mot « rouge » ? Vous souhaitez remplacer les premiers caractères d’un code produit par un autre code ? Vous devez supprimer toutes les occurrences de certains mots-clés ? Dans toutes ces situations, vous allez devoir utiliser une fonction permettant de chercher et/ou de remplacer un texte dans un autre texte.
D’une manière générale, il est plus performant de chercher et remplacer un texte dans Power Query grâce au langage M. Néanmoins, cette situation n’est pas toujours possible, en particulier si vous souhaitez modifier le texte dans une colonne calculée. La solution est alors de chercher et remplacer un texte avec DAX dans Power BI. Et vous avez de la chance ! Le langage DAX propose 6 fonctions de recherche et remplacement. Découvrons-les ensemble ! 🙂
#1 – Chercher un texte avec FIND
La fonction FIND retourne la première position du texte à rechercher (de gauche à droite).
FIND ( texte à rechercher , texte initial , <position de départ> , <valeur de retour alternative> )
La fonction FIND est sensible à la casse et aux accents.
Exemple
La formule DAX suivante retourne la première position du mot « crumble » dans les titres des recettes, ou la valeur 0 si le mot n’est pas trouvé.
Position = FIND ( "crumble" , Table[Recettes] , 1 , 0 )
Recettes | Position |
---|---|
Cake sans beurre kiwis et pêches | 0 |
Crumble pommes, chocolat et noisettes | 0 |
Tarte aux myrtilles façon crumble | 27 |
Crumble pommes, poires et kiwis | 0 |
Gâteau crumble banane et rhubarbe | 8 |
La fonction FIND étant sensible à la casse, le mot « crumble » est différent du mot « Crumble ». La valeur de retour est donc le chiffre 0 pour la deuxième ligne et pour la quatrième ligne.
#2 – Chercher un texte avec SEARCH
La fonction SEARCH retourne la première position du texte à rechercher (de gauche à droite). La fonction SEARCH autorise l’utilisation de caractères génériques pour rechercher n’importe quel caractère unique (?) ou n’importe quelle séquence de caractères (*).
SEARCH ( texte à rechercher , texte initial , <position de départ> , <valeur de retour alternative> )
La fonction SEARCH n’est pas sensible à la casse mais respecte les accents.
Pour rechercher les caractères ? ou * spécifiquement, vous devez utiliser un tilde (~) avant ces caractères.
Exemple
La formule DAX suivante retourne la première position de la séquence commençant par la lettre « p » et se terminant par la lettre « s ».
Position = SEARCH ( "p*s" , Table[Recettes] , 1 , 0 )
Recettes | Position |
---|---|
Cake sans beurre kiwis et pêches | 27 |
Crumble pommes, chocolat et noisettes | 9 |
Tarte aux myrtilles façon crumble | 0 |
Crumble pommes, poires et kiwis | 9 |
Gâteau crumble banane et rhubarbe | 0 |
La fonction SEARCH n’étant pas sensible à la casse, la recherche des séquences « p*s » ou « P*s » ou « p*S » ou « P*S » donne le même résultat.
#3 – Chercher un texte avec CONTAINSSTRING
La fonction CONTAINSSTRING retourne la valeur TRUE si un texte contient le texte à rechercher. La fonction CONTAINSSTRING autorise l’utilisation de caractères génériques pour rechercher n’importe quel caractère unique (?) ou n’importe quelle séquence de caractères (*).
CONTAINSSTRING ( texte initial , texte à rechercher )
La fonction CONTAINSSTRING n’est pas sensible à la casse mais respecte les accents.
Pour rechercher les caractères ? ou * spécifiquement, vous devez utiliser un tilde (~) avant ces caractères.
Exemple
La formule DAX suivante retourne TRUE si une séquence commençant par la lettre « p » et se terminant par la lettre « s » est trouvée, et FALSE sinon.
Presence = CONTAINSSTRING ( Table[Recettes] , "p*s" )
Recettes | Presence |
---|---|
Cake sans beurre kiwis et pêches | TRUE |
Crumble pommes, chocolat et noisettes | TRUE |
Tarte aux myrtilles façon crumble | FALSE |
Crumble pommes, poires et kiwis | TRUE |
Gâteau crumble banane et rhubarbe | FALSE |
La fonction CONTAINSSTRING n’étant pas sensible à la casse, la recherche des séquences « p*s » ou « P*s » ou « p*S » ou « P*S » donne le même résultat.
#4 – Chercher un texte avec CONTAINSSTRINGEXACT
La fonction CONTAINSSTRINGEXACT retourne la valeur TRUE si un texte contient le texte à rechercher.
CONTAINSSTRINGEXACT ( texte initial , texte à rechercher )
La fonction CONTAINSSTRINGEXACT est sensible à la casse et aux accents.
Exemple
La formule DAX suivante renvoie TRUE si le mot « crumble » est présent dans les titres des recettes, ou FALSE sinon.
Presence = CONTAINSSTRINGEXACT ( Table[Recettes] , "crumble" )
Recettes | Presence |
---|---|
Cake sans beurre kiwis et pêches | FALSE |
Crumble pommes, chocolat et noisettes | FALSE |
Tarte aux myrtilles façon crumble | TRUE |
Crumble pommes, poires et kiwis | FALSE |
Gâteau crumble banane et rhubarbe | TRUE |
La fonction CONTAINSSTRINGEXACT étant sensible à la casse, le mot « crumble » est différent du mot « Crumble ». La valeur de retour est donc la valeur FALSE pour la deuxième ligne et pour la quatrième ligne.
#5 – Remplacer un texte avec REPLACE
La fonction REPLACE permet de remplacer un certain nombre de caractères par une nouvelle chaîne de texte.
REPLACE ( texte initial , position de départ , nombre de caractères à remplacer , nouveau texte )
Exemple
La formule DAX suivante ajoute le mot « Dessert – » au début du titre de chaque recette.
Nouvelles recettes = REPLACE ( Table[Recettes] , 1 , 0 , "Dessert - " )
Recettes | Nouvelles recettes |
---|---|
Cake sans beurre kiwis et pêches | Dessert – Cake sans beurre kiwis et pêches |
Crumble pommes, chocolat et noisettes | Dessert – Crumble pommes, chocolat et noisettes |
Tarte aux myrtilles façon crumble | Dessert – Tarte aux myrtilles façon crumble |
Crumble pommes, poires et kiwis | Dessert – Crumble pommes, poires et kiwis |
Gâteau crumble banane et rhubarbe | Dessert – Gâteau crumble banane et rhubarbe |
#6 – Remplacer un texte avec SUBSTITUTE
La fonction SUBSTITUTE remplace un texte existant par un nouveau texte.
SUBSTITUTE ( texte initial , texte à remplacer , nouveau texte , <nombre de remplacements> )
La fonction SUBSTITUTE est sensible à la casse et aux accents.
Exemple
La formule DAX suivante remplace le mot « crumble » par le mot « sablé ».
Nouvelles recettes = SUBSTITUTE ( Table[Recettes] , "crumble" , "sablé" )
Recettes | Nouvelles recettes |
---|---|
Cake sans beurre kiwis et pêches | Cake sans beurre kiwis et pêches |
Crumble pommes, chocolat et noisettes | Crumble pommes, chocolat et noisettes |
Tarte aux myrtilles façon crumble | Tarte aux myrtilles façon sablé |
Crumble pommes, poires et kiwis | Crumble pommes, poires et kiwis |
Gâteau crumble banane et rhubarbe | Gâteau sablé banane et rhubarbe |
La fonction SUBSTITUTE étant sensible à la casse, le mot « crumble » est différent du mot « Crumble ». Le titre de la recette n’est donc pas modifié à la deuxième ligne et à la quatrième ligne.
Conclusion : 6 fonctions pour chercher et remplacer un texte avec DAX
Le langage DAX propose 6 fonctions pour chercher et remplacer un texte :