DAX (Data Analysis Expressions) est le langage de calcul de Power BI. C’est lui qui transforme un modèle de données en indicateurs : chiffre d’affaires, marge, cumul depuis le début de l’année, évolution par rapport à l’année précédente, part de marché… Maîtriser le DAX, c’est passer de simples graphiques à de véritables tableaux de bord de pilotage.
Ce guide explique les notions indispensables, les fonctions à connaître et des exemples prêts à l’emploi.
Table des matières
- DAX, c’est quoi ?
- Mesures, colonnes et tables calculées
- Le contexte : la notion clé du DAX
- CALCULATE, la fonction centrale
- Les fonctions DAX à connaître
- Exemples de mesures pour la finance et le commercial
- Mesures rapides et Copilot
- Bonnes pratiques
- Questions fréquentes
DAX, c’est quoi ?
DAX est un langage de formules créé par Microsoft pour Power Pivot, puis repris dans Power BI et Analysis Services. Sa syntaxe rappelle celle d’Excel (SUM, IF, DIVIDE…), mais il raisonne sur des tables et des colonnes, pas sur des cellules. Il ne sert pas à préparer les données (c’est le rôle de Power Query), mais à calculer des indicateurs sur un modèle déjà structuré, idéalement en modèle en étoile.
Mesures, colonnes et tables calculées
| Élément | Calculé quand ? | Stocké ? | Usage typique |
|---|---|---|---|
| Mesure | À chaque affichage, selon les filtres | Non | Chiffre d’affaires, marge, taux, cumuls |
| Colonne calculée | Au chargement, ligne par ligne | Oui (augmente la taille du modèle) | Catégorie, tranche d’âge, clé de regroupement |
| Table calculée | Au chargement | Oui | Table de dates, tables de paramètres |
Règle d’or : un indicateur que l’on agrège doit être une mesure. Les colonnes calculées servent à créer des attributs d’analyse, souvent mieux placés dans Power Query.
Le contexte : la notion clé du DAX
Une même mesure renvoie un résultat différent dans chaque cellule d’un visuel : c’est le contexte de filtre. La mesure [CA] affiche le chiffre d’affaires de mars dans la colonne « mars » et celui de la région Ouest sur la ligne « Ouest », parce que le visuel filtre le modèle avant le calcul.
Le contexte de ligne existe dans les colonnes calculées et les fonctions itératives (SUMX, AVERAGEX…) : le calcul est évalué pour chaque ligne d’une table. Comprendre le passage de l’un à l’autre est la principale difficulté du DAX.
CALCULATE, la fonction centrale
CALCULATE évalue une expression dans un contexte de filtre modifié. Quelques exemples :
CA = SUM ( Ventes[Montant HT] )
CA France = CALCULATE ( [CA], Clients[Pays] = "France" )
CA toutes régions = CALCULATE ( [CA], REMOVEFILTERS ( Clients[Région] ) )
Part de la région = DIVIDE ( [CA], [CA toutes régions] )
La mesure « Part de la région » combine deux notions : le CA filtré par la région du visuel, divisé par le CA sans filtre de région.
Les fonctions DAX à connaître
| Famille | Fonctions | Exemple d’usage |
|---|---|---|
| Agrégation | SUM, AVERAGE, COUNTROWS, DISTINCTCOUNT | Chiffre d’affaires, nombre de clients |
| Itération | SUMX, AVERAGEX, MAXX | Marge = somme de (prix − coût) × quantité |
| Filtre | CALCULATE, FILTER, ALL, REMOVEFILTERS, KEEPFILTERS | Parts, comparaisons, périmètres |
| Temps (time intelligence) | TOTALYTD, SAMEPERIODLASTYEAR, DATEADD, DATESINPERIOD | Cumul annuel, N-1, 12 mois glissants |
| Logique | IF, SWITCH, COALESCE | Seuils, indicateurs conditionnels |
| Division sûre | DIVIDE | Taux sans erreur de division par zéro |
| Variables | VAR … RETURN | Lisibilité et performance |
Les fonctions de temps exigent une table de dates marquée comme telle dans le modèle. Notre article sur les calculs de temps en DAX détaille leur usage.
Exemples de mesures pour la finance et le commercial
Marge brute = SUMX ( Ventes, Ventes[Quantité] * ( Ventes[Prix unitaire] - Ventes[Coût unitaire] ) )
Taux de marge = DIVIDE ( [Marge brute], [CA] )
CA cumul annuel = TOTALYTD ( [CA], 'Date'[Date] )
CA N-1 = CALCULATE ( [CA], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
Évolution vs N-1 = DIVIDE ( [CA] - [CA N-1], [CA N-1] )
CA 12 mois glissants =
CALCULATE ( [CA], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )
Clients actifs = DISTINCTCOUNT ( Ventes[Code client] )
Pour un expert-comptable ou un DAF, les mêmes principes permettent de construire des soldes intermédiaires de gestion, un suivi budgétaire (réel contre budget) ou une analyse de la trésorerie à partir du FEC.
Mesures rapides et Copilot
- Mesures rapides : Power BI propose des calculs prêts à l’emploi (cumul, variation, moyenne mobile) sans écrire de code. Elles génèrent du DAX que l’on peut ensuite lire pour apprendre.
- Copilot : il écrit ou explique une mesure à partir d’une demande en langage naturel. Il faut toutefois vérifier le contexte de filtre du résultat.
- Vue de requête DAX : dans Power BI Desktop, elle permet d’interroger le modèle et de tester des mesures avant de les créer.
Bonnes pratiques
- Nommez clairement vos mesures et rangez-les dans des dossiers d’affichage.
- Construisez par étapes : des mesures de base (
[CA],[Coût]) réutilisées par les mesures avancées. - Utilisez
VARpour éviter de calculer deux fois la même expression. - Préférez
DIVIDEà l’opérateur/. - Formatez le code avec DAX Formatter pour le rendre lisible et maintenable.
- Évitez les colonnes calculées superflues, qui alourdissent le modèle.
- Testez les performances avec l’analyseur de performances de Power BI Desktop.
Le DAX s’apprend beaucoup plus vite avec un formateur. Nos formations DAX pour Power BI et DAX avancé, finançables par le CPF, s’appuient sur vos propres cas métier. Et si vos rapports existants sont lents ou affichent des chiffres douteux, un audit de vos mesures DAX permet souvent de les corriger rapidement.
