Power BI

Semantic Model

Also called: Power BI dataset, Dataset, Data model

A semantic model (formerly called a dataset) is the Power BI layer that holds a report's tables, relationships, measures and security rules, so every report built on it uses the same numbers.

A SQL database, an Excel workbook and a SharePoint list feed one Sales model, which holds a Sales table related to Date, Product, Region and Customer tables, measures (Revenue, Margin %, YoY %) and a Region managers security role. The model feeds a Sales report, a Finance report and an Excel PivotTable, which all show Revenue of $2.80M.

What’s inside one

When you build a report in Power BI Desktop and publish it, two items appear in the Power BI service: the report, and the semantic model behind it. The model is everything the visuals need to get their numbers:

  • Tables and their data, loaded from sources such as SQL databases, Excel files and SharePoint lists, usually shaped on the way in with Power Query.
  • Relationships between tables, typically a fact table (Sales) related to dimension tables (Date, Product, Region, Customer).
  • Measures and calculated columns, written in DAX, such as Revenue, Margin % and YoY %.
  • Security roles, such as row-level security that shows each regional manager only their region.
  • A storage mode for each table, Import or DirectQuery, and for imported data a refresh schedule.

It’s called “semantic” because it adds meaning on top of raw tables: friendly names, formats, hierarchies and agreed definitions, so “Revenue” means one thing.

One model, many reports

A model per report versus one shared model. Left, the Sales report and Finance report each have their own model, and Finance excludes $0.06M of returns, so they show Revenue of $2.80M and $2.74M. Right, both reports connect to one shared Sales model and both show $2.80M

The most common mistake with semantic models is having too many of them. If every report imports its own copy of the sales data and defines Revenue its own way, two reports will disagree sooner or later. In the example, Finance excludes $0.06M of returns, so its Revenue is $2.74M while the Sales report shows $2.80M.

A shared model fixes that. Build and publish the model once, then connect each new report to it. The reports carry only pages and visuals, and every one of them shows the same $2.80M. People often call this pattern “thin reports” on a “golden” or “certified” model. The same model can also be explored in Excel with Analyze in Excel.

Semantic model vs. Tableau

Tableau splits the same job differently. The closest equivalent is a published data source: connections, joins or relationships, calculated fields and filters, shared on Tableau Server or Tableau Cloud so many workbooks can use it.

Best practices

  • Start from a star schema. One fact table surrounded by dimension tables keeps relationships simple and DAX predictable.
  • Put shared logic in measures. A calculation defined once in the model beats the same formula rebuilt in five reports.
  • Hide what readers don’t need. Hide key columns and helper tables so report builders see a clean field list.
  • Name things the business way. “Revenue” and “Region”, not “SUM_AMT” and “dim_geo_cd”.
  • Separate model and reports early. Splitting a report into a shared model plus thin reports is easier before ten copies exist.

Mocking up the reports on a semantic model

Every KPI card and chart on a mockup is a request for a measure in the model. Agreeing the page design first gives the model builder a concrete list of measures and fields to build. See why to mock up Power BI reports before you build.

See it in a real layout

These free Mockko templates use it. Open one and edit it in your browser.

Related terms

Common questions

Is a semantic model the same as a dataset in Power BI?
Yes. Microsoft renamed Power BI datasets to semantic models in late 2023. The object and how it works didn't change, so older articles and videos that say dataset still apply.
Can several reports use one semantic model?
Yes. Publish the model once, then build other reports on it by connecting to it from Power BI Desktop (Get data > Power BI semantic models) or the service. Those reports share its measures, relationships and security, and update when it refreshes.
What's the difference between a semantic model and a report?
The semantic model is the data and the logic: tables, relationships, measures and security. The report is the pages and visuals people look at. One model can feed many reports, and most reports connect to a single model.

Mock it up before you build it

Lay out your Power BI or Tableau dashboard in Mockko, get sign-off, then build. Free to start.

Try Mockko free