3.1 · CALCULATE, contexte de filtre & variables (VAR)

Niveau 3 · Avancé : DAX & interactivité

3.1CALCULATE, contexte de filtre & variables (VAR)

Objectif : maîtriser le contexte de ligne/filtre, modifier le contexte avec CALCULATE et clarifier les formules avec VAR.
Temps estimé : 25 min

Voici le chapitre qui sépare l'utilisateur du praticien DAX. Tout calcul s'évalue dans un contexte de filtre : la cellule d'une matrice « Paris × Janvier » calcule [Total CA] filtré sur Paris ET janvier — sans que vous n'ayez rien écrit. CALCULATE est l'outil qui MODIFIE ce contexte : ajouter un filtre, en écraser un (la part du total), en retirer (ALL).

Vous apprendrez à lire le contexte d'une cellule de visuel, à manier CALCULATE avec ALL pour les pourcentages du total, et à structurer vos formules avec les variables VAR/RETURN — lisibilité et performance. C'est dense, c'est le cœur du réacteur : prenez le temps de l'exercice.

Vocabulaire de la section

Contexte de filtre
L'ensemble des filtres actifs sur une cellule de visuel (axes, légendes, segments, filtres) : chaque cellule a le sien.
CALCULATE
Évalue une expression dans un contexte modifié : CALCULATE([CA]; Ventes[Ville]="Paris") ajoute/écrase le filtre Ville.
ALL
Retire des filtres : ALL(Ventes[Ville]) ignore le filtre ville — la clé des « % du total » : DIVIDE([CA]; CALCULATE([CA]; ALL(Ventes[Ville]))).
VAR / RETURN
Les variables DAX : VAR TotalGlobal = … RETURN … — formules lisibles, calculs non répétés, débogage facilité.
Transition de contexte
Le mécanisme (avancé) par lequel CALCULATE transforme un contexte de ligne en contexte de filtre — à connaître de nom, à creuser avec SQLBI.
Vérifiez votre compréhension

Que fait la fonction CALCULATE ?

CALCULATE, contexte de filtre & variables (VAR)
Vidéo hébergée sur YouTube — ouvrir dans un nouvel onglet ↗
Tutos « 3.1 » Power BI CALCULATE contexte de filtre variables VAR DAX (recherche)
Cliquer pour voir les résultats à jour ↗

En pratique — Le « % du total » décortiqué

  1. Créez une matrice Ville × [Total CA] et LISEZ chaque cellule en énonçant son contexte : « cette cellule = CA filtré sur Lyon ».
  2. Écrivez : CA Toutes villes = CALCULATE([Total CA]; ALL(Ventes[Ville])) — ajoutez-la à la matrice : la même valeur partout (le filtre ville est retiré).
  3. Assemblez avec variables : Part ville = VAR Total = CALCULATE([Total CA]; ALL(Ventes[Ville])) RETURN DIVIDE([Total CA]; Total) — formatée en %.
  4. Testez avec un segment Commercial actif : la part se recalcule DANS le périmètre du segment — relisez la formule jusqu'à pouvoir expliquer pourquoi.
Le trio contexte + CALCULATE/ALL + VAR maîtrisé sur le calcul le plus demandé : le % du total.

Points clés à retenir

  • Chaque cellule de visuel a son contexte de filtre : lisez-le à voix haute pour comprendre un résultat.
  • CALCULATE ajoute/écrase des filtres ; ALL en retire : les deux gestes couvrent l'essentiel des besoins.
  • VAR/RETURN systématiques dès qu'une formule dépasse une ligne : lisibilité ET performance.
  • Un résultat DAX « bizarre » = un contexte mal compris : le diagnostic commence toujours là.

Questions fréquentes

ALL, ALLSELECTED, ALLEXCEPT : comment s'y retrouver ?

ALL retire tout filtre sur la cible ; ALLSELECTED respecte les sélections externes (segments) ; ALLEXCEPT retire tout SAUF les colonnes citées. Commencez par ALL, ajoutez ALLSELECTED quand le % doit suivre les segments — les cas fins viendront avec la pratique.

Pourquoi mes mesures donnent-elles juste en matrice mais faux en total ?

La ligne Total a un contexte plus large (aucun filtre ville) : une mesure mal construite (moyenne de ratios, par ex.) s'y dégrade. Solution habituelle : recalculer par itération (SUMX) — abordé avec la pratique, documenté chez SQLBI.

Autres ressources