Support formation Rapports Power BI

Vue TMDL et suivi manuel des versions

TMDL - La vue TMDL

La vue TMDL de Power BI Desktop permet de lire, d'écrire et d'appliquer la définition du modèle sémantique sous forme de code, dans le langage TMDL (Tabular Model Definition Language). Elle complète la vue Modèle : tout ce que l'interface graphique fait, et ce qu'elle ne sait pas faire (perspectives, traductions, propriétés avancées), devient accessible en texte. Source

  • Vue TMDL dans Power BI Desktop : disponibilité générale.
  • Vue TMDL dans le service Power BI : préversion, avec un mode Affichage et un mode Édition.
  • Le langage TMDL est aussi le format des fichiers du modèle dans un projet PBIP (dossier definition). Source

1 | Ouvrir la vue TMDL et scripter des objets

  • Sélectionner l'icône Vue TMDL dans la barre verticale gauche de Power BI Desktop (sous les vues Rapport, Table, Modèle et Requête DAX).
  • L'éditeur s'ouvre vide : il faut « scripter » les objets à afficher.
  • Glisser un objet (table, colonne, mesure) depuis le volet Données vers l'éditeur.
  • Ou clic droit sur l'objet > Script TMDL > Onglet de script ou Presse-papiers.
  • Glisser un nœud entier (toutes les mesures, toutes les tables) scripte tous les objets qu'il contient.
  • Ctrl + clic permet de scripter plusieurs objets d'un coup.
  • Le script produit commence par la commande createOrReplace, suivie de la définition complète des objets.
[Capture d’écran à insérer] Fenêtre Power BI Desktop en vue TMDL : barre gauche avec l'icône Vue TMDL mise en évidence, volet Données à droite, et dans l'éditeur le script d'une table (createOrReplace puis table ..., colonnes, partition).

Lire un script TMDL

createOrReplace

    ref table Ventes
        measure 'CA HT' = SUM(Ventes[Montant HT])
            formatString: #,##0.00 €
            displayFolder: Chiffre d'affaires
  • createOrReplace : crée l'objet s'il n'existe pas, le remplace entièrement (avec ses descendants) s'il existe.
  • ref table Ventes : désigne la table sans la redéfinir ; seule la mesure est créée ou remplacée.
  • L'indentation (tabulations) porte la structure, comme en Python.
  • Un seul verbe de commande par script. Source

2 | L'éditeur de code

  • Coloration sémantique et sections repliables.
  • Saisie semi-automatique (à tout moment avec Ctrl + Espace).
  • Info-bulles au survol des propriétés.
  • Actions de code (ampoule) : correction d'un nom de propriété, génération des balises lineageTag.
  • Mise en forme : Maj + Alt + F ou bouton Format du ruban.
  • Rechercher et remplacer : Ctrl + F (expressions régulières acceptées), Ctrl + H pour remplacer.
  • Volet Problèmes : liste des erreurs de syntaxe, avec navigation vers la ligne fautive.
  • Volet Sortie : messages d'exécution de l'onglet actif.
  • Plusieurs onglets de script, renommables.
[Capture d’écran à insérer] Éditeur TMDL avec une erreur soulignée en rouge et le volet Problèmes ouvert en bas, affichant le message d'erreur.

3 | Exporter, corriger et modifier des parties du modèle

Ce point du programme correspond exactement au cycle de travail de la vue TMDL : on exporte (scripte) une partie du modèle, on la corrige ou la modifie en texte, puis on l'applique.

Le cycle Scripter, Modifier, Aperçu, Appliquer

  1. Scripter l'objet à modifier (glisser depuis le volet Données).
  2. Modifier le texte dans l'éditeur.
  3. Aperçu : affiche la différence entre le modèle avant et après exécution du script (lignes rouges supprimées ou modifiées, lignes vertes ajoutées), en ligne ou côte à côte.
  4. Appliquer : exécute le script sur le modèle. Une bannière confirme le succès, ou propose Afficher les détails en cas d'échec (volet Sortie).
[Capture d’écran à insérer] Ruban de la vue TMDL avec les boutons Aperçu et Appliquer, et à droite le volet de comparaison avant / après avec surlignages rouge et vert.

Points de vigilance :

  • La vue TMDL modifie uniquement les métadonnées : pas d'actualisation des données. Après modification d'une requête Power Query ou d'une colonne calculée, actualiser la table manuellement.
  • Renommer un champ peut casser les visuels du rapport qui l'utilisent.
  • Pour renommer un objet, il faut scripter son parent (la table pour une colonne, le modèle entier pour une table).
  • Une modification incomplète ou incorrecte peut produire un comportement inattendu : toujours passer par Aperçu et garder un script de sauvegarde (voir partie 4).

Cas d'usage à montrer en formation

