Search…

Reports and Dashboards

Keep Your Data Fresh with the Last Refresh Date in Power BI

Keep Your Data Fresh with the Last Refresh Date in Power BI

Show when a Power BI report's data last refreshed: a one-row Power Query table, a card, and the fix for times that show in UTC after publishing.

Show when a Power BI report's data last refreshed: a one-row Power Query table, a card, and the fix for times that show in UTC after publishing.

Written By: Sajagan Thirugnanam

Last Updated on September 23, 2026

To show when a Power BI report last refreshed, add a one-row table in Power Query that records the current time, load it into the model, and display it on a card. The time is captured every time the semantic model refreshes, so the card always shows the latest refresh. After publishing, the service records this time in UTC, so convert it or label it, as shown below.

Why show the last refresh date

  • Readers trust the numbers. They can see whether the data came from the latest scheduled refresh or is several days old.

  • Missed refreshes show up. If a scheduled refresh fails, the date on the card stops moving, and readers notice before a decision is made on stale data.

  • Refresh problems are easier to trace. A date that lags the schedule is the first sign a refresh is failing or taking too long.

How to add the last refresh date

  1. In Power BI Desktop, select Transform data on the Home ribbon to open Power Query Editor.

    Power BI Desktop report with the Transform data button outlined on the Home ribbon

    Power BI Desktop > Home > Transform data.

  2. Select New Source > Blank Query.

    Power Query Editor with the New Source menu open and Blank Query outlined

    Power Query Editor > Home > New Source > Blank Query.

  3. Right-click the new query, select Rename, and name it Last Refreshed Date.

  4. Select Advanced Editor on the Home ribbon, replace the contents with the code below, and select Done.

let
    Source = #table(
        type table [Date Last Refreshed = datetime],
        {{DateTime.LocalNow()}}
    )
in
    Source

#table builds a table from a column definition and a list of rows. Here it is one column of type datetime and one row holding the time the query runs.

Power Query Advanced Editor for the Last Refreshed Date query, showing the #table code with DateTime.LocalNow and no syntax errors

The Advanced Editor with the query in place.

  1. Select Close & Apply.

  2. On the report page, add a Card visual and put Date Last Refreshed in its field well. Format it to fit the report.

Power BI report with a card at the top showing the date and time the data was last refreshed, next to the date and country slicers

The finished card at the top of the report page, next to the slicers.

Fix the time zone after publishing

In Power BI Desktop, DateTime.LocalNow() returns your computer's local time. In the Power BI service, refresh runs in UTC, so the same code returns UTC. A report refreshed at 06:00 in Berlin during summer time shows 04:00.

To show a local time, start from UTC and apply the offset you want:

let
    RefreshedUtc = DateTimeZone.UtcNow(),
    RefreshedLocal = DateTimeZone.RemoveZone(DateTimeZone.SwitchZone(RefreshedUtc, 1)),
    Source = #table(
        type table [Date Last Refreshed = datetime],
        {{RefreshedLocal}}
    )
in
    Source

SwitchZone(RefreshedUtc, 1) moves the time to UTC+1, and RemoveZone drops the offset so the column loads as a plain datetime. Because it starts from UTC, it returns the same result in Desktop and in the service.

A fixed offset does not follow daylight saving time, so this is one hour off for part of the year in most of Europe and North America. If readers are spread across time zones, or the hour matters, keep UTC and say so on the card. Replace DateTime.LocalNow() with DateTimeZone.RemoveZone(DateTimeZone.UtcNow()) and label the card "Refreshed (UTC)".

Show it as a label

A card showing a bare timestamp can confuse readers. A measure turns it into a sentence:

Last Refreshed Label =
"Data refreshed "
    & FORMAT ( MAX ( 'Last Refreshed Date'[Date Last Refreshed] ), "yyyy-mm-dd hh:nn" )

Put the measure on a card or in a text box in the page header. The ISO date format reads the same way in every country.

Refresh time is not data freshness

The refresh time says when Power BI last loaded the data. It does not say how current the source was. If the source system stopped updating two days before the refresh, the card still shows the refresh time.

When that matters, show the latest date in the data as well:

Latest Order Date =
MAX ( Sales[OrderDate] )

A report that shows "Data refreshed 2026-03-02 06:00" next to "Latest order 2026-02-28" tells readers exactly what they are looking at.

How it behaves with dataflows and incremental refresh

  • Dataflows. If the model reads from a dataflow, the card shows when the model refreshed, not when the dataflow did. If the dataflow runs late, the model can refresh on time and still load old data. The latest-date measure above catches that. See how and when to use dataflows.

  • Incremental refresh. The Last Refreshed Date table has no refresh policy, so it reloads fully on every refresh and stays correct. See incremental refresh in Power BI.

Where to put it on the page

Put the card in the same place on every page, usually the header next to the title or the slicers. Keep it small and in a muted color, since it is reference information, not a KPI. For more on page layout, see our guides to dashboard layout and formatting and data visualization best practices in Power BI.

Sources

Want Power BI expertise in-house?

Get in Touch With Us

Turn your team into Power BI pros and establish reliable, company-wide reporting.

Berlin, DE

powerbi@casewhen.co

Follow us on

© 2026 CaseWhen Consulting
© 2026 CaseWhen Consulting
© 2026 CaseWhen Consulting