
Guide du débutant sur DAX | Tutoriel Power BI
Table of content
Introduction à DAX dans Power BI
Comprendre les concepts fondamentaux de DAX
Les principales catégories de fonctions DAX
Exemples pratiques approfondis
Bonnes pratiques pour écrire en DAX
Astuces et erreurs à éviter
Cas d’utilisation avancés
Conclusion et prochaines étapes
Share with
Introduction à DAX dans Power BI
Pourquoi DAX est-il si important ?
Quel est le chiffre d’affaires réalisé dans chaque région ce mois-ci ?
Quelle est la croissance des ventes par rapport à l’année dernière ?
Quels sont les produits qui contribuent le plus à mon revenu global ?
Les avantages clés de DAX
Automatisation des calculs complexes : plutôt que de créer des dizaines de colonnes ou de requêtes manuelles, une seule mesure DAX peut s’adapter à différents filtres et fournir des résultats dynamiques.
Création d’indicateurs métiers (KPI) : marge brute, taux de conversion, croissance annuelle… autant d’indicateurs que vous pouvez calculer et suivre directement dans vos tableaux de bord.
Analyses temporelles simplifiées : grâce aux fonctions dites de Time Intelligence, il devient facile de comparer une période donnée à une autre (mois précédent, même mois de l’an dernier, cumul depuis le début de l’année).
Modèles dynamiques et interactifs : une formule DAX ne donne pas un résultat fixe, elle s’adapte en temps réel aux filtres appliqués dans vos visuels ou segments (par produit, par région, par période, etc.).
Comprendre les concepts fondamentaux de DAX
1. Contexte de ligne
Profit = Sales[Revenue] - Sales[Cost]
Total Profit = SUMX(Sales, Sales[Revenue] - Sales[Cost])
2. Contexte de filtre
Un visuel Power BI (par exemple un graphique filtré sur une région ou une période).
Un segment (slicer) choisi par l’utilisateur.
Une relation entre tables qui restreint les valeurs visibles.
Des fonctions DAX comme CALCULATE ou FILTER qui modifient explicitement le filtre actif.
Sales 2024 = CALCULATE(SUM(Sales[Amount]), YEAR(Calendar[Date]) = 2024)
3. Contexte de calcul
Le contexte de filtre sélectionne uniquement les ventes du premier trimestre 2024.
Le contexte de ligne calcule le chiffre d’affaires produit par produit.
Ensemble, ils définissent le contexte de calcul.
Sales Growth =
VAR PrevYearSales = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Calendar[Date]))
RETURN DIVIDE(SUM(Sales[Amount]) - PrevYearSales, PrevYearSales)
Le contexte de filtre limite l’analyse à la période affichée dans le visuel.
Le contexte de calcul ajoute une comparaison avec la même période de l’année précédente.
Les principales catégories de fonctions DAX
Fonctions d’agrégation
- SUM : additionne les valeurs d’une colonne. Exemple :
calcule le chiffre d’affaires total.SUM(Sales[Amount]) - SUMX : effectue une somme itérative, utile quand le total dépend de plusieurs colonnes. Exemple :
calcule le total basé sur quantité × prix.SUMX(Sales, Sales[Quantity] * Sales[UnitPrice]) - AVERAGE : calcule la moyenne simple d’une colonne. Exemple :
.AVERAGE(Sales[Amount]) - AVERAGEX : comme SUMX mais pour la moyenne, permettant d’itérer ligne par ligne. Exemple :
.AVERAGEX(Products, Products[Price] * Products[Discount]) - COUNT : compte les valeurs non vides d’une colonne.
- DISTINCTCOUNT : compte uniquement les valeurs uniques, très utile pour identifier le nombre de clients distincts par exemple.
Fonctions de filtre et de contexte
- CALCULATE : le « roi » des fonctions DAX. Il modifie le contexte de filtre avant d’effectuer le calcul. Exemple :
calcule uniquement les ventes électroniques.CALCULATE(SUM(Sales[Amount]), Sales[Category] = "Électronique") - FILTER : retourne une table filtrée. Exemple :
ne conserve que les ventes supérieures à 1000.FILTER(Sales, Sales[Amount] > 1000) - ALL : supprime tous les filtres appliqués à une table ou une colonne, souvent utilisé pour comparer une valeur individuelle à un total global.
- ALLEXCEPT : supprime tous les filtres sauf ceux indiqués. Exemple :
garde le filtre produit mais ignore les autres.ALLEXCEPT(Sales, Sales[Product]) - VALUES : retourne une liste unique des valeurs d’une colonne. Utile pour créer des relations implicites ou pour compter les catégories distinctes.
Fonctions de relation et de recherche
- RELATED : ramène une valeur depuis une table reliée (relation un-à-plusieurs). Exemple :
affiche la région du client lié à chaque vente.RELATED(Customers[Region]) - RELATEDTABLE : retourne toutes les lignes d’une table reliée, souvent utilisée dans les mesures.
- LOOKUPVALUE : recherche une valeur dans une colonne en fonction de critères. Exemple :
récupère le prix d’un produit correspondant à une vente.LOOKUPVALUE(Products[Price], Products[ProductID], Sales[ProductID])
Fonctions temporelles (Time Intelligence)
- DATEADD : décale une période dans le temps (jours, mois, trimestres, années). Exemple : comparer les ventes du mois courant avec le mois précédent.
- SAMEPERIODLASTYEAR : retourne la même période mais l’année précédente, parfait pour comparer N vs N-1.
- TOTALYTD / TOTALQTD / TOTALMTD : calculent les cumuls depuis le début de l’année, du trimestre ou du mois jusqu’à la date sélectionnée.
- PARALLELPERIOD : décale une période tout en gardant la granularité. Exemple : comparer janvier 2024 à janvier 2023.
Fonctions statistiques et logiques
- IF : applique une condition simple. Exemple :
.IF(Sales[Amount] > 1000, "Grande Vente", "Petite Vente") - SWITCH : remplace plusieurs conditions IF imbriquées par une structure plus lisible. Exemple : catégoriser les ventes par seuils.
- DIVIDE : effectue une division en gérant automatiquement les divisions par zéro. Exemple :
calcule la marge sans risque d’erreur.DIVIDE(Sales[Profit], Sales[Revenue]) - RANKX : attribue un classement dynamique en fonction d’un calcul. Exemple :
classe les produits selon leur chiffre d’affaires.RANKX(ALL(Products), SUM(Sales[Amount]))
Exemples pratiques approfondis
1. Calculer la croissance annuelle (YoY Growth)
YoY Growth =
DIVIDE(
SUM(Sales[Amount]) - CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Calendar[Date])),
CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Calendar[Date]))
)
2. Créer un classement dynamique des produits
ProductRank = RANKX(ALL(Products), SUM(Sales[Amount]), , DESC)
3. Déterminer la part de marché d’un produit
MarketShare =
DIVIDE(SUM(Sales[Amount]), CALCULATE(SUM(Sales[Amount]), ALL(Sales)))
4. Analyser les ventes des clients fidèles
FilteredSales =
CALCULATE(
SUM(Sales[Amount]),
FILTER(Customers, Customers[LoyaltyStatus] = "Fidèle")
)
5. Cumul des ventes depuis le début de l’année
YTD Sales = TOTALYTD(SUM(Sales[Amount]), Calendar[Date])
Bonnes pratiques pour écrire en DAX
Privilégier les mesures aux colonnes calculées.
Utiliser des variables (VAR) pour plus de lisibilité et de performance.
Optimiser le modèle de données : moins de colonnes, plus de relations bien définies.
Nommez vos mesures clairement : par exemple
Total Salesau lieu deMeasure1.Testez vos formules étape par étape en créant des mesures intermédiaires.
Astuces et erreurs à éviter
Ne pas oublier de créer une table calendrier pour exploiter les fonctions temporelles.
Attention aux filtres implicites : une erreur fréquente est d’obtenir un résultat vide ou erroné parce que CALCULATE modifie le contexte sans que cela soit voulu.
Évitez de créer trop de colonnes calculées qui alourdissent le modèle.
Vérifiez toujours vos résultats avec des jeux de données réduits avant d’appliquer vos mesures à des millions de lignes.
Cas d’utilisation avancés
1. Scénarios de Time Intelligence complexes
2. Segmentation dynamique
3. Analyse de performance
Conclusion et prochaines étapes
à utiliser les fonctions de base (SUM, AVERAGE, CALCULATE),
à exploiter les fonctions temporelles pour comparer différentes périodes,
à écrire des mesures plus avancées (RANKX, ALL, SWITCH),
et à optimiser vos modèles pour la performance.
Prochaines étapes :
Explorez les ressources comme DAX Guide.
Pratiquez régulièrement avec vos propres données.
Participez à des communautés Power BI (forums, LinkedIn, Meetup).
Lancez-vous dans des projets concrets en appliquant DAX à des scénarios métiers réels.
FAQ
Take a moment to discuss your training project with an advisor.
Response :
Response :
Response :
Response :
Response :
Share with
💙 Thank you for reading the article until the end!

Hamza GUEREHOUNE
Senior Data Analyst | Tech Lead Power BI Azure
Expert en BI, Hamza accompagne depuis plus de 10 ans des grands groupes dans le déploiement de solutions Analytics et Cloud. Triplement certifié sur la stack Microsoft Power BI / Azure. C’est un formateur passionné par les nouvelles technologies.
» Learn MoreAssociated articles
See all our articles →
décembre 10, 2024
Maîtrisez la Power Platform : Explorez les certifications PL-900 et PL-300Reading time: 3 min

décembre 24, 2024
Comment utiliser Power BI pour résoudre des problèmes réels en entrepriseReading time: 10 min

janvier 2, 2025
Le guide ultime de Power BI : Transformez vos données en décisions stratégiquesReading time: 8 min

janvier 9, 2025
Comparatif des tarifs Power BI : Quel plan choisir et quelles erreurs éviter pour optimiser vos analyses de données?Reading time: 8 min

septembre 15, 2025
Power BI : Le Guide Ultime | Tutoriel complet pour débutants en 2025Reading time: 15 min


octobre 31, 2025
DAX UDF sur Power BI - Tutoriel complet sur les DAX user defined functions du langage DAX Power BIReading time: 10 min
Associated trainings
All our trainings →

