When we launched Power BI Desktop developer mode with Power BI Project files (PBIP) in conjunction with Fabric Git Integration, we empowered customers to fulfill the requirements of mission-critical BI systems, such as unlocking source control, facilitating developer collaboration, and streamlining enterprise deployment scenarios. We are very excited to announce a significant improvement to that experience: the adoption of Tabular Model Definition Language (TMDL) as the semantic model file format for the Power BI Project files.
Why TMDL?
TMDL has been designed from the ground up to be human-friendly, facilitating not only readability but also easy editing in any text editor. This represents a substantial enhancement for source control and collaborative development experiences, particularly when dealing with complex file diffs.
Instead of a big JSON file like Tabular Model Scripting Language (TMSL), TMDL has a folder structure with separate files for each table, perspective, role, and culture. This makes it easier to work with others, and to understand the semantic model structure by just looking at the folder and files. Ultimately, this leads to a great source control and co-development experience when dealing with git diff’s and merge conflicts:
How to get started?
Saving as a PBIP using TMDL is currently in preview. Before giving it a try, you must first enable this feature in Preview features: go to File > Options and settings > Options > Preview features and check the box next to “Store semantic model using TMDL format”.
After enabling the preview feature, when saving as PBIP, your semantic model will be saved as a TMDL folder named “\definition” with separate files for each table, perspective, role and culture:
Existing PBIP files can also be easily upgraded to TMDL by simply opening them and selecting “Upgrade” during the save process:
Caution: the upgrade to TMDL is irreversible, so please save a backup of your PBIP files in case you want to go back to TMSL.
External changes
Any text editor can be used to modify your TMDL files, but Visual Studio Code and the TMDL Language extension will give you the best experience.
When you open TMDL documents with Visual Studio Code after setting up the extension, your TMDL documents will have syntax highlighting:
Please refer to the following document for supported write operations outside of Power BI Desktop: https://learn.microsoft.com/power-bi/developer/projects/projects-overview#model-authoring
If you make mistakes when editing your TMDL files manually (e.g., incorrect indentation), Power BI Desktop will display an error message when you open the PBIP files. The error message will include the details and location of the error in the TMDL document:
Fabric Git Integration
During the Public Preview, Fabric Git Integration will still export the semantic model using TMSL format by default. However, if the semantic model is imported into Fabric using TMDL format, then Fabric Git Integration, in the event of semantic model changes in the service, will use TMDL to export the semantic model definition to Git.
Community
TMDL goes beyond Microsoft Power BI tools; any community tool can utilize TMDL as its semantic model definition format via the Tabular Object Model (TOM) library. Established open-source tools such as pbi-tools or Tabular Editor have already adopted the TMDL format, enabling seamless integration with Power BI Project files.
TMDL came from the community and Power BI contributor program, and the product group is grateful to Mathias Thierbach for his ongoing contributions to the TMDL language in the past year.
What’s Next?
During the Public Preview of Power BI Desktop developer mode, TMDL format will be opt-in, and TMSL will continue to be the default format. At General Availability, TMDL will become the default semantic model file format.
This year, we will also introduce a new improved report format that, unlike the current format, will be source-control friendly and have public documentation.
Feedback
We would love to hear your feedback on TMDL and Power BI Project files (PBIP). What do you like? What can we do to make it better? Please share your feedback in our feedback forum.
More details are available in the documentation.