Dictionary

Role-playing dimension

A role-playing dimension is one dimension table used several times by the same fact table, each time in a different role. The classic example is one date dimension used as order date, ship date, and delivery date.

What is a role-playing dimension?

A role-playing dimension is one dimension table referenced several times by the same fact table, each time in a different role. The physical dimension is shared, but each relationship has a different business meaning.

The classic example is a date dimension. One order can have an order date, ship date, invoice date, and delivery date. All four are dates, and all four can use the same calendar attributes, but they answer different questions.

The term comes from Kimball dimensional modelling. A single dimension plays several logical roles, much like one actor playing several characters.

Why use one shared dimension?

A shared date dimension keeps definitions consistent. Week numbers, fiscal years, holidays, month names, and quarters are maintained once instead of copied into several almost identical tables.

It also keeps the model aligned. Last month should mean the same calendar period whether the report filters by order date or delivery date.

The role is determined by the foreign key used from the fact table. A sales fact may contain OrderDateKey, ShipDateKey, and DeliveryDateKey. Each points to the same date dimension, but each represents a different question.

Example: orders and dates

Suppose a fact table stores one row per order line. It has three date references:

  • OrderDateKey, when the customer placed the order.

  • ShipDateKey, when the package left the warehouse.

  • DeliveryDateKey, when the customer received it.

Revenue by order month uses OrderDateKey. Packages shipped per week uses ShipDateKey. Delivery delay uses both ship date and delivery date.

Dates are the common case, but the pattern is broader. A flight fact can refer to the same airport dimension as departure airport and arrival airport. A support ticket can refer to the same employee dimension as requester, assignee, and approver.

How to model it in SQL and a warehouse

In a data warehouse, the clean Kimball approach is often one physical dimension with separate views or aliases per role. The date dimension may have views called Order Date, Ship Date, and Delivery Date. Each view exposes the same calendar rows with role-specific column names.

That naming matters. A report field called Year is ambiguous when several date roles are available. Ship year and Order year are much clearer.

Using separate role views keeps the shared calendar logic central while giving report builders independent role names.

How to model it in Power BI

Power BI allows several relationships between the same two tables, but only one relationship can be active at a time between a given pair of tables. The inactive relationships can be used in measures with USERELATIONSHIP in DAX.

That works when one date role is dominant and only a few measures need another role. For example, most visuals use order date, while one measure calculates shipped revenue through the inactive ship-date relationship.

Microsoft generally recommends duplicating role-playing dimensions when report authors need to filter by several roles naturally. In Power BI, that means separate Date, Ship Date, and Delivery Date tables, each with an active relationship to the fact table. The tables can be created as referenced queries or calculated tables so the logic still comes from one source.

The trade-off is small extra storage in exchange for a clearer model and simpler report building. Dimension tables are usually tiny compared with fact tables.

What to watch out for with role-playing dimensions

Ambiguous field names confuse users. Rename columns per role. Order month and ship month are better than two fields called month.

Inactive relationships do not behave like active ones. Measures can activate them, but slicers, filters, and row-level security need careful testing.

Several date roles in one visual need separate tables. Comparing order date and ship date side by side is awkward if both roles fight over one active relationship.

Do not copy business rules manually. If you duplicate role tables, generate them from the same calendar source so fiscal periods and holidays stay consistent.

Last Updated: July 7, 2026 Back to Dictionary
Keywords
role-playing dimension date dimension dimensional modelling Kimball star schema conformed dimension data warehouse Power BI USERELATIONSHIP DAX