Microsoft Power BI Data Analyst (PL-300) · 27% practice allocation

Microsoft PL-300: Model the data Practice Questions

5 free sample questions from the Model the data domain, with answers and explanations. The full PL-300 bank has 255 questions across 4 domains. Questions are scenario-based and written from the official Microsoft exam guide.

1.

Sales and Cost are explicit measures. Both need the same reusable time-intelligence choices in a slicer. Which model feature best avoids duplicating each calculation for each measure?

  • A. A calculated column for every transaction date
  • B. A calculation group with calculation items✓ Correct
  • C. A report-page tooltip for each time period
  • D. A bookmark for each measure combination
Explanation

Calculation items can reuse logic across explicit measures. Columns store row-level results; bookmarks and tooltips change report presentation rather than define reusable model calculations.

2.

You are designing a star schema for a Power BI semantic model for a logistics company. The model includes a Shipments fact table, a Customers dimension, a Products dimension, and a Routes dimension. A business analyst requests a calculated column in the Shipments table that shows each customer's city for every row. Which DAX function should you use to retrieve the CustomerCity from the Customers table into the Shipments calculated column?

  • A. RELATED✓ Correct
  • B. RELATEDTABLE
  • C. LOOKUPVALUE
  • D. CALCULATE
Explanation

RELATED is used in a calculated column to retrieve a value from the 'one' side of a relationship when you are on the 'many' side. Since Shipments is the fact table (many side) and Customers is the dimension (one side), RELATED(Customers[CustomerCity]) is the correct function. LOOKUPVALUE works but is typically used when no relationship exists — it is less efficient and more verbose than RELATED when a relationship is already defined. RELATEDTABLE retrieves a table of related rows (from the many side), not a single scalar value from the one side. CALCULATE modifies filter context and does not directly retrieve column values from another table.

3.

Performance Analyzer identifies a slow visual. You want to inspect its DAX query results against the semantic model. Which tool is the appropriate next step?

  • A. Power Query Column Quality
  • B. The Selection pane
  • C. DAX query view✓ Correct
  • D. The mobile-layout editor
Explanation

DAX query view runs DAX queries against the semantic model. Column Quality profiles source data, the Selection pane manages visual layers, and mobile layout controls presentation.

4.

You have a Power BI model with a Sales table and a Currency table. The Currency table has a one-to-many relationship with the Sales table on CurrencyCode. All values in Sales[Amount] are stored in USD. You need to create a measure that converts the total sales amount to a user-selected currency using an exchange rate from a separate ExchangeRates table, which has columns: CurrencyCode and Rate. There is NO relationship between ExchangeRates and Sales. Which DAX measure is MOST appropriate?

  • A. Converted Sales = SUM(Sales[Amount]) * RELATED(ExchangeRates[Rate])
  • B. Converted Sales = CALCULATE(SUM(Sales[Amount]) * MAX(ExchangeRates[Rate]), USERELATIONSHIP(Sales[CurrencyCode], ExchangeRates[CurrencyCode]))
  • C. Converted Sales = SUMX(Sales, Sales[Amount] * LOOKUPVALUE(ExchangeRates[Rate], ExchangeRates[CurrencyCode], Sales[CurrencyCode]))
  • D. Converted Sales = SUM(Sales[Amount]) * LOOKUPVALUE(ExchangeRates[Rate], ExchangeRates[CurrencyCode], MAX(Currency[CurrencyCode]))✓ Correct
  • E. Converted Sales = CALCULATE(SUM(Sales[Amount]), TREATAS(ExchangeRates, Sales[CurrencyCode]))
Explanation

D is correct: since there is no relationship between ExchangeRates and Sales, LOOKUPVALUE is the appropriate DAX function to retrieve a scalar value from ExchangeRates based on the currently selected currency. MAX(Currency[CurrencyCode]) retrieves the single currency code in the current filter context (from a Currency slicer), and LOOKUPVALUE fetches the corresponding rate from ExchangeRates. Multiplying by SUM(Sales[Amount]) gives the converted total. A is wrong: RELATED is a row-context function used in calculated columns to traverse a relationship — it cannot be used in a measure context and requires an existing active relationship. B is wrong: USERELATIONSHIP activates an existing inactive relationship; it cannot create a relationship that does not exist in the model, and it is used inside CALCULATE for measure filters, not for arithmetic multiplication. C is wrong: SUMX with LOOKUPVALUE per row would work correctly in some scenarios, but it is inefficient for this use case because it performs a row-by-row lookup on the entire Sales table. Additionally, if all Sales[Amount] values are in USD and the exchange rate is a single scalar per selected currency, the row-level lookup is unnecessary. D is more efficient. E is wrong: TREATAS maps a table's columns to behave like another table's columns for filter propagation; it does not retrieve a scalar rate for multiplication and would not produce the desired calculation.

5.

A Power BI developer has a semantic model with a Sales table and a Date table. They write the following measure:

YTD Sales = TOTALYTD([Total Sales], Date[Date])

The measure works correctly in most visuals but returns BLANK for all months when a fiscal year ending June 30 is required instead of December 31. What change should be made?

  • A. Use CALCULATE([Total Sales], DATESYTD(Date[Date])) and modify the Date table to mark the fiscal year end.
  • B. Replace TOTALYTD with DATESYTD and pass "6/30" as the year-end date argument.
  • C. Add "6/30" as the third argument to TOTALYTD to specify the fiscal year-end date.✓ Correct
  • D. Create a separate fiscal year column in the Date table and replace Date[Date] with that column.
Explanation

Option C is correct: TOTALYTD accepts an optional third argument — a string representing the fiscal year-end date in MM/DD format. Adding "6/30" correctly shifts the year-to-date calculation to reset on July 1 each year, matching a June 30 fiscal year-end. Option B is incorrect — DATESYTD does accept a year-end argument, but the question asks about the fix to the existing TOTALYTD measure; the equivalent fix for TOTALYTD is passing the year-end argument directly to it, not switching functions. Additionally, while replacing with DATESYTD(Date[Date], "6/30") inside CALCULATE would work, option B says to "replace TOTALYTD with DATESYTD and pass '6/30'" which is a valid alternative but option C is the more direct and minimal fix to the described code. Option D is incorrect — creating a fiscal year column does not change how TOTALYTD accumulates; you still need the year-end argument. Option A is incorrect — there is no setting in the Date table to specify a fiscal year-end that TOTALYTD automatically respects; the argument must be in the DAX expression.

Test yourself across every PL-300 domain

The free PL-300 practice test mixes about 20 questions weighted like the exam. The full 255-question bank adds instant grading, flashcards and a timed mock exam.

Study this domain

Model the data study guide (PL-300) →

Other PL-300 domains

← All Microsoft Power BI Data Analyst study resources