Back to Blog

Power BI - Why You Should Separate Reports From Semantic Models

April 21, 20267 min readMichael Ridland

There's a question that comes up in almost every Power BI engagement we run - should we build the report and the model in the same .pbix file, or split them apart?

For personal reports that only you use, keeping everything in one file is fine. But the moment you have multiple people building reports against the same data, or the moment your semantic model needs to serve more than one report, you should separate them. Not doing so creates problems that compound over time and get harder to fix the more reports you've built.

Microsoft's guidance on this topic is straightforward, but it doesn't spend much time on the practical reality of managing this in a team. Here's what we've seen work.

The Single File Problem

When your model and report live in the same Power BI Desktop file, one person does everything. They design the data model, write the DAX measures, build the visuals, and publish the whole thing. This is what Microsoft calls a "Personal BI" solution, and there's nothing wrong with it in that context.

The problems start when this model needs to serve other purposes. Maybe the sales manager wants a different view of the same data. Maybe the finance team needs a report that uses 90% of the same model but with a couple of extra calculations. Maybe the CEO wants a summary dashboard.

If everything lives in one file, you've got a few bad options. You can give everyone access to the same report and try to make it serve everyone's needs - which usually means it serves nobody's needs well. You can duplicate the file and let different teams modify their copies - which means the model logic drifts and nobody knows which version has the correct DAX. Or you can make the original author responsible for building every report - which turns one person into a bottleneck.

Separating the model from the reports fixes all of these problems. The model gets published once as a shared semantic model. Report authors connect to it and build their own visuals without touching the underlying data logic.

How the Separation Works

The mechanics are simple. Your data modeller builds the semantic model in a Power BI Desktop file - tables, relationships, measures, everything. They publish it to the Power BI service. Then they remove the report page from the workspace, leaving just the semantic model. Every time they update the model, they republish and remove the report again.

Report authors open Power BI Desktop, connect to the published semantic model using a live connection, and build their reports. They get all the tables, measures, and hierarchies from the shared model. They can create report-level measures if they need calculations specific to their report. But they can't modify the underlying model - and that's the point.

This creates a clear division of responsibility. The modeller owns the data logic. Report authors own the presentation. Changes to the model go through one person or team. Reports can be built independently by anyone with access.

When to Keep Things Together

I should be honest about when separation isn't worth the overhead.

If you've got a straightforward report built by one person, consumed by a small team, and there's no realistic chance of other reports needing the same model - keep it together. The additional governance of a separate semantic model adds process without adding value in this case.

Ad hoc analysis is another case where a combined file makes sense. If someone in finance needs to pull some data together for a one-off board presentation, asking them to publish a semantic model first is overkill. Let them build a quick .pbix, present their findings, and move on.

The trigger for separation is reuse. The moment a second report needs the same model, separate them. The moment a second person needs to build against the same data, separate them. The cost of separation is small when you do it early. It gets expensive when you try to untangle a model that's already serving a dozen reports.

The Model Interface Problem

Here's the thing that bites teams who don't think about it carefully - once you publish a shared semantic model, other reports depend on its structure. Change the structure, and those reports break.

The things that break reports are exactly what you'd expect:

  • Renaming tables or columns
  • Changing column data types
  • Modifying measure expressions so they return a different type
  • Moving measures to a different table (this one surprises people - DAX references can include the table name, so moving a measure can break existing formulas)

The things that are safe:

  • Adding new tables, columns, or measures (with one caveat - see below)
  • Changing measure logic as long as the return type stays the same
  • Adding or modifying descriptions and formatting

The caveat on adding new measures: if a report author has created a report-level measure with the same name as a new measure in the shared model, you've got a collision. This is why we tell report authors to prefix their local measures with an underscore. A report-level measure called _Margin % won't collide with a model measure called Margin %.

Managing Breaking Changes

Sometimes you need to make a breaking change. A column was named badly during initial development and needs fixing. A measure needs to return a different data type because the business logic changed. A table needs restructuring.

When this happens, don't just make the change and hope for the best. Power BI gives you two tools to understand the blast radius.

Related content shows you which reports and dashboards use a specific semantic model. This tells you what might break.

Data lineage view is better - it shows you the connections between datasets, reports, and dashboards across the workspace, including who the contact person is for each item. When you need to make a breaking change, open the lineage view, identify every downstream report, and contact each owner before you publish.

We've built this into our standard operating procedure for model changes. Any breaking change gets communicated to downstream report owners at least 48 hours before it's published. The communication includes what's changing, why, and what the report owner needs to do to fix their report. It's a small amount of admin that prevents a lot of angry emails.

Practical Naming Conventions

This sounds like a minor detail, but naming conventions prevent confusion at scale.

For semantic models, we use descriptive names that include the domain: Sales - Core Model, Finance - Budget and Actuals, HR - Workforce Analytics. The name should tell someone what data the model contains without opening it.

For reports, include the audience or purpose: Sales - Regional Performance (Leadership), Sales - Pipeline Detail (Account Managers). When you've got 15 reports connected to the same model, clear names save time.

For report-level measures, prefix with an underscore: _Custom Margin, _Report Filter Check. This immediately distinguishes them from model measures in the field list and avoids naming collisions.

The Governance Model That Works

After setting up separated models and reports across multiple organisations, here's the governance pattern that sticks:

Model changes go through a review process. Not heavyweight - a quick review by a second modeller before publishing. This catches accidental breaking changes and maintains quality in DAX calculations.

Report authors have read-only access to the model. They can connect to it and build reports, but they can't modify it. This is controlled through workspace roles in the Power BI service.

A model change log is maintained. Simple as a shared document listing what changed, when, and why. When a report author notices something unexpected, they check the change log first. This prevents a lot of unnecessary troubleshooting.

Semantic models are refreshed on a schedule owned by the model team. Report authors shouldn't need to think about when data gets refreshed. That's the model team's responsibility.

Getting This Right For Your Organisation

If you're at the stage where multiple teams are building Power BI reports against shared data, the separation of reports and models is worth doing now. It's one of those decisions that feels like overhead at the time but pays for itself within months.

Our Power BI consulting team helps organisations set up these patterns properly - from the initial model architecture through to the governance processes that keep things maintainable. If your data sits in Microsoft Fabric, our Fabric consultants can help design the end-to-end data platform that feeds your semantic models.

And if you're thinking about how AI can sit alongside your BI platform to answer questions that dashboards can't - things like natural language queries against your data or automated anomaly detection - that's something our AI consulting practice is working on with several clients right now. The line between BI and AI is getting blurry, and it's worth having both capabilities working together.