Vue TMDL
En bref
- Objectifs : scripter des objets du modèle en TMDL ; les modifier puis appliquer le script avec Aperçu et Appliquer ; créer des objets sans interface (perspectives, traductions, lignes de détail) ; garder et restaurer des versions du modèle.
- Prérequis : pages précédentes de la partie ; mesures DAX.
- Niveau : avancé.
Pourquoi ?
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). Tout ce que l'interface fait, et ce qu'elle ne sait pas faire (perspectives, traductions, rôles OLS, propriétés avancées), devient accessible en texte : renommer cent colonnes, copier une table de dates d'un fichier à l'autre ou revenir à une version antérieure prend quelques secondes. Source
La vue TMDL est disponible dans Power BI Desktop, et en préversion dans le service. TMDL est aussi le format des fichiers du modèle dans un projet PBIP (dossier definition).
Notions clés
Lire un script TMDL
createOrReplace
ref table Ventes
measure 'CA HT' = SUM(Ventes[Montant HT])
formatString: #,##0.00 €
displayFolder: Chiffre d'affairescreateOrReplacecrée l'objet s'il n'existe pas, et le remplace entièrement, avec ses descendants, s'il existe.ref table Ventesdésigne la table sans la redéfinir : seule la mesure est créée ou remplacée.- L'indentation par tabulations porte la structure ; un seul verbe de commande par script. Source
L'éditeur
- Saisie semi-automatique (Ctrl + Espace), info-bulles, actions de code (ampoule).
- Mise en forme : Maj + Alt + F ; rechercher : Ctrl + F (expressions régulières acceptées) ; remplacer : Ctrl + H.
- Volet Problèmes pour les erreurs de syntaxe, volet Sortie pour les messages d'exécution.
- Plusieurs onglets de script, renommables.
Cas d'usage
| Besoin | Démarche |
| Réutiliser une table de dates ou un groupe de calcul | Scripter la table, copier le script, l'appliquer dans l'autre fichier |
Supprimer les préfixes dim_ et fact_ de toutes les tables | Scripter le modèle, rechercher et remplacer par expression régulière, appliquer |
| Créer une perspective, des traductions, un rôle OLS | Écrire l'objet dans un onglet vide |
| Corriger l'expression Power Query d'une table sans actualiser | Scripter la table, modifier la partition, appliquer |
| Basculer une table de DirectQuery vers Import | Modifier mode: dans la partition |
Pas à pas
Scripter, modifier, appliquer
1. Cliquez sur l'icône Vue TMDL dans la barre gauche de Power BI Desktop. L'éditeur s'ouvre vide.
2. Faites glisser un objet (table, colonne, mesure, ou un nœud entier) du volet Données vers l'éditeur, ou faites un clic droit sur l'objet > Script TMDL > Onglet de script. Ctrl + clic sélectionne plusieurs objets.
[Capture : Power BI Desktop en vue TMDL, icône Vue TMDL mise en évidence dans la barre gauche, script d'une table (createOrReplace, table, colonnes, partition) dans l'éditeur]
3. Modifiez le texte.
4. Cliquez sur Aperçu : la comparaison avant / après s'affiche (lignes supprimées en rouge, ajoutées en vert), en ligne ou côte à côte.
[Capture : ruban de la vue TMDL avec les boutons Aperçu et Appliquer, et volet de comparaison avec surlignages rouge et vert]
5. Cliquez sur Appliquer. Une bannière confirme le succès, ou propose Afficher les détails en cas d'échec.
La vue TMDL ne modifie que les métadonnées : après une modification de requête ou de colonne calculée, actualisez la table. Renommer un champ peut casser les visuels qui l'utilisent ; pour renommer un objet, scriptez son parent.
Garder et restaurer une version
1. Dans la vue Modèle, volet Modèle, clic droit sur le nœud Modèle sémantique > Script TMDL > Onglet de script.
2. Renommez l'onglet selon une convention explicite, par exemple v03 | 2026-10-14 | avant refonte des mesures, et n'y touchez plus. Pour une sauvegarde hors du fichier, copiez le script dans un fichier .tmdl rangé dans un dossier partagé.
[Capture : vue TMDL avec plusieurs onglets nommés selon la convention vNN | date | description]
3. Pour comparer, ouvrez l'onglet de la version et cliquez sur Aperçu : vous voyez tout ce qui a changé depuis.
4. Pour restaurer, cliquez sur Appliquer, puis actualisez les tables dont les requêtes ont changé.
Les onglets sont enregistrés dans le fichier PBIX ; dans un projet PBIP, chacun devient un fichier du dossier TMDLScripts. Ils ne sont pas conservés dans la vue TMDL du service. La restauration supprime les objets créés depuis la version dans les tables scriptées ; le rapport et les données ne sont pas versionnés.
Exemple
Une perspective
Une perspective est un sous-ensemble nommé du modèle. Elle filtre la liste des champs proposée au lecteur qui personnalise un visuel ; ce n'est pas un mécanisme de sécurité.
createOrReplace
perspective 'Vue commerciale'
perspectiveTable Ventes
perspectiveMeasure 'CA HT'
perspectiveMeasure 'Quantité vendue'
perspectiveColumn Date
perspectiveTable Produit
perspectiveColumn Catégorie
perspectiveColumn ProduitActivez ensuite Personnaliser les visuels (Options > Fichier actif > Paramètres du rapport), puis choisissez la perspective dans le volet Format de la page, section Personnaliser le visuel > Perspective du lecteur du rapport. Source

