Blog
Nov 17, 2025 - 10 MIN READ
Power BI Incremental Refresh

Power BI Incremental Refresh

How incremental refresh works in Power BI — partitioning, change detection, step-by-step setup, and the license and data source limitations you need to know.

Radek Řezáč

Radek Řezáč

Incremental refresh is one of the most impactful Power BI optimisations for large datasets. Instead of rewriting the entire dataset on every refresh, it updates only the most recent data partitions — dramatically reducing refresh time, resource consumption, and cost.

How Incremental Refresh Works

Three mechanisms make it possible:

  • Data Partitioning — the dataset is segmented based on time frames (days, months). Power BI identifies which partitions need updating.
  • Change Detection — the system monitors specific fields (e.g., a maximum date value) and only triggers refreshes when new data exists.
  • Availability — the feature is available only in Power BI Service, and full functionality typically requires a Power BI Premium license.

Benefits

  1. Improved Performance — refreshing only recent partitions reduces processing time and resource consumption significantly
  2. Efficient Data Handling — server and network workload decreases, speeding up report availability
  3. Cost-Effective — Premium users experience significant compute savings
  4. Reduced Load Times — current data becomes available faster
  5. Better Historical Data Management — retain historical subsets while efficiently updating recent data
  6. Automation — scheduled refreshes run without manual intervention

Setting Up Incremental Refresh: Step by Step

Step 1: Open the Report in Power BI Desktop

Launch the report and select Home → Transform Data to open Power Query Editor.

Step 2: Create Range Parameters

In Power Query Editor, go to Manage Parameters → New Parameter and create two parameters:

  • RangeStart — Type: Date/Time, Default value: 01.01.2020 0:00:00
  • RangeEnd — Type: Date/Time, Default value: 01.01.2021 0:00:00

Step 3: Apply Filters to Data

Select the date column for filtering:

  1. Click Filter → Custom Filter
  2. Set: Greater than or equal to → RangeStart
  3. Set: Less thanRangeEnd
  4. Click Close & Apply

Step 4: Enable Incremental Refresh

Right-click the table in Power BI Desktop → Incremental Refresh:

  • Store data for: e.g., 5 years (the full historical range to retain)
  • Refresh data for: e.g., last 1 month (the rolling window to refresh each time)
  • Click Apply

Step 5: Publish to Power BI Service

Click Publish to upload the report to Power BI Service. The first publish loads all data within the defined range. In Power BI Service, go to Dataset Settings → Scheduled Refresh to configure the refresh schedule.

Step 6: Test and Verify

Execute a manual refresh and review the refresh logs to confirm that only recent data was updated.

Limitations

  • License Requirements — Incremental Refresh in Dataflows is available only in Power BI Premium, Premium Per User (PPU), or Fabric capacities. Pro users are excluded.
  • Date/Time Column Required — the feature requires a Date/Time column for partitioning. Datasets without one need preliminary transformations.
  • Deleted Records — only new or modified records are processed. Deletes require custom logic or a soft-delete pattern.
  • Data Source Compatibility — typically works with SQL databases and Azure sources. API-based direct query sources may not be compatible.

When to Use It

Incremental refresh makes the biggest difference when:

  • Your dataset grows continuously over time (transactional data, event logs)
  • Full refreshes are taking longer than your refresh window allows
  • You have Premium or Fabric capacity (Pro has limited support)
  • Your data source supports query folding (the filter is pushed down to the source)

For smaller datasets or sources that don't support query folding, full refresh is often simpler and more reliable.

Radek Řezáč • Senior Lead Data Engineer • © 2026