
Does Incremental Refresh Work in Power BI Desktop? (2026 Guide)
Carlos Garcia5/20/2026If you've configured incremental refresh in Power BI Desktop and watched your dataset still take forever to refresh, you've probably wondered whether incremental refresh actually works in Desktop or only on the Power BI Service. The short answer is: incremental refresh is configured in Power BI Desktop, but it only fully runs when the dataset is published to the Power BI Service (or Premium/Fabric capacity). This guide explains exactly what works locally, what doesn't, why this design exists, how to set it up correctly, and the practical limits in 2026.
Free SEO + AI Search Audit. Incremental refresh saves time on your data pipeline. A free SEO + AI search audit saves time on your search strategy — across Google AND in AI search engines like ChatGPT, Claude, Perplexity, and Gemini. Run your free audit → to see exactly where your site stands in 60 seconds.
Does Incremental Refresh Work in Power BI Desktop? The Direct Answer
In simple terms, incremental refresh policies are defined and configured in Power BI Desktop, but the partitioned-refresh behavior only actually executes when the dataset runs on the Power BI Service or in Premium/Fabric capacity. When you refresh in Desktop, Power BI loads the full dataset every time — the incremental partitioning isn't applied.
This trips up a lot of analysts. You configure incremental refresh in Desktop, click Refresh, and see no improvement. That's by design. Desktop doesn't honor partitions on local refresh. Once you publish the dataset to the Service, the next refresh there runs the incremental policy — refreshing only the partitions that need updating.
What Power BI Desktop Does With Incremental Refresh Configuration
Even though Desktop doesn't run the incremental refresh policy locally, it does several important things.
Stores the Policy Definition
When you right-click a table and select "Incremental refresh," Desktop saves the partition strategy (date ranges, archive period, refresh period, detect data changes column) into the dataset metadata. This metadata travels with the .pbix file when you publish.
Validates the Policy
Desktop checks that your model includes the required `RangeStart` and `RangeEnd` parameters, that the data source is a query foldable to the source database, and that the date column referenced is of the correct type.
Previews a Single Partition
When you click Refresh in Desktop on a table with incremental refresh configured, Power BI loads data only for the date range between `RangeStart` and `RangeEnd` (typically a small window). This lets you preview the data without pulling years of history into your Desktop machine.
Doesn't Persist Partitions Locally
After publish, the Service builds out the full partition structure. Desktop's local refresh always loads only the `RangeStart`-to-`RangeEnd` window — it doesn't accumulate historical partitions on your local machine.
Why This Design Exists
The split-brain behavior is intentional.
Desktop Is for Authoring, Not Production Refresh
Power BI Desktop is a modeling and design tool. It's not optimized for running production-scale dataset refreshes. Building incremental refresh that runs locally would add complexity for limited benefit — Desktop users don't usually need to maintain a multi-million-row partitioned dataset on their laptop.
The Service Has the Infrastructure for Partitions
The Power BI Service uses the Analysis Services engine to manage partitions, partition swaps, and incremental ingestion. Desktop runs a simpler in-memory engine that doesn't support those operations.
Premium Adds Even More Partition Control
In Premium/Fabric capacity, you can use XMLA endpoints to manage partitions directly — refresh specific partitions, swap them in and out, run advanced operations. None of that infrastructure exists in Desktop.
How to Configure Incremental Refresh in Power BI Desktop
Even though it runs on the Service, the configuration happens in Desktop.
Step 1: Define RangeStart and RangeEnd Parameters
In Power Query, create two `DateTime` parameters:
- RangeStart: DateTime, default value before your earliest data
- RangeEnd: DateTime, default value of today
These parameter names are reserved — Power BI requires exactly these names.
Step 2: Filter Your Table Using the Parameters
Open the query for the fact table you want to incrementally refresh. Add a filter step that filters the date column between `RangeStart` and `RangeEnd`. This is what Power Query will dynamically rewrite per partition when the Service runs the policy.
Step 3: Confirm Query Folding
Right-click the final step → "View Native Query." If you see the SQL (or equivalent native query) the parameters are folding correctly to the source. If "View Native Query" is grayed out, your query has steps that break folding — fix those first or incremental refresh won't work efficiently.
Step 4: Right-Click the Table → Incremental Refresh
In the Fields pane, right-click the table and choose "Incremental refresh." Configure:
- Archive data starting: how far back you want partitions to exist (e.g., "5 years")
- Incrementally refresh data starting: how recent of a window gets re-refreshed each time (e.g., "10 days")
- Detect data changes (optional): a column the policy uses to detect changes in older partitions
- Only refresh complete days/months (optional): align partitions to calendar boundaries
Step 5: Save and Publish to the Service
Save the .pbix file and publish to a workspace. The first publish creates the dataset; subsequent refreshes in the Service execute the incremental policy.
Step 6: Trigger the First Service Refresh
In the workspace, find the dataset and click Refresh. The first refresh builds out the full partition history — this is slow because it's loading all of it for the first time. Subsequent refreshes are dramatically faster because only the recent window plus changed-data partitions reload.
Free SEO + AI Search Audit. Power BI incremental refresh takes minutes to configure and saves hours per refresh cycle. A free SEO audit takes 60 seconds and shows you exactly where your site stands across Google AND every major AI search platform. Get a free audit.
How to Verify Incremental Refresh Is Working in the Service
Once published, check the partitions are doing their job.
1. Connect via XMLA Endpoint (Premium/Fabric)
Use Tabular Editor 3 or SQL Server Management Studio to connect to the workspace XMLA endpoint. Expand your dataset → table → partitions. You should see multiple partitions corresponding to your archive period.
2. Watch Refresh Duration Trend
Compare the first refresh (long) to subsequent refreshes. If subsequent refreshes are dramatically faster, incremental is working. If they're identical durations, something's broken — most often a query folding issue.
3. Check Refresh History
In the workspace dataset settings, view refresh history. Failed partitions, skipped partitions, or oddly-long incremental refreshes are signals to investigate.
4. Use the Refresh Performance Tool
For Premium/Fabric capacity, the Refresh Performance tool (available in the Power BI admin portal) breaks down which partitions refreshed, how long each took, and which steps were slowest.
When to Use Incremental Refresh
Incremental refresh is the right move in specific scenarios.
1. Fact Tables Above 10 Million Rows
For small datasets, full refresh is fast enough that incremental adds complexity without meaningful benefit. Above 10M rows, the time savings start to compound.
2. Historical Data That Doesn't Change
If your old data is immutable (transactions from years ago, completed events), incremental refresh lets you refresh only the recent window where data is actually changing.
3. Late-Arriving Data Patterns
If your source database has updates that arrive late (e.g., reconciliations come in 7-30 days after the event), use the "Detect data changes" feature with a `lastModified` column. Power BI will re-refresh older partitions only when they actually changed.
4. Hourly or Sub-Hourly Refresh Needs
Without incremental, frequent refreshes on a large dataset will hammer your source database and your Power BI capacity. With incremental, each refresh pulls only the recent partition.
5. Premium/Fabric Capacity Workloads
If you're paying for Premium or Fabric capacity, you should use incremental refresh on your large fact tables. It's literally what the partition management is built for.
Limitations of Incremental Refresh in Power BI
A few real constraints worth knowing.
Pro license limit (no XMLA write). With Power BI Pro (non-Premium), you get incremental refresh but no XMLA endpoint write access. You can't manually rebuild partitions or use Tabular Editor 3 for advanced partition management. For most Pro users that's fine; for serious enterprise use you'll want Premium or Fabric.
Initial refresh is slow. The first refresh after publish has to build out all historical partitions. For 10 years of daily partitions, that's 3,650 partitions to build initially. Plan for an overnight first refresh.
Folding-breaking transformations break incremental. If any Power Query step downstream of the RangeStart/RangeEnd filter breaks query folding, Power Query can't push the partition filter to the source — and incremental degrades to full refresh. Audit your folding carefully.
Schema changes invalidate partitions. If you add a column to the fact table, you'll need to rebuild partitions. Tabular Editor 3 + XMLA makes this manageable; without those, you may need to delete the dataset and republish.
Direct Lake mode supersedes incremental refresh. In Fabric, Direct Lake mode on Delta tables bypasses the traditional import-with-incremental-refresh pattern entirely. For new Fabric deployments, evaluate Direct Lake first before building out classic incremental refresh.
No incremental refresh on calculated tables. You can only configure incremental refresh on tables loaded via Power Query from a foldable source. Calculated DAX tables aren't supported.
Desktop vs Service: Practical Implications
A quick summary for the analysts.
In Desktop
- Configure the policy
- Preview a single partition's data
- Validate parameters and folding
- Publish to the Service
In the Service (Pro or Premium/Fabric)
- The policy actually runs
- Partitions get built and maintained
- Detect data changes triggers older-partition refreshes
- Refresh history shows partition-level detail (Premium/Fabric)
In Premium/Fabric Capacity
- All of the above, plus
- XMLA endpoint for partition management
- Advanced refresh operations via Tabular Editor 3
- Sub-partition refresh control
Final Thoughts
Incremental refresh is one of those Power BI features where the configuration lives in Desktop but the actual benefit only shows up after you publish. If you're configuring it locally and not seeing faster refreshes, that's expected — publish to the Service and run the refresh there. The real question for most teams isn't whether incremental refresh works in Desktop, but whether the time savings on your Service refreshes are worth the configuration complexity. For datasets above 10M rows, the answer is almost always yes.
Beyond your BI infrastructure, the bigger 2026 question for most teams is whether the dashboards and reports you build are actually getting in front of the right audience. Most teams discover that traffic increasingly comes from buyers asking AI search engines like ChatGPT, Claude, Perplexity, and Gemini for product recommendations — and they have zero visibility into where they stand in those answers. Run a free audit to see exactly where your site performs across Google AND every major AI search platform, and which fixes will move your traffic the fastest this quarter.



