Building a super-efficient incremental refresh process in SSAS

Vivek Devalkar 122 Reputation points
2024-02-08T12:49:26.9366667+00:00

Suppose I have 2 years time entry data (~25M rows) by employee and day and project etc. At any point of time any rows within those 2 years can change (new rows added, existing rows modified or potentially some rows deleted too). The number of rows changed could just be <1000 rows across the entire period in any 30 min interval but for the sake of making this a complex problem, let's assume the 1000 rows can be across 12 random months within the 2 year period. Is there a way to setup an incremental refresh policy in SSAS such that these 1000 changes are processed in the model and correctly reflected (without any duplication) without actually processing all 12 months of data (~12M rows) every 30 mins?

SQL Server Analysis Services
SQL Server Analysis Services
A Microsoft online analytical data engine used in decision support and business analytics, providing the analytical data for business reports and client applications such as Power BI, Excel, Reporting Services reports, and other data visualization tools.
1,249 questions
{count} votes

Accepted answer
  1. Greg Low 1,495 Reputation points Microsoft Regional Director
    2024-02-09T04:36:11.9633333+00:00

    What we have done with this in the past is:

    • Partition the table in SSAS / AAS - perhaps partition by week
    • Update the rows in your source that SSAS / AAS loads from.
    • Keep track of which weeks the changes exist in
    • Process only the table partitions that are affected.

    Most of the time it will be a small number of partitions involved, and you'll only average around 115000 rows per partition, which should load quickly.


2 additional answers

Sort by: Most helpful
  1. Greg Low 1,495 Reputation points Microsoft Regional Director
    2024-02-09T04:38:42.01+00:00

    (Sorry, answer got duplicated when I thought it had disappeared)

    0 comments No comments

  2. Olaf Helper 41,021 Reputation points
    2024-02-09T07:21:12.5366667+00:00

    At any point of time any rows within those 2 years can change

    You can perform an "incremental processing" to bring new fact data into the cube, but you can not perform an update processing on fact data, only on dimensions. So if you fact data changes, you have to perform a full processing.

    0 comments No comments