Aller au contenu
Power Query, DAX & automatisation

DAX (mesures, CALCULATE)

DAX est le langage des mesures du modèle de données : une mesure se recalcule selon les filtres du TCD. CALCULATE en est la clé, car elle évalue une expression sous des filtres modifiés.

  • DAX
  • mesure
  • CALCULATE
  • contexte
  • SUMX

Syntaxe

Modèle
Mesure := CALCULATE(expression; filtre1; [filtre2; ...])Champs de tableau croisé dynamique : clic droit sur la table > Ajouter une mesure

Exemple

Exemple concret
CA := SUM(Ventes[Montant])CA Nord := CALCULATE([CA]; Clients[Région]="Nord")Part du CA := DIVIDE([CA]; CALCULATE([CA]; ALL(Clients[Région])))CA N-1 := CALCULATE([CA]; SAMEPERIODLASTYEAR(Calendrier[Date]))→ dans un TCD par région, ligne Nord : CA 120 000 et Part du CA 48 % si le total vaut 250 000

À retenir

  1. Les fonctions DAX ne sont jamais traduites : on écrit SUM, CALCULATE ou DIVIDE même dans un Excel en français. Seuls les séparateurs suivent les paramètres régionaux (point-virgule et virgule décimale en français).
  2. Piège : contexte de ligne et contexte de filtre ne se confondent pas. Une mesure n'a pas de ligne courante, donc Ventes[Quantité]*Ventes[Prix] y est refusé ; écrivez SUMX(Ventes; Ventes[Quantité]*Ventes[Prix]), qui parcourt la table ligne par ligne.
  3. Piège : CALCULATE remplace le filtre existant sur la colonne citée. CA Nord affiche donc le CA du Nord même sur la ligne Sud du TCD ; KEEPFILTERS combine les filtres au lieu de les remplacer.
  4. Préférez DIVIDE(a; b) à a/b : la fonction renvoie un vide au lieu d'une erreur quand le dénominateur vaut 0.
  5. Les fonctions d'intelligence temporelle (SAMEPERIODLASTYEAR, TOTALYTD) exigent une table Calendrier aux dates continues, marquée comme table de dates.

Voir aussi