TMDL and Tabular Editor in a Fabric Git workspace
PBIX-as-source-of-truth dies when two authors save over each other. TMDL (tabular model definition language) plus Fabric Git plus Tabular Editor is the loop that scales past a hero developer.
Target loop
- Workspace connected to Git (Azure DevOps or GitHub)
- Semantic model saved as TMDL folders, not a binary
- Local edit in Tabular Editor 3 (or VS Code + TMDL)
- PR: reviewers read measure diffs like application code
- Merge to the branch Fabric syncs → Dev workspace updates
- Deployment pipeline Dev → Test → Prod
Desktop is for report layout (PBIP). It is not where you bulk-edit 200 measures.
What to put in Git
- Tables, relationships, measures, calculation groups, roles, cultures
- Perspectives if you use them
- Shared expressions / M that belong to the model
Keep credentials and gateway bindings out of the repo. Those are workspace/pipeline settings.
Tabular Editor rules worth enforcing
- C# scripts (or TE macros) for: hidden columns, display folders, prefix checks (
_for helper measures) - Best Practice Analyzer with a team profile, not the internet default
- Save after BPA, not before. PRs that only fix warnings are still PRs
Conflicts you will hit
Two people edit the same .tmdl measure file: Git conflict, resolve as code. Two people edit in Desktop and overwrite TMDL on sync: that is why Desktop is not the model IDE.
If Fabric Git sync fights Tabular Editor, pick one write path per item type. Model = TE. Report = Desktop/PBIP. Do not both write the model.
Wiring Tabular Editor into an existing Fabric Git workspace without a weekend outage? Book a 30-minute call.