When building reports in Power BI, it’s common to work with multiple tables. But to make the data meaningful and interactive, we need to connect these tables using relationships.
Here, we’ll understand what relationships are, the different types available in Power BI, and how to create and manage them effectively.
What is a Relationship in Power BI?
A relationship in Power BI links two tables using a common column — just like how a VLOOKUP works in Excel.
For example, consider the following two tables:
Sales: Contains OrderID, ProductID, Quantity, and Date
Products: Contains ProductID, ProductName, and Category
To display product names in your sales report, you’ll need to link ProductID in both tables. That’s a relationship!
Types of Relationships in Power BI
Power BI supports four types of relationships:
1. One-to-Many (1:*)
Most common type
Example: One product can appear in many sales records
2. Many-to-One (*:1)
While it appears reversed, Power BI internally handles One-to-Many and Many-to-One the same way. The difference lies in identifying which table acts as the lookup (one side) and which serves as the fact table (many side).
3. Many-to-Many (*:*)
Used when both tables contain duplicate values in the relationship column.
4. One-to-One (1:1)
Both tables have unique values in the relationship column
How to Create a Relationship?
Method 1: Automatically (Power BI Autodetect)
When you import tables, Power BI often detects relationships automatically if matching column names and values exist.
To check:
- Navigate to the Model View (icon on the left sidebar)

- Hover over the relationship line to see details.
- Double-click on that line to edit if needed.
Method 2: Manually
- Open Model View
- Drag a field from one table to the matching field in another table. A new relationship popup will appear.
- In the Create Relationship window:
- Choose Cardinality (e.g., One-to-Many)
- Set Cross Filter Direction (usually Single) and then save it.
Advanced:
- Cross Filter Direction in Power BI:
Cross filter direction defines how filtering works between two connected tables.
Single (→): In this mode, filtering occurs in only one direction—from the one-side table (usually a dimension or reference table) to the many-side table (commonly the fact table). This approach is widely used due to its simplicity and better performance in typical data models.
Use this in most cases, especially in star schemas, for better performance and clarity.
Both (↔): Filters flow in both directions.
Use when you need to filter data across both tables, like in many-to-many relationships or complex reports.
Use bidirectional filters cautiously, as they may introduce performance degradation or circular dependency errors in complex models.
- Mark Relationship as Active:
Between any two specific tables, Power BI permits only one relationship to be active at a time. Other relationships can exist but remain inactive unless explicitly activated using DAX.
The active relationship serves as the primary link Power BI uses for generating visuals and performing calculations.
Inactive relationships can still be used in DAX using the USERELATIONSHIP() function.
Use Case: Use inactive relationships when you have multiple possible connections between tables (e.g., Order Date vs. Ship Date) but want to switch dynamically in calculations.
- Apply Security Filter in Both Directions:
This option appears when Row-Level Security (RLS) is used. It ensures that the security filter flows both ways between related tables.
Use this if:
You want RLS to restrict data across both tables (e.g., a user should only see data related to their assigned region across all tables).
Be careful: It can cause unintended access limitations or circular filtering if not handled properly.