Vue TMDL et suivi manuel des versions
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 (createOrReplacepuistable ..., colonnes, partition).
Lire un script TMDL
createOrReplace
ref table Ventes
measure 'CA HT' = SUM(Ventes[Montant HT])
formatString: #,##0.00 €
displayFolder: Chiffre d'affairescreateOrReplace: 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
- Scripter l'objet à modifier (glisser depuis le volet Données).
- Modifier le texte dans l'éditeur.
- 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.
- 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
| Besoin | Démarche dans la vue TMDL |
| Réutiliser une table de dates ou un groupe de calcul dans un autre fichier | Scripter 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 tables | Scripter le modèle, Rechercher / Remplacer par expression régulière, appliquer |
| Mettre tous les noms de colonnes en minuscules | Rechercher (^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 actualiser | Scripter la table, modifier la partition, appliquer |
| Basculer une table de DirectQuery vers Import | Scripter 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
- 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.
- Renommer l'onglet avec une convention explicite, par exemple
v03 | 2026-10-14 | avant refonte des mesures. - Ne plus toucher à cet onglet : il sert de référence.
- Pour une sauvegarde hors du fichier, copier le script dans un fichier texte
.tmdlrangé dans un dossierVersions(SharePoint, OneDrive) avec le même nom. - 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
.tmdldu dossierTMDLScripts, 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
- Ouvrir l'onglet (ou recoller le fichier
.tmdl) de la version voulue. - Cliquer sur Aperçu pour contrôler l'impact.
- Cliquer sur Appliquer.
- Actualiser les tables dont les requêtes ont changé.
Ce que la restauration fait et ne fait pas :
createOrReplaceremplace 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
- Ouvrir le fichier du fil rouge et scripter le modèle entier ; renommer l'onglet
v01 | date | état initial. - Dans un nouvel onglet, scripter la table de faits et ajouter deux mesures avec leur
formatStringet leurdisplayFolder; Aperçu, puis Appliquer. - Renommer en masse les colonnes d'une table (Rechercher / Remplacer) et constater l'effet sur un visuel du rapport.
- Revenir à l'onglet
v01, faire un Aperçu pour lister les écarts, puis Appliquer pour restaurer l'état initial. - 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
- Exemples concrets d'objets sans interface : Objets sans interface : perspectives, traductions, lignes de détail.
- Méthode industrielle avec Git (PBIP, intégration Git d'un espace de travail, branches) : Suivi des versions avec Git : méthode industrielle.










