Explainer
    Craft
    Craft

    Part of The company brain: where your organization's knowledge lives

    Incremental refresh in Power BI: what it is and when it pays off

    Why a nightly refresh keeps getting longer, how incremental refresh fixes it, and the conditions your source has to meet first.

    Max van Genderen7 min read
    Share on
    Incremental refresh in Power BI: what it is and when it pays off

    A report that refreshed in eight minutes last year now takes fifty. Nothing is broken: the archive simply grew. Every night the same history is pulled again, including years nobody edits anymore. Incremental refresh answers exactly that problem.

    Incremental refresh means reloading only the part of the table that can still change. The rest stays as it was.

    Full versus incremental

    Full refreshThe entire history again, every nightDuration scales with the archiveOne slow source delays everythingA failure touches closed years tooIncremental refreshOnly the recent window againDuration scales with the changeHistory sits in its own partitionsYou can recover one period at a timeA full refresh scales with your archive. Incremental scales with the change.

    The difference that matters long term is not tonight's speed gain. It is that the duration of your refresh becomes independent of the size of your history. An organisation keeping ten years of orders processes only a few days of change in practice.

    How Power BI splits it up

    Power BI cuts the table into partitions based on a date column. You give it two numbers: how much history you keep, and how many recent periods you reload. Partitions per month or per day appear underneath.

    04The window that changesLast 7 days, reloaded every night03Current yearBy month, refreshed on request02Closed yearsFrozen, never touched again01A source with a trustworthy change dateWithout that column, partitioning cannot workOnly the top layer still moves. Below it sits frozen history.

    That gives you two things beyond speed. A failed refresh only touches the recent window, not your whole model. And you can reload a single period on purpose when a source is corrected retroactively.

    The conditions this usually fails on

    Incremental refresh only works when your source is honest about change. Four stumbling blocks come up repeatedly:

    • No trustworthy change date. The filter column must be a date or datetime that actually moves when a record is edited. A creation date is not a modification date.
    • Filters that are not pushed down. If the source cannot execute the date filter itself, Power BI still pulls everything and the gain disappears. Databases and views handle this well; file exports rarely do.
    • Deleted rows. A record removed at the source does not disappear from a frozen partition by itself. Use a status instead of a hard delete, or refresh that period deliberately.
    • Corrections in closed years. If finance still posts into a closed year, that year does not belong in the frozen layer, or you need a scheduled reload.

    What you agree on up front

    Incremental refresh is an agreement about time, and that agreement does not belong only in a report setting. Write down when a period counts as closed, who may decide to post into it anyway, and how long you keep history.

    That is the same discipline as data lifecycle management: not every record deserves the same treatment, and who decides that is an organisational question, not a technical one.

    Where it really hurts

    A refresh that takes too long is often a symptom rather than the illness. The underlying cause is usually that the report does too much work: pull source data, clean it, join it, apply definitions and only then show it. Incremental refresh shortens the load, but moves none of that work.

    The durable fix is that cleaning and meaning happen underneath the report, in the platform, so every report lands on the same numbers. See what data architecture is for how those layers relate.

    In short

    Incremental refresh pays off as soon as your table is bigger than the part that changes, and your source carries a trustworthy change date. It is not a trick to rescue a slow model: it is a way to make your refresh scale with change instead of with the archive.

    Sources

    Every claim in this article can be checked at the source.

    1. 1
      Incremental refresh for semantic models in Power BI

      Microsoft Learn

      Officiele beschrijving van partitionering en de vereisten aan de filterkolom.

      Back to the text

    Next step

    Want to see what's already inside your organization?

    Leave your details. We'll reach out and plan a scan. Within thirty days you'll see one concrete result.

    No newsletter, no reselling. Just this conversation.

    Comments

    Comments are reviewed by the editors before they appear.

    Use your Google or Apple account, or your business email address.

    Sign in to comment