CONTAINSSTRINGEXACT |
Contient la chaîne de caractères exacte |
| DAX (Data Analysis Expressions) |
Syntaxe
|
CONTAINSSTRINGEXACT(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 effectuer la recherche. |
| find_text |
Ce paramètre permet de définir la sous-chaîne à rechercher dans le texte principal, en exigeant une correspondance exacte, y compris la casse (majuscules/minuscules). |
Description
Cette fonction permet de retourner TRUE ou FALSE selon qu'une chaîne contient une autre avec correspondance exacte, y compris la casse.
Remarques
- CONTAINSSTRINGEXACT se distingue par sa sensibilité stricte à la casse : Contrairement à CONTAINSSTRING, cette fonction exige que les majuscules et minuscules
correspondent exactement entre la chaîne principale et la chaîne recherchée. Ainsi, rechercher "Test" dans "test" renverra FALSE, car la casse n'est pas identique. Cette
caractéristique rend la fonction particulièrement utile lorsque le modèle doit respecter des conventions textuelles précises, par exemple des codes produits, des références,
des identifiants ou des noms normalisés. Elle offre un contrôle exact et évite des correspondances imprécises pouvant entraîner des erreurs d'analyse.
- Elle permet de vérifier des sous-chaînes exactes, et non seulement des mots complets : La recherche ne s'arrête pas à des mots séparés : la fonction renvoie
TRUE si la séquence de caractères correspond exactement, même si elle se trouve au milieu d'un autre mot. Par exemple, "API" dans "SuperAPIHandler" est détecté, tandis que
"Api" ne l'est pas si la casse ne correspond pas. Cela permet une utilisation dans des systèmes où des balises techniques ou codes sont incrustés au sein de strings. La
précision offerte est particulièrement pertinente dans la manipulation de métadonnées ou de chaînes techniques à format strict.
- Elle est adaptée aux domaines où la variation de casse transmet de l'information : Dans certains contextes métiers, la capitalisation n'est pas décorative
mais sémantique : en biologie, en finance, en informatique ou en reporting légal. Par exemple, ABC peut être un
identifiant de société, mais abc une référence interne ou un champ utilisateur. CONTAINSSTRINGEXACT évite alors les confusions entre signaux similaires. Elle garantit que
la logique ne crée pas des correspondances involontaires, ce qui prévient des anomalies de catégorisation souvent difficiles à détecter a posteriori.
- La fonction renvoie un booléen simple, facilitant les règles conditionnelles : Comme elle retourne TRUE ou FALSE, elle s'intègre facilement dans des expressions
conditionnelles à base de IF, SWITCH, FILTER ou CALCULATE. On peut par exemple segmenter des éléments selon leur format textuel précis, sans devoir appliquer une logique de
nettoyage préalable. Cela accélère la mise en place de diagnostics sur des champs qualitatifs contrôlés. L'utilisateur peut aussi combiner plusieurs conditions de recherche
exacte pour créer des règles avancées tout en conservant un code lisible.
- Elle est cependant moins tolérante aux variations et anomalies des données : Parce qu'elle exige une correspondance exacte, un simple espace, accent ou lettre
mal formatée peut rendre la fonction inopérante. Si la base contient des données issues de sources instables (saisie humaine, import
CSV sans normalisation, copier/coller), CONTAINSSTRINGEXACT peut retourner beaucoup de FALSE inattendus. Dans ces cas, il devient
nécessaire d'utiliser des fonctions de normalisation telles que TRIM, UPPER, LOWER,
ou des remplacements avec SUBSTITUTE. Sans cela, l'analyse risque d'être biaisée,
surtout dans les modèles volumineux où les erreurs textuelles sont nombreuses.
- Elle est idéale pour des évaluations techniques ou de journaux : Les journaux systèmes, messages d'erreurs, balises XML/JSON, chemins de fichiers ou signatures
de transactions contiennent souvent des chaînes avec une casse précise. Un message "ERROR" n'est pas "Error" ni "error" et peut correspondre à un niveau de criticité.
CONTAINSSTRINGEXACT permet de repérer uniquement les occurrences strictes, réduisant le bruit analytique. En BI opérationnel, cela permet de produire des métriques fiables
sans filtrer manuellement les incohérences. Cette approche convient aussi pour le suivi de balises comme OK, WARN, FAIL.
- La fonction peut devenir coûteuse à grande échelle : Comme toutes les fonctions de manipulation textuelle, son usage sur des colonnes calculées volumineuses
ou dans des mesures dynamiques augmente la charge CPU du moteur DAX. La recherche exacte ne réduit pas la complexité algorithmique, mais elle empêche certaines optimisations
sémantiques. Plus la table est large, plus le recalcul interactif dans Power BI peut devenir lent. Une bonne pratique consiste à créer des colonnes dérivées ou drapeaux
binaires lors de l'import pour éviter une évaluation constante pendant la navigation. Cela stabilise l'expérience utilisateur et réduit la latence.
- Elle constitue un outil précis mais doit être choisie en fonction du contexte : Si votre modèle contient des données normalisées et maîtrisées (ERP, CRM,
référentiels produits), CONTAINSSTRINGEXACT est un choix robuste et cohérent. En revanche, dans des jeux de données non nettoyés, elle devient dangereusement restrictive.
Dans ces scénarios, CONTAINSSTRING ou des transformations préalables sont souvent préférables. Le choix entre les deux fonctions ne relève donc pas uniquement de l'intention
technique, mais aussi de la maturité des données. Une bonne compréhension du cycle de vie des données évite des décisions de modélisation qui freinent la performance ou
créent des faux négatifs invisibles.
Dernière mise à jour : Vendredi, le 30 Mai 2025