Lire l'article
Le langage DAX, qui signifie Data Analysis Expressions, a pour but de modéliser les données et de récupérer les calculs à partir des valeurs.
Pour l'illustrer, nous allons montrer le CA pour le mois en cours, le trimestre en cours ainsi que l'année en cours. Nous afficherons également ces informations pour le mois, le trimestre et l'année précédents, ainsi que les écarts :
Voici les données :
1ère bonne pratique DAX :
Il faut d'abord créer une table de mesures qui contiendra l'ensemble des mesures que nous allons créer par la suite.
Pour cela, allez dans la vue rapport, puis dans l'onglet "Accueil" cliquez sur "Entrer des données". Une fenêtre s'ouvre, nommez la table "Mesures" et cliquez sur "Charger".
2ème bonne pratique DAX :
Nous allons créer une table de dates qui contiendra ainsi tout le référentiel de dates. Ainsi, s'il manquait une date dans les valeurs, nous pourrions reconstituer l'intégralité du référentiel de dates.
Pour la créer, allez dans la vue de modèle et cliquez sur "Nouvelle table" et la barre de formule apparaît. Nous allons utiliser la formule CALENDARAUTO() qui ne nécessite pas de paramètre.
Il faut ensuite connecter cette table à la table "Réalisé". Pour cela, créez un lien entre le champ "Date" de DimeDate et le champ "Date" de "Réalisé". Il y a alors bien un lien de 1 à plusieurs entre les 2 tables.
Retournez dans la vue rapport et ajoutez un segment avec les dates à votre rapport.
Mesures DAX :
Afin de créer de nouvelles mesures, allez dans le volet "Données", allez sur "Mesures" et cliquez sur les 3 petits points à droite, puis sur "Nouvelle mesure".
Nous allons d'abord calculer le CA du mois en cours.
Pour cela nous allons faire une somme de la colonne CA avec la fonction SUM(), que nous filtrerons grâce à la fonction CALCULATE() et pour filtrer sur le mois nous utiliserons la fonction DATESMTD() qui signifie Dates Month To Date et qui prend un seul argument, la date issue de la table de dates.
Remarque : pour passer à la ligne à l'intérieur d'une mesure, cliquez sur Alt+Entrée. Voici la mesure correspondante :
Afin de rendre le code DAX plus lisible, il est d'usage de l'indenter de cette manière et d'ajouter des commentaires avec "//" :
Vous pouvez maintenant supprimer "colonne 1" de la table de mesures car vous avez créé une mesure.
Afin de tester la mesure CA MTD, créez un visuel "nouvelle carte 123" dans le quel vous allez injecter la mesure CA MTD :
Les autres mesures vont être plus rapides à créer puisqu'on va copier cette première mesure.
Pour cela, positionnez-vous sur la mesure, faites un Ctrl+A pour sélectionner toute la mesure, puis un Ctrl+c pour la copier. Créez ensuite une nouvelle mesure et collez la précédente avec Ctrl+v. Vous n'avez plus qu'à changer le titre de la nouvelle mesure en remplaçant le M par Q pour quarter et la fonction DATESMTD() par DATESQTD() :
Faites de même pour obtenir la 3ème mesure CA YTD avec DATESYTD() :
Nous allons maintenant refaire ces calculs de CA, mais pour le mois précédent, le trimestre précédent ainsi que l'année précédente.
Pour cela, nous allons utiliser la fonction DATEADD(Dates, NumberOfIntervals, Intervalle). Par exemple, pour le mois précédent, nous lui passerons comme arguments DimDate[Date] (pour la colonne Date), -1 (pour le précédent) et MONTH (pour le mois).
Pour obtenir la valeur pour le trimestre précédent, copiez la mesure [CA MTD -1], puis remplacez [CA MTD] par [CA QTD] et l'argument MONTH par QUARTER dans la fonction DATEADD() :
De même, pour obtenir la valeur pour l'année précédente, copiez la mesure [CA MTD -1], puis remplacez [CA MTD] par [CA YTD] et l'argument MONTH par YEAR dans la fonction DATEADD() :
Enfin, il ne nous reste plus qu'à calculer les écarts entre le mois courant et le mois précédent, puis entre le trimestre courant et le trimestre précédent et enfin entre l'année courante et l'année précédente. Pour cela, une simple soustraction sera nécessaire :
Enfin, nous pouvons également ajouter l'écart en pourcentage. Pour cela, nous allons diviser la variation par la valeur de départ. Nous allons utiliser la fonction DAX DIVIDE(Numérateur, Dénominateur, AlternateResult) qui permet de gérer les divisions par 0.
Et voilà, vous savez à présent créer des mesures en DAX. Vous connaissez quelques fonctions essentielles comme CALCULATE() qui permet de faire un calcul dans un contexte de filtre.
Si cet article vous a plu, n'hésitez pas à nous consulter pour une formation Power BI.