Courseiva
Prepare the data →hardMultiple Choice

PL-300 Prepare the data Practice Question

You are designing a data model for a sales analysis report. The source data includes a Sales table with columns: OrderID, CustomerID, ProductID, OrderDate, Quantity, and UnitPrice. You also have a Customers table and a Products table. Which approach best optimizes query performance and storage?

⚠ Common exam trap

Many candidates choose a flat table (Option C) thinking it simplifies the model, but they overlook the severe storage and performance penalties from data duplication, which is a key anti-pattern in Power BI data modeling.

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 star schema with Sales as a fact table and Customers and Products as dimension tables.

A star schema optimizes query performance and storage in Power BI by separating transactional data (Sales fact table) from descriptive attributes (Customers and Products dimension tables). This reduces data duplication, improves compression, and enables efficient aggregations and filter propagation via one-to-many relationships, which is the recommended modeling approach for analytical workloads.

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 star schema with Sales as a fact table and Customers and Products as dimension tables.

    Why this is correct

    Star schema is the recommended modeling approach in Power BI because it separates measure-bearing numeric data (Sales) from descriptive attributes (Customers, Products). This structure leverages VertiPaq's columnar compression by storing dimensions as small, indexed tables, and enables unambiguous one-to-many relationships that make DAX filters propagate correctly. As a result, queries are simpler, more performant, and the model is easier for report consumers to navigate.

  • ✗

    Create separate fact tables for each dimension.

    Why it's wrong here

    Creating a separate fact table for each dimension is incorrect because fact tables are meant to store transactional metrics—not dimension attributes. Doing so would result in multiple fact tables that need to be joined to one another, creating ambiguous relationships and forcing DAX to use CROSSFILTER or bidirectional filters just to connect a single sale to its customer and product. This anti-pattern bloats the model, complicates measure logic, and drastically reduces row-level aggregation performance.

  • ✗

    Create a single flat table by joining all columns from Sales, Customers, and Products into one table.

    Why it's wrong here

    Combining Sales, Customers, and Products into a single flat table denormalizes the model and inflates storage: every sale row would repeat customer names, product categories, and other text attributes, expanding the in-memory footprint and slowing refresh and query times. It also makes attribute changes difficult to maintain—updating a customer's region requires touching every row rather than a single dimension record—and can produce incorrect granularity when users expect to filter or group by product attributes.

  • ✗

    Create a snowflake schema by normalizing Customers into multiple related tables.

    Why it's wrong here

    While snowflake schemas reduce duplicate data in traditional relational databases, Power BI's columnar engine performs best with fewer, wider dimension tables. Normalizing Customer into separate region, territory, and contact tables forces queries to traverse multiple one-to-many relationships, which increases DAX complexity, creates more chances for ambiguous filter paths, and can degrade performance due to extra joins and larger metadata overhead. Power BI does not need the same normalization that OLTP systems do; a star schema maximizes both speed and ease of use.

About these practice questions

Courseiva writes every PL-300 question from scratch — 524 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 →

How Courseiva writes practice questions · Editorial policy

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.