Aggregations and Incremental Refresh0%

Aggregations and Incremental Refresh

Beginner12 min read•Updated: Jul 11, 2026
Study MaterialsCheatsheet

Aggregations & Incremental Refresh for Big Data Analytics

When an enterprise data warehouse contains hundreds of millions or billions of rows (e.g., retail point-of-sale transactions, web traffic logs, IoT telemetry), loading the entire dataset via standard Import mode is technically or commercially impossible.

Advanced BI architects solve the Big Data challenge using two enterprise techniques:

  1. 1
    Incremental Refresh (Pulls only newly modified partitions).
  2. 2
    User-Defined Aggregations (Pre-computes summary tables in memory).

1. Incremental Refresh: Partitioning Big Data

Instead of re-importing 10 years of historical data every single morning, Incremental Refresh divides the dataset into historical partitions:

Output
Incremental Refresh Partitions
|
+---------------------------------------+---------------------------------------+
| |
[Historical Frozen Partitions] [Active Rolling Refresh Partition]
- Years 2015 to 2024 (e.g., 500 Million Rows) - Last 7 Days (e.g., 50,000 Rows)
- Partitioned by Year/Quarter - Refreshed daily in 30 seconds!
- Stored permanently in cache; NEVER re-queried - Only newly updated transactions loaded

Implementing Incremental Refresh:

  1. 1
    In Power Query, create two reserved parameters:
  • RangeStart (Data type: Date/Time)
  • RangeEnd (Data type: Date/Time)
  1. 1
    Filter your Fact table's date column using these parameters:
POWERQUERY
Table.SelectRows(Source, each [OrderDateTime] >= RangeStart and [OrderDateTime] < RangeEnd)
  1. 1
    Ensure Query Folding is active!
  2. 2
    In Power BI Desktop Model View, right-click the Fact table $\to$ Incremental refresh.
  3. 3
    Define the policy:
  • Archive data starting: 5 Years.
  • Incrementally refresh data starting: 7 Days.
  • Check Detect data changes (uses a timestamp column like LastModifiedDate to refresh only changed rows).

2. User-Defined Aggregations (Composite Performance)

User-defined aggregations let you maintain a hidden in-memory summary table alongside a massive DirectQuery fact table:

Output
User Visual Click: "Show Total Sales by Month"
|
[Power BI Query Optimizer]
|
Does an in-memory Aggregation Table exist for Month?
/ \
(YES) (NO)
v v
[AGGREGATION HIT!] [AGGREGATION MISS]
Instantly returns from RAM (<50ms) Sends live SQL to Billion-Row Data Warehouse

Managing Aggregations:

  1. 1
    In Model View, right-click your aggregate table $\to$ Manage aggregations.
  2. 2
    Map aggregate columns to the detail table (e.g., Agg_Sales[TotalSales] maps to SUM of Fact_Sales[SalesAmount]).
  3. 3
    Hide the aggregate table from end-users so they interact only with the clean dimensional model.

Interactive Quiz

Multiple Choice Questions

Question 1
What two reserved parameter names are strictly required by Power BI to configure Incremental Refresh in Power Query?
Question 2
What is the primary benefit of Incremental Refresh for large enterprise datasets?
Question 3
What technical requirement MUST be preserved in Power Query for Incremental Refresh to function properly?
Question 4
What occurs during an "Aggregation Hit" in a Power BI Composite Model?
Question 5
Why should an Aggregation Table be hidden from the report field list in Model View?

Next Lesson

Performance Analyzer Tool

Continue learning with hands-on practice, examples, and exercises in the upcoming topic.

Related Lessons

Practice Quiz

Test your understanding of this lesson with 5 questions. Each question has one correct answer.

PrevNext