Excel DAX - Contexte d'évaluation

Dans DAX, le contexte est un terme important dont vous devez être conscient lors de l'écriture de formules DAX. Aussi appeléevaluation context, Le contexte DAX est utilisé pour déterminer l'évaluation d'une formule DAX et le résultat correspondant. Cela signifie que les résultats d'une formule DAX peuvent varier en fonction du contexte. Vous devez clairement comprendre comment un contexte DAX spécifique est utilisé et comment les résultats peuvent être différents.

Le contexte d'évaluation vous permet d'effectuer une analyse dynamique, dans laquelle les résultats d'une formule DAX peuvent changer pour refléter la ligne actuelle ou une sélection de cellule ainsi que toutes les données associées. La compréhension du contexte et l'utilisation efficace du contexte sont très importantes pour créer des formules DAX puissantes, effectuer une analyse dynamique des données et résoudre les problèmes dans les formules DAX. Les contextes d'évaluation sont à la base de toutes les fonctionnalités avancées de DAX que vous devez maîtriser pour créer des rapports d'analyse de données complexes.

Lorsque vous continuez à faire référence aux fonctions DAX pour une utilisation appropriée dans les formules DAX, vous devez vous référer à ce chapitre sur le contexte DAX pour obtenir des éclaircissements sur les résultats.

Types de contexte dans DAX

DAX prend en charge les contextes d'évaluation suivants -

  • Contexte de ligne
  • Contexte du filtre

Lorsqu'une formule DAX est évaluée, tous les contextes seront pris en compte et appliqués le cas échéant. Les contextes existent ensemble et le résultat de la formule sera différent en fonction du contexte utilisé lors du calcul d'une valeur. Par exemple, lorsque vous sélectionnez des champs pour des lignes, des colonnes et des filtres dans un tableau croisé dynamique, les sous-totaux sont calculés dynamiquement en fonction de la ligne et de la colonne auxquelles le sous-total / total est associé et les valeurs des lignes et des colonnes sont déterminées par les filtres utilisé.

Contexte de ligne

Le contexte de ligne signifie que la formule DAX ou la fonction DAX sait quelle ligne de la table elle fait référence à tout moment. Vous pouvez considérer le contexte de ligne comme la ligne actuelle. La formule sera calculée ligne par ligne avec le contexte de ligne.

Certaines fonctions DAX (par exemple, les fonctions X, FILTER ()) et toutes les colonnes calculées ont un contexte de ligne. Par exemple, si vous créez une colonne calculée Year avec la formule DAX = YEAR ([Date]), les valeurs de la colonne calculée sont obtenues en appliquant la formule DAX donnée à la colonne donnée du tableau, ligne par ligne.

Cela signifie que si vous avez créé une colonne calculée, le contexte de ligne se compose des valeurs de chaque ligne individuelle et des valeurs des colonnes liées à la ligne actuelle, comme déterminé par la formule DAX utilisée. Bien que la formule DAX ne contienne pas la référence à une ligne, DAX comprend implicitement le contexte de ligne lors du calcul des valeurs.

DAX crée automatiquement un contexte de ligne lorsque vous définissez une colonne calculée et toutes les valeurs calculées avec la formule DAX utilisée apparaîtront dans la colonne calculée.

En revanche, lorsque vous avez une fonction DAX telle que SUMX, les valeurs calculées ligne par ligne sont additionnées et seul le résultat final sera affiché. Autrement dit, les valeurs intermédiaires sont ignorées.

Lorsque vous avez des tables liées, le contexte de ligne détermine quelles lignes de la table associée sont associées à la ligne actuelle. Cependant, le contexte de ligne ne se propage pas automatiquement via les relations. Vous devez utiliser les fonctions DAX - RELATED et RELATEDTABLE pour cela.

Contexte de plusieurs lignes

DAX a des fonctions d'itérateur comme SUMX. Vous pouvez utiliser ces fonctions pour imbriquer des contextes de ligne. Avec cela, par programme, vous pouvez avoir une récursivité sur une boucle interne et une boucle externe, où vous pouvez avoir plusieurs lignes actuelles et des contextes de ligne actuels.

Par exemple, vous pouvez utiliser la fonction DAX Earlier () qui stocke le contexte de ligne de l'opération qui a précédé l'opération en cours. Cette fonction stocke deux ensembles de contexte en mémoire - un ensemble de contexte représente la ligne actuelle pour la boucle interne de la formule et un autre ensemble de contexte représente la ligne actuelle pour la boucle externe de la formule. DAX alimente automatiquement les valeurs entre les deux boucles afin que vous puissiez créer des agrégats complexes.

Pour un exemple, reportez-vous au scénario - Création d'une formule DAX qui classe dynamiquement les valeurs dans le chapitre Scénarios - Classement et comparaison des valeurs.

Contexte du filtre

Le contexte de filtre fait référence à tout filtrage appliqué au modèle de données dans DAX. Le contexte de filtre est créé par un tableau croisé dynamique et également par les fonctions DAX.

Contexte de filtre créé par un tableau croisé dynamique

Le contexte de filtre créé par un tableau croisé dynamique est le filtrage naturel appliqué par les sélections effectuées sur les champs du tableau croisé dynamique parmi les éléments suivants:

  • Rows
  • Columns
  • Filters
  • Slicers

Le contexte de filtre créé par un tableau croisé dynamique filtre les tables sous-jacentes dans le modèle de données. Si les tables sont liées, les filtres descendent des tables de recherche vers les tables de données. Cela signifie que vous pouvez filtrer les tables de données en fonction des résultats des tables de recherche. La propagation du filtre ne se produit pas dans l'autre sens. Toutefois, vous pouvez utiliser des formules DAX pour filtrer les tables de recherche en fonction des résultats des tables de données.

Contexte de filtre créé par les fonctions DAX

Vous pouvez utiliser les fonctions de filtre DAX pour définir des champs calculés et des colonnes calculées, contenant des expressions de filtre qui contrôlent les valeurs utilisées par la formule DAX. Ces champs calculés et colonnes calculées font alors partie de la liste des champs de tableau croisé dynamique et vous pouvez les ajouter au tableau croisé dynamique. Vous pouvez également effacer sélectivement les filtres sur des colonnes particulières avec ces fonctions de filtre DAX. CALCULATE () est un exemple d'une puissante fonction de filtre DAX pour créer un contexte de filtre. Pour un exemple, reportez-vous au chapitre Scénarios - Exécution de calculs complexes.

Contexte de filtrage comme ajout au contexte de ligne

Le contexte de ligne ne crée pas automatiquement un contexte de filtre. Vous pouvez obtenir la même chose avec les formules DAX contenant des fonctions de filtre DAX.