CONTAINS |
Contient |
| DAX (Data Analysis Expressions) |
Syntaxe
|
CONTAINS(table, columnName, value[, columnName, value]...)
|
Paramètres
| Nom |
Description |
| table |
Ce paramètre permet de spécifier la table dans laquelle la recherche des valeurs doit être effectuée. |
| columnName |
Ce paramètre permet de désigner la colonne dans laquelle la valeur correspondante doit être recherchée. Ce paramètre peut être répété pour plusieurs paires colonne/valeur. |
| value |
Ce paramètre permet de définir la valeur à rechercher dans la colonne spécifiée. Si la valeur est trouvée dans la colonne correspondante, la condition est considérée comme satisfaite. |
Description
Cette fonction permet de vérifier si certaines valeurs existent dans les colonnes spécifiées d'une table et retourne TRUE ou FALSE.
Remarques
- La fonction CONTAINS fonctionne comme une requête booléenne explicite : La fonction CONTAINS sert essentiellement à vérifier la présence d'une ou plusieurs
valeurs dans une table et retourne un résultat booléen TRUE ou FALSE. Elle se comporte donc comme un test d'existence, proche d'une condition SQL ou d'une clause WHERE EXISTS.
Contrairement à d'autres fonctions de recherche comme SEARCH ou CONTAINSSTRING qui examinent du texte, CONTAINS travaille sur des colonnes et des valeurs structurées. La
nature booléenne du résultat la rend particulièrement utile dans les expressions conditionnelles DAX. Elle peut par exemple être utilisée directement dans un IF, une mesure
ou une colonne calculée afin d'orienter une logique métier.
- CONTAINS permet de vérifier simultanément plusieurs pairs colonne/valeur : Une particularité très intéressante de CONTAINS est sa capacité à accepter plusieurs
arguments columnName, value. Cela signifie que l'on peut vérifier plusieurs conditions au sein d'une même ligne d'une table cible. Les conditions sont combinées logiquement
avec un AND, ce qui exige qu'elles soient toutes vraies pour que la fonction renvoie TRUE. Cette capacité est idéale lorsqu'on veut tester des clés composites ou des
correspondances multi-colonnes. Cela évite la multiplication de filtres internes et simplifie l'écriture des DAX complexes.
- Le paramètre table doit être une table existante ou une table virtuelle : Le premier argument de CONTAINS n'est pas limité à une table physique du
modèle. On peut également lui passer une table virtuelle générée par une autre fonction DAX comme FILTER, VALUES,
SUMMARIZE, ADDCOLUMNS,... Cela ouvre des usages puissants,
notamment dans des expressions basées sur des filtres dynamiques. Par exemple, on peut vérifier si une table filtrée contient une valeur après application de segments ou
de slicers dans un rapport Power BI. Cette flexibilité rend la fonction utile dans des contextes complexes de filtrage et d'analyse.
- La fonction CONTAINS est souvent utilisée dans des mesures : Dans un tableau dynamique ou un rapport Power BI, CONTAINS est souvent intégrée dans des mesures
pour contrôler l'affichage ou le calcul selon la présence d'éléments. Elle peut par exemple être combinée avec une autre fonction comme CALCULATE ou FILTER pour déterminer
si un produit, un client ou un état existe dans le contexte courant. La mesure pourra ensuite renvoyer un nombre, un texte, ou déclencher une autre logique. Cette utilisation
permet de construire des visualisations interactives, "intelligentes" et adaptées au contexte utilisateur.
- CONTAINS s'avère utile pour valider l'intégrité de données : On peut utiliser CONTAINS pour vérifier si des lignes d'une table de faits correspondent à des
valeurs d'une table de dimension. Par exemple, vérifier si un code produit existe réellement dans la table des produits avant d'agréger des ventes. Ce type de test permet
de détecter des incohérences ou des anomalies dans les données sources. Utiliser CONTAINS dans des colonnes calculées ou des mesures peut donc contribuer à un meilleur
contrôle qualité des modèles Power BI ou Analysis Services. Il devient alors un outil de diagnostic plutôt qu'un simple opérateur
logique.
- La fonction CONTAINS est strictement égalitaire : Un point fondamental : CONTAINS ne réalise pas de recherche partielle ou de comparaison flexible. La valeur
recherchée doit correspondre exactement à celle contenue dans la colonne spécifiée. Par exemple, rechercher "Jean" ne donnera pas "Jean-Pierre" ou "jean" (sauf système
insensible à la casse). La précision du test empêche les faux positifs, mais nécessite parfois de prétraiter ou transformer les données textuelles. Si l'on veut une recherche
contenante ou insensible à la casse, il faudra utiliser d'autres fonctions comme SEARCH ou CONTAINSSTRING.
- CONTAINS interagit efficacement avec FILTER et VALUES : Un usage très fréquent consiste à combiner CONTAINS avec VALUES pour tester si la valeur courante d'une
dimension existe dans un sous-ensemble filtré. Cela permet de bâtir des règles conditionnelles basées sur la sélection utilisateur dans un rapport Power BI. De même, en
l'associant à FILTER, on peut tester une condition dans un sous-ensemble de la table, par exemple une période, une région ou une catégorie. La fonction devient alors un
levier puissant pour gérer des scénarios analytiques dynamiques à plusieurs niveaux.
- CONTAINS peut éviter certains JOIN inutiles : Dans des scénarios simples où l'objectif est seulement de vérifier l'existence d'une correspondance, CONTAINS
peut remplacer une jointure complexe. Au lieu de générer une table intermédiaire via NATURALINNERJOIN ou RELATEDTABLE, la fonction répond directement à la question
"Existe-t-il une ligne correspondant à ces critères ?". Cela allège le code DAX, réduit la charge computationnelle dans certains cas et augmente la lisibilité. Bien
utilisée, elle contribue à des modèles plus performants, surtout dans des rapports largement consultés par les utilisateurs.
Dernière mise à jour : Vendredi, le 30 Mai 2025