DAX dans Power BI : 5 notions essentielles avec exemples
DAX dans Power BI : mesures, contexte de filtre, CALCULATE, time intelligence et variables, avec des formules commentées pour progresser sans erreur.
Pour bien démarrer en DAX dans Power BI, cinq notions suffisent à couvrir l’essentiel des besoins : savoir choisir entre mesure et colonne calculée, comprendre le contexte de filtre, maîtriser CALCULATE, utiliser la time intelligence sur une vraie table de dates, et structurer ses formules avec des variables. Voici chacune de ces notions, avec des formules prêtes à adapter.
DAX (Data Analysis Expressions) est le langage de calcul de Power BI. Inutile de connaître ses centaines de fonctions : quelques notions bien comprises font toute la différence.
Dans les exemples ci-dessous, on suppose un modèle simple : une table de faits Ventes (colonnes Montant, Quantite, PrixUnitaire, NumCommande, DateCommande), reliée à une table Produits et à une table 'Date'.
1. Mesure ou colonne calculée : laquelle choisir ?
C’est le premier réflexe à acquérir. Une colonne calculée se calcule ligne par ligne, au moment de l’actualisation des données, et son résultat est stocké dans le modèle. Une mesure se calcule à la volée, selon le contexte du visuel. Dans la grande majorité des cas, ce que vous cherchez est une mesure : un total, une moyenne, un ratio agrégé.
Une mesure de base :
CA = SUM ( Ventes[Montant] )
Une mesure qui calcule ligne par ligne puis additionne, sans créer de colonne :
CA calculé = SUMX ( Ventes, Ventes[Quantite] * Ventes[PrixUnitaire] )
SUMX est un itérateur : il parcourt chaque ligne de la table, évalue l’expression, puis fait la somme. C’est souvent une meilleure solution qu’une colonne calculée, qui alourdit le modèle.
Réservez la colonne calculée aux valeurs dont vous avez besoin comme axe ou comme filtre : une tranche d’âge, une catégorie de client, un libellé de mois. Nous détaillons ce choix dans notre article mesure ou colonne calculée dans Power BI.
| Critère | Mesure | Colonne calculée |
|---|---|---|
| Moment du calcul | À l’affichage, selon les filtres | À l’actualisation des données |
| Stockage | Rien n’est stocké | Une valeur par ligne, stockée |
| Usage typique | Totaux, ratios, comparaisons | Catégories, axes, segments |
| Réagit aux segments | Oui | Non (valeur figée par ligne) |
2. Le contexte de filtre : pourquoi une mesure « change » ?
C’est LE concept qui déroute au début. Une mesure ne renvoie pas une valeur fixe : elle renvoie un résultat selon les filtres actifs (la ligne du tableau, le segment sélectionné, la date, les filtres de la page). Comprendre le contexte de filtre, c’est comprendre pourquoi une mesure « change » d’une cellule à l’autre.
Exemple : la mesure CA placée dans un tableau avec une ligne par catégorie de produits affiche le chiffre d’affaires de chaque catégorie, puis le total en bas. La formule est la même ; seul le contexte change. Ajoutez un segment « Année = 2026 » et toutes les valeurs se recalculent.
Ce mécanisme suppose que les filtres se propagent correctement d’une table à l’autre : c’est le rôle des relations du modèle. Un modèle mal construit donne des résultats faux, même avec une formule juste. D’où l’intérêt d’un modèle en étoile dans Power BI, avec des tables de dimensions qui filtrent une table de faits.
3. CALCULATE, la fonction reine
CALCULATE permet de modifier le contexte de filtre d’un calcul : « le chiffre d’affaires, mais uniquement pour cette catégorie », « le total, en ignorant le filtre de catégorie ». C’est la fonction la plus puissante — et la plus utilisée — de DAX.
Ajouter un filtre :
CA Vélos = CALCULATE ( [CA], Produits[Categorie] = "Vélos" )
Retirer un filtre, pour obtenir un total de référence :
CA toutes catégories = CALCULATE ( [CA], REMOVEFILTERS ( Produits[Categorie] ) )
Combiner les deux pour calculer une part :
Part du CA = DIVIDE ( [CA], [CA toutes catégories] )
Notez l’usage de DIVIDE plutôt que de l’opérateur / : en cas de division par zéro, DIVIDE renvoie une valeur vide au lieu d’une erreur.
Piège fréquent : écrire CALCULATE ( [CA], Produits[Categorie] = "Vélos" ) et s’étonner que le résultat soit identique sur chaque ligne d’un tableau par catégorie. C’est normal : le filtre de CALCULATE remplace celui de la ligne sur la colonne Categorie.
4. La time intelligence : comparer dans le temps
Cumuls annuels, comparaison avec l’année précédente, moyennes glissantes : les fonctions de time intelligence reposent sur une table de dates bien construite.
Chiffre d’affaires de la même période l’année précédente :
CA N-1 = CALCULATE ( [CA], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
Cumul depuis le début de l’année :
CA cumul annuel = TOTALYTD ( [CA], 'Date'[Date] )
Pour que ces fonctions donnent des résultats fiables, votre table de dates doit :
- contenir une ligne par jour, sans trou, sur des années complètes ;
- être reliée à la colonne de date de votre table de faits ;
- être marquée comme table de dates dans Power BI.
Une façon simple de la créer :
Date = CALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2026, 12, 31 ) )
Ajoutez ensuite des colonnes pour l’année, le mois ou le trimestre (par exemple Annee = YEAR ( 'Date'[Date] )) afin de construire vos axes.
5. Les variables (VAR) : lisibilité et performance
Les variables rendent vos mesures plus lisibles et plus performantes : on calcule une valeur une fois, on la réutilise. Un réflexe simple qui améliore nettement la qualité de votre DAX.
Sans variable, une mesure d’évolution répète les mêmes calculs. Avec des variables :
Évolution vs N-1 % =
VAR CAActuel = [CA]
VAR CAPrecedent = [CA N-1]
RETURN
DIVIDE ( CAActuel - CAPrecedent, CAPrecedent )
Chaque variable est évaluée une seule fois. La formule se lit comme une phrase, et pour la déboguer, il suffit de remplacer temporairement l’expression après RETURN par le nom d’une variable pour en vérifier la valeur.
Les erreurs DAX les plus fréquentes
- Créer des colonnes calculées pour tout : le modèle grossit et les calculs ne réagissent pas aux filtres.
- Utiliser la hiérarchie de dates automatique au lieu d’une vraie table de dates : la time intelligence devient vite limitée.
- Corriger en DAX ce qui relève de la préparation des données : un nettoyage se fait plutôt en amont, dans Power Query (voir comment nettoyer ses données avec Power Query).
- Écrire des formules interminables sans variables ni mesures intermédiaires.
Comment progresser en DAX ?
Commencez par un modèle de données sain : c’est la condition de tout le reste (voir Se former à Power BI : par où commencer ?). Construisez ensuite vos mesures par petites briques — CA, puis CA N-1, puis l’évolution — en vérifiant chaque résultat dans un tableau simple avant de passer au visuel final.
Pour maîtriser ces notions en pratique, sur des cas proches des vôtres, la formation Power BI — Perfectionnement DAX & modélisation y est entièrement consacrée. Vous débutez ? Commencez par Power BI — Fondamentaux.
Questions fréquentes
Faut-il savoir programmer pour apprendre DAX ?
Non. DAX ressemble davantage aux formules Excel qu’à un langage de programmation. La vraie difficulté n’est pas la syntaxe, mais la compréhension du contexte de filtre et du modèle de données.
Quelle différence entre ALL et REMOVEFILTERS ?
Utilisées comme filtre dans CALCULATE, les deux retirent les filtres d’une table ou d’une colonne. REMOVEFILTERS a été introduite pour rendre l’intention plus claire. ALL peut en plus servir de fonction de table, par exemple pour itérer sur toutes les lignes d’une table.
Pourquoi ma mesure de l’année précédente renvoie-t-elle une valeur vide ?
Le plus souvent, la table de dates est incomplète, n’est pas reliée à la table de faits, ou le visuel utilise la date de la table de faits au lieu de celle de la table de dates. Vérifiez ces trois points avant de modifier la formule.
Mesure ou colonne calculée pour une marge ?
Une mesure, presque toujours : Marge % = DIVIDE ( [Marge], [CA] ). Un pourcentage calculé ligne par ligne puis additionné donne un total faux.
Article mis à jour le 2 octobre 2026.