BesoinDémarche dans la vue TMDL
Réutiliser une table de dates ou un groupe de calcul dans un autre fichierScripter la table, copier le script, l'appliquer dans la vue TMDL de l'autre fichier Power BI Desktop
Supprimer les préfixes dim_ et fact_ de 100 tablesScripter le modèle, Rechercher / Remplacer par expression régulière, appliquer
Mettre tous les noms de colonnes en minusculesRechercher (^s+columns+)(.+), remplacer par $1L$2
Créer une perspective, des traductions, une expression de lignes de détailÉcrire l'objet dans un onglet vide (pas d'interface graphique pour ces objets)
Corriger l'expression Power Query d'une table sans actualiserScripter la table, modifier la partition, appliquer
Basculer une table de DirectQuery vers ImportScripter la table, modifier mode: dans la partition, appliquer

Exemple de perspective, impossible à créer dans l'interface :

createOrReplace
    perspective VueCommerciale
        perspectiveTable Ventes
            perspectiveMeasure 'CA HT'
            perspectiveMeasure 'Quantité'
            perspectiveColumn Date

À noter : sourceColumn (nom dans Power Query) et le nom de colonne du modèle sont indépendants ; renommer une colonne en TMDL n'ajoute pas d'étape de renommage dans Power Query.

4 | Suivi des versions : méthode manuelle avec la vue TMDL

Sans Git, la vue TMDL permet de garder des « photos » du modèle et de revenir en arrière. Microsoft cite ce scénario : scripter le modèle (ou les parties concernées) avant une modification importante, puis réexécuter le script enregistré pour restaurer la définition précédente. Source

Prendre une version

  1. Ouvrir la vue TMDL et scripter le modèle entier : dans la vue Modèle, volet Modèle, clic droit sur le nœud Modèle sémantique > Script TMDL > Onglet de script.
  2. Renommer l'onglet avec une convention explicite, par exemple v03 | 2026-10-14 | avant refonte des mesures.
  3. Ne plus toucher à cet onglet : il sert de référence.
  4. Pour une sauvegarde hors du fichier, copier le script dans un fichier texte .tmdl rangé dans un dossier Versions (SharePoint, OneDrive) avec le même nom.
  5. Tenir un petit journal des versions : numéro, date, auteur, objet de la modification.
[Capture d’écran à insérer] Vue TMDL avec plusieurs onglets renommés selon la convention vNN | date | description, l'onglet actif affichant le début du script du modèle.

Où les onglets sont-ils conservés ?

  • Dans un fichier PBIX : les onglets de la vue TMDL sont enregistrés dans le fichier et retrouvés à la réouverture.
  • Dans un projet PBIP : chaque onglet devient un fichier .tmdl du dossier TMDLScripts, modifiable dans Visual Studio Code.
  • Dans la vue TMDL du service : les scripts ne sont pas conservés à la fermeture.

Comparer deux versions

  • Ouvrir l'onglet de la version de référence et cliquer sur Aperçu : la comparaison montre tout ce qui changerait si le modèle actuel revenait à cette version, donc tout ce qui a été modifié depuis.
  • Utiliser les options de la barre d'outils de l'aperçu : différences en ligne ou côte à côte, masquer les régions inchangées.

Restaurer une version

  1. Ouvrir l'onglet (ou recoller le fichier .tmdl) de la version voulue.
  2. Cliquer sur Aperçu pour contrôler l'impact.
  3. Cliquer sur Appliquer.
  4. Actualiser les tables dont les requêtes ont changé.

Ce que la restauration fait et ne fait pas :

  • createOrReplace remplace les objets scriptés et tous leurs descendants : les mesures ou colonnes ajoutées depuis la version sont supprimées si leur table est dans le script.
  • Le rapport (pages, visuels) n'est pas versionné : seul le modèle sémantique l'est.
  • Les données ne sont pas versionnées.

Limites de la méthode manuelle

  • Discipline humaine : rien n'oblige à prendre une version avant de modifier.
  • Pas d'historique partagé ni de fusion de travaux entre plusieurs développeurs.
  • La connexion d'un espace de travail à Git n'embarque pas les scripts de la vue TMDL enregistrés dans le modèle publié.
  • Dans le service, l'historique des versions du modèle sémantique complète la méthode : jusqu'à cinq versions capturées automatiquement (ouverture en mode Édition sur le web, publication d'un PBIX, restauration), restaurables depuis le volet Historique des versions. Source
  • Pour un suivi complet et collaboratif, passer à la méthode industrielle : projet PBIP et Git (page Mode développeur (Projet Power BI)). Source

5 | Mise en pratique

  1. Ouvrir le fichier du fil rouge et scripter le modèle entier ; renommer l'onglet v01 | date | état initial.
  2. Dans un nouvel onglet, scripter la table de faits et ajouter deux mesures avec leur formatString et leur displayFolder ; Aperçu, puis Appliquer.
  3. Renommer en masse les colonnes d'une table (Rechercher / Remplacer) et constater l'effet sur un visuel du rapport.
  4. Revenir à l'onglet v01, faire un Aperçu pour lister les écarts, puis Appliquer pour restaurer l'état initial.
  5. Copier le script d'une table de dates dans un autre fichier Power BI Desktop et l'appliquer.

Pour aller plus loin

  • Extension TMDL pour Visual Studio Code : coloration DAX et Power Query, saisie semi-automatique, diagnostics. Source
  • Vue d'ensemble du langage TMDL. Source