As Data Analysts, we always strive to ensure our reports and dashboards are up-to-date. Displaying the last refresh date helps users trust the data they’re viewing.
In this simple tutorial we will add a card displaying the last refresh time to a Power BI dashboard.
As always, we will use a simple data set consisting of the EmployeeData table and the following fields: ID: Int, Name: Text, Department: Text, HireDate: Date, Salary: Currency.
Show last refresh time in Power BI
- Open your report in Power Bi Desktop.
- In either of the Report, Table or Model views, hit Modeline and then select New Measure.
- Create a new measure for the last refresh date:
Last Refresh = FORMAT(MAXX(CALCULATETABLE(EmployeeData, ALLEXCEPT(EmployeeData, EmployeeData[ID])), EmployeeData[HireDate]), "DD/MM/YYYY HH:mm:ss")
- Add a card visual to your report.
- Drag the “Last Refresh” measure onto the card visual.
- Format the card visual:
- Change the category label to “Last Data Refresh:”
- Adjust font size and color as needed
- Position the card in a prominent location on your report, such as the top right corner or bottom left.

Explanation
The DAX formula uses MAXX to iterate through all rows in the EmployeeData table, returning the maximum (i.e., latest) refresh date. FORMAT converts this to a readable date-time string.
This approach works because Power BI updates the maximum ID value during each refresh. By capturing this, we indirectly get the last refresh time. If the requirement is elapsed time between two business dates rather than the latest refresh stamp, use a separate date-interval calculation.
Define what the displayed Power BI refresh time means
Use a narrow comparison to find the failing layer before applying a repair. Generate the value during refresh and label its time zone. Record the account, device or client, and exact symptom so every later test uses the same starting point. Avoid combining resets, reinstalls, and permission changes because a successful result would not identify which action mattered.
Test the most likely boundary
Compare Desktop and service refresh behavior. Use non-sensitive sample data and a standard user account whenever possible. If the sample succeeds, compare its location, ownership, policy, and data shape with the failing item rather than widening the repair to the whole application.
Do not imply live data when the model uses scheduled import. Preserve the original file, configuration, or identifier until the result is confirmed. A locked option or organization message is evidence of an administrative boundary, not an invitation to bypass policy.
Escalate with useful evidence
undefined. Close and reopen the relevant app, then repeat the ordinary workflow. Check a second client or observer only when it answers a specific question about synchronization, permissions, hardware, or service availability.
When results differ, note the app version, account type, time, network, and exact error. That information separates a device problem from account, data, permission, or service behavior and gives support a focused case. Remove personal names, addresses, document text, and tokens from screenshots before sharing them.
Have another authorized user repeat the shortest safe test if shared access is involved. Their result may expose owner-only privileges, stale state, or an assumption about storage. Keep the known-good configuration available until the change survives a restart, refresh, or normal work cycle, and reverse experimental settings that did not help. Check the outcome again after the next scheduled synchronization when timing can affect the feature.
Last Refresh not showing up
- If the refresh date isn’t updating: Ensure that your dataset is set to refresh automatically or manually refresh it.
- If you see an error in the card: Check that your measure syntax is correct and that the EmployeeData table exists.
- If the time seems incorrect: Verify your Power BI service time zone settings.
- For reports with multiple tables: Modify the DAX to reference the most frequently updated table or create separate measures for each critical table.
Remember, this method shows when the data was last refreshed in Power BI, not necessarily when the source data was last updated. For the most accurate tracking, consider adding a “LastUpdated” column in your source data and reference that in your Power BI measure.