Workflows

TMDL and Tabular Editor in a Fabric Git workspace

tmdltabular-editorfabricgitsemantic-model

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

  1. Workspace connected to Git (Azure DevOps or GitHub)
  2. Semantic model saved as TMDL folders, not a binary
  3. Local edit in Tabular Editor 3 (or VS Code + TMDL)
  4. PR: reviewers read measure diffs like application code
  5. Merge to the branch Fabric syncs → Dev workspace updates
  6. 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.