One-to-Many Relationships in Power BI: Performance Best Practices
You are designing a Power BI data model that includes a table named Sales with 10 million rows. You need to create a relationship between Sales and a Product dimension table. The Product table has 10,000 rows. Which configuration will provide the best query performance?
Quick Answer
The answer is to create a one-to-many relationship from Product to Sales. This configuration is correct because it establishes a standard star schema, where the smaller Product dimension table (10,000 rows) filters the larger Sales fact table (10 million rows) efficiently. Power BI’s VertiPaq engine leverages this one-to-many relationship to push filters from the “one” side to the “many” side, optimizing query performance through in-memory columnar compression and automatic aggregations. On the Microsoft Power BI Data Analyst PL-300 exam, this scenario tests your understanding of cardinality and direction in data modeling—a common trap is reversing the relationship or creating a many-to-many link, which degrades performance. Remember the memory tip: “One side filters, many side stores”—always point the relationship from the unique dimension to the repeating fact table for speed.
⚠ Common exam trap
A common mix-up: candidates confuse the direction of the relationship arrow, thinking the 'many' side should be the source, but Power BI requires the dimension table (unique values) to be on the 'one' side for correct filter propagation and optimal performance.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Create a one-to-many relationship from Product to Sales
A one-to-many relationship from Product (the dimension table with unique values) to Sales (the fact table with many rows) is the standard star schema design. This configuration allows Power BI to use the smaller Product table to filter the larger Sales table efficiently, leveraging in-memory columnar storage and automatic aggregations for optimal query performance.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Create a many-to-one relationship from Sales to Product
Why it's wrong here
While functional, this direction is less intuitive and may cause filter propagation issues in complex models.
- ✓
Create a one-to-many relationship from Product to Sales
Why this is correct
This is the standard cardinality for dimension-to-fact relationships, optimized for performance.
- ✗
Do not create a relationship; use LOOKUPVALUE in measures
Why it's wrong here
Avoiding relationships would require manual lookups, which are slower and less maintainable.
- ✗
Create a relationship with cross filter direction set to Both
Why it's wrong here
Setting cross filter to Both can degrade performance and create ambiguity.
Go deeper
Related to this question
About these practice questions
One of 217 original PL-300 practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →
Same concept, more angles
1 more way this is tested on PL-300
These questions test the same concept from different angles. Work through them to make sure you can recognise it however the exam phrases it.
Variation 1. You are reviewing the relationships in a Power BI data model as shown in the exhibit. The model has tables: Sales, Product, Customer, and Category. You need to evaluate the performance impact of the current configuration. Which relationship is most likely to cause performance issues?
hard- A.All relationships are equally efficient
- B.The relationship between Sales and Customer
- ✓ C.The relationship between Product and Category
- D.The relationship between Sales and Product
Why C: The relationship between Product and Category is most likely to cause performance issues because it is a many-to-many relationship without a bridge table. In Power BI, many-to-many relationships require the engine to materialize cross-join-like intermediate tables in memory, increasing query complexity and reducing performance. This is especially problematic when filtering or aggregating across these tables, as the VertiPaq engine must resolve ambiguity by creating additional internal tables.
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This PL-300 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the PL-300 exam.