Des traductions de métadonnées
createOrReplace
cultureInfo en-US
translations
model Model
table Ventes
caption: Sales
measure 'CA HT'
caption: Sales excl. VAT
description: Sum of sales amounts excluding VATLes propriétés caption, description et displayFolder sont traduisibles. Power BI Desktop n'affiche pas les traductions : testez dans le service en ajoutant ?language=en-US à l'adresse du rapport. createOrReplace remplace la culture entière : si elle existe déjà, scriptez-la d'abord et complétez-la. La page Rapports multilingues (partie 5) traite les libellés du rapport. Source
Une expression de lignes de détail
Elle définit la table renvoyée quand on demande le détail d'une valeur : double-clic dans un tableau croisé dynamique Excel connecté au modèle, ou fonction DAX DETAILROWS.
createOrReplace
ref table Ventes
measure 'CA HT' = SUM ( Ventes[Montant HT] )
formatString: #,##0.00 €
displayFolder: Chiffre d'affaires
detailRowsDefinition =
SELECTCOLUMNS (
Ventes,
"Date", Ventes[Date],
"Produit", RELATED ( Produit[Produit] ),
"Quantité", Ventes[Quantité],
"Montant HT", Ventes[Montant HT]
)La mesure est remplacée entièrement : reprenez son expression et ses propriétés. defaultDetailRowsDefinition, placé sous la table, définit un détail par défaut pour toutes ses mesures. Source
Vérifiez chaque objet dans la vue de requête DAX avec les fonctions INFO :
EVALUATE INFO.PERSPECTIVES ()
EVALUATE INFO.OBJECTTRANSLATIONS ()
EVALUATE INFO.DETAILROWSDEFINITIONS ()Pièges et bonnes pratiques
- Passez toujours par Aperçu avant Appliquer, et gardez une version de référence avant une modification importante.
sourceColumn(nom dans Power Query) et le nom de la colonne du modèle sont indépendants : renommer en TMDL n'ajoute pas d'étape dans Power Query.- La méthode manuelle repose sur la discipline : pas d'historique partagé ni de fusion entre développeurs. Dans le service, l'historique des versions du modèle sémantique conserve jusqu'à cinq versions. Source
- Pour un suivi collaboratif, passez au projet PBIP avec Git (annexe Développeurs). Source
À retenir
- La vue TMDL scripte, modifie et applique la définition du modèle sous forme de texte.
- Le cycle est toujours : scripter, modifier, Aperçu, Appliquer.
- Perspectives, traductions, lignes de détail et rôles OLS s'y créent en quelques lignes.
- Un onglet de script nommé sert de version restaurable du modèle.
Pour aller plus loin
- Utiliser la vue TMDL dans Power BI Desktop. Source (Microsoft Learn)
- Vue d'ensemble du langage TMDL. Source (Microsoft Learn)
- Projet Power BI Desktop : dossier du modèle sémantique. Source (Microsoft Learn)
- Extension TMDL pour Visual Studio Code. Source (Visual Studio Marketplace)
Exercice
- Ouvrez le fichier du fil rouge, scriptez le modèle entier et renommez l'onglet
v01 | date | état initial. - Dans un nouvel onglet, scriptez la table de faits et ajoutez deux mesures avec leur
formatStringet leurdisplayFolder; Aperçu, puis Appliquer. - Renommez en masse les colonnes d'une table (rechercher et remplacer) et constatez l'effet sur un visuel.
- Créez la perspective « Vue commerciale » et vérifiez-la avec INFO.PERSPECTIVES.
- Revenez à l'onglet
v01, faites un Aperçu pour lister les écarts, puis Appliquer pour restaurer l'état initial.










