le Langage DAX dans Power BI
Le langage DAX, ou Data Analysis Expressions, est un langage puissant qui constitue l’épine dorsale des calculs dans Power BI, Excel et SQL Server Analysis Services. Sa maîtrise est indispensable pour concevoir des rapports dynamiques, effectuer des analyses avancées, et offrir une vision stratégique des données. Mais le langage DAX peut paraître complexe au premier abord, notamment pour les utilisateurs débutants
Dans cet article, nous explorerons le langage DAX en détail : de ses concepts fondamentaux à des cas pratiques avancés. Vous apprendrez à créer des mesures et des colonnes calculées, à tirer parti des contextes, et à optimiser vos formules pour des performances optimales dans vos rapports Power BI

Qu'est-ce que DAX ?
DAX est un langage fonctionnel conçu pour :
- Créer des calculs dynamiques à partir de données brutes.
- Manipuler des tables relationnelles grâce à des fonctions complexes.
- Produire des analyses avancées en fonction des besoins de l’utilisateur final.
Objectif de DAX
DAX ne remplace pas les données brutes ; il les enrichit en offrant des moyens de calcul dynamique, adaptés aux contextes et aux filtres définis par les utilisateurs dans Power B.
Exemples Concrets d’Utilisation :
- Calculer le chiffre d’affaires total d’une entreprise.
- Analyser les performances mensuelles par rapport à l’objectif.
- Mesurer le retour sur investissement (ROI) des campagnes marketing.
- Comparer les ventes d’un produit sur plusieurs années.
Les Bases de DAX
Syntaxe de DAX
La syntaxe du langage DAX ressemble à celle d’Excel, mais elle est conçue pour des environnements de données relationnels. Voici les principaux éléments :
- Fonctions : Les fonctions du langage DAX se divisent en plusieurs catégories, comme les fonctions mathématiques, de texte, ou temporelles.
- Références : Les colonnes et tables de votre modèle de données peuvent être directement référencées dans les formules.
- Opérateurs : Les opérateurs permettent d’effectuer des calculs ou des comparaisons (par exemple
+
,-
,AND
)
Exemple de Base :
Total Ventes = SUM(Ventes[Montant])
Différence entre Colonnes Calculées et Mesures
Colonnes Calculées :
- Génèrent des valeurs calculées pour chaque ligne d’une table.
- Elles sont stockées dans le modèle Power BI
Exemple :
Marge Brute = Ventes[Montant] – Ventes[Coût des Ventes]
Mesures :
Sont dynamiques et calculées uniquement dans un contexte spécifique (comme un graphique ou une table)
Total CA = SUM(Ventes[Montant])
Fonctions Clés de DAX
Fonctions Mathématiques
Les fonctions mathématiques sont utilisées pour réaliser des calculs simples ou complexes.
SUM() : Additionne les valeurs d’une colonne
Total Ventes = SUM(Ventes[Montant])
AVERAGE() : Calcule la moyenne.
Moyenne Ventes = AVERAGE(Ventes[Montant])
DIVIDE() : Réalise une division en gérant les erreurs (par exemple, division par zéro)
Taux Croissance = DIVIDE([Chiffre d’affaires actuel] – [Chiffre d’affaires précédent], [Chiffre d’affaires précédent])
Fonctions Logiques
Les fonctions logiques permettent de réaliser des calculs conditionnels.
IF() : Crée une logique conditionnelle
Performance = IF([Taux Croissance] > 0.1, “Bonne”, “Faible”)
SWITCH() : Offre une alternative à plusieurs conditions
Niveau de Ventes = SWITCH(
TRUE(),
[Total Ventes] > 1000000, “Excellent”,
[Total Ventes] > 500000, “Bon”,
“Moyen”
)
Fonctions de Temps
Les fonctions temporelles sont parmi les plus puissantes de DAX. Elles permettent d’effectuer des analyses comparatives et de suivre les tendances dans le temps.
Les fonctions temporelles sont parmi les plus puissantes de DAX. Elles permettent d’effectuer des analyses comparatives et de suivre les tendances dans le temps.
PREVIOUSMONTH() : Retourne les données du mois précédent.
Ventes Mois Précédent = CALCULATE(SUM(Ventes[Montant]), PREVIOUSMONTH(Dates[Date]))
TOTALYTD() : Calcule le total cumulé depuis le début de l’année
Ventes YTD = TOTALYTD(SUM(Ventes[Montant]), Dates[Date])
DATEADD() : Décale une plage de dates en avant ou en arrière
Ventes Année Précédente = CALCULATE(SUM(Ventes[Montant]), DATEADD(Dates[Date], -1, YEAR))
Comprendre le contexte dans DAX
Le contexte est un concept clé dans DAX qui détermine comment les calculs sont exécutés dans Power BI. Une bonne compréhension du contexte est essentielle pour écrire des formules correctes et créer des rapports dynamiques.
En effet, le contexte affecte directement les résultats des mesures et des colonnes calculées, et peut parfois surprendre même les utilisateurs expérimentés.
Qu’est-ce que le contexte dans DAX ?
Le contexte dans DAX est la condition ou l’environnement dans lequel une formule est évaluée. Deux principaux types de contexte influencent les résultats des calculs :
- Contexte de ligne.
- Contexte de filtre.
Ces deux contextes peuvent interagir ou se superposer dans des situations complexes, ce qui rend DAX à la fois puissant et parfois difficile à maîtriser.
Contexte de Ligne
Le contexte de ligne s’applique lorsque vous écrivez une formule DAX qui est évaluée ligne par ligne dans une table. Il est le plus souvent utilisé dans les colonnes calculées.
Exemple Pratique
Supposons que vous avez une table ventes
avec les colonnes suivantes :
Montant
: Le chiffre d’affaires réalisé pour chaque vente.Coût
: Le coût des marchandises vendues
Vous souhaitez calculer la marge brute pour chaque ligne. La formule DAX pour une colonne calculée serait :
Marge Brute = Ventes[Montant] – Ventes[Coût]
Dans cet exemple, DAX évalue la formule pour chaque ligne de la table Ventes
. Le contexte de ligne est donc implicite : il s’applique automatiquement à chaque ligne de la table lorsque vous créez une colonne calculée.
Limites du Contexte de Ligne
Le contexte de ligne est limité à des calculs basiques sur une ligne unique. Si vous avez besoin de faire référence à plusieurs lignes ou de calculer des agrégats, le contexte de filtre entre en jeu.
Contexte de Filtre
Le contexte de filtre est un ensemble de filtres appliqués aux données avant l’évaluation d’une formule DAX. Ces filtres peuvent provenir :
- Des visuels (graphiques, tables).
- Des segments (slicers) et interactions utilisateur.
- Des relations entre tables dans le modèle de données.
- Des fonctions DAX comme
CALCULATE()
.
Le contexte de filtre est dynamique et s’adapte aux interactions des utilisateurs avec le rapport.
vous avez une mesure pour le total des ventes :
Total Ventes = SUM(Ventes[Montant])
Dans un visuel, si vous affichez cette mesure par région (via une colonne Région
), Power BI applique un contexte de filtre pour chaque région automatiquement. Par exemple :
- Pour la région “France”, seules les lignes où
Région = France
seront utilisées pour calculerTotal Ventes
Ce contexte de filtre est dynamique, car il change en fonction de l’interaction des utilisateurs.
Interaction entre Contexte de Ligne et Contexte de Filtre
DAX combine souvent les contextes de ligne et de filtre pour produire des résultats. Dans certains cas, vous devrez convertir un contexte de ligne en contexte de filtre à l’aide de fonctions spécifiques comme CALCULATE()
Exemple Complexe : Calculer un rang dynamique
Supposons que vous souhaitez calculer le rang des ventes par produit dans chaque région. Cela nécessite de combiner les deux contextes. Voici la mesure :
Classement Produit = RANKX( ALL(Produits[Nom Produit]), [Total Ventes], , DESC )
- ALL(Produits[Nom Produit]) supprime les filtres sur les produits, afin que le classement soit global.
- Le classement est ensuite recalculé en fonction des filtres appliqués (par exemple, par région)
Fonctions pour Manipuler le Contexte
Fonction CALCULATE()
La fonction CALCULATE()
est l’une des plus puissantes de DAX, car elle permet de modifier le contexte de filtre d’un calcul.
CALCULATE(<expression>, <filtres>)
Exemple 1 : Total des ventes pour une année spécifique
Total Ventes 2023 = CALCULATE(SUM(Ventes[Montant]), Année[Année] = 2023)
Ici, CALCULATE()
applique un filtre sur la colonne Année
pour ne garder que les données de 2023
Exemple 2 : Ignorer un Filtre
Vous pouvez supprimer un filtre à l’aide de ALL()
.
Total Ventes Sans Filtre = CALCULATE(SUM(Ventes[Montant]), ALL(Ventes[Région]))
Dans ce cas, ALL(Ventes[Région])
supprime les filtres appliqués sur la colonne Région
Fonction FILTER()
La fonction FILTER()
est utilisée pour appliquer des filtres plus complexes.
Exemple : Total des Ventes Supérieures à un Seuil
Ventes > 1000 = CALCULATE(SUM(Ventes[Montant]), FILTER(Ventes, Ventes[Montant] > 1000))
Ici, FILTER()
sélectionne uniquement les lignes où le montant des ventes dépasse 1000.
Cas Pratiques Avancés
Cas 1 : Analyse des Ventes à l’Aide de contextes multiples
Vous avez un tableau avec les ventes par mois et par région. Vous souhaitez ajouter une mesure qui calcule la part de marché par région
Formule :
Part de Marché = DIVIDE( [Total Ventes], CALCULATE([Total Ventes], ALL(Ventes[Région])) )
Le numérateur ([Total Ventes]
) utilise le contexte actuel (filtré par région).
Le dénominateur (CALCULATE(..., ALL(Ventes[Région]))
) calcule le total des ventes sans tenir compte des filtres sur la région
Cas 2 : Comparaison des performances entre deux périodes
Vous souhaitez comparer les ventes de ce mois à celles du mois précédent.
Formule :
Croissance Mensuelle = DIVIDE(
[Total Ventes] – CALCULATE([Total Ventes], PREVIOUSMONTH(Dates[Date])),
CALCULATE([Total Ventes], PREVIOUSMONTH(Dates[Date])))
Meilleures pratiques pour gérer le contexte
- Comprenez les Interactions des Visuels : Les visuels appliquent automatiquement des filtres contextuels. Vérifiez vos formules avec différents segments et filtres.
- Évitez les Colonnes Calculées Inutiles : Utilisez des mesures pour réduire la complexité et améliorer les performances.
- Utilisez
CALCULATE()
à bon escient :CALCULATE()
est une arme puissante, mais un mauvais usage peut introduire des résultats incorrects. - Testez vos Résultats : Utilisez des visuels simples (comme des tables) pour vérifier si vos formules retournent les valeurs attendues
Le contexte dans DAX est à la fois puissant et complexe. Il peut être intimidant au départ, mais une fois maîtrisé, il vous permettra de créer des analyses dynamiques et personnalisées adaptées aux besoins des utilisateurs.
En combinant efficacement le contexte de ligne, le contexte de filtre, et les fonctions clés comme CALCULATE()
et FILTER()
, vous pouvez résoudre une grande variété de problèmes analytiques. Le contexte est véritablement ce qui fait de DAX un langage unique et performant pour Power BI.
Cas Pratiques avec DAX
Cas 1 : KPI de Performance Commerciale
Calculer l’écart entre le chiffre d’affaires actuel et l’objectif
Écart Objectif = [Total Ventes] – [Objectif Mensuel]
Cas 2 : Analyse Comparative
Comparer les ventes du mois courant et du mois précédent.
Croissance Mois = DIVIDE([Ventes Mois Actuel] – [Ventes Mois Précédent], [Ventes Mois Précédent])
Cas 3 : Classement des Produits
Identifier les 5 meilleurs produits en termes de ventes
Classement Produits = RANKX(ALL(Produits), [Total Ventes], , DESC)
Cas 4 : Temps moyen de réponse (RH ou service client)
Calculez le délai moyen entre l’ouverture et la résolution d’un ticket
Temps Moyen Réponse = AVERAGE(Tickets[Durée de Résolution])
Astuces pour Optimiser DAX
Utilisez des Modèles Simples : Évitez les relations redondantes ou inutiles dans vos tables
Privilégiez les Mesures : Préférez les mesures aux colonnes calculées pour minimiser la taille du modèle.
Testez vos Calculs : Utilisez DAX Studio pour identifier les goulots d’étranglement.
Filtrez Efficacement : Limitez les filtres inutiles pour améliorer les temps de calcul.
Conclusion
Le langage DAX est un outil incontournable pour exploiter pleinement la puissance de Power BI. Il permet de créer des analyses avancées et dynamiques tout en restant flexible face aux besoins variés des utilisateurs.
En maîtrisant les bases, en appliquant les meilleures pratiques, et en explorant les fonctionnalités avancées comme les analyses temporelles et les classements, vous pouvez transformer vos données en insights stratégiques.
Prenez le temps d’expérimenter avec DAX et d’ajuster vos calculs au fur et à mesure de vos besoins. Plus vous explorerez ce langage, plus vous serez en mesure de concevoir des rapports robustes et percutants, adaptés aux exigences de votre organisation.
Utiliser Power BI avec ChatGPT
Dans cet article, vous allez apprendre comment utiliser Power BI...
Lire la suiteL’évolution de notre nom et de notre positionnement
De Financedata à Scale Formations : une évolution naturelle vers...
Lire la suiteKey influencers Power BI
Dans cet article, vous allez apprendre comment et quand utiliser...
Lire la suite