As you’ve probably heard and read before, monitoring your Fabric environment as a whole is quite important. It really does help to know what’s going on.
Now, one thing I’ve learned over all these years is that report users do quite like their data to be as fresh and up to date as possible. And, when the data seems stale, they tend to ask questions.
If you’re using direct query or even direct lake (fancy you!), refreshing your semantic model is moot; there’s no data in there. But when you use import mode, the refresh becomes very important. Essential even!
Now, I’m very clear that you do not need to refresh when using direct query or direct lake. But let’s add a little nuance here. Because one refresh you will have to do is when the structure changes. You could call that a refresh, especially since this could be a breaking change to your report.
How to refresh
When you open your OneLake catalog in Fabric, you can explore all the items in your tenant, and filter on the semantic models available to you. When you select one, really, just pick anyone, you can select a number of ways to refresh the data.

As you can see, there are four options available here. You can do an immediate refresh, which will, unsurprisingly, refresh the data in the semantic model. You can also schedule the refresh.
When you select Schedule refresh, you’re taken to a whole different window within Fabric. There are a number of settings to find there around the refresh.

In the middle of this page, you can see the switch to configure a refresh schedule. When activated, you have two options.

Now, this sounds like a very non-granular way to refresh, especially since “daily” can be any time of day. Leaving it like this could result in some ‘surprises’. Let’s not do that, and add some times when to refresh.

As you can see, there is the option to add times when the schedule should run. Now, before selecting a time, I would urge you to look at the screenshot above. You can see that the timezone is, by default, on UTC. Either change it to a timezone that matches where you are, or do some calculations to make sure it’s done at the correct time. As an example, I only recently learned that Europe uses not only CET (Central European Time) but also CEST (Central European Summer Time). And because time zones are always lovely, this one switches somewhere in June, and is the one we need, even though CET is valid when the real summer time is activated. And no, I genuinely do not understand how, why, or why. And, why.
Anyway.

You can add your preferred refresh time, and that should be that. Now the question is, can you add unlimited refreshes? Well, no.
If you’re on the Power BI Pro license level, you can add a maximum of 8 per day, or every 3 hours if you spread them evenly throughout the day. If you’re at the Power BI Premium license level (Premium per user) and you have Fabric capacity, you can increase that to 48 per day, or to 30-minute intervals spread evenly throughout the day.
Most customers I’m working with have little to no need to refresh during the night, meaning they refresh every hour during business hours. Your use cases may vary. Also remember that these limitations do not apply with direct query and direct lake.
Refreshes outside the schedule count toward the maximum number of refreshes during the day.
Monitoring the refreshes
Back to the OneLake catalog. When you select a semantic model, you can also check the refresh history. Click on that, and you’ll see something like this.

You can also see many other options to refresh the data. These are outside the scope of this blog post, but if you want to read more, click here!
If you pay close attention, you can see that there are even details available.

This will give you some extra insights, should you need them. I’ve also found a refresh that failed:

The information shown here is usually necessary when you log a ticket with Microsoft, unless the issue is your capacity running out of steam, broken connections, or another issue you can deduce yourself.
I want to know when it breaks!
You can! When you schedule a refresh, you can notify the owner and others if there’s an issue.

By default, the model owner will get a notification. Now, it is best practice to make sure all items are owned by a Service Principal (App Registration in Entra ID). And usually, these do not have an Office 365 license assigned to them. So you may have to add yourself (or someone else) as a contact to inform them of issues.
Video!
And that’s about it. As always, the incredible Valerie Junk has created a video on this subject too! Click below to watch her take.
One thought on “DP-700 training: Monitor semantic model refresh”