How to Add Last Refresh Date in Power BI

Cody Schneider9 min read

Nothing erodes trust in a dashboard faster than stale data. If your team can't tell whether they're looking at numbers from this morning or last week, they'll stop using your report. Adding a "last refreshed" date and time to your Power BI report is a simple, professional touch that immediately tells users the data is current and trustworthy. This article will walk you through the most reliable way to add this feature, step-by-step.

Why You Should Always Include a "Last Refreshed" Date

While it might seem like a minor detail, displaying when your data was last updated is incredibly important for a few key reasons:

  • Builds User Trust: It's the most direct way to signal the freshness of your data. When users see a recent timestamp, they can confidently make decisions based on what they're seeing. Without it, they're left wondering and may revert to old habits of requesting manual reports.
  • Simplifies Troubleshooting: If a report seems "off" or numbers are not matching expectations, the very first thing to check is the refresh date. Is the scheduled refresh failing? Did a manual refresh not complete? This timestamp gives you and your users an immediate diagnostic tool.
  • Increases Professionalism: Adding this small element is a hallmark of a well-built, user-friendly report. It shows that you’ve considered the user experience and have built something robust and reliable.

The Best Method: Using Power Query

The most reliable and accurate way to capture the last refresh date is by using the Power Query Editor. This method records the date and time at the exact moment the dataset is refreshed, whether on your desktop or automatically in the Power BI Service. Other approaches, particularly some DAX functions, can be misleading as they often show the time the report was viewed, not when the data was updated.

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

Step 1: Open the Power Query Editor

From your main Power BI Desktop window, navigate to the Home tab on the ribbon and click on Transform data. This will launch the Power Query Editor, which is where you'll make changes to your underlying data queries.

![Opening Power Query Editor in Power BI](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image1.png)

Step 2: Create a New Blank Query

Once you are in the Power Query Editor, right-click anywhere in the blank space of the Queries pane on the left side and select New Query > Blank Query. Alternatively, on the Home tab of the ribbon click New Source > Blank Query.

![Creating a new blank query in Power Query](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image6.png)

Step 3: Enter the M Query Code in the Advanced Editor

Once you create your blank query, it will appear as a query with a default name (e.g., Query1). With the new query selected, go to the View tab on the ribbon and click on Advanced Editor. This will open a window that lets you directly edit the M code behind your query.

![The Advanced Editor button in the Power Query Editor](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image5.png)

Replace any text that is in there with the following simple M code one-liner:

let
    Source = DateTime.LocalNow()
in
    Source

This simple command uses an M function called DateTime.LocalNow() to capture the current date and time of the system where the refresh is happening. This is what makes it so reliable. Click Done to close the window.

Step 4: Convert the Query to a Table

Now you'll see the output of the query is just a single date/time value. To load it into the Power BI Data Model, you need to convert it into a table. This is easy.

In the Power Query pane on the left, make sure your new query is selected. Then, go to the Transform tab in the contextual ribbon and click the To Table button. A dialog box will appear. Just click OK as you don't need to change any of the settings.

![Converting the value into a one-column table in Power Query](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image10.png)

Step 5: Rename and Format the Column and Query

You’re almost there! There are just a couple of final clean-up steps to make this data ready to use in your report:

  • Name the Column: Double-click on the column header Column1, and rename it to something like "Last Refresh".
  • Change the Data Type: Next, click on the data type icon next to the column header (it might show an ABC or 123 icon) and select Date/Time. This ensures Power BI treats it properly.
  • Rename the Query: In the Query Settings pane on the right, rename the default Query1 name to something more memorable, like "Last Refresh Query".

![Renaming both the column and the query in Power Query Editor](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image3.png)

Step 6: Close & Apply

Once your changes are saved, click the Close & Apply button on the Home ribbon of the Power Query Editor. This will load the new "Last Refresh" field to your data model.

Displaying the Last Refresh Date on Your Report

Now for the fun part. With your new field added to your data model, it’s time to display it visibly for your users. The two most common and effective ways are using a Card visual or a Text Box with a dynamic value.

1. Using a Card Visual

This is probably the quickest way to get the date on-screen.

  1. In your Power BI Desktop window, drag and drop a Card visual onto your canvas.
  2. From the Fields pane on the right, drag your new "Last Refresh" field into the "Fields" well for the card.

From there, you’ll want to format it to make it more clear:

  • Format the Date: With the card selected, go to the Format (paint roller icon). Under Visual > Callout value, you can adjust the formatting, though a better method is to select the "Last Refresh" field in the Data pane and use the "Format" option in the top ribbon to choose a specific date/time format.
  • Add Contextual Text: A lone date isn't very helpful. Turn off the card's category label and instead, add a Text Box beside or below the card giving it context, like "Data Last Refreshed On:".

![Formatting a Card visual displaying the last refresh date](https://media.graphed.com/bl-assets-v2/how-to-add-last-refresh-date-in-power-bi/image7.png)

2. Using a Text Box With a Smart Narrative / Dynamic Value

A cleaner, more integrated approach is to use Power BI's "Smart Narrative" or dynamic value feature, embedding the value directly inside a text box.

  • Insert a Text box onto the canvas (Insert > Text box).
  • Add a static title, like "*Data updated as of *" with a space at the end.
  • Put your cursor a space after the text and click the + Value button at the bottom of the formatting options.
  • In the Value dialog box that appears, search for and select your Last Refresh field from your "Last Refresh Query" and click Save.

Your text box will now automatically display your last update date/time, looking something like "Data updated as of 10/17/2024 10:20 AM".

A Common Mistake: Using DAX Functions Like NOW() or TODAY()

You might be tempted to just create a simple DAX measure that uses NOW() or TODAY() to display the last refresh date. You should avoid this, as it is usually misleading.

The DAX functions NOW() and TODAY() do not show when your dataset was refreshed. They show when the report was last opened or interacted with by a user in the Power BI Service. This creates a false sense of security.

Imagine your dataset was scheduled to refresh on Monday morning at 8 AM, but it failed. A user then opens the report on Wednesday at 10 AM. A DAX measure using NOW() will proudly display "Wednesday, 10 AM," making it seem like the data is up-to-the-minute, when in fact it's still containing faulty data from Monday. This critical distinction is why the Power Query method is superior, because it reliably records the time during the actual dataset update event, giving the user a true statement of truth.

Troubleshooting Common Issues

While the Power Query process is pretty straightforward, you might run up against a couple of common potential problems.

Time Zone Discrepancies

Power Query's DateTime.LocalNow() function records the time of the machine where the refresh happens.

On your desktop, this is your own local machine and time. When you publish your report to the Power BI Service, the refresh occurs on Microsoft's servers, which typically runs on Coordinated Universal Time (UTC). For most users, seeing the UTC time on their report is fine once they know to expect it, but you may occasionally experience a time shift in the service that is several hours different than what you see on your desktop after a refresh.

For most cases, simply knowing that the timestamp in the service is UTC is fine. But if you absolutely need the Local Zone time, you can adjust your M query code with a function like DateTimeZone.ToLocal(DateTimeZone.UtcNow()) instead of DateTime.LocalNow().

Failed Refreshes and the Last Refresh Date

Another common concern is what happens in the case of a scheduled refresh that fails in the Power BI Service. The 'Last Refreshed Date' query will not execute during a failed refresh attempt. This means the date displayed on your report will continue to reflect the time of the last successful refresh. A relief for sure, but it definitely underscores why your team needs to have an eye on the Refresh history for your Power BI Datasets in the Service to ensure your scheduled refreshes aren't quietly failing in the background!

Final Thoughts

Incorporating a "last refreshed" date into your Power BI reports is one of the easiest and most effective ways to build trust and create a more professional dashboard. By using the Power Query method, you ensure that the timestamp you’re showing is an accurate reflection of the actual data update process, giving everyone confidence to rely on the insights and make clear, data-driven decisions.

While details like this last refresh date are keys to making an effective report, we also know that so much time is burned just by doing simple data analysis - a process which is a huge pain even with powerful tools like Power BI. That's why we’ve really wanted to simplify this reporting with Graphed. It's the easiest way to connect to marketing and sales tools like Google Analytics, Shopify, Facebook Ads or Salesforce, and use simple, plain English to build real-time monitoring of your most essential data to keep you consistently on top of fresh data without any difficult manual setup.

Related Articles

How to Connect Facebook to Google Data Studio: The Complete Guide for 2026

Connecting Facebook Ads to Google Data Studio (now called Looker Studio) has become essential for digital marketers who want to create comprehensive, visually appealing reports that go beyond the basic analytics provided by Facebook's native Ads Manager. If you're struggling with fragmented reporting across multiple platforms or spending too much time manually exporting data, this guide will show you exactly how to streamline your Facebook advertising analytics.

Appsflyer vs Mixpanel​: Complete 2026 Comparison Guide

The difference between AppsFlyer and Mixpanel isn't just about features—it's about understanding two fundamentally different approaches to data that can make or break your growth strategy. One tracks how users find you, the other reveals what they do once they arrive. Most companies need insights from both worlds, but knowing where to start can save you months of implementation headaches and thousands in wasted budget.