Principe
DAX calcule des mesures dynamiques selon le contexte de filtre. Fonctions clés : CALCULATE (modifie le contexte), SUMX et autres itérateurs, DIVIDE (division sans erreur), fonctions de temps (TOTALYTD, SAMEPERIODLASTYEAR, DATESINPERIOD), variables (VAR). Les mesures sont préférables aux colonnes calculées.
Comprendre pas à pas
1. La situation
Un analyste veut afficher dans Power BI le taux de service, la comparaison avec l'année précédente et le cumul depuis janvier. Il ajoute des colonnes calculées partout et le rapport devient lent et faux selon les filtres. Question : comment écrire des mesures DAX ?
2. Quelques mesures utiles en supply chain
| Mesure | Formule DAX |
|---|---|
| Quantité livrée | Qté livrée = SUM(Lignes[Qté livrée]) |
| Taux de service | Taux service = DIVIDE([Qté livrée]; SUM(Lignes[Qté commandée])) |
| Taux de service N−1 | Taux N-1 = CALCULATE([Taux service]; SAMEPERIODLASTYEAR(Calendrier[Date])) |
| Cumul depuis janvier | Livré cumul = TOTALYTD([Qté livrée]; Calendrier[Date]) |
| Taux de service des articles A | Taux A = CALCULATE([Taux service]; Articles[Classe] = "A") |
3. L'idée
Le DAX (Data Analysis Expressions) est le langage des calculs de Power BI et Power Pivot. Une mesure est calculée à la volée selon le contexte de filtre (la région, le mois, l'article sélectionnés). CALCULATE modifie ce contexte : c'est la fonction clé. Les mesures sont préférables aux colonnes calculées pour les agrégats.
Contexte de filtre
La même mesure donne le taux de service de la région ou du mois affiché.
DIVIDE
Gère la division par zéro.
Intelligence temporelle
SAMEPERIODLASTYEAR, TOTALYTD, DATEADD : nécessitent une table calendrier.
4. La refonte
Supprimer. 12 colonnes calculées remplacées par 6 mesures.
Réutiliser. Les mesures s'appuient les unes sur les autres ([Taux N-1] utilise [Taux service]).
Vérifier. Les totaux sont justes quel que soit le filtre.
Résultat. Rapport plus rapide, une seule définition du taux de service pour toute l'entreprise.
5. À vous de jouer : où en êtes-vous en DAX ?
6. Ce qu'il faut retenir
- Une mesure se calcule selon le contexte de filtre.
- CALCULATE modifie le contexte : la fonction clé.
- Des mesures réutilisables, une définition unique des indicateurs.
Mise en œuvre
- Acteurs
- Analystes
- Durée
- Apprentissage progressif
- Livrables
- Usage maîtrisé, gains mesurés
- Définir la mesure en langage métierAvant de l'écrire.
- Écrire avec des variablesLisibilité et performance.
- Tester dans plusieurs contextesTotaux, filtres.
- DocumenterDescription de chaque mesure.
Exemple d'application
Mesure OTIF = DIVIDE(CALCULATE(COUNTROWS(Commandes), Commandes[ALHeure] = 1, Commandes[Complete] = 1), COUNTROWS(Commandes)).
Points de vigilance
- Confondre contexte de ligne et contexte de filtre