DEV Community

Cover image for Configure a Semantic Model in Power BI: A Beginner-Friendly Step-by-Step Guide
Ibrahim Abdulrasaq
Ibrahim Abdulrasaq

Posted on

Configure a Semantic Model in Power BI: A Beginner-Friendly Step-by-Step Guide

A good Power BI report starts with a good data model.

You can create beautiful charts and dashboards, but if the tables in your model are not properly connected or your fields are poorly configured, your report can produce misleading results.

This is where a semantic model comes in.

A semantic model in Power BI defines how your data is organized and how different tables interact with one another. It includes tables, columns, relationships, hierarchies, measures, and other properties that make your data easier to understand and use when building reports.

In this guide, we will walk through how to configure a semantic model in Power BI Desktop using a practical sales dataset.

By the end of the tutorial, you will know how to:

  • Create relationships between tables
  • Understand cardinality and filter direction
  • Create and configure hierarchies
  • Organize fields using display folders
  • Configure data categories
  • Add descriptions and formatting to columns
  • Hide technical columns
  • Configure default summarization
  • Turn off automatic date/time hierarchies
  • Create quick measures
  • Configure a many-to-many relationship
  • Use a bridging table
  • Connect a targets table to your model

What Is a Semantic Model in Power BI?

Before we start building, let's understand what we are configuring.

A semantic model is the structure that tells Power BI how your data should be understood and used.

For example, imagine you have these tables:

  • Product: contains product information
  • Sales: contains sales transactions
  • Reseller: contains reseller information
  • Region: contains sales territory information
  • Salesperson: contains salesperson information
  • Targets: contains sales targets

These tables contain related information, but Power BI needs to know how they are connected.

For example:

One product can appear in many sales transactions.

This means the Product table and Sales table can have a one-to-many relationship.

Once relationships are correctly configured, selecting a product category can automatically filter the corresponding sales records.

That is the foundation of a useful Power BI semantic model.


Getting Started

For this tutorial, we will use the Microsoft Power BI learning dataset.

Download the starter ZIP file and extract it to your computer.

Inside the extracted folder, open:

03-Starter-Sales Analysis.pbix

When Power BI Desktop opens the file, you may see a sign-in window. If you do, select Cancel.

If Power BI displays other informational messages, close them. If prompted to apply changes later, select Apply Later.

Once the file opens, you are ready to begin.


Step 1: Inspect the Existing Data

Before creating relationships, it is useful to understand the tables available in the model.

In Power BI Desktop:

  1. Go to the Data pane.
  2. Right-click an empty area inside the pane.
  3. Select Expand All.

This allows you to see the columns available in each table.

Image 1

Image 2

Some of the important tables in this model include:

  • Product
  • Sales
  • Reseller
  • Region
  • Salesperson
  • SalespersonRegion
  • Targets

The Sales table contains transaction-level information, while the other tables provide additional information that can be used to analyze those transactions.


Step 2: See What Happens Without a Relationship

Let's first see why relationships are important.

In Report view, create a table visual.

From the Product table, select:

Product | Category

Then add:

Sales | Sales

You should see the product categories, but the sales value may be repeated for each category.

Why?

Because Power BI currently doesn't have a relationship connecting the Product table to the Sales table.

The category comes from one table, while sales comes from another. Without a relationship, the filter from Product cannot properly propagate to Sales.

This is one of the most important concepts to understand when working with Power BI data models.


Step 3: Create the Product-to-Sales Relationship

Now let's fix the problem.

Switch to Model view by selecting the Model icon on the left side of Power BI Desktop.

Image 3

On the Home ribbon, select:

Manage relationships

If there are no relationships, select:

+ New relationship

Configure the relationship as follows:

Setting Value
From table Product
From column ProductKey
To table Sales
To column ProductKey
Cardinality One to many (1:*)
Cross filter direction Single
Active Yes

Power BI may automatically detect the matching ProductKey columns.

Understanding the relationship

The relationship is:

Product (1) → Sales (*)

Image 4

This means one product can appear in many sales records.

The Single cross-filter direction means that filters generally flow from the Product table to the Sales table.

For example:

Product Category → Product → Sales

If a user selects the "Bikes" category, Power BI can now filter the corresponding sales records.

Select Save, then Close.

Return to Report view.

The table should now show different sales values for the different product categories.

That's the relationship doing its job.


Step 4: Understand Relationship Symbols

When you look at the model diagram, Power BI displays useful information on the relationship line.

You may see:

1 and Many

Image 5

These represent cardinality.

  • 1 = one
  • * = many

So:

*1 → ** means one-to-many.

You may also see an arrow showing the filter direction.

Image 6

The relationship line itself can also be:

  • Solid = active relationship
  • Dotted = inactive relationship

These visual indicators make it easier to understand the model without opening every relationship.


Step 5: Create Additional Relationships Using Drag and Drop

Power BI provides another easy way to create relationships.

Instead of using Manage relationships, you can drag a column from one table onto its matching column in another table.

In Model view, drag:

Reseller | ResellerKey

onto:

Sales | ResellerKey

Image 7

Review the relationship and select Save.

Then create these additional relationships:

Region → Sales

Region | SalesTerritoryKey

to

Sales | SalesTerritoryKey

Salesperson → Sales

Salesperson | EmployeeKey

to

Sales | EmployeeKey

After creating the relationships, arrange the model so that the Sales table is positioned near the center, with related tables around it.

This makes the model easier to understand visually.

Save the Power BI file.


Step 6: Create a Product Hierarchy

Hierarchies make it easier for report users to navigate data from a higher level to a more detailed level.

For example:

Category → Subcategory → Product

Let's create one.

In Model view, expand the Product table.

Right-click:

Category

Select:

Create hierarchy

Power BI will create a new hierarchy.

Image 8

In the Properties pane, rename the hierarchy:

Products

Image 9

Now add two more levels:

  • Subcategory
  • Product

Select Apply Level Changes.

You should now have:

Products

  • Category

    • Subcategory
    • Product

Image 10

This hierarchy can later be used for drill-down in report visuals.


Step 7: Organize Columns Using a Display Folder

As your model becomes larger, the Data pane can become difficult to navigate.

Display folders help organize related fields.

In the Product table, select:

Background Color Format

Hold Ctrl and select:

Font Color Format

In the Properties pane, enter:

Formatting

Image 11

in the Display Folder property.

The two columns will now appear inside a Formatting folder.

Image 12

Display folders do not change the data itself. They are simply a way of organizing fields and making the model easier for report authors to use.


Step 8: Configure the Region Table

Now let's configure the Region table.

Create a hierarchy called:

Regions

Add these three levels:

  1. Group
  2. Country
  3. Region

Next, select the actual Country column, not the hierarchy level.

In the Properties pane:

  1. Expand Advanced.
  2. Find Data Category.
  3. Select Country/Region.

Image 13

Why does this matter?

Data categories provide additional information to Power BI about what a field represents.

For example, categorizing a field as Country/Region helps Power BI interpret the field correctly when working with map visuals.


Step 9: Configure the Reseller Table

The Reseller table also needs some useful hierarchies.

Create the Resellers hierarchy

Create a hierarchy called:

Resellers

Add:

  • Business Type
  • Reseller

Create the Geography hierarchy

Create another hierarchy called:

Geography

Add:

  • Country-Region
  • State-Province
  • City
  • Reseller

Now configure the geographic columns.

Set:

Country-Region → Country/Region

State-Province → State or Province

City → City

Remember to select the actual columns when configuring their data categories, rather than the hierarchy levels.


Step 10: Improve the Sales Table

A well-configured semantic model should be easy for other people to understand.

Let's improve the Sales table.

Add a description to Cost

Select:

Sales | Cost

In the Properties pane, find Description and enter:

Based on standard cost

Descriptions are useful because report authors can see additional information when they hover over the field.


Format Quantity

Select:

Sales | Quantity

Under Formatting, set:

Thousands Separator → Yes

This makes large values easier to read.


Format Unit Price

Select:

Sales | Unit Price

Set:

Decimal Places → 2

Then, under Advanced, change:

Summarize By → Average

This is important.

Power BI commonly summarizes numeric columns using Sum by default.

But adding unit prices together usually doesn't make business sense.

For example, if three products have unit prices of:

  • $10
  • $20
  • $30

A total of $60 isn't a meaningful "unit price."

An average of $20 is more useful.

This is why choosing the appropriate default summarization matters.


Step 11: Hide Technical Columns

Not every column needs to be visible to report users.

Some columns exist mainly to support:

  • Relationships
  • Calculations
  • Row-level security
  • Internal model logic

Select the following columns and set:

Is Hidden → Yes

Product

Product | ProductKey

Region

Region | SalesTerritoryKey

Reseller

Reseller | ResellerKey

Sales

  • Sales | EmployeeKey
  • Sales | ProductKey
  • Sales | ResellerKey
  • Sales | SalesOrderNumber
  • Sales | SalesTerritoryKey

Salesperson

  • Salesperson | EmployeeID
  • Salesperson | EmployeeKey
  • Salesperson | UPN

SalespersonRegion

  • SalespersonRegion | EmployeeKey
  • SalespersonRegion | SalesTerritoryKey

Targets

Targets | EmployeeID

Hiding these fields doesn't delete them.

They remain available to Power BI for model operations, but they are no longer visible to report authors in the normal Data pane.

This makes the model cleaner and easier to use.


Step 12: Format Financial Columns

Select these three columns:

  • Product | Standard Cost
  • Sales | Cost
  • Sales | Sales

Set:

Decimal Places → 0

This removes unnecessary decimal places and makes the values easier to read.


Step 13: Turn Off Auto Date/Time

Power BI can automatically create date hierarchies for date columns.

For example:

OrderDate

may automatically provide:

  • Year
  • Quarter
  • Month
  • Day

This can be convenient, but automatic date/time isn't always appropriate for a well-designed model.

For this Adventure Works model, the financial year begins on July 1, while the automatic date hierarchy follows a calendar year beginning on January 1.

A proper date table gives you much more control over this type of business logic.

To turn off Auto Date/Time:

Go to:

File → Options and settings → Options

Under Current File, go to:

Data Load → Time Intelligence

Uncheck:

Auto Date/Time

Select OK.

The automatically generated date hierarchies will disappear.


Step 14: Create a Quick Measure for Profit

Power BI's Quick Measures feature can create common calculations without requiring you to manually write the DAX formula.

Right-click the Sales table and select:

New Quick Measure

Image 14

In the Quick Measure pane, choose:

Mathematical Operations → Subtraction

Image 15

Set:

Base Value:

Sales | Sales

Value to Subtract:

Sales | Cost

Select Add.

Power BI creates a measure.

Image 16

Rename it:

Profit

The calculation is essentially:

Profit = Sales - Cost

The calculator icon beside the field indicates that it is a measure.


Step 15: Create a Profit Margin Measure

Create another Quick Measure.

This time select:

Mathematical Operations → Division

Set:

Numerator:

Sales | Profit

Denominator:

Sales | Sales

Select Add.

Rename the new measure:

Profit Margin

The calculation is essentially:

Profit Margin = Profit ÷ Sales

Select the Profit Margin measure.

On the Measure Tools ribbon, format it as:

Percentage

Set:

Decimal Places → 2

For example, a result of 0.25 will be displayed as:

25.00%


Step 16: Test the Measures

Return to the report page.

Select the existing table visual.

Add:

  • Profit
  • Profit Margin

Image 17

Image 18

Resize the visual if necessary so all the columns are visible.

Image 19

Check that the values are reasonable and that the profit margin is displayed as a percentage.

This is a good example of why measures are useful.

Instead of storing another column for every calculation, a measure calculates the result based on the current filter context of the report.


Step 17: Understand the Many-to-Many Challenge

Now we get to a more advanced part of the model.

Create a table visual containing:

Salesperson | Salesperson

and:

Sales | Sales

The visual shows sales generated by each salesperson.

However, there is another business relationship to consider.

A salesperson can belong to multiple sales regions.

At the same time, a sales region can have multiple salespeople.

This creates a many-to-many scenario.

For example:

One salesperson → multiple regions

and:

One region → multiple salespeople

Trying to connect these tables directly can create ambiguity in the model.

This is where a bridge table becomes useful.


Step 18: Use SalespersonRegion as a Bridge Table

The SalespersonRegion table can act as a bridge between Salesperson and Region.

In Model view, position it between the two tables.

Create these relationships:

Salesperson → SalespersonRegion

Salesperson | EmployeeKey

to:

SalespersonRegion | EmployeeKey

Region → SalespersonRegion

Region | SalesTerritoryKey

to:

SalespersonRegion | SalesTerritoryKey

The resulting structure is conceptually:

Salesperson → SalespersonRegion ← Region

The bridge table helps represent the many-to-many assignment between salespeople and regions.


Step 19: Configure Filter Direction

At this point, the report may still not produce the expected sales result.

Why?

Look at the arrows on the relationships.

The filter may travel from Salesperson to SalespersonRegion, but not continue through to Region.

To allow the required filter propagation, edit the relationship between:

Region

and:

SalespersonRegion

Double-click the relationship.

Set:

Cross Filter Direction → Both

Then check:

Apply Security Filter in Both Directions

Select Save.

Image 20

The relationship will now display double arrowheads.


Step 20: Avoid Ambiguous Filter Paths

There is another issue.

There may now be two possible paths between Salesperson and Sales.

For example:

Salesperson → Sales

and:

Salesperson → SalespersonRegion → Region → Sales

When multiple active paths exist between tables, Power BI can encounter ambiguous filter propagation.

This is generally something you should avoid when designing a production semantic model.

In this lab, we solve the issue by making the direct Salesperson to Sales relationship inactive.

Double-click the relationship between:

Salesperson

and:

Sales

Uncheck:

Make This Relationship Active

Select Save.

The relationship will now appear as a dotted line.

The active filtering path will instead pass through the bridge structure.


Step 21: Rename the Salesperson Table

The Salesperson table is now being used for a specific analytical purpose.

Select the table in Model view.

In the Properties pane, rename it:

Salesperson (Performance)

The new name makes the purpose of the table clearer to anyone working with the model.

Good naming is a small detail, but it becomes increasingly important as Power BI models become more complex.


Step 22: Connect the Targets Table

Finally, let's connect salespeople to their targets.

Create a relationship between:

Salesperson (Performance) | EmployeeID

and:

Targets | EmployeeID

Then return to Report view.

Add:

Targets | Target

to the table visual.

Resize the visual if necessary.

You can now compare sales information with target information.

However, there are two important considerations:

1. Time period

The targets table may contain future target values if no time filter has been applied.

2. Targets are not additive

Adding individual target values together may not always produce a meaningful total.

This is a good example of why understanding the meaning of your data is just as important as understanding Power BI's technical features.


Final Model Checklist

Before considering your semantic model complete, review the following:

Relationships

  • Product is connected to Sales.
  • Reseller is connected to Sales.
  • Region is connected to Sales.
  • Salesperson is connected to the model.
  • SalespersonRegion is used as a bridge table.
  • Targets is connected to the salesperson performance table.
  • Relationship cardinality and filter directions are appropriate.
  • Unnecessary ambiguous paths are avoided.

Hierarchies

  • Products hierarchy
  • Regions hierarchy
  • Resellers hierarchy
  • Geography hierarchy

Data categories

  • Country fields categorized as Country/Region
  • State fields categorized as State or Province
  • City fields categorized as City

Organization

  • Formatting fields placed in a display folder.
  • Technical columns hidden.
  • Tables and fields given meaningful names.
  • Descriptions added where useful.

Formatting

  • Quantity uses a thousands separator.
  • Unit Price uses two decimal places.
  • Standard Cost, Cost and Sales use zero decimal places.
  • Profit Margin is formatted as a percentage.

Measures

  • Profit measure created.
  • Profit Margin measure created.

Date settings

  • Auto Date/Time disabled.

Why Semantic Modeling Matters

Configuring a semantic model is not just about connecting tables.

It is about creating a structure that allows Power BI to interpret your data correctly.

A well-designed model helps ensure that:

  • Filters work as expected.
  • Calculations return meaningful results.
  • Report users can find the fields they need.
  • Technical fields don't clutter the Data pane.
  • Hierarchies support intuitive drill-down.
  • Geographic fields work correctly with maps.
  • Measures are reusable across different visuals.
  • Complex relationships can be handled more effectively.

In other words, the semantic model sits behind the report and provides the foundation for reliable analysis.


Key Takeaways

If you're just starting with Power BI, focus on these concepts first:

1. Relationships connect your data.

Tables need correctly configured relationships so filters can propagate between them.

2. Cardinality describes how tables relate.

Common relationship types include one-to-many and many-to-many.

3. Filter direction matters.

It determines how filters move between related tables.

4. Hierarchies improve navigation.

They allow users to move from broad categories to more detailed information.

5. Data categories provide additional meaning.

They help Power BI understand fields such as countries, states and cities.

6. Hide technical fields.

Not every field needs to be exposed to report users.

7. Use measures for calculations.

Measures such as Profit and Profit Margin can respond dynamically to the current filter context.

8. Be careful with many-to-many relationships.

Bridge tables can help model many-to-many scenarios, but filter paths must be designed carefully to avoid ambiguity.

9. A clean model makes reporting easier.

The goal isn't simply to make the model work. It should also be understandable and easy for others to use.


Conclusion

A Power BI report is only as reliable as the model behind it.

By correctly configuring relationships, hierarchies, data categories, formatting, measures and filter behavior, you create a semantic model that makes your data easier to analyze and your reports easier to build.

If you're learning Power BI, don't rush straight into creating charts and dashboards. Spend time understanding the model first.

Once the model is properly configured, building meaningful reports becomes much easier.

Happy modeling!

Top comments (0)