karthikbi.dev
← The Stream

Finding

A Year on PBIP: The Model Stopped Being a File

Power BIData Modeling3 min read

A Power BI model starts life as a file.

One file, one owner. Whoever has it open is the team.

About a year ago, we moved a production model to PBIP, while it was still in preview. PBIP sat in preview from June 2023 to September 2026. We didn't wait for the label.

It went GA last month, so this felt like the week to write down what actually changed.

The format was the small part.

The timeline

  • June 2023: Power BI Desktop developer mode enters public preview. Its first feature is saving as a Power BI Project (PBIP).
  • About a year ago: we move a production model to PBIP.
  • September 2026: developer mode and PBIP reach general availability. PBIR becomes the default report format.

It stopped being one person's file

A PBIX is a binary. You can't see what changed, only that something did.

So one person holds it, everyone else waits, and the model is whatever got saved last.

In PBIP, the model is a folder of plain text files. The semantic model is TMDL. The report is PBIR. We put it in Git.

Every change now has a history and an author. Two of us could work on the same model in the same week without handing a file back and forth.

Anyone could explore the model

This is the one I didn't expect.

Once the model lived in Git, anyone in the org could explore it. Read a measure. Follow a relationship. No Power BI Desktop, no opening the main file, no risk of changing anything by accident :)

Then the small changes they used to ask us for started arriving as pull requests. We review them, merge them, ship them.

The model stopped being something people raise a request for and wait on.

PBIP didn't change the model. It changed who could read it.

Then AI agents could read it too

Text files are context.

An agent can read the measures, the relationships and the descriptions, and understand the model before it suggests anything.

A PBIX gave it nothing to read.

And automation became ordinary engineering

Plain files in Git means the rest is familiar: checks, scripts, deployments.

The same tools every other codebase already uses. Nothing special for Power BI.

If you're starting now

One detail from the GA matters here. PBIR is now the default report format, and reports still in the older format upgrade automatically the next time someone edits them in Power BI tools.

The move is happening whether you plan it or not. Better to plan it.

What I'd do first:

  • Save one real report as PBIP and open the folder. A semantic model in TMDL is readable in a way a PBIX never was.
  • Put it in Git and change one measure. Look at the diff. That diff is the whole point.
  • List anything that reads report files directly. That's what the new default touches.
  • Agree on branch rules before the second developer joins, not after the first conflict.

Caveats

  • This is one model over one year. Your team's Git habits matter more than the format.
  • Opening the code to other teams only works if someone owns the review. Pull requests don't review themselves.

What I take from this

  • The format is the small part. Access is the big part.
  • A model anyone can read is what turns other teams into contributors.
  • Plain files are context for agents and input for automation. A binary is neither.