Support formation Rapports Power BI

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é.
TMDL - La vue TMDL

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'affaires
  • createOrReplace crée l'objet s'il n'existe pas, et 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 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

BesoinDémarche
Réutiliser une table de dates ou un groupe de calculScripter la table, copier le script, l'appliquer dans l'autre fichier
Supprimer les préfixes dim_ et fact_ de toutes les tablesScripter 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 actualiserScripter la table, modifier la partition, appliquer
Basculer une table de DirectQuery vers ImportModifier 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 Produit

Activez 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

Perspective du lecteur du rapport
Perspective du lecteur du rapport

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 VAT

Les 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 4) 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

  1. Ouvrez le fichier du fil rouge, scriptez le modèle entier et renommez l'onglet v01 | date | état initial.
  2. Dans un nouvel onglet, scriptez la table de faits et ajoutez deux mesures avec leur formatString et leur displayFolder ; Aperçu, puis Appliquer.
  3. Renommez en masse les colonnes d'une table (rechercher et remplacer) et constatez l'effet sur un visuel.
  4. Créez la perspective « Vue commerciale » et vérifiez-la avec INFO.PERSPECTIVES.
  5. Revenez à l'onglet v01, faites un Aperçu pour lister les écarts, puis Appliquer pour restaurer l'état initial.