Power Query – M – Structure du langage


Lorsque vous utilisez l'interface de Power Query pour réaliser vos transformations, vous devez savoir, qu'en arrière plan, toutes vos actions sont traduite dans un langage informatique : le M, que nous allons étudier.

Si ce n'est déjà fait, vous pouvez télécharger les fichiers sources sur le site de l'excellent  livre M is for (Data) Monkey écrit par Ken Puls et Miguel Escobar  dont nous nous sommes inspiré Télécharger les fichiers pour écrire ce post.

 

Créons une nouvelle requête :

  • Obtenir les données--> Excel--> Ch20 Examples\Understanding M.xlsx
  • Cochez Sales.
  • Cliquez sur modifier.
  • Cliquez sur Editeur. avancé

 

 

Ce bouton nous permet d'accéder au code M, un peu comme l'explorateur de Macro en visual basic.

 

Décomposons ce bloc de code pour comprendre la structure du langage.

 

let


Source = Excel.Workbook(File.Contents("C:\Users\Le menn\Desktop\M\Ch20 Examples\Understanding M.xlsx"), null, true),


Sales_Sheet = Source{[Item="Sales",Kind="Sheet"]}[Data],


#"En-têtes promus" = Table.PromoteHeaders(Sales_Sheet, [PromoteAllScalars=true]),


#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Date", type date}, {"Inventory Item", type text}, {"EmployeeID", Int64.Type}, {"Quantity", Int64.Type}, {"Price", Int64.Type}})


in


#"Type modifié"

 

Le code de chaque requête en M doit commencer par le mot clé let.

La seconde ligne commence par identifier la première étape en lui affectant un nom, ici Source.

Ce bloc de code se contente de récupérer l'ensemble des tables comprises dans la fichier Excel.

 

 

Il faut noter que vous pouvez faire référence à une étape précise n'importe ou dans votre code, en invoquant son nom (par exemple ici, en invoquant Source en fin de programme, ce qui neutralise les étapes appliquées.)

La seconde ligne a pour nom Sales_Sheet et permet de sélectionner la table 'Sales'.

Chaque nouvelle ligne fait référence à l'étape précédente en invoquant son nom :

  •  Sales_Sheet = Source{[Item="Sales",Kind="Sheet"]}[Data]

Lorsque vous souhaitez utiliser un nom contenant des espaces, vous devrez encadrer ce nom entre guillements et faire précéder le tout d'un carret #.

  • #"En-têtes promus" = Table.PromoteHeaders(Sales_Sheet, [PromoteAllScalars=true])

 

Le dernière instruction d'un requête se termine systématiquement par le mot clé in, suivi du nom de l'étape dont vous souhaitez afficher le résultat (généralement la dernière étape).

 

  • in
    #"Type modifié"

 

Entre let et in, chaque instruction doit se terminer  par une virgule, en dehors de la dernière (avant in).

Puisque Power query ne reconnait pas les virgules contenues entre les parenthèses les crochets ou les parenthèses bouclées, nous pouvons écrire ce code de manière plus lisible, ce que sera utile pour le débogage.

 

let


  Source =
   Excel.Workbook(File.Contents("C:\Users\Le menn\Desktop\M\Ch20

   Examples\Understanding M.xlsx"), null, true),

  Sales_Sheet =
   Source

   {
    [Item="Sales",Kind="Sheet"]
    }[Data],

  #"En-têtes promus" =
   Table.PromoteHeaders(Sales_Sheet, [PromoteAllScalars=true]),

  #"Type modifié" =
    Table.TransformColumnTypes
   (
     #"En-têtes promus",
      {
        {"Date", type date},
        {"Inventory Item", type text},
        {"EmployeeID", Int64.Type},
        {"Quantity", Int64.Type},
        {"Price", Int64.Type}
      }
   )
in
  #"Type modifié"

Vous pouvez commenter votre code en commençant votre ligne par deux slashes :

  • // Ceci est un commentaire.

Si cotre commentaire prend plusieurs lignes vous devrez l'encadrer entre /* et */

  • /* Voici un commentaire

      de plusieurs lignes */ .

 

Laissez un commentaire

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