Support formation Rapports Power BI

2 | Lire et modifier le code généré

En bref

  • Objectifs : lire le code d'une étape dans la barre de formule ; corriger un argument généré automatiquement ; écrire une colonne personnalisée avec each ; utiliser l'éditeur avancé.
  • Prérequis : chapitre « 1 | Introduction au langage M ».
  • Niveau : intermédiaire.

Pourquoi ?

L'interface génère un code fonctionnel mais pas toujours adapté à l'avenir de la source. L'exemple classique : à la connexion à un fichier CSV, Power Query fige le nombre de colonnes ; le jour où le fichier en contient une de plus, elle est ignorée sans message. Quelques retouches dans la barre de formule suffisent à rendre la requête robuste.

Notions clés

Barre de formule et éditeur avancé

  • La barre de formule (Affichage > Barre de formule) affiche le code de l'étape sélectionnée. La flèche à droite la déroule sur plusieurs lignes. Une modification validée par Entrée met à jour l'étape.
  • L'éditeur avancé (Accueil > Éditeur avancé) affiche le code complet de la requête, de let à in. Ctrl + Maj + plus ou moins règle le zoom.

Chaque étape fait référence à la précédente par son nom : Table.SelectRows(#"Type modifié", ...). Renommer une étape dans le volet met à jour ces références automatiquement ; dans l'éditeur avancé, c'est à vous de le faire.

Retoucher une étape générée

Connexion à un fichier CSV dont le chemin est dans un paramètre :

= Csv.Document(File.Contents(paramCheminFichier), [Delimiter = ",", Columns = 8, Encoding = 1252, QuoteStyle = QuoteStyle.None])

Power Query a ajouté Columns = 8 d'après le fichier de départ. Si le fichier contient un jour 9 colonnes, la neuvième est ignorée. Ce paramètre étant facultatif, supprimez-le : le nombre de colonnes sera déduit du fichier à chaque actualisation. Source

= Csv.Document(File.Contents(paramCheminFichier), [Delimiter = ",", Encoding = 1252, QuoteStyle = QuoteStyle.None])

Autres retouches fréquentes : corriger un type dans une étape Type modifié, remplacer une valeur fixe par un paramètre, ou supprimer d'une étape Colonnes renommées une colonne qui n'existe plus dans la source.

Colonnes personnalisées, each et _

Ajouter une colonne > Colonne personnalisée ouvre une boîte où vous saisissez une formule ; un double-clic sur un nom de la liste Colonnes disponibles l'insère entre crochets.

image.png

Les opérateurs arithmétiques habituels sont disponibles dans la formule :

image.png

L'étape générée utilise Table.AddColumn :

= Table.AddColumn(#"Type modifié", "Montant TTC", each [Montant HT] * 1.2, type number)
  • each introduit une fonction appliquée à chaque ligne ; c'est un raccourci de (_) => ....
  • _ désigne la ligne en cours (un enregistrement) ; [Montant HT] est un raccourci de _[Montant HT].
  • Le quatrième argument (type number) donne son type à la nouvelle colonne. L'interface ne l'écrit pas toujours ; ajoutez-le pour éviter une colonne de type Any. Source

Colonne à partir d'exemples produit le même type d'étape : vous saisissez le résultat attendu sur la première ligne, Power Query déduit la formule.

= Table.AddColumn(#"Type modifié", "Addition", each [Column1] + 1, type number)

Colonne d'index numérote les lignes ; les arguments sont le nom, la valeur de départ et le pas :

= Table.AddIndexColumn(#"Type modifié", "Index", 1, 1, Int64.Type)

Pas à pas

1. Connectez-vous à un fichier CSV du kit pédagogique et ouvrez la requête dans l'éditeur.

2. Affichez la barre de formule, sélectionnez l'étape Source et dépliez la barre.

[Capture : barre de formule dépliée sur l'étape Source, argument Columns = 8 mis en évidence]

3. Supprimez Columns = 8, (avec la virgule) et validez par Entrée.

4. Ajoutez une colonne personnalisée Montant TTC, puis complétez la formule dans la barre de formule avec , type number avant la parenthèse finale. L'icône de type de la colonne passe de ABC123 à 1.2.

5. Ouvrez l'éditeur avancé et repérez, pour chaque étape, le nom de l'étape précédente utilisé comme premier argument.

[Capture : éditeur avancé affichant la requête complète, références entre étapes surlignées]

Pièges et bonnes pratiques

  • Ne supprimez pas une étape au milieu de la requête dans l'éditeur avancé sans corriger la référence de l'étape suivante.
  • Une modification dans l'éditeur avancé n'est vérifiée qu'à la validation : lisez attentivement le message en cas d'erreur de syntaxe, il indique la ligne fautive.
  • Pour mettre en forme un long code, un outil comme Power Query Formatter indente automatiquement les expressions.

À retenir

  • La barre de formule montre une étape, l'éditeur avancé toute la requête.
  • Supprimer Columns = n d'un Csv.Document rend la requête robuste à l'ajout de colonnes.
  • each [Colonne] est un raccourci de (_) => _[Colonne], appliqué à chaque ligne.
  • Précisez toujours le type d'une colonne personnalisée.

Pour aller plus loin

  • Comprendre les fonctions Power Query M (each et _). Source
  • Ajouter une colonne personnalisée. Source
  • Csv.Document. Source