Microsoft Fabric Analytics Engineer Associate (DP-600) · 27% practice allocation

Microsoft DP-600: Implement and manage semantic models Practice Questions

5 free sample questions from the Implement and manage semantic models domain, with answers and explanations. The full DP-600 bank has 250 questions across 3 domains. Questions are scenario-based and written from the official Microsoft exam guide.

1.

A senior developer needs to implement a DAX measure that calculates the ratio of a product's monthly sales to the maximum monthly sales achieved by any product in the same category, for the current filter context. Which DAX approach is most appropriate?

  • A. Use RANKX over the category to find the max, then divide
  • B. Use TOPN(1, VALUES(DimProduct[ProductKey]), [Monthly Sales]) to find the top product's sales, then divide the current product's sales by that value
  • C. Use MAXX with an iterator over the set of products in the current category filtered by ALLEXCEPT, divided by the current product's sales✓ Correct
  • D. Use MAX(FactSales[SalesAmount]) divided by [Total Sales] within a CALCULATE with ALLEXCEPT(DimProduct, DimProduct[Category])
Explanation

MAXX iterates over all products in the current category (using ALLEXCEPT to remove the product filter while keeping the category filter) and returns the maximum monthly sales, which is then used as the denominator. This correctly computes the max within the category in the current filter context. RANKX finds rank positions, not the maximum value itself. Using MAX(FactSales[SalesAmount]) would return the max value in a column, not the maximum of a measure across products — it ignores the category boundary correctly. TOPN(1,...) can retrieve the top product but requires additional unpacking to get its measure value and is less efficient than MAXX for this pattern.

2.

A developer needs to write a DAX measure that returns the sales total for the previous quarter, regardless of which quarter is currently selected in a slicer. The model has a standard DimDate table with a Date column. Which DAX expression is correct?

  • A. PrevQtrSales = CALCULATE([Total Sales], DATEADD(DimDate[Date], -1, QUARTER))
  • B. PrevQtrSales = CALCULATE([Total Sales], PREVIOUSQUARTER(DimDate[Date]))✓ Correct
  • C. PrevQtrSales = CALCULATE([Total Sales], PARALLELPERIOD(DimDate[Date], -1, QUARTER))
  • D. PrevQtrSales = CALCULATE([Total Sales], DATESINPERIOD(DimDate[Date], MIN(DimDate[Date]), -1, QUARTER))
Explanation

PREVIOUSQUARTER returns the set of dates in the quarter immediately preceding the last date in the current filter context, making it the standard function for this use case. DATEADD with QUARTER shifts the current period by one quarter, which is equivalent but PREVIOUSQUARTER is the idiomatic choice — DATEADD is also correct in behavior, but PREVIOUSQUARTER is the most direct answer. PARALLELPERIOD shifts by a complete period and is similar but typically used for same-quarter comparisons across years. DATESINPERIOD counts back one quarter from MIN(Date), which would return dates from the beginning of the selection minus one quarter, not necessarily the prior complete quarter, making it inaccurate for this purpose.

3.

A data modeler is configuring the storage mode for a DimDate table that is used in relationships with both an Import-mode FactSales table and a DirectQuery-mode FactRealTimeEvents table in a composite model. Which storage mode should the modeler assign to DimDate to allow it to efficiently serve both relationships?

  • A. Dual✓ Correct
  • B. Direct Lake
  • C. DirectQuery
  • D. Import
Explanation

Dual storage mode allows a table to act as either Import or DirectQuery depending on the context of the query. When queried alongside an Import table, it behaves as Import (using the cached copy); when queried alongside a DirectQuery table, it behaves as DirectQuery. This makes it ideal for shared dimension tables in composite models. Import-only mode would cause issues when DimDate is used in a DirectQuery relationship chain. DirectQuery would slow down all queries, even those that could benefit from in-memory evaluation. Direct Lake is a Fabric-specific mode for Delta tables and cannot be mixed arbitrarily in this composite scenario.

4.

A company's semantic model stores 60 GB of imported data in a Fabric workspace on an F64 capacity. Report refresh times are increasing and memory pressure warnings appear in the Fabric capacity metrics app. The data engineering team does not want to move to DirectQuery due to query performance requirements. Which two actions would most directly reduce memory pressure while maintaining import-mode query performance? (Select TWO.)

  • A. Enable large semantic model storage format to allow the model to exceed the default per-model memory limit and use efficient V3 file format✓ Correct
  • B. Switch all dimension tables to DirectQuery mode to reduce the in-memory footprint
  • C. Remove unnecessary columns and rows from imported tables using Power Query transformations before load✓ Correct
  • D. Enable query caching at the workspace level to reduce repeated SE queries
  • E. Reduce the number of calculated columns and replace them with measures where possible
Explanation

Enabling large semantic model storage format allows the model to use the V3 format and store data beyond the default limits efficiently, reducing memory pressure per GB of data through better compression and paging. Removing unnecessary columns and rows in Power Query directly reduces the amount of data loaded into memory, which is the most impactful approach to reducing model size. Replacing calculated columns with measures reduces memory because calculated columns are materialized in-memory while measures are computed on demand — this is also beneficial but not among the top two most direct actions compared to the listed options. Query caching reduces CPU/query load but does not reduce memory footprint. Switching dimensions to DirectQuery would create a composite model and introduce query latency, violating the import-mode performance requirement.

5.

A developer writes the following DAX measure to calculate each product's contribution to total sales as a percentage:

Pct of Total = VAR CurrentSales = [Total Sales] VAR AllSales = CALCULATE( [Total Sales], REMOVEFILTERS(DimProduct) ) RETURN DIVIDE(CurrentSales, AllSales)

When the measure is placed in a matrix with DimProduct[Category] on rows and DimDate[Year] on columns, the percentage totals at the Category level do not sum to 100% for each year. What is the most likely cause?

  • A. REMOVEFILTERS(DimProduct) removes only the product filter, leaving the year filter intact, so the percentages are calculated correctly and the issue is in the visual configuration, not the DAX.✓ Correct
  • B. The DIVIDE function returns BLANK() when AllSales is zero, preventing the category total from aggregating correctly.
  • C. The VAR CurrentSales captures the filter context at variable declaration time, so when Power BI evaluates the category total row, CurrentSales still holds a product-level value rather than the category subtotal.
  • D. REMOVEFILTERS(DimProduct) also removes the year filter from DimDate, causing AllSales to include all years instead of just the column year.
Explanation

REMOVEFILTERS(DimProduct) removes only filters on the DimProduct table, leaving all other filters (including DimDate[Year]) intact. The measure is mathematically correct: for each product row it divides product sales by total sales for that year, and for the category total row it divides category sales by total sales for that year — which does sum to 100% per year. If the percentages don't sum to 100%, the issue is most likely a visual setting such as 'Show items with no data', a cross-filter from another visual, or a slicer affecting only some products. REMOVEFILTERS does not touch DimDate, so the year filter is preserved. DIVIDE returning BLANK() for zero denominators would cause individual cells to be blank, not cause subtotals to be incorrect. VAR in DAX captures the filter context at the point of evaluation (not declaration) relative to the current row context, so at the category subtotal row CurrentSales correctly holds the category-level value.

Test yourself across every DP-600 domain

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

Study this domain

Implement and manage semantic models study guide (DP-600) →

Other DP-600 domains

← All Microsoft Fabric Analytics Engineer Associate study resources