Skip to content

DP-600 · Domain 3: Implement and manage semantic models · 23% of the exam

Task 3.2: Optimize enterprise-scale semantic models

Faster queries and report visuals, DAX performance with DAX Studio, model optimization with Tabular Editor 2, and incremental refresh.

Study it

  • DAX Studio and Tabular Editor 2

    Lesson coming

  • Faster queries and report visuals

    Lesson coming

  • Incremental refresh, partitions and the enhanced refresh API

    Lesson coming

Sample questions

Try each one before opening the answer. Every option is explained, with the Microsoft documentation page that proves it.

Question 1 · choose 2

An import Orders table in a model on an F64 capacity uses incremental refresh: two years of history, with the last seven days refreshed every night at 02:00. Managers now need orders placed today to appear in reports within seconds, without more scheduled refreshes. The source is Azure SQL Database, and the Orders query folds fully. Which two settings must the policy have? (Choose TWO.)

  1. AGet the latest data in real time with DirectQuery
  2. BTurn on Detect data changes on a LastModified column
  3. CShorten the refresh period to the current day only
  4. DOnly refresh complete days
  5. EAdd a refresh every 30 minutes during business hours
Show the answer and why
  • AGet the latest data in real time with DirectQuery

    Correct

    It adds a DirectQuery partition, so rows after the refresh period are read from the source with every query.

  • BTurn on Detect data changes on a LastModified column

    Incorrect

    It skips refreshing unchanged days; it doesn't make today's new rows visible between refreshes.

  • CShorten the refresh period to the current day only

    Incorrect

    Today's rows would still appear only when a refresh runs, not within seconds.

  • DOnly refresh complete days

    Correct

    This setting is optional unless the real-time DirectQuery option is on, which requires it.

  • EAdd a refresh every 30 minutes during business hours

    Incorrect

    More refreshes are ruled out, and data would still be up to 30 minutes old.

An incremental refresh policy can include a real-time DirectQuery partition: all rows with a date and time later than the incremental refresh period are fetched from the source with every model query, so fast-changing data doesn't need a high refresh cadence. This option is supported for Power BI Premium, Premium Per User and Embedded models, requires Only refresh complete days, and can't be combined with nonfolding transformations.

Question 2 · choose 1

A semantic model on a Premium capacity has an incremental refresh policy on a 3-billion-row table, and its partitions hold five years of data. A developer added two measures in the original .pbix and wants to deploy them. Republishing the .pbix from Power BI Desktop would replace the model, and reloading five years takes days. What should the developer do?

  1. ARepublish from Power BI Desktop and then refresh only the latest partition
  2. BDeploy only the metadata changes through the XMLA endpoint, for example with ALM Toolkit
  3. CDownload the model as a .pbix from the service, add the measures and republish it
  4. DAdd the measures in the service's report editor so they're saved to the model
Show the answer and why
  • ARepublish from Power BI Desktop and then refresh only the latest partition

    Incorrect

    Republishing removes the existing partitions and data, so the history would have to be reloaded.

  • BDeploy only the metadata changes through the XMLA endpoint, for example with ALM Toolkit

    Correct

    A metadata-only deployment changes the schema while keeping the existing partitions and their data.

  • CDownload the model as a .pbix from the service, add the measures and republish it

    Incorrect

    After publishing, a model with incremental refresh can't be downloaded back as a .pbix.

  • DAdd the measures in the service's report editor so they're saved to the model

    Incorrect

    Report-level measures in a report don't change the semantic model, so other reports wouldn't get them.

After a model with incremental refresh is published and refreshed, you can't publish the same model again from Power BI Desktop without removing its partitions and data, and you can't download it back as a .pbix. For models in Premium capacities, schema changes can be deployed as metadata only with tools such as the open-source ALM Toolkit or with TMSL through the XMLA endpoint, which retains the partitions and historical data.

Question 3 · choose 2

After a correction in the source, an automation script must refresh only the Inventory table of a large model on an F64 capacity, not the whole model, and the model must keep its previous data if the refresh fails part way. Which two settings should the enhanced refresh request body contain? (Choose TWO.)

  1. AcommitMode set to partialBatch
  2. BAn objects array that lists the Inventory table
  3. CcommitMode set to transactional
  4. Dtype set to clearValues
  5. EapplyRefreshPolicy set to true together with commitMode partialBatch
