Key takeaways
- Incremental refresh partitions a table by date and reprocesses only the recent window.
- RangeStart and RangeEnd must be DateTime parameters used in a date filter in the source query.
- If the filter does not fold, the engine may read the full table and lose the benefit.
- The first refresh loads the full archive, and republishing can reset partitions.
On this page
What incremental refresh does
Incremental refresh splits a table into partitions by a date range. On refresh, Power BI processes only the partitions that fall inside the refresh window instead of reloading the whole table. Older partitions stay in the model untouched and are eventually merged or removed as the window rolls forward.
It does not reduce the size of the model. It reduces the work and time needed to refresh. The first refresh still loads the full archive, so plan for a longer initial run and a source that can handle it.
The three requirements
The source query must filter on two parameters, RangeStart and RangeEnd, and both must be DateTime. The filter must be on a date or datetime column in the source, and the table must be published before the service can create partitions.
- RangeStart and RangeEnd are case-sensitive DateTime parameters, not date parameters.
- Both parameters filter the same date column, with start inclusive and end exclusive.
- The filter step folds to the source; otherwise every refresh may read the full table.
- Do not reference the parameters elsewhere in the query or rename them after the policy is set.
- The date column should be stable and non-null for every row.
Choose the window
The archive window is how far back the model keeps data. The refresh window is how far back each refresh reprocesses. A common pattern is several years of archive and a short refresh window that covers late-arriving records.
Make the refresh window longer than the longest expected delay. If an invoice can arrive three days after its transaction date, a two-day window will miss corrections. If the source backfills a month, the window must be at least a month.
As an illustration, three years of daily rows is about 1,095 days. A ten-day refresh window covers roughly 1 percent of that history, so the saving comes from the rows read, not from a smaller model.
| Setting | Meaning | Practical starting point |
|---|---|---|
| Archive window | How much history is kept | Cover the reporting range plus one comparison period |
| Refresh window | How much is reprocessed each run | Longer than the worst late-arrival delay |
| Detect data changes | Refresh only partitions whose source data changed | Use when the source has an audit column and the extra query cost is acceptable |
| Partition granularity | Day, month, quarter, or year | Match the refresh frequency and data volume |
Check query folding
Incremental refresh relies on the source doing the date filtering. In Power Query, select the filter step and use View Native Query. If the option is unavailable, the step is not folding and the refresh may download more data than expected.
Folding breaks when a step uses a custom function, an unsupported transformation, or a calculated column before the filter. Move the date filter as early as possible, keep the source query simple, and avoid changing column types before the filter if that blocks folding.
For file-based sources and some services, folding is not available. The query can still be configured, but the mashup engine may apply the filter after retrieving all rows, which defeats the purpose. Measure the actual refresh duration rather than assuming the window is doing the work.
Operate and troubleshoot
Watch refresh duration and failure messages for the first few runs. A refresh that suddenly processes all partitions usually points to a broken fold, a parameter change, or a full-refresh request. Republishing the model from Desktop resets partitions and data, so treat a republish as a full deployment rather than a routine update.
- The initial refresh processes every partition; schedule it outside peak hours.
- A schema change may require a full refresh; existing partitions do not always pick up a new column.
- Time zone differences between the source and the service can shift partition boundaries; use a consistent convention.
- A gateway that cannot run the partition queries will fail the refresh; test with the same gateway.
- After changing the window, confirm that the published policy matches the model.
When not to use it
Small tables do not benefit. A dimension with a few thousand rows reloads faster than the overhead of partitioning. Tables without a reliable date column, or sources that cannot filter efficiently, are also poor candidates.
If the requirement is near-real-time data, incremental refresh is the wrong tool; it is still a scheduled batch. Use DirectQuery or a real-time partition when freshness matters more than model performance, and accept the trade-off in query speed and source load.
Frequently asked questions
Does incremental refresh work in Power BI Desktop?+
You configure the policy in Desktop, but the partitioning happens when the model is published and refreshed in the service. Desktop refreshes the full table for authoring.
Does incremental refresh reduce the model size?+
No. It reduces refresh work. The model still holds every partition in the archive window, and the archive window determines its size.
Can incremental refresh be used with DirectQuery?+
The standard feature is designed for import tables. DirectQuery queries the source at report time, so there is no stored partition to refresh. Hybrid tables are a separate pattern with their own constraints.
Why did every partition refresh?+
Common causes are a broken query fold, a changed parameter, a schema change, or a manual full refresh. Check the refresh history and the native query first.
Need help applying this?
Get help with Dashboards & BI.
Review the service scope or tell us what you are trying to improve. We will reply with a clear next step.
Free KPI definition templateRelated reading
Power BI bookmarks and navigation patterns
Practical Power BI bookmark and navigation patterns: page switchers, view resets, drillthrough, button states, and the testing that keeps them usable.
Power BI dashboard checklist for small businesses
A practical checklist for building a Power BI dashboard that is trusted, fast, and easy to hand over.