CONTAINSROW |
Ligne contient |
| DAX (Data Analysis Expressions) |
Syntaxe
|
CONTAINSROW(Table, Value [, Value [, ...] ] )
|
Paramètres
| Nom |
Description |
| Table |
Ce paramètre permet de spécifier la table dans laquelle on souhaite rechercher une ligne correspondant exactement à une combinaison spécifique de valeurs. |
| Value |
Ce paramètre permet de définir chacune des valeurs qui, ensemble, doivent correspondre à une ligne complète de la table. Chaque valeur est comparée à la colonne correspondante de la table. |
Description
Cette fonction permet de vérifier si une ligne complète de valeurs est contenue dans une table et retourne TRUE ou FALSE.
Remarques
- CONTAINSROW permet de vérifier l'existence d'une ligne entière plutôt qu'une seule colonne : Contrairement à la fonction CONTAINS, vérifiant une ou plusieurs
valeurs dans des colonnes précises, CONTAINSROW examine une ligne entière. Cela signifie qu'elle compare un ensemble ordonné de valeurs à une ligne précise de la table. La
correspondance doit être stricte et complète : toutes les valeurs doivent s'aligner avec les colonnes dans l'ordre où elles apparaissent dans la table. Cela en fait un outil
performant pour tester des lignes clés et valider des combinaisons uniques. Cette particularité la rend très utile pour des modèles où l'intégrité des données repose sur des
clefs composites.
- L'ordre des valeurs a une importance essentielle dans CONTAINSROW : Parce que DAX compare les valeurs dans l'ordre exact des colonnes de la table, l'ordre
fourni dans les arguments doit correspondre à l'ordre réel des colonnes de la table. Si les valeurs sont fournies dans un ordre différent ou si l'on se trompe de position,
la fonction renverra FALSE même si les valeurs existent. Cela signifie que la documentation interne du modèle doit être bien connue, ou que l'on doit utiliser des tables
structurées de façon prévisible. Cette contrainte peut apporter une rigueur utile dans les cas où les valeurs suivent une hiérarchie précise.
- CONTAINSROW est très efficace pour tester l'existence de clefs composites : Lorsqu'une table utilise plusieurs colonnes pour former une clef unique (exemple :
Année, Mois, Produit), CONTAINSROW permet de vérifier si une ligne représentant cette combinaison existe réellement. Ce type de test est très utile dans l'analyse
multidimensionnelle, notamment dans les modèles étoilés ou en flocon. Cela permet aussi de détecter les doublons ou les incohérences dans les tables de faits. Par ailleurs,
cette fonction peut être utilisée pour sécuriser certaines mesures dépendant de la validité de la référence. Elle devient alors un mécanisme de validation logique du modèle.
- La fonction fonctionne avec des tables virtuelles, pas seulement des tables physiques : Le paramètre Table peut être une table dynamique construite avec des
fonctions comme VALUES, SUMMARIZE, ADDCOLUMNS, FILTER, etc. Cette capacité permet d'utiliser CONTAINSROW dans des calculs complexes où les lignes sont générées à la volée selon
le contexte du rapport. Cela rend la fonction particulièrement utile dans les mesures dynamiques de Power BI, où les filtres des slicers modifient le contenu des tables
virtuelles. Ainsi, elle peut tester par exemple si une combinaison existe après application des filtres. Cette flexibilité renforce son rôle dans les scénarios analytiques
avancés.
- CONTAINSROW effectue une comparaison stricte, sans recherche partielle : La fonction ne supporte ni les recherches approximatives, ni les correspondances
partielles, ni les recherches textuelles avancées. Les valeurs doivent correspondre exactement et être du même type, sans tolérance pour les variations. Une valeur "3" (texte)
ne correspondra pas à 3 (numérique), ce qui peut surprendre si l'on ne fait pas attention à la nature des données. Cette exactitude garantit une haute précision dans les tests
logiques mais peut nécessiter un prétraitement (par exemple convertir des données en texte ou en nombres). Elle fait de CONTAINSROW une fonction très transparente mais
exigeante.
- La fonction facilite la validation de l'intégrité structurelle des données : CONTAINSROW est très pratique pour vérifier que certaines lignes de référence
existent dans une table de dimension. Par exemple, on peut tester si une combinaison "Produit - Catégorie - Sous-catégorie" existe réellement dans la table Produits avant de
continuer un calcul. Cela permet de créer des règles de cohérence dans les mesures ou les colonnes calculées. C'est aussi un outil utile pour détecter des anomalies dans des
tables provenant de systèmes multiples. En somme, CONTAINSROW peut servir de garde-fou logique dans un modèle complexe.
- Elle peut être utilisée pour optimiser des logiques conditionnelles complexes : Certains scénarios DAX nécessitent de tester plusieurs conditions simultanément,
ce qui peut devenir verbeux si l'on utilise des fonctions comme FILTER, AND, ou CONTAINS. Dans ces cas, CONTAINSROW offre une alternative plus compacte et souvent plus
performante, surtout si l'on travaille avec des tables relativement petites. Elle permet de condenser plusieurs tests en un seul appel, ce qui améliore la lisibilité du
code. Cette simplification rend les mesures plus faciles à maintenir et à expliquer, particulièrement dans des environnements où le modèle est consulté par plusieurs
analystes.
- Elle peut remplacer certains équivalents SQL ou Excel dans Power BI : Conceptuellement, CONTAINSROW peut être vue comme une version DAX équivalente à une
clause SQL WHERE (...) avec plusieurs colonnes ou à une recherche combinée dans Excel. Lorsqu'on essaie de simuler une
logique de jointure ou de correspondance sans écrire de DAX complexe, CONTAINSROW constitue une option directe. Cela permet d'établir des équivalences entre des systèmes
différents et aide les utilisateurs venant d'Excel ou SQL à retrouver leurs repères. Souvent, elle permet d'éviter des calculs intermédiaires ou des tables temporaires
inutiles. Elle s'intègre donc naturellement dans les modèles visant une plus grande simplicité.
Dernière mise à jour : Vendredi, le 30 Mai 2025