CONTAINSSTRING |
Chaîne de caractères contient |
| DAX (Data Analysis Expressions) |
Syntaxe
|
CONTAINSSTRING(within_text, find_text)
|
Paramètres
| Nom |
Description |
| within_text |
Ce paramètre permet de spécifier la chaîne de texte principale dans laquelle on souhaite rechercher une sous-chaîne. |
| find_text |
Ce paramètre permet de définir la sous-chaîne que l'on souhaite rechercher à l'intérieur de la chaîne principale. La recherche est insensible à la casse. |
Description
Cette fonction permet de retourner TRUE ou FALSE selon qu'une chaîne de texte en contient une autre, sans distinction de casse.
Remarques
- CONTAINSSTRING réalise une recherche de sous-chaîne insensible à la casse : L'un des avantages majeurs de cette fonction est qu'elle ne tient pas compte des
majuscules ou minuscules dans la comparaison. Cela signifie que "Apple", "APPLE" ou "aPpLe" donnent exactement le même résultat lorsqu'on recherche "apple". Cette insensibilité
facilite l'analyse de données textuelles issues de sources multiples, où la normalisation n'est pas garantie. Elle évite ainsi de devoir appliquer auparavant des fonctions
comme UPPER ou LOWER, ce qui simplifie le code DAX. Pour les données multi-langues ou importées sans contrôle, c'est particulièrement pratique.
- CONTAINSSTRING renvoie un booléen (TRUE/FALSE) simple et rapide à exploiter : La fonction ne renvoie pas une position ou un index comme certains équivalents
en programmation, mais un résultat logique. Cela permet une intégration directe dans des mesures conditionnelles, dans des colonnes calculées ou dans des filtres. Par exemple,
on peut créer une mesure de segmentation cliente basée sur la présence d'un mot-clef dans un champ descriptif. Le fait qu'elle retourne un booléen facilite énormément sa
combinaison avec IF, FILTER, CALCULATE ou SWITCH. L'utilisateur gagne en
efficacité et en lisibilité du code.
- Elle est idéale pour analyser des champs textuels non structurés : Dans les bases de données, certaines colonnes contiennent des descriptions, commentaires
utilisateurs, notes de commandes ou autres contenus semi-structurés. CONTAINSSTRING permet de détecter la présence de mentions particulières, comme des mots-clefs ou des balises,
sans avoir à manipuler des expressions complexes. Cette fonction devient alors un outil puissant dans l'exploration de données qualitatives. Elle peut servir à identifier des
catégories implicites telles que "urgent", "promo" ou "VIP" dans un champ texte. Cela permet d'ajouter une intelligence simple mais utile au modèle analytique.
- CONTAINSSTRING est sensible à l'ordre des caractères mais pas aux mots isolés : Contrairement à une recherche sémantique ou basée sur des mots complets, la
fonction détecte simplement l'existence d'une séquence identique de caractères. Par exemple, rechercher "app" renverra TRUE pour "apple", mais aussi pour "application",
"happening" ou "sapporo". Cette sensibilité impose parfois de nettoyer la chaîne ou de combiner la fonction avec d'autres conditions logiques. On peut par exemple vérifier
la présence d'un séparateur ou d'un espace pour limiter les faux positifs. Comprendre ce comportement évite des classifications erronées ou non intentionnelles.
- La performance de la fonction dépend fortement du contexte d'évaluation : CONTAINSSTRING n'analyse pas un texte isolé dans un environnement statique :
elle peut être utilisée sur des milliers de lignes dans une colonne calculée ou dans un FILTER. Dans un modèle volumineux, les opérations textuelles peuvent devenir
coûteuses en ressources. Cela se ressent surtout si la fonction est utilisée dans des mesures interactives, recalculées à chaque modification de filtre utilisateur. Il
est souvent préférable de créer des colonnes dérivées ou des indicateurs binaires pour stabiliser la performance. Ce type de bonne pratique est crucial pour de grands
modèles Power BI.
- La fonction est particulièrement utile dans les scénarios marketing ou CRM : Les équipes marketing utilisent souvent des balises implicites ou des codes
textuels : "soldes", "gold", "retour client",... CONTAINSSTRING permet de détecter ces éléments dans des attributs descriptifs et de segmenter automatiquement les données.
Cela peut simplifier la création de groupes dynamiques de clients ou de produits basés sur des termes présents dans les descriptions. Sans nécessiter un travail de
catégorisation lourd, cette approche met rapidement en valeur des tendances commerciales. Elle permet également d'alimenter des dashboards stratégiques sans intervention
de data engineers.
- Elle peut servir comme brique de base dans des mesures logiques complexes : Une logique classique peut par exemple combiner plusieurs tests via OR, AND ou
CONTAINSSTRING imbriqués. On peut ainsi identifier un texte contenant plusieurs expressions clés, ou exclure certaines occurrences spécifiques. Une expression complexe
peut tenir en une seule mesure et produire un résultat booléen exploitable dans des segments ou regroupements. Cela réduit la nécessité d'étapes intermédiaires ou de
fonctions plus lourdes, comme des conditions de filtre sur toute une colonne. L'utilisation combinée avec NOT permet aussi de détecter l'absence de motifs textuels.
- CONTAINSSTRING n'effectue pas de recherche avancée comme un moteur de regex : Il faut souligner qu'elle ne permet ni caractères génériques sophistiqué
ni analyse de modèle complexe. La recherche est purement littérale, limitée à une séquence exacte de caractères. Si l'on veut détecter plusieurs mots dans une phrase ou
ignorer la ponctuation, il faut construire des règles supplémentaires. On peut recourir à des fonctions telles que SUBSTITUTE, TRIM,
SEARCH ou même des tables auxiliaires pour obtenir un comportement plus évolué. En résumé, CONTAINSSTRING est simple, rapide et efficace, mais
volontairement non exhaustive dans ses capacités.
Dernière mise à jour : Vendredi, le 30 Mai 2025