Le langage DAX (Data Analysis Expressions) est le cœur de Power BI. Maîtriser ces 10 formules vous permettra de résoudre 80% de vos besoins d’analyse.
1. CALCULATE - La Fonction Roi
La fonction la plus puissante de DAX. Elle modifie le contexte de filtre.
Ventes 2024 =
CALCULATE(
SUM('Ventes'[Montant]),
'Calendrier'[Année] = 2024
)
Cas d’usage : Calculer les ventes pour une période spécifique, une région donnée, ou n’importe quel filtre.
Exemple Avancé : Ventes Région MENA
Ventes MENA =
CALCULATE(
SUM('Ventes'[Montant]),
'Géographie'[Région] IN {"Maroc", "Algérie", "Tunisie", "Egypte"}
)
2. SUMX - Agrégation Ligne par Ligne
SUMX itère sur chaque ligne d’une table et somme le résultat.
Marge Totale =
SUMX(
'Ventes',
'Ventes'[Quantité] * ('Ventes'[Prix Vente] - 'Ventes'[Prix Achat])
)
Différence avec SUM :
- SUM : Somme une colonne existante
- SUMX : Calcule d’abord, somme ensuite
Exemple : Chiffre d’Affaires
CA Total =
SUMX(
'Commandes',
'Commandes'[Quantité] * RELATED('Produits'[Prix Unitaire])
)
3. FILTER - Filtrage Avancé
FILTER retourne une table filtrée selon une condition.
Ventes Gros Clients =
CALCULATE(
SUM('Ventes'[Montant]),
FILTER('Clients', 'Clients'[Catégorie] = "Grand Compte")
)
Exemple : Top 10 Produits
Ventes Top 10 =
CALCULATE(
SUM('Ventes'[Montant]),
TOPN(
10,
'Produits',
'Produits'[Ventes Totales],
DESC
)
)
4. ALL / ALLEXCEPT - Ignorer les Filtres
ALL supprime tous les filtres d’une table ou colonne.
% du Total =
DIVIDE(
SUM('Ventes'[Montant]),
CALCULATE(
SUM('Ventes'[Montant]),
ALL('Ventes')
)
)
ALLEXCEPT : Supprime tous les filtres SAUF ceux spécifiés
% par Région =
DIVIDE(
SUM('Ventes'[Montant]),
CALCULATE(
SUM('Ventes'[Montant]),
ALLEXCEPT('Ventes', 'Ventes'[Région])
)
)
5. Time Intelligence - TOTALYTD
Calculs cumulés année en cours (Year-to-Date).
Ventes YTD =
TOTALYTD(
SUM('Ventes'[Montant]),
'Calendrier'[Date]
)
Variantes Utiles
Quarter-to-Date :
Ventes QTD = TOTALQTD(SUM('Ventes'[Montant]), 'Calendrier'[Date])
Month-to-Date :
Ventes MTD = TOTALMTD(SUM('Ventes'[Montant]), 'Calendrier'[Date])
6. SAMEPERIODLASTYEAR - Comparaison N-1
Compare avec la même période l’année dernière.
Ventes N-1 =
CALCULATE(
SUM('Ventes'[Montant]),
SAMEPERIODLASTYEAR('Calendrier'[Date])
)
Évolution vs N-1
Evolution vs N-1 =
VAR VentesActuelles = SUM('Ventes'[Montant])
VAR VentesN1 = [Ventes N-1]
RETURN
DIVIDE(
VentesActuelles - VentesN1,
VentesN1
)
7. RANKX - Classements Dynamiques
Classez vos produits, vendeurs, ou régions.
Rang Vendeur =
RANKX(
ALL('Vendeurs'[Nom]),
[Ventes Totales],
,
DESC,
DENSE
)
Types de classement :
- DENSE : 1, 2, 3, 3, 4 (pas de saut)
- SKIP : 1, 2, 3, 3, 5 (saute si égalité)
8. IF / SWITCH - Logique Conditionnelle
IF Simple :
Catégorie Vente =
IF(
SUM('Ventes'[Montant]) > 10000,
"Gros Client",
"Client Standard"
)
SWITCH (meilleur pour multiple conditions) :
Segment Client =
SWITCH(
TRUE(),
[Ventes Totales] > 100000, "Platinum",
[Ventes Totales] > 50000, "Gold",
[Ventes Totales] > 10000, "Silver",
"Bronze"
)
9. DIVIDE - Division Sécurisée
Évite les erreurs de division par zéro.
Taux de Conversion =
DIVIDE(
[Ventes Réalisées],
[Opportunités Totales],
0 -- Valeur si division par zéro
)
Pourquoi pas ”/” ?
- ”/” génère une erreur si division par zéro
- DIVIDE retourne la valeur alternative (ou BLANK)
10. RELATED / RELATEDTABLE - Relations
Accéder aux données des tables liées.
RELATED (One-to-Many) :
Prix Produit =
RELATED('Produits'[Prix Unitaire])
RELATEDTABLE (Many-to-One) :
Nombre Ventes =
COUNTROWS(RELATEDTABLE('Ventes'))
Exemple Complet : Analyse Client
Dernière Commande =
CALCULATE(
MAX('Ventes'[Date]),
RELATEDTABLE('Ventes')
)
Jours Depuis Dernière Commande =
DATEDIFF(
[Dernière Commande],
TODAY(),
DAY
)
Statut Client =
SWITCH(
TRUE(),
[Jours Depuis Dernière Commande] > 365, "Inactif",
[Jours Depuis Dernière Commande] > 90, "À Risque",
"Actif"
)
Bonnes Pratiques DAX
1. Utilisez des Variables (VAR)
Mauvais :
Marge % =
DIVIDE(
SUM('Ventes'[Montant]) - SUM('Ventes'[Coût]),
SUM('Ventes'[Montant])
)
Bon :
Marge % =
VAR Ventes = SUM('Ventes'[Montant])
VAR Coûts = SUM('Ventes'[Coût])
RETURN
DIVIDE(Ventes - Coûts, Ventes)
Avantages : Plus lisible, plus performant, plus facile à déboguer.
2. Documentez vos Mesures
Ajoutez des descriptions dans Power BI :
Description : Calcule le % de marge par rapport au CA
Auteur : Ahmed B.
Dernière MAJ : 2024-11-05
3. Organisez vos Mesures
Créez une table “Mesures” pour regrouper toutes vos mesures DAX.
4. Formatez Correctement
Ventes par Client =
VAR ClientActuel = SELECTEDVALUE('Clients'[ID])
VAR VentesClient =
CALCULATE(
SUM('Ventes'[Montant]),
'Clients'[ID] = ClientActuel
)
RETURN
VentesClient
Indentation claire = maintenance facile !
Patterns DAX Essentiels
Pattern 1 : ABC (Analyze, Benchmark, Compare)
-- Analyze
Ventes Actuelles = SUM('Ventes'[Montant])
-- Benchmark
Ventes Moyennes Marché = AVERAGE('Benchmark'[Ventes])
-- Compare
vs Benchmark =
DIVIDE(
[Ventes Actuelles],
[Ventes Moyennes Marché]
) - 1
Pattern 2 : Running Total
Cumul Ventes =
CALCULATE(
SUM('Ventes'[Montant]),
FILTER(
ALL('Calendrier'),
'Calendrier'[Date] <= MAX('Calendrier'[Date])
)
)
Pattern 3 : Moyenne Mobile (3 mois)
Moyenne Mobile 3M =
AVERAGEX(
DATESINPERIOD(
'Calendrier'[Date],
LASTDATE('Calendrier'[Date]),
-3,
MONTH
),
[Ventes Totales]
)
Debugger vos Formules DAX
Technique 1 : DAX Studio
- Téléchargez DAX Studio (gratuit)
- Connectez-vous à votre modèle Power BI
- Testez vos formules et voyez les plans de requête
Technique 2 : ISINSCOPE
Vérifiez le contexte actuel :
Debug Contexte =
IF(
ISINSCOPE('Ventes'[Produit]),
"Niveau Produit",
"Niveau Agrégé"
)
Technique 3 : Variables de Debug
Test Mesure =
VAR Debug1 = SUM('Ventes'[Montant])
VAR Debug2 = [Ventes N-1]
VAR Debug3 = Debug1 - Debug2
RETURN
"V1: " & Debug1 & " | V2: " & Debug2 & " | Diff: " & Debug3
Conclusion
Ces 10 formules couvrent 80% des besoins quotidiens en Power BI. La clé est de les pratiquer sur vos propres données.
Prochaines Étapes
- Testez chaque formule avec vos données
- Combinez-les pour créer des mesures complexes
- Documentez vos créations
- Partagez avec votre équipe
Besoin d’aide pour maîtriser DAX ? Notre formation Power BI DAX Avancé vous rendra expert en 2 jours.
À propos : SETMO CONSULTING forme les professionnels marocains à Power BI et DAX depuis 2018. Plus de 200 personnes formées à Casablanca et au Maroc.