Une pincée de M

Proposé par André Meyer-Roussilhon

26 juin 2020

Restez informé, abonnez-vous à la newsletter (2 fois / mois)

15 + 13 =

Rappelons d’abord que Power Query est une UI (interface utilisateur) dont l’objectif est de générer simplement du code M afin de construire la requête qui sera ensuite – au moment où vous cliquez sur Fermer & appliquer – envoyée en partie ou en totalité à la source.

Comme toute UI, celle de Power Query se concentre sur les fonctionnalités les plus fréquentes, ainsi que sur les modalités les plus courantes de ces fonctionnalités. Power Query est un outil bien pensé, et ces fonctionnalités courantes sauront satisfaire la plupart des besoins. Mais 30% à 50% des possibilités du langage M ne sont pas proposées par l’UI !

Connaître un peu de M suffit déjà à accéder à des fonctionnalités utiles, et se constituer une petite bibliothèque de scripts M tout prêts, qu’il suffira de copier-coller dans l’éditeur, c’est gagner un temps précieux.

Dans ce premier billet, je vous propose de découvrir l’environnement, apprendre à lire un script M, et afficher la liste des fonctions.

L’éditeur de M

Les transformations que vous effectuez dans Power Query sont listées en étapes :

Or chaque étape est l’occasion d’insérer une ligne de code M. Sélectionnez l’étape, et pour peu que la barre de formule soit affichée, vous y voyez le code correspondant :

Notez ici le lien entre le nom de l’étape et la fonction M utilisée : Table.TransformColumnType

Ce qui va nous intéresser, c’est de pouvoir afficher toutes les lignes de code. C’est le rôle de l’éditeur avancé :

Lire le code M

De manière générale, la structure du code est le plus souvent la suivante :

let
	Source = <nom de la source> ,
	#"Etape 1" = Fonction_M (Source, paramètres) ,
	#"Etape 2" = Fonction_M (#"Etape 1", paramètres) ,
	#"Etape finale" = Fonction_M (#"Etape 2", paramètres)
in
	#"Etape finale"

Le mot-clé LET (en minuscules) permet d’énoncer une série d’opérations, tandis que le mot-clé IN (en minuscules) indique ce qui ressortira. C’est le plus souvent la dernière étape, mais pas nécessairement : il est possible d’invoquer une étape antérieure, par exemple pour corriger le code.

Comme vous pouvez le constater, l’élément-clé est l’étape. Elle porte un nom et appelle une fonction à laquelle elle passe des paramètres. Si le nom de l’étape est un seul mot, il apparaît tel quel : Source, Feuil1_Sheet. S’il est composé de plusieurs termes, il apparaît encadré de guillemets et précédé d’un dièse : # »Etape 2″.

Attention, M est sensible à la casse : il faut impérativement respecter les minuscules et les majuscules (le plus souvent au début du nom de la fonction).

Autres remarques sur le code visible ci-dessus :

  • Parmi les paramètres d’une fonction, vous retrouvez quasi-systématiquement une référence à une autre étape, le plus souvent celle qui précède
  • Pour insérer un commentaire, faite précéder la ligne d’un double slash //

Afficher la librairie des fonctions

M regorge de fonctions : pouvoir trouver rapidement l’une d’entre elles et en afficher le fonctionnement, ainsi que des exemples, est donc essentiel.
Pour ça, il existe une fonction, #shared, qui permet de créer une table de référence. Une fois cette table créée dans votre fichier, vous aurez un accès facilité et très rapide (notamment grâce à l’utilisation des filtres de colonnes dans Power Query) au dictionnaire de fonctions.

Pour pouvoir saisir votre script M, une fois dans Power Query, cliquez sur Nouvelle source, puis Requête vide. Le code tient sur une ligne, il est donc inutile cette fois d’ouvrir l’éditeur avancé : dans la barre de formule, saisissez = #shared et validez (Entrée)

Pour terminer, cliquez sur En table, dans l’onglet Outil enregistrement > Convertir. Ceci afin de créer effectivement une table facile à utiliser (car vous pouvez utiliser les fonctions de filtre), avec nom de la fonction, description et exemples :

Voilà, les bases sont en place. N’hésitez pas, lorsque vous utilisez l’UI pour générer des transformations, à aller regarder le code M ; c’est comme ça que vous apprendrez au fur et à mesure.

Dans le prochain billet consacré à M, nous verrons des cas concrets d’utilisation de ce langage, simples et très très utiles.

Articles associés :

Délai entre deux dates, week-end et jours fériés

Délai entre deux dates, week-end et jours fériés

Une table du temps qui calcule automatiquement les jours fériés ? Vous en rêviez, daxone.fr vous l’offre ! Et j’en profite pour vous donner la méthode pour calculer le nombre de jours écoulés entre deux dates, en excluant les dimanches et les jours fériés (je suis sûr que ça va vous servir)

Power Query et M : le nouveau livre de référence

Power Query et M : le nouveau livre de référence

Le quatrième livre que je consacre à Power BI est sorti le 8 septembre : 306 pages entièrement dédiées à Power Query et au langage M, avec de nombreuses mises en pratique.
Plutôt que de séparer l’interface graphique (Power Query) et M (le code que génère l’interface), j’ai choisi de montrer comment les deux doivent être pensés dans une continuité : connaître ne serait-ce qu’un minimum du langage M permet d’améliorer, d’accélérer et d’étendre les possibilités du code généré automatiquement par l’interface graphique.

Exporter de Power BI vers CSV ou TXT sans être limité par le nombre de lignes

Exporter de Power BI vers CSV ou TXT sans être limité par le nombre de lignes

Lors de la dernière session de formation Power BI Expert que j’ai animée, un stagiaire a soulevé la question de la limite du nombre de lignes qu’il est possible d’exporter à partir de Power BI vers un fichier CSV. Cette limite est fixée à 30 000 lignes. Mais alors comment faire lorsque, ce qui n’est pas rare, vous souhaitez exporter une table ou un visuel contenant plus de 30 000 lignes ? Dans cet article je vous propose la solution.