Show the answer and why
  • AcommitMode set to partialBatch

    Incorrect

    partialBatch commits each command separately, so a failure can leave the table empty or partly loaded.

  • BAn objects array that lists the Inventory table

    Correct

    objects limits processing to the listed tables or partitions; without it, the whole model refreshes.

  • CcommitMode set to transactional

    Correct

    Transactional commits the objects only when the whole operation completes, so a failure keeps the earlier data.

  • Dtype set to clearValues

    Incorrect

    clearValues removes the table's data instead of reloading it.

  • EapplyRefreshPolicy set to true together with commitMode partialBatch

    Incorrect

    With partialBatch, applyRefreshPolicy must be false, and partialBatch doesn't protect the earlier data anyway.

The enhanced refresh REST API, available for models in Premium, Premium Per User and Embedded, accepts an objects array of tables or partitions to process; with no objects, the whole model refreshes. commitMode transactional commits the objects only when the operation is complete, keeping the earlier data on failure, while partialBatch commits each command individually and can leave the model empty or with a subset of data. Types align with TMSL refresh types such as full, clearValues, calculate and dataOnly.

Question 4 · choose 1

A table visual lists customers with a Sales Shown measure defined as IF(ISBLANK([Sales]), 0, [Sales]). When the page is filtered to one week, the visual still renders all 180,000 customers, mostly with zeros, and it's slow. Readers only need customers who bought something in the filter context. How should Sales Shown be defined?

  1. AAs COALESCE([Sales], 0)
  2. BAs [Sales] itself, returning BLANK when there are no sales
  3. CAs IF([Sales] > 0, [Sales], 0)
  4. DAs IF([Sales] = 0, BLANK(), [Sales]), with Show items with no data turned on
Show the answer and why
  • AAs COALESCE([Sales], 0)

    Incorrect

    It still converts BLANK to zero, so every customer keeps a value and the visual stays dense.

  • BAs [Sales] itself, returning BLANK when there are no sales

    Correct

    Visuals drop groupings whose measures are BLANK, so only customers with sales are retrieved and shown.

  • CAs IF([Sales] > 0, [Sales], 0)

    Incorrect

    It still returns zero for customers without sales, so every customer keeps a value.

  • DAs IF([Sales] = 0, BLANK(), [Sales]), with Show items with no data turned on

    Incorrect

    Show items with no data makes the visual display every grouping again, including customers without sales.

Measures that turn BLANK into zero turn a sparse calculation into a dense one: Power BI tries to retrieve every grouping in the filter context, which leads to slow rendering and too many rows. DAX guidance recommends that measures return BLANK when a meaningful value can't be returned, because visuals eliminate groupings whose summarizations are BLANK. Show items with no data displays all groupings again.

Question 5 · choose 1

Performance Analyzer shows that one matrix's DAX query takes 9 seconds. Before rewriting its measures, you want an integrated trace of that query with an execution breakdown and detailed statistics, from the model open in Power BI Desktop. Which tool from the External Tools ribbon is designed for this?

  1. AALM Toolkit
  2. BMetadata Translator
  3. CPower BI Report Builder
  4. DDAX Studio
Show the answer and why
  • AALM Toolkit

    Incorrect

    ALM Toolkit compares model schemas; it doesn't trace query execution.

  • BMetadata Translator

    Incorrect

    Metadata Translator translates captions, descriptions and display folders.

  • CPower BI Report Builder

    Incorrect

    Report Builder authors paginated reports; it doesn't break down DAX query execution.

  • DDAX Studio

    Correct

    DAX Studio is built for DAX authoring, diagnosis and performance tuning, with integrated tracing and query execution breakdowns.

The External Tools ribbon passes the server, port and model name of Power BI Desktop's Analysis Services instance to registered tools. DAX Studio is a tool for DAX authoring, diagnosis, performance tuning and analysis, with object browsing, integrated tracing and query execution breakdowns with detailed statistics. ALM Toolkit compares schemas, and Metadata Translator handles translations.

Question 6 · choose 1

Automatic aggregations are enabled for a DirectQuery semantic model with the Day training frequency, and the model's scheduled refreshes run at 04:00, 09:00, 14:00 and 19:00. What runs at 09:00?

  1. AA training operation followed by a refresh
  2. BA refresh that updates the existing aggregations
  3. CA training operation, with its data loaded at 14:00
  4. DNothing, because training replaces the later refreshes
Show the answer and why
  • AA training operation followed by a refresh

    Incorrect

    Only the first scheduled refresh of the day, at 04:00, includes training.

  • BA refresh that updates the existing aggregations

    Correct

    The day's later scheduled refreshes are refresh-only operations that update the aggregations data in the cache.

  • CA training operation, with its data loaded at 14:00

    Incorrect

    Training runs with the first refresh of the day, and its data loads in the refresh operation that follows it.

  • DNothing, because training replaces the later refreshes

    Incorrect

    Scheduled refreshes keep running; training is added only to the first one for the chosen frequency.

With automatic aggregations, the first scheduled refresh for the chosen frequency, Day or Week, starts with a training operation that evaluates the query log and creates, updates or drops aggregation tables; the aggregations data is loaded by the refresh operation that follows. The other scheduled refreshes of that day are refresh-only operations that update the existing aggregations in the in-memory cache. Train and Refresh Now triggers both operations on demand.

Question 7 · choose 1

An operator started a model refresh with the Refresh now button in the service. A script then sends DELETE to the enhanced refresh API's /refreshes/<requestId> endpoint to cancel it, but the refresh keeps running. Why?

  1. AThe script must send POST with "cancel": true to the refresh object instead
  2. BOnly refreshes with commitMode partialBatch can be canceled
  3. CDELETE can't cancel a refresh started from the portal button
  4. DThe operator must first pause the refresh in the service
Show the answer and why
  • AThe script must send POST with "cancel": true to the refresh object instead

    Incorrect

    Enhanced refresh cancellation uses DELETE on the refresh object.

  • BOnly refreshes with commitMode partialBatch can be canceled

    Incorrect

    Cancellation doesn't depend on the commit mode.

  • CDELETE can't cancel a refresh started from the portal button

    Correct

    The cancel operation works on enhanced refreshes; portal-triggered and scheduled refreshes can't be canceled that way.

  • DThe operator must first pause the refresh in the service

    Incorrect

    There's no pause step; portal-started refreshes aren't cancelable through this API.

The enhanced refresh REST API supports refresh cancellation: send DELETE to the refresh object with its requestId to cancel an in-progress enhanced refresh. Scheduled or on-demand model refreshes that were triggered from the portal's refresh button can't be canceled by using DELETE /refreshes/<requestId>.

Question 8 · choose 1

A semantic model on an F128 capacity is expected to grow to 40 GB in memory after a few refreshes. Which setting must be enabled for it to grow beyond 10 GB?

  1. ALarge semantic model storage format
  2. BScale-out queries for large semantic models
  3. CAutomatic aggregations
  4. DXMLA endpoint read-write
Show the answer and why
  • ALarge semantic model storage format

    Correct

    The large storage format is required for semantic models to grow beyond 10 GB.

  • BScale-out queries for large semantic models

    Incorrect

    Scale-out adds read-only replicas for query load; it doesn't raise the size limit.

  • CAutomatic aggregations

    Incorrect

    Automatic aggregations cache aggregated data for DirectQuery queries; they don't raise the model size limit.

  • DXMLA endpoint read-write

    Incorrect

    Read-write enables XMLA write operations; it doesn't lift the model size limit.

Semantic models have a default size limit, and with Fabric capacities they can exceed it when the Large semantic model storage format setting is enabled, up to the capacity's size or a limit set by the capacity administrator. The large format is required for models to grow beyond 10 GB, and it can also improve XMLA write performance. Power BI Desktop uploads remain limited to 10 GB; models grow beyond that in the service on refresh.

Question 9 · choose 1

A Premium capacity administrator suspects that the evening's scheduled refreshes of many semantic models overlap and compete for resources. Where can they see the week's scheduled refreshes in 30-minute time slots, with the refresh time booked and still available in each slot?

  1. AThe scheduled refresh settings of each model on that capacity
  2. BThe refresh history of each model in its settings
  3. CThe History view of the refresh summary page
  4. DThe Schedule view of the admin portal's refresh summary page
Show the answer and why
  • AThe scheduled refresh settings of each model on that capacity

    Incorrect

    They set one model's own refresh times; they don't show the other refreshes that share a slot.

  • BThe refresh history of each model in its settings

    Incorrect

    It lists one model's refresh attempts, not the capacity's schedule across models.

  • CThe History view of the refresh summary page

    Incorrect

    History shows the outcomes of recent scheduled refreshes, not how the week's slots are booked.

  • DThe Schedule view of the admin portal's refresh summary page

    Correct

    It splits the week into 30-minute slots and shows booked and available refresh minutes, including refreshes that overflow into the next slot.

The refresh summary page in the admin portal gives insight into refresh schedules, capacities and potential schedule overlaps for Premium capacities. Its History view shows the outcomes of recent scheduled refreshes, based on up to 60 records for each, and can be exported to a .csv file. Its Schedule view splits the week into 30-minute time slots with the refresh time booked, from the average durations of refreshes that start in or overflow into the slot, and the refresh time still available.

Practice domain 3 →Practice all domains →