Understanding Refresh Time Display in Power BI
Are you struggling to keep track of when your Power BI reports were last updated? Organizations often need to monitor data freshness but find it challenging to display this information directly in their reports.
Solution Overview
We’ll create a dynamic refresh time indicator using DAX and display it prominently in your Power BI report. This solution works for both Power BI Desktop and Service.
Data Model
Single-table solution using a calculated table to store and display refresh time information.
Implementation Steps
- Create a new calculated table using DAX:
RefreshTime =
DATATABLE(
"LastRefresh", STRING,
"Value", DATETIME,
{{"Last Updated", NOW()}}
)
- Add a new measure for formatting:
LastRefreshDisplay =
VAR CurrentTime = SELECTEDVALUE(RefreshTime[Value])
RETURN
FORMAT(CurrentTime, "mm/dd/yyyy hh:mm:ss AM/PM")
- Create the visual:
- Add a card visual to your report
- Drag LastRefreshDisplay measure to the Fields section
- Format the card to match your report theme
- Configure refresh settings:
- In Power BI Desktop: The time updates on each manual refresh
- In Power BI Service: Set up scheduled refresh to update automatically
- Optional: Add automatic time zone conversion
LocalRefreshTime =
VAR UTCTime = SELECTEDVALUE(RefreshTime[Value])
RETURN
UTC2LOCAL(UTCTime)

Label Power BI refresh timestamps so readers know what changed
Start with a reversible check that separates configuration from missing data. Decide whether the report should show source update time, semantic model refresh time, or the viewer’s current time. Do not combine several repairs at once; a successful result would not reveal which change mattered.
Isolate the failing layer
Generate a refresh timestamp in Power Query when the model loads rather than with a volatile report-time expression. Store a time-zone identifier beside the timestamp or convert it deliberately for the intended audience. Use a non-sensitive sample and the normal user account so owner or administrator privileges do not hide the problem.
Compare Desktop refresh with scheduled service refresh. Preserve the original state until the new result survives a restart or synchronization cycle.
Verify normal use
Test daylight-saving transitions and gateway time zones. Do not label a cached import model as live data. Compare the outcome with the expected business workflow, not only a one-time technical test.
Record the application version, account type, device, time, and exact error if behavior still differs. That evidence helps support distinguish a local cache, profile, permission, data, policy, hardware, or service problem. Remove names, addresses, file content, and credentials from screenshots before sharing them.
Have another authorized user repeat the shortest safe test when shared access is involved. Reverse experimental settings that did not help, and keep a note of the final working condition for the next update or device change. Recheck the result after the next sign-in or scheduled cycle when timing can affect it. Keep a concise note of the successful condition so it can be restored later. Verify that the change did not alter unrelated files, permissions, or settings. Recheck the result after the next sign-in or scheduled cycle when timing can affect it.
Troubleshooting
- If refresh time doesn’t update: Verify that your dataset has automatic refresh enabled
- For blank values: Check if the RefreshTime table was created successfully
- Time zone issues: Use UTC2LOCAL function to convert to local time
- Performance concerns: The calculated table has minimal impact on report performance