How to Get Report Refresh Date in Power BI

Cody Schneider••8 min read

Ever look at a Power BI report and have that brief moment of uncertainty, wondering, "Is this data from today, this morning, or last week?" It's a common headache for both report creators and viewers. Without a clear timestamp, users might hesitate to trust the insights or, worse, make critical decisions based on outdated information. This post will walk you through a few straightforward methods to add a "Last Refreshed" date and time directly into your Power BI reports, adding clarity and confidence for everyone who uses them.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Why Display the Last Refresh Date in Your Power BI Report?

Adding a simple refresh timestamp might seem like a small detail, but it delivers significant value. It’s one of those little touches that separates a good report from a great one.

  • Builds Trust and Confidence: When users can immediately see that the data is current, they trust the visuals and insights derived from it. It removes the ambiguity and guesswork.
  • Prevents Bad Decisions: This is the most critical reason. If a user thinks they are looking at real-time sales numbers but the data is from two days ago, they could make flawed decisions about inventory, ad spend, or staffing.
  • Simplifies Troubleshooting: Did a scheduled data refresh fail overnight? A visible timestamp makes it immediately obvious. Instead of wading through admin settings, you or your users can instantly spot that yesterday's date is still showing and flag the issue.
  • Signals Professionalism and Care: It shows that you, the report creator, have considered the user's experience. It’s a mark of a well-maintained and reliable dashboard.

Fortunately, adding this feature is much easier than you might think. Let’s go through the most effective methods.

Method 1: The Simple, Built-in Way Using Power Query

This is the most common and reliable method for showing a single, report-wide refresh timestamp. We’ll use the Power Query Editor to create a simple query that captures the exact moment the data is refreshed. Every time your dataset is updated — whether manually or on a schedule — this timestamp will update with it.

Here’s how to set it up step-by-step.

Step 1: Open the Power Query Editor

From your Power BI Desktop file, navigate to the Home tab on the ribbon and click on Transform data. This will launch the Power Query Editor, which is where all the magic happens for shaping and cleaning your data before it hits the report canvas.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Step 2: Create a New Blank Query

In the Power Query Editor, go to the Home tab, click on the New Source dropdown, and select Blank Query at the bottom of the list. This creates an empty query that isn't tied to any data source — we're going to give it a single, simple instruction.

Step 3: Enter the M Code Formula

With your new blank query selected, you'll see a formula bar at the top (if you don't, go to the View tab and check the "Formula Bar" box). In this bar, type the following M code formula and press Enter:

= DateTime.LocalNow()

This command does exactly what it says: it fetches the current date and time from your system when the query is run. Think of it like taking a digital snapshot of the clock at the very moment of refresh. You'll immediately see the current date and time appear as the query's output.

Step 4: Convert to a Table

Right now, the output is just a single date/time value. To use it in your Power BI report visualization, you need to convert it into a table. This is very easy. With the date/time value visible, look for the To Table button in the Convert section of the ribbon. Click it. A small pop-up will appear, you can just click OK without changing any settings.

Step 5: Rename for Clarity

To keep things organized, let's give our query and column meaningful names. In the Query Settings pane on the right, change the query name from "Query1" to something descriptive like "Last Refreshed Date". Then, double-click the column header (likely named "Column1") and rename it to "Refresh Timestamp".

Step 6: Close & Apply

Now that your query is set up, click the Close & Apply button in the top-left corner of the Power Query Editor. This saves your changes and loads this new single-cell table into your data model, making it available for your report.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Step 7: Add the Timestamp to Your Report

You're ready to display your timestamp! The best way to do this is with a Card visual.

  1. In the main Power BI report view, select the Card visual from the Visualizations pane.
  2. Drag your "Refresh Timestamp" field from the "Last Refreshed Date" table in the Data pane onto the "Fields" area of the Card visual.

You'll now see the refresh date and time on your report canvas. You can format it, change its size, and place it in a corner of your report (the top-right or bottom-right footer are common spots).

Method 2: Using a DAX Measure (and Understanding a Key Difference)

You might be tempted to use a DAX function like NOW() or UTCNOW() to achieve this. While DAX is incredibly powerful, it's important to understand how its time functions behave differently from the Power Query method.

A DAX measure using NOW() will update whenever the report is interacted with or a calculation is triggered. This means it reflects the time the report was viewed or filtered, not the time the underlying data was refreshed from its source.

If your goal is to show users when they are looking at the report, DAX is fine. But to show data freshness, the Power Query method is the correct choice.

Here's how you'd create a "Last Viewed" measure for comparison:

  1. Right-click on any table in the Data pane and select New measure.
  2. Enter the following DAX formula:

Last Viewed Time = "Report last viewed at: " & FORMAT(NOW(), "MM/DD/YYYY hh:mm:ss AM/PM")

  1. Add this measure to a Card visual.

You'll notice this timestamp changes as you interact with slicers and filters, while the one you made in Power Query will remain static until the next time you refresh your entire dataset.

When to Use Which:

  • Use the Power Query method (Method 1) to show when the data was last refreshed. This is the best practice for building trust in the data's recency.
  • Use the DAX NOW() method if you specifically need to show when a user last interacted with the live report.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Advanced Technique: Displaying Refresh Times for Specific Tables

What if your report uses multiple data sources with different refresh schedules? For example, your sales data might refresh every hour from a SQL database, while your marketing campaign data only updates once a day from a CSV file.

In this case, a single report-wide timestamp could be misleading. You can use a slight variation of the Power Query method to create a timestamp for each key table.

The process is nearly identical to Method 1, repeated for each source:

  1. Open the Power Query Editor.
  2. Create a blank query and name it something like Sales Data Refresh.
  3. Use the DateTime.LocalNow() formula and convert it to a table named Sales Refresh Time.
  4. Create another blank query named Marketing Data Refresh and do the same, naming its column Marketing Refresh Time.
  5. Close & Apply.

Back in your report view, you can now create a small table or use multiple Card visuals to clearly display the freshness of each distinct data source. For instance:

  • Card 1 Title: Sales Data Last updated
  • Card 1 Value: [From Sales Data Refresh query]
  • Card 2 Title: Marketing Data Last updated
  • Card 2 Value: [From Marketing Data Refresh query]

This approach provides granular clarity and is essential for complex reports with varying data velocity.

Final Thoughts

Adding a 'last refreshed' date to your Power BI reports is a small change that builds tremendous user trust and makes your dashboards more reliable. Whether you use a simple Power Query function for a report-wide timestamp or track multiple tables individually, this simple step ensures everyone looking at your report knows they are acting on the most up-to-date data available.

This kind of manual setup and ongoing maintenance is precisely why keeping reports current can often feel like a full-time job. With Graphed, we’ve automated this entire process. We connect directly to your marketing and sales platforms so your dashboards are always real-time, pulling in live data automatically. You never have to create refresh timestamps or worry if the data is stale - everything is always current, giving you back the hours you'd otherwise spend wrestling with queries and visuals.

Related Articles