Courseiva
Prepare the data →hardMultiple Choice

PL-300 Prepare the data Practice Question

You are designing a Power BI solution for a retail company. The data includes point-of-sale transactions with columns: TransactionID, StoreID, ProductID, Quantity, SalesAmount, TransactionDate. The company wants to analyze sales by hour of day. What is the best way to prepare the time dimension?

⚠ Common exam trap

Many candidates think extracting the hour via a calculated column (Option A) is simpler and sufficient, but they overlook the performance and scalability benefits of a proper star schema with a separate Time dimension, which is a core concept tested in PL-300.

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 separate Time dimension table with a one-to-many relationship to the fact table

Creating a separate Time dimension table with a one-to-many relationship to the fact table follows the star schema best practice for Power BI. This approach allows efficient filtering and grouping by hour without bloating the fact table with calculated columns, and it supports time-based analysis across multiple fact tables if needed. The Time dimension can include columns like Hour, HourBucket, or PeriodOfDay, enabling intuitive slicers and drill-downs.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • ✗

    Add a calculated column extracting hour from TransactionDate in the fact table

    Why it's wrong here

    A calculated column in the fact table that extracts the hour from TransactionDate stores the value as a degenerate dimension: it is just an attribute on the transaction rows. Such a column cannot power a reusable time hierarchy (hour, period, shift) and forces any time-of-day analysis to filter directly on that fact table, which bloats the table and makes cross-measure slicing clumsy. It also recomputes at each refresh and offers no relationship-based filtering or consistent time intelligence across multiple fact tables.

  • ✗

    Create a date dimension only and ignore time

    Why it's wrong here

    Building only a date dimension and ignoring time leaves the transaction time buried in the fact table, so you can analyze daily/monthly trends but cannot drill into intraday patterns such as peak shopping hours or morning-vs-evening performance. Because there is no separate time key in the schema, you cannot create a Time hierarchy, and any hour-based report requires either custom DAX or a calculated column, defeating the purpose of a dimension. This option fails the business requirement for hour-level analysis.

  • ✗

    Use DAX measures to extract hour on the fly

    Why it's wrong here

    Computing the hour on the fly inside DAX measures—for example with HOUR(MAX(TransactionDate))—means the engine must evaluate and aggregate the time component row by row at query time, eliminating the benefit of pre-joined dimension tables and degrading performance on large fact tables. These measures cannot be reused to drive slicers, filter pane selections, or a coherent time hierarchy, and each measure must replicate the same logic, leading to inconsistent time groupings. It is the least maintainable design and is therefore wrong.

  • ✓

    Create a separate Time dimension table with a one-to-many relationship to the fact table

    Why this is correct

    Creating a separate Time dimension table with a TimeKey (for example, an integer 0–86399 representing seconds since midnight) and attributes such as hour, half-hour slot, and time band, then relating it to the fact table via a one-to-many relationship, gives every measure a consistent, reusable way to slice and drill by time of day. This follows star-schema best practice: the dimension stores the descriptive time attributes, the fact only stores the key, and users can navigate from hour to minute or across time periods without custom DAX. It fully supports the retail requirement of analyzing sales by hour while integrating cleanly with the date dimension.

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.