πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided DP-600 Domain 3
Domain 3 β€” Module 8 of 8 100%
29 of 29 overall

DP-600 Study Guide

Domain 1: Maintain a Data Analytics Solution

  • Workspace Access Controls
  • Row-Level & Object-Level Security
  • Sensitivity Labels & Endorsement
  • Git Version Control in Fabric
  • Deployment Pipelines: Dev β†’ Test β†’ Prod
  • Impact Analysis & Dependencies
  • XMLA Endpoint & Reusable Assets

Domain 2: Prepare Data

  • Microsoft Fabric: The Big Picture Free
  • Lakehouses: Your Data Foundation Free
  • Warehouses in Fabric Free
  • Choosing the Right Data Store Free
  • Data Connections & OneLake Catalog
  • Shortcuts & OneLake Integration
  • Ingesting Data: Dataflows Gen2 & Pipelines
  • Star Schema Design Free
  • SQL Objects: Views, Functions & Stored Procedures
  • Transforming Data: Reshape & Enrich
  • Data Quality & Cleansing
  • Querying with SQL
  • Querying with KQL
  • Querying with DAX

Domain 3: Implement and Manage Semantic Models

  • Semantic Models: Storage Modes
  • Relationships & Advanced Modeling
  • DAX Essentials: Variables & Functions
  • Calculation Groups & Field Parameters
  • Large Models & Composite Models
  • Direct Lake Mode
  • DAX Performance Optimization
  • Incremental Refresh

DP-600 Study Guide

Domain 1: Maintain a Data Analytics Solution

  • Workspace Access Controls
  • Row-Level & Object-Level Security
  • Sensitivity Labels & Endorsement
  • Git Version Control in Fabric
  • Deployment Pipelines: Dev β†’ Test β†’ Prod
  • Impact Analysis & Dependencies
  • XMLA Endpoint & Reusable Assets

Domain 2: Prepare Data

  • Microsoft Fabric: The Big Picture Free
  • Lakehouses: Your Data Foundation Free
  • Warehouses in Fabric Free
  • Choosing the Right Data Store Free
  • Data Connections & OneLake Catalog
  • Shortcuts & OneLake Integration
  • Ingesting Data: Dataflows Gen2 & Pipelines
  • Star Schema Design Free
  • SQL Objects: Views, Functions & Stored Procedures
  • Transforming Data: Reshape & Enrich
  • Data Quality & Cleansing
  • Querying with SQL
  • Querying with KQL
  • Querying with DAX

Domain 3: Implement and Manage Semantic Models

  • Semantic Models: Storage Modes
  • Relationships & Advanced Modeling
  • DAX Essentials: Variables & Functions
  • Calculation Groups & Field Parameters
  • Large Models & Composite Models
  • Direct Lake Mode
  • DAX Performance Optimization
  • Incremental Refresh
Domain 3: Implement and Manage Semantic Models Premium ⏱ ~12 min read

Incremental Refresh

Stop refreshing entire datasets. Incremental refresh loads only new and changed data β€” essential for large semantic models with billions of rows.

Why incremental refresh?

β˜• Simple explanation

Think of restocking shelves in a supermarket.

Without incremental refresh, you empty the entire shelf every night and restock everything from scratch β€” even items that have not changed. With incremental refresh, you only restock the new items and replace the expired ones. The shelf (your model) stays current with a fraction of the effort.

For a 5-year sales dataset with 2 billion rows, full refresh processes ALL 2 billion rows every time. Incremental refresh processes only the last few days β€” maybe 10 million rows. The refresh goes from 3 hours to 5 minutes.

Incremental refresh partitions a semantic model table by date ranges and refreshes only recent partitions. Historical partitions are loaded once and never refreshed again (unless manually forced). This dramatically reduces refresh time, resource usage, and source system load.

Incremental refresh requires two parameters: RangeStart and RangeEnd (DateTime type), which Power BI uses to filter data at the source. The refresh policy defines how many periods to store (e.g., 5 years) and how many periods to refresh each cycle (e.g., last 10 days).

How incremental refresh works

The partition model

Incremental refresh divides your table into date-based partitions:

fact_sales (5 years of data)
β”œβ”€β”€ 2022-Q1 (historical β€” never refreshed)
β”œβ”€β”€ 2022-Q2 (historical)
β”œβ”€β”€ ...
β”œβ”€β”€ 2026-Q1 (historical)
β”œβ”€β”€ 2026-04-01 to 2026-04-15 (refresh window β€” refreshed daily)
β”œβ”€β”€ 2026-04-16 to 2026-04-21 (refresh window β€” refreshed daily)
└── [future partition β€” for real-time data if enabled]

Refresh behavior

Partition TypeWhen RefreshedExample
HistoricalNever (unless manually triggered)Data older than the refresh window
Refresh windowEvery scheduled refreshLast 10 days of data
Real-time (optional)On every query (using DirectQuery)Current day’s data

Setting up incremental refresh

Step 1: Create parameters

In Power BI Desktop, create two DateTime parameters:

  • RangeStart β€” the start of the date filter
  • RangeEnd β€” the end of the date filter

Step 2: Filter the source query

In Power Query, filter your date column between RangeStart and RangeEnd:

= Table.SelectRows(Source, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)

Step 3: Configure the refresh policy

In Power BI Desktop, right-click the table β†’ Incremental refresh and real-time data:

SettingWhat It ControlsExample
Archive data startingHow far back to keep data5 years
Incrementally refresh data startingThe refresh window10 days
Get the latest data in real time (optional)Adds a DirectQuery partition for current dataEnabled for near-real-time
Only refresh complete periodsPrevents partial day data from being cachedRecommended for daily grain
Detect data changesRe-refresh historical partitions when source data changesBased on a date/timestamp column

Step 4: Publish to the service

When published, Power BI creates the partitions automatically. The first refresh is a full refresh (loads all historical data). Subsequent refreshes only process the refresh window.

πŸ’‘ Exam tip: RangeStart and RangeEnd

The exam tests your understanding of the parameters:

  • Parameters must be named exactly RangeStart and RangeEnd (case-sensitive)
  • They must be of type DateTime
  • They are used in the Power Query filter β€” NOT in DAX
  • In Desktop, they are set to test values (e.g., last 30 days). In the service, Power BI overrides them with the actual partition ranges.
  • The filter must use >= for RangeStart and < for RangeEnd (not <=)

Incremental refresh with real-time data

When you enable β€œGet the latest data in real time”, Power BI adds a DirectQuery partition for the current (incomplete) period:

fact_sales
β”œβ”€β”€ 2022 to 2026-04-10 (Import partitions β€” fast)
β”œβ”€β”€ 2026-04-11 to 2026-04-20 (Import β€” refreshed daily)
└── 2026-04-21 (DirectQuery β€” always live)

This hybrid approach gives you historical performance (Import) with current-day freshness (DirectQuery). The DirectQuery partition is small (one day) so queries are fast.

πŸ’‘ Scenario: Dr. Sarah's patient data refresh

Dr. Sarah at Pacific Health has 3 years of patient outcome data (50 million rows). A full refresh takes 2 hours and puts heavy load on the hospital’s database.

She configures incremental refresh:

  • Archive: 3 years
  • Refresh window: 7 days
  • Real-time: Enabled (today’s admissions are always current)
  • Detect data changes: Enabled (corrections to historical records trigger re-refresh)

Result: daily refresh takes 4 minutes instead of 2 hours. The hospital database handles 7 days of queries instead of 3 years.

Incremental refresh and Direct Lake

In Direct Lake mode, incremental refresh behaves differently from Import mode:

AspectImport Incremental RefreshDirect Lake
PartitionsCreated by Power BIN/A β€” reads Delta log
Historical dataLoaded once, cached in VertiPaqRead from OneLake on demand
Refresh windowRe-imports recent dataRe-frames from Delta tables
Real-time partitionDirectQuery to sourceReads latest Delta version
BenefitReduces refresh time and memoryMinimal β€” Direct Lake already avoids full refresh

Key insight: Incremental refresh is most valuable for Import mode, where it prevents expensive full refreshes. Direct Lake already reads data on demand, so the benefit is smaller β€” but incremental refresh with large format is still useful for managing very large models.

Question

What is incremental refresh?

Click or press Enter to reveal answer

Answer

A refresh strategy that divides a table into date-based partitions. Historical partitions are loaded once and never refreshed. Recent partitions (the refresh window) are refreshed on each cycle. Reduces refresh time from hours to minutes for large datasets.

Click to flip back

Question

What are RangeStart and RangeEnd?

Click or press Enter to reveal answer

Answer

Two DateTime parameters (case-sensitive names) used in the Power Query source filter. RangeStart is the start of the date range (>=), RangeEnd is the end (<). Power BI overrides these values in the service to match each partition's date range.

Click to flip back

Question

What does 'Get the latest data in real time' do?

Click or press Enter to reveal answer

Answer

Adds a DirectQuery partition for the current (incomplete) period. Historical and recent data stays as Import (fast). Today's data is queried live via DirectQuery (always current). The DirectQuery partition is small, so the performance impact is minimal.

Click to flip back

Knowledge Check

Dr. Sarah at Pacific Health has a 50-million-row semantic model with 3 years of data. Full refresh takes 2 hours. She wants to reduce refresh time while keeping data current. Which approach is best?

Knowledge Check

An exam question states: 'You configure incremental refresh with RangeStart and RangeEnd parameters. The filter in Power Query uses OrderDate >= RangeStart AND OrderDate <= RangeEnd.' Is this correct?

🎬 Video coming soon


This completes Domain 3. Head back to Domain 1: Maintain a Data Analytics Solution for security, governance, and lifecycle management.

← Previous

DAX Performance Optimization

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.