Quand utiliser le langage M et quand utiliser le langage DAX?

Publié le 17 juillet 2019
par Sophie Marchand M.Sc.
Recette magiques

Vous êtes plusieurs à me demander quand faut-il utiliser le langage M et quand faut-il utiliser le langage DAX, que ce soit dans Excel avec Power Query et Power Pivot ou dans Power BI. La question mérite qu’on s’y attarde et c’est exactement ce que je fais dans cet article. Je compare les situations où l’on devrait utiliser le langage M vs le langage DAX et vice versa.

 

Qu’est-ce que le langage M ?

Le langage M (M pour Mashup) est une solution ETL (Extracting, Transforming, Loading) en mode libre-service, utilisée par Power Query (Excel et Power BI).

 

Le langage M est utilisé pour:

  • (E) automatiser le processus d’exportation de données de différentes sources et d’importation dans Excel ou Power BI
  • (T) transformer les données ainsi importées afin qu’elles puissent convenir aux besoins d’analyse
  • (L) charger ces données dans une ou des tables, qui seront éventuellement utilisées par un modèle de données

 

Le langage M est un langage de programmation structuré, étape par étape, où chaque étape va généralement lire dans la précédente (sauf exceptions).

 

Power Query: Code M

 

Qu’est-ce que le langage DAX ?

Le langage DAX (Data Analysis Expression) est utilisé par Power Pivot dans Excel, Power BI Desktop et SSAS (SQL Sever Analysis Services) tabulaire. Il s’agit d’un langage inspiré en partie des fonctions Excel mais adapté à la réalité d’analyse de bases de données. Il utilise des fonctions, des filtres et des expressions et a expressément été créé pour répondre à des questions analytiques (engin analytique).

 

Mesure DAX écart coûts

 

Vous avez des sources de données volumineuses à rassembler et analyser dans Excel ? Apprenez à automatiser tout le processus d’importation, de transformation et de modélisation  des données avec nos formations sur Power Query et Power Pivot dans Excel.

 

Quand utiliser le langage M vs le langage DAX et vice versa?

Certaines tâches peuvent techniquement très bien se faire en langage M ou en langage DAX… Vous pouvez simplement penser, par exemple, aux fameuses colonnes calculées. Mais pourquoi cette dualité me direz-vous? Et bien, il s’agit d’une réalité propre à tous les langages et programmes informatiques. Vous pouvez très bien écrire un texte dans Excel et écrire un texte dans Word. Qu’utiliserez-vous quand viendra le temps d’écrire un texte? Et bien, ça dépend surtout de la finalité de votre texte. Si vous devez rédiger un CV, vous opterez probablement pour Word. Mais si vous devez rédiger un texte qui fait l’analyse de données dans Excel et que vous souhaitez qu’il se mette à jour en fonction des nouvelles valeurs de l’analyse, vous l’écrirez peut-être directement dans le fichier Excel de l’analyse, avec des fonctions liées aux valeurs de l’analyse.

Si vous y réfléchissez bien, c’est comme ça, pas mal dans tout. Avec quoi étendez-vous votre confiture sur vos rôties? Personnellement, j’utilise une cuillère et j’étends le tout avec le dos de ma cuillère. Mais à l’origine, la cuillère avait été inventée pour d’autres fins. C’est le couteau qui avait été inventé pour étendre. En effet, si je me fie au dictionnaire, une cuillère est un ustensile de table formé d’un manche et d’un cuilleron dont on se sert ordinairement pour manger le potage et d’autres aliments liquides ou de peu de consistance.

Si on revenait maintenant à nos moutons, quand vaut-il mieux opter pour le langage M et quand vaut-il mieux opter pour le langage DAX? Et bien, il y a des experts du langage M qui font à peu près tout en M et des experts du langage DAX qui font à peu près tout en DAX. Mais pour être davantage en ligne avec les meilleures pratiques d’affaires, demandez-vous toujours si votre tâche consiste à PRÉPARER LES DONNÉES pour l’analyse, dans lequel cas il vous faudrait opter pour le langage M, ou à CRÉER UNE EXPRESSION ANALYTIQUE, dans lequel cas il vous faudrait opter pour le langage DAX.

 

Langage M vs Langage DAX

 

Quelques exemples concrets de langage M vs langage DAX

Voici quelques exemples où il peut être embêtant de choisir entre le langage M et le langage DAX.

 

Ajout d’une colonne qui fusionne 2 colonnes à l’aide d’un symbole « & »… M ou DAX?

À mon sens, il s’agit d’une préparation de données (étape conventionnelle de ETL) et elle devrait donc se faire dans Power Query.

 

Créer une valeur YTD… M ou DAX?

En M, on a besoin de beaucoup de code pour calculer un YTD et ça doit se calculer dans une colonne alors qu’en DAX ça se fera avec une mesure (et probablement une fonction de Time Intelligence), qui se recalculera aisément selon le contexte. Nul doute ici, il vaudrait mieux opter pour le DAX, à moins que la valeur YTD ne serve à qualifier un item en ligne dans une table de dimensions. Par exemple, dans une table de clients, je pourrais vouloir compiler les ventes YTD de la dernière année et attribuer ensuite à chaque client un rang ou une catégorie en lien avec cette valeur. Cette information deviendrait en soi une dimension d’analyse et pour cette raison, je la créerais en langage M.

 

Créer une table de dates… M ou DAX?

Voilà une situation embêtante!

À mon sens, créer une table de dates, ça tient de la préparation de données. Mais Microsoft nous a fourni de belles fonctions de tables en DAX, qui évitent du travail (fonctions CALENDAR et CALENDARAUTO). Par contre, que se passe-t-il ensuite si on veut fusionner cette table en DAX, par exemple, avec une table de dates fiscales? Ce serait beaucoup plus simple via Power Query (et donc en langage M)… De même, de plus en plus d’experts commencent à confirmer que les colonnes de dates créées en M sont mieux compressées que celles créées en DAX, ce qui offrirait une autre raison d’opter pour le M quand vient le temps de créer un calendrier dynamique.

 

Une question pour vous, chers lecteurs?

Avez-vous des situations concrètes où vous hésitez entre l’utilisation du langage M et du langage DAX? Le cas échéant, nous voulons le savoir! Utilisez la zone de commentaires ci-dessous pour nous en faire part.

 


Formations complémentaires

Pour une introduction au langage DAX, suivez la formation Introduction au langage DAX (Power BI et Power Pivot).

 

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Le-CFO-masque_Commentaires-Introduction-langage-DAX

Pour une introduction au langage M, suivez la formation Excel – Introduction à Power Query et au langage M.

 

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Voici quelques commentaires d’apprenants ayant suivi la formation - Excel Introduction à Power Query et au langage M

CFO-Masque_Formations-en-ligne_FBLa mission du CFO masqué est de développer les compétences techniques des analystes et des contrôleurs de gestion en informatique décisionnelle avec Excel et Power BI et favoriser l’atteinte de leur plein potentiel, en stimulant leur autonomie, leur curiosité, leur raisonnement logique, leur esprit critique et leur créativité.

4 réflexions sur “Quand utiliser le langage M et quand utiliser le langage DAX?”

  1. Merci pour l’article, ça éclaire un peu la différence.
    je dois capturer la derniere date dans une Table et calculer les 52 dernieres semaines avec cette date.
    Ces 52 dernières semaines serviront d’Axe Y dans plusieurs KPI donc je crois que je devrais créer une Table en M… mais il reste a savoir comment!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut