Exemples exécutables
Cette page reprend les formules de la page
Contextes de ligne et de filtre sous forme de cellules DAX exécutables. Cliquez sur Exécuter (ou Ctrl+Entrée) sous chaque cellule, dans l'ordre : une cellule Nom = expression crée une mesure que les cellules suivantes réutilisent, une cellule EVALUATE affiche un tableau.
Le modèle utilisé
La table d'exemple de la page parente (Ventes avec Région, Client, Montant) est remplacée par le modèle Brévalis, plus riche :
- Ventes : une ligne par vente (Quantite, PrixUnitaire, Remise), reliée aux dimensions.
- Client : Client, Secteur, Region (Bretagne, Pays de la Loire, Normandie, Île-de-France, Nouvelle-Aquitaine).
- Produit, Date, Site : autres dimensions.
| Page parente | Ici |
Ventes[Région] | Client[Region] |
Ventes[Client] | Client[Client] |
SUM ( Ventes[Montant] ) | SUMX sur Quantite × PrixUnitaire × (1 − Remise) |
ALL ( Ventes ) | ALL ( Client ), la table qui porte la colonne Region |
| Région Ouest | Région Bretagne |
Une cellule EVALUATE SUMMARIZECOLUMNS (...) joue le rôle d'un visuel Tableau : chaque colonne de regroupement est un filtre implicite, comme une ligne du tableau dans le rapport. Un argument TREATAS (...) joue le rôle d'un segment.
Mesure de base
Total Ventes = SUMX ( Ventes, Ventes[Quantite] * Ventes[PrixUnitaire] * ( 1 - Ventes[Remise] ) )
Total Qte = SUM(Ventes[Remise] )Contexte de ligne : il ne filtre rien
ADDCOLUMNS parcourt les régions avec un contexte de ligne. SUM seul ignore la région de la ligne et renvoie le total général sur chaque ligne. Entouré de CALCULATE, le contexte de ligne devient un filtre (transition de contexte) et la quantité de chaque région apparaît.
EVALUATE
ADDCOLUMNS (
VALUES ( Client[Region] ),
"SUM seul", SUM ( Ventes[Quantite] ),
"Avec CALCULATE", CALCULATE ( SUM ( Ventes[Quantite] ) )
)Ordre de résolution : explicites > implicites
Ventes Bretagne = CALCULATE ( [Total Ventes], Client[Region] = "Bretagne" )
Ventes Bretagne (KEEPFILTERS) = CALCULATE ( [Total Ventes], KEEPFILTERS ( Client[Region] = "Bretagne" ) )Visuel par région (même colonne)
EVALUATE
SUMMARIZECOLUMNS (
ROLLUPADDISSUBTOTAL ( Client[Region], "Total" ),
"Total Ventes", [Total Ventes],
"Ventes Bretagne", [Ventes Bretagne],
"Ventes Bretagne (KEEPFILTERS)", [Ventes Bretagne (KEEPFILTERS)]
)- Ventes Bretagne affiche le montant de la Bretagne sur toutes les lignes : le filtre explicite remplace le filtre de la ligne.
- Ventes Bretagne (KEEPFILTERS) n'est rempli que sur la ligne Bretagne : les deux filtres se croisent.
Visuel par secteur (colonnes différentes)
EVALUATE
SUMMARIZECOLUMNS (
Client[Secteur],
"Total Ventes", [Total Ventes],
"Ventes Bretagne", [Ventes Bretagne]
)Le secteur et la région sont deux colonnes différentes : les filtres s'additionnent. Chaque ligne affiche les ventes du secteur réalisées en Bretagne.
ALL et ALLSELECTED : pourcentage du total général ou visible
% du total général = DIVIDE ( [Total Ventes], CALCULATE ( [Total Ventes], ALL ( Client ) ) )
% du total visible = DIVIDE ( [Total Ventes], CALCULATE ( [Total Ventes], ALLSELECTED ( Client ) ) )Le TREATAS ci-dessous joue le rôle d'un segment Région où Île-de-France et Nouvelle-Aquitaine sont décochées.
EVALUATE
SUMMARIZECOLUMNS (
ROLLUPADDISSUBTOTAL ( Client[Region], "Total" ),
TREATAS ( { "Bretagne", "Normandie", "Pays de la Loire" }, Client[Region] ),
"Total Ventes", [Total Ventes],
"% du total général", [% du total général],
"% du total visible", [% du total visible]
)ALLignore aussi le segment : la ligne Total n'atteint pas 100 %.ALLSELECTEDrespecte le segment : la ligne Total vaut 100 %.
ALLEXCEPT : part de chaque client dans sa région
Total Région = CALCULATE ( [Total Ventes], ALLEXCEPT ( Client, Client[Region] ) )
% dans la région = DIVIDE ( [Total Ventes], [Total Région] )EVALUATE
SUMMARIZECOLUMNS (
Client[Region],
Client[Client],
TREATAS ( { "Île-de-France", "Nouvelle-Aquitaine" }, Client[Region] ),
"Total Ventes", [Total Ventes],
"Total Région", [Total Région],
"% dans la région", [% dans la région]
)Le filtre Client est supprimé, le filtre Region est conservé : chaque client est comparé au total de sa région.
Piège : ALLEXCEPT sans la région dans le visuel
Ici, le visuel n'affiche que le client, filtré sur quatre clients de deux régions. Aucun filtre ne porte sur Region : Total Région renvoie le total général sur chaque ligne. La variante robuste retrouve la région du client.
Total Région (robuste) =
CALCULATE ( [Total Ventes], REMOVEFILTERS ( Client ), VALUES ( Client[Region] ) )EVALUATE
SUMMARIZECOLUMNS (
Client[Client],
TREATAS ( { "Atlantique Marine", "Odet Industrie", "Celtic Énergies", "Rance Mécanique" }, Client[Client] ),
"Total Ventes", [Total Ventes],
"Total Région", [Total Région],
"Total Région (robuste)", [Total Région (robuste)]
)Rapport interactif
Le panneau Rapport ci-dessous reprend toutes les mesures de la page. Cochez ou décochez des régions dans le segment et observez quelles colonnes changent : % du total visible suit le segment, % du total général ne le suit pas, Ventes Bretagne ne bouge pas.
Exercice
Écrivez la mesure % du total produits : la part de chaque catégorie de produits (Produit[Categorie]) dans le total de tous les produits. Le résultat s'affiche ventilé par catégorie ; exécutez la cellule pour savoir s'il est juste.
% du total produits = DIVIDE ( [Total Ventes], CALCULATE ( [Total Ventes], ALL ( Produit ) ) )Sources
- Source (Microsoft Learn, SUMMARIZECOLUMNS)
- Source (Microsoft Learn, TREATAS)
- Source (Microsoft Learn, KEEPFILTERS)
- Source (Microsoft Learn, ALLSELECTED)
- Source (Microsoft Learn, ALLEXCEPT)