Skip to content
contact@sataware.com(480) 485-7373
PowerBIAgencyA division of Sataware Technologies Book a strategy call
Back
Data modeling

Power BI role-playing dimensions: one date table, several roles

Power BI role-playing dimensions are dimension tables that filter the same facts in more than one way. A date table is the usual example, because a sale has an order date, a ship date and a delivery date. Power BI allows only one active relationship between two tables, so the design takes thought. This guide explains both documented approaches and when to use each.

  • One table per role
  • Inactive relationships
  • USERELATIONSHIP measures

Last updated

What are Power BI role-playing dimensions?

Microsoft defines it as a table that can filter the same facts in different ways. In its example, the date table has three relationships to reseller sales. The same table can filter the facts by order date, ship date or delivery date.

A data warehouse handles this with a single date table. At query time, the join column decides the role. A Power BI model can copy that idea. You add more than one link between the two tables.

There is a catch, however. Only one relationship between two model tables can be active. All the others must be inactive. So the active one sets the default filter, which is usually the most common date in reports.

Purple feathered carnival mask, illustrating Power BI role-playing dimensions

Three limits of a single shared dimension table

Microsoft lists these drawbacks of relying on inactive relationships for every extra role.

More measures

Each inactive role needs its own measures with USERELATIONSHIP. That work is tedious, and it clutters the Data pane.

No simple summaries

A report author who sums a column cannot use an inactive link. They must write a measure first.

No combined filters

With one active path, a visual cannot filter the facts by different date roles at the same time.

Build one table per role in four steps

These steps follow the method in Microsoft's guidance.

  1. Remove inactive links

    First remove each inactive link between the two tables.

  2. Rename the original

    Next rename the first table, so that its name shows the role it keeps.

  3. Copy the table

    Then create a copy for the other role. For an Import table, Microsoft recommends a calculated table.

  4. Relate and rename

    Finally add an active link for the new table. Then rename its columns to show the role.

Why use separate tables for Power BI role-playing dimensions?

Active relationships widen how a model can be used. Microsoft recommends defining them whenever possible. In its airline example, reports need to filter by departure airport and group by arrival airport at the same time. That requires two active relationships, and therefore two airport tables.

Security is a further reason. Row-level security filters propagate only through active relationships. They never propagate through inactive ones, even when a measure uses USERELATIONSHIP. So a model with security roles benefits from duplicated dimension tables.

The cost is modest. An extra table adds to the model size and to the refresh time of an Import model. However, such tables hold few rows next to a fact table. So Microsoft notes that this is rarely a concern.

When do inactive relationships still make sense?

Microsoft describes a case where the single table works well. A sales table has an order date and a ship date. Nearly every measure filters by order date, and only one measure needs the ship date.

In that case, the relationship to the order date stays active. The one special measure then uses the USERELATIONSHIP function inside CALCULATE. That function turns on the other link, but only while the measure runs.

Two conditions apply, according to the guidance. First, report visuals have no need to filter by the different roles at the same time. Second, you use USERELATIONSHIP for the relevant calculations. When both hold, inactive relationships keep the model small.

Naming habits for tables that play a role

Clear names matter here, because several tables with the same columns confuse report authors quickly.

  • Name each table after its role, such as Ship Date
  • Prefix column names with the role, such as Ship Year
  • Add a table description that states what it filters
  • Keep one relationship per role table, and keep it active
  • Use a calculated table or a referencing query for the copy
  • Check slicers for a blank entry from missing dates

Power BI role-playing dimensions: common questions

How do I create Power BI role-playing dimensions for dates?

Microsoft describes a common technique: create a dimension table for each role. You can build each one as a referencing query in Power Query or as a calculated table in DAX. The model then holds, for example, a Date table and a Ship Date table, each with one active relationship.

Do Power BI role-playing dimensions make the model much larger?

Usually not by much. Microsoft calls the duplication a minor price, because dimension tables typically store far fewer rows than fact tables. The model does grow, and an Import refresh takes a little longer. For most models, however, the clearer design is worth that cost.

What does USERELATIONSHIP do?

It is a DAX function that turns on an inactive link for one measure. You use it inside CALCULATE and name the two columns that the link joins. The filter then flows through that link while the measure runs. After that, the model goes back to its active link for every other measure.

Does row-level security work with role-playing dimensions in Power BI?

Only through active relationships. Microsoft states that row-level security filters propagate only through active relationships. They never propagate through inactive ones, even when a measure uses USERELATIONSHIP. So if a security rule sits on a role-playing table, give each role its own table with an active relationship.

Can Power BI Agency restructure our date tables?

Yes. One of our consultants reviews how your reports filter by each date, then chooses between separate role tables and inactive relationships for each case. We work online in your own Microsoft tenant, with the scope fixed in a written quote. Power BI Agency is a division of Sataware Technologies, a Microsoft Solutions Partner, and is not part of Microsoft.

Let's build your first dashboard together.

Tell us what you report on today. A consultant replies within 2 hours with next steps.

☎(480) 485-7373 ✉contact@sataware.com

Trusted partners

Microsoft Solutions Partner · AWS Partner

Why teams pick us

Power BIDashboards, models, reports
Microsoft FabricModernization and migration
Azure SQLDataflows and pipelines
Row-level securityEach user sees only their data
Power BI EmbeddedAnalytics in your product
Legacy BI migrationTableau, Qlik, Cognos, OBIEE
50 client reviewsReal names, real projects
WorldwideWorking across time zones
Your own accountData stays in your Microsoft 365
One teamFrom first call to handover
Free assessment30 minutes, no obligation
Quote in 48 hoursScope, timeline and price
Mon to Fri, 8 to 6 CTSales and new projects
Secure HTTPSEncrypted in transit
Private enquiriesNever shared or sold

Explore Power BI Agency