DAX, le langage qui libère la puissance de Power Pivot
DAX (Data Analysis Expressions) est le langage de formule utilisé par Power Pivot, Power BI et Analysis Services. Pour un analyste habitué à Excel, DAX paraît d’abord étrange : les formules ne pointent pas vers des cellules mais vers des colonnes et des tables entières, et elles s’exécutent dans un contexte de filtre implicite.
Maîtriser DAX, c’est pouvoir répondre en 10 secondes à des questions comme : quel est le CA cumulé de chaque boutique depuis le début de l’année, comment se compare-t-il à la même période l’an dernier, et quelle boutique a contribué le plus à la croissance globale ?
Les 3 concepts fondamentaux
Colonne calculée : une nouvelle colonne dans une table, calculée ligne par ligne. Exemple : Marge = Ventes[PrixVente] - Ventes[CoutAchat]. Stockée en mémoire, consomme de la RAM.
Mesure : un calcul dynamique qui dépend du contexte du tableau croisé. Exemple : CA Total := SUM(Ventes[Montant]). Calculée à la volée, performante.
Contexte de filtre : la combinaison de filtres implicite imposée par les lignes, colonnes et segments d’un tableau croisé. Comprendre le contexte est la clé de DAX.
Mesure : CA cumulé par boutique depuis le 1er janvier
Scénario : 3 boutiques Dakaroises (Plateau, Almadies, Pikine), données quotidiennes, on veut voir la courbe cumulative.
CA YTD :=
TOTALYTD(
SUM(Ventes[Montant]);
Calendrier[Date]
)
Placée dans un tableau croisé avec Mois en colonnes et Boutique en lignes, cette mesure affiche le cumul depuis janvier. À chaque mois, le total augmente jusqu’au reset au 1er janvier suivant.
Comparaison année précédente
CA YTD N-1 :=
CALCULATE(
[CA YTD];
SAMEPERIODLASTYEAR(Calendrier[Date])
)
Croissance YTD := DIVIDE([CA YTD] - [CA YTD N-1]; [CA YTD N-1])
Trois mesures, vision complète : valeur actuelle, référence historique, variation.
Classement des boutiques par contribution
Rang Boutique :=
RANKX(
ALL(Boutiques[Nom]);
[CA Total];
;
DESC
)
Cette mesure classe les boutiques par CA décroissant, utile dans un tableau de bord.
Top 3 produits par boutique
TopProduits :=
CONCATENATEX(
TOPN(3; VALUES(Produits[Nom]); [CA Total]);
Produits[Nom];
", "
)
Renvoie par exemple « Boubou, Tablier, Sac » pour chaque boutique.
Contexte : CALCULATE, le couteau suisse DAX
CALCULATE modifie le contexte de filtre. Exemples essentiels :
CA Almadies := CALCULATE([CA Total]; Boutiques[Nom]="Almadies")
CA Weekend := CALCULATE([CA Total]; Calendrier[JourSemaine] IN {"Samedi";"Dimanche"})
CA Hors Tabaski := CALCULATE([CA Total]; NOT(Calendrier[Periode]="Tabaski"))
Time intelligence avancée
DAX propose 35+ fonctions temporelles. Les 5 plus utiles :
- TOTALYTD, TOTALQTD, TOTALMTD : cumuls année/trimestre/mois
- SAMEPERIODLASTYEAR : même période l’an passé
- DATEADD : décalage libre en jours, mois ou années
- PREVIOUSMONTH, PREVIOUSQUARTER : période précédente
- PARALLELPERIOD : période parallèle décalée
Pièges courants
Oublier la table calendrier marquée : les fonctions time intelligence ne fonctionnent pas sans table de dates continue marquée comme telle. Utiliser SUM sur des colonnes calculées coûteuses en recalcul. Chaîner trop de CALCULATE imbriqués : favorisez les variables VAR pour la lisibilité.
Conclusion
DAX est un investissement rentable : 20 heures d’apprentissage vous transforment en analyste capable de produire des tableaux de bord de niveau consultant. Complément naturel à Power Pivot, il ouvre aussi la porte à Power BI.