Power Query – Une journée à faire du M

A la découverte de Power BI, j’ai consacré du temps à Power Query dans le cadre d’une utilisation d’API et des transformations sur du JSON…que du bonheur !
Après quelques manipulations et des va-et-vient dans le menu à la découverte des nombreuses fonctionnalités je me suis intéressé au langage M.

Pour voir du M dans un premier il faut activer la barre de formule dans l’onglet Affichage.

Ribon Power Query

Vous pouvez également jeter un coup d’œil dans l’éditeur avancé pour regarder ce que vos manipulations en « click-click » sur l’interface ont généré comme code M.

M

A première vue c’est assez étrange comme langage…

En le regardant d’un peu plus près, on se retrouve nez à nez avec un langage de script très classique, les exécutions sont séquentielles et la syntaxe est abordable.

Par contre j’aurais aimé avoir une coloration syntaxique et de l’Intellisense ! Et oui il faut oublier le confort d’écriture et visuel. Je pense qu’il y a un bon petit projet à mettre en place un peu comme le DAX formater à moins que cela soit déjà prévu du côté de MS.

A noter que le compilateur, qui affiche les erreurs est certes très simple mails il fait bien son travail une fois que l’on connaît un minimum de syntaxe.

Le code généré dépend comme vous l’aurez deviné des transformations effectuées sur vos données. Un conseil pour mieux appréhender le mécanisme du langage : faites des petites transformations et reluquer le code M dans l’éditeur avancé.

A noter que l’on peut voir du code M dans la barre de formule et dans l’éditeur d’ajout d’une nouvelle colonne.

Power Query - Ajouter une colonne

On y trouve un lien vers le site du langage M dans cette pop-up.

Sur ce site vous trouverez trois documents qui vous expliqueront le langage.

Ces documents sont assez lourds +300 pages de lecture qui me font rappeler vaguement mes premiers cours de C…

Création de fonctions

Power Query vous permettra de faire des transformations mais aussi de créer des fonctions qui pourront assurer la récupération des données tout en appliquant vos propres fonctions.

Comme par exemple récupérer les données en indiquant des paramètres tout appliquant une transformation pour chaque ligne retournée.

Pour spécifier une fonction, la manière la plus simple est d’ajouter un bloc Let et un bloc In  au début et à la fin de votre traitement.

L’exemple ci-dessous créé une fonction GetDataAPI qui prend en compte 3 arguments : un nombre et deux textes.

let
 GetDataAPI = (x as number, StartDate as text, EndDate as text) =>
let
 //Vos transformations
in
  #"Table transposée"
in 
GetDataAPI

Pour utiliser des paramètres dans vos transformations vous pouvez passer par des Text.Replace()

Source = Json.Document(Web.Contents(Text.Replace(Text.Replace(
 "https://myapi.com/myjson.json?date-from={Start}&date-to={End}","{Start}",StartDate),"{End}",EndDate))),

Une fois votre fonction créée l’interface va changer.

M - Fonction

Et votre requête Power Query deviendra une fonction.

Power Query - Requete

Ainsi lorsque vous allez double cliquez sur la fonction on vous demandera de saisir les paramètres.

Power Query - Fonction Entrer Parmètres

Je vous laisse donc imaginer le scénario où vous appelez cette fonction au sein d’une autre requête afin d’appliquer à la volée des transformations.

Conclusion

Tout laisse penser que ça à l’air puissant et prometteur, on se retrouve à utiliser une sorte d’ETL dans Excel mais je reste sceptique sur le niveau avancé de création requête si on se met dans la peau d’un « Power User ».

L’interface et le langage peuvent rebuter certain, c’est loin d’être parfait et propre mais gardons en tête que ce n’est que le début, espérons que cela va s’améliorer avec le temps.

Pour faire des requêtes avancées, la raison voudrait qu’on se retourne vers une population plus à l’aise au scripting et curieuse de l’outil. La pratique voudrait qu’une fois développée la requête soit facilement partageable à ceux qui en auraient besoin.

Une conclusion qui laisse de côté les aventures que l’on peut rencontrer avec la compréhension d’une API, du JSON et des données générées.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s