Compréhension du contexte de ligne et de filtre
Glissez pour afficher le menu
Chaque calcul DAX s'exécute dans un contexte — une définition des lignes pertinentes au moment de l'évaluation. Sans compréhension du contexte, il est impossible de prévoir le résultat d'une mesure ou d'expliquer pourquoi elle retourne une valeur incorrecte.
Contexte de ligne
Le contexte de ligne est le contexte qui existe à l'intérieur d'une colonne calculée. Lorsque Power Pivot évalue une colonne calculée, il traite chaque ligne individuellement — DAX sait exactement sur quelle ligne il se trouve et utilise uniquement les valeurs de cette ligne dans le calcul.
Qu'est-ce que c'est ? La connaissance de la ligne courante. La formule peut référencer n'importe quelle colonne de la même table et obtenir la valeur pour cette ligne spécifique — ni une somme ni une moyenne, mais la valeur exacte de la cellule.
Le contexte de ligne n'existe pas pour les mesures. Lorsqu'une mesure est évaluée, il n'y a pas de ligne courante — seulement un ensemble de filtres actifs. C'est pourquoi écrire une étiquette au niveau de la ligne sous forme de mesure génère une erreur : la mesure n'a aucune ligne sur laquelle s'évaluer.
Contexte de filtre
Le contexte de filtre est le contexte qui existe lorsqu'une mesure est évaluée. Il s'agit de l'ensemble complet des filtres actifs sur le modèle de données au moment où la mesure est calculée — déterminé par tout ce que le tableau croisé dynamique connaît actuellement sur cette cellule spécifique.
Chaque cellule d’un tableau croisé dynamique possède sa propre combinaison unique de filtres actifs.
Une cellule vide n’indique pas une erreur — cela signifie que le contexte de filtre pour cette cellule ne retourne aucune ligne correspondante. Avec la combinaison actuelle de filtres actifs, il n’y a tout simplement aucune donnée.
Les quatre sources du contexte de filtre
Le contexte de filtre s’accumule simultanément à partir de quatre sources indépendantes. Chacune restreint davantage l’ensemble de données :
- Étiquettes de lignes : chaque valeur dans la zone des lignes applique un filtre à sa ligne. Region = North et Region = South créent des contextes de filtre différents — chaque cellule de la ligne North ne voit que les ventes du Nord ;
- Étiquettes de colonnes : chaque valeur dans la zone des colonnes ajoute une seconde dimension de filtre. Combiné avec les étiquettes de lignes, chaque cellule se trouve à l’intersection de deux filtres indépendants ;
- Segments : une sélection dans un segment applique son filtre à chaque cellule du tableau croisé dynamique simultanément. Sélectionner January dans un segment de mois limite toutes les cellules aux données de January, quel que soit leur emplacement en ligne ou en colonne ;
- Filtres du tableau croisé dynamique : les filtres appliqués directement dans la zone de filtre du tableau croisé dynamique contribuent également au contexte de filtre de chaque cellule, s’ajoutant à tous les filtres de ligne, de colonne et de segment déjà actifs.
Tâche
Étape 1 — Expérience sur le contexte de ligne
-
Ouvrir le classeur. Aller à Power Pivot → Gérer → Vue des données → onglet Sales.
-
Observer la colonne calculée Order Size. Elle contient soit Large soit Small pour chaque ligne, selon la valeur de Quantity dans cette ligne.
-
Ajouter maintenant une seconde colonne calculée à la table Sales en utilisant la formule suivante :
= Sales[Quantity] * Sales[UnitPrice]
-
La renommer
Row Revenue. -
Faire défiler la colonne et confirmer que chaque ligne affiche une valeur différente, à savoir le produit de la Quantity et de la UnitPrice de cette ligne spécifique.
Étape 2 — Puis répondre aux questions suivantes
- Quel type de contexte est utilisé lorsque DAX évalue Row Revenue pour chaque ligne ?
- Row Revenue est-il identique à la colonne Total déjà présente dans la table Sales ?
- Serait-il pertinent de créer Row Revenue comme mesure plutôt que comme colonne calculée ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion