PL-300 Model the data Practice Question
You are designing a Power BI model that includes a fact table with sales data and a dimension table for customers. Each customer can have multiple addresses, but you only need the primary address for analysis. The source system has a 'CustomerAddress' table with a 'IsPrimary' flag. What is the best approach to bring this into the model?
⚠ Common exam trap
Many exam-takers choose Option B, thinking that importing the full table and using a relationship is simpler, but they overlook the need to enforce a single primary address per customer, which requires additional filtering logic that complicates the model and degrades 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
✓
In Power Query, filter the CustomerAddress table to only include rows where IsPrimary = True, then merge with Customer.
It uses Power Query to filter the CustomerAddress table to only primary addresses before merging with the Customer dimension. This ensures that only the necessary rows are imported into the model, reducing data volume and avoiding complex DAX or relationship overhead. The result is a clean, single-row-per-customer dimension that directly supports analysis without runtime filtering.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Use a DAX measure to filter the address table dynamically.
Why it's wrong here
A DAX measure only evaluates within the filter context of a visual or calculation and cannot remove rows from an imported table during refresh or modeling. It cannot enforce that the CustomerAddress table serves as a one-row-per-customer dimension, and any measure-generated result would still leave the full table in the model, preserving fan-out and storage waste. Row-level transformations belong in Power Query, not measures.
- ✗
Import the entire CustomerAddress table and create an active relationship on the CustomerID column.
Why it's wrong here
Importing every address row and creating an active relationship on CustomerID will match a fact row to all of that customer's addresses, causing row multiplication and incorrect aggregations when addresses are not filtered. This also loads non-primary addresses into the model, increasing memory and potentially creating ambiguous filter propagation. A relationship alone cannot guarantee a single primary address; the data must be reduced before the relationship is created.
- ✓
In Power Query, filter the CustomerAddress table to only include rows where IsPrimary = True, then merge with Customer.
Why this is correct
Filtering CustomerAddress to IsPrimary = True in Power Query before merging into Customer loads only one address per customer, eliminating fan-out and reducing model size. The merge creates a clean dimension table with the primary address attributes, allowing a single active relationship from the fact table to each customer's primary location. This ETL approach minimizes storage and prevents the need for complex DAX or inactive-relationship tricks.
- ✗
Create a calculated table using SUMMARIZE to get the primary address per customer.
Why it's wrong here
Creating a calculated table with SUMMARIZE is evaluated at report load time by the DAX engine, and for large tables it can generate heavy query plans and increase refresh duration without adding functional value. It also still stores a separate table in the model, duplicating data, whereas Power Query filtering avoids loading unwanted rows entirely. The preferred pattern is to perform such one-row-per-customer reductions during data transformation, not as a downstream DAX dependency.
Go deeper
Related to this question
About these practice questions
Courseiva writes every PL-300 question from scratch — 217 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →
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.