Relationships in Power BI
Create and manage table relationships — the foundation of multi-table analysis
Relationships connect tables in Power BI so that filtering one table automatically filters related tables. Without relationships, a slicer on "Region" would not filter your sales chart — you would get wrong totals everywhere.
Power BI detects relationships automatically when column names match — but you should always verify them and create them manually when needed. A relationship needs a matching column in both tables (called the key).
There are three types of cardinality in Power BI relationships:
• One-to-Many (1:*) — most common. One product, many sales rows. One customer, many orders.
• Many-to-One (*:1) — same as 1:* from the other side
• One-to-One (1:1) — rare. Two tables with the same grain.
• Many-to-Many (*:*) — avoid if possible. Requires careful handling.
One-to-Many Relationship: Products → Sales
DIM_Products 1
ProductID (PK)
ProductName
Category
Price
filter flows
→
ProductID
FACT_Sales *
OrderID
ProductID (FK)
CustomerID
Amount
Quantity
OrderDate
1 side (Products)
Each ProductID appears exactly ONCE
* side (Sales)
Same ProductID can appear in MANY rows
Examples
Key Points
- ✓Relationships are created in Model View — the chain-link icon on the left sidebar
- ✓1:* (One-to-Many) is the correct cardinality for dimension → fact table relationships
- ✓Single cross-filter direction is the safe default — use Both only when needed
- ✓A dashed line = inactive relationship — only one active relationship allowed per table pair
- ✓Delete incorrect auto-detected relationships before creating correct ones
Common Mistakes
Practice Question
In a relationship between Products (dimension) and Sales (fact) tables on the ProductID column, what cardinality should you set?
Related Topics
The Data Model in Power BIWhat a data model is and why it is the foundation of every good Power BI reportStar Schema DesignDesign an efficient data model using star schema — the industry standard for Power BIFILTER, ALL and ALLEXCEPTControl and remove filter context with FILTER, ALL, ALLEXCEPT and ALLSELECTED