Hourly
Get an email when a dataset refresh fails
You hear about a failed refresh once, before anyone reads yesterday's numbers.
- Runs
- Hourly
- Apps
- Power BI
- AI
- Not needed
- Access
- read (workspace Member)
Send this to your assistant
Create a ClickRuntime automation: every hour, check the datasets in my Power BI Finance workspace and email me if the latest refresh of any of them failed, once per failure.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A finance lead opens the Monday revenue report in Power BI and the numbers match last Friday. The scheduled dataset refresh failed over the weekend because a database password was rotated or a gateway went offline, and Power BI only records that in refresh history. Nobody gets pushed a message, so decisions get made on stale figures.
Every hour, ClickRuntime checks each dataset in your workspace, reads its latest refresh history entry and sends an alert when the status is Failed. It remembers which failures it already reported, so a dataset that stays broken for a day does not produce twenty-four identical messages. The alert names the dataset and when the attempt failed.
BI owners who support many reports for people outside the data team gain the most, since those viewers will never notice a stale dataset themselves.
What you get out of it
Stale numbers stop reaching decision makers
When a refresh fails, executives keep reading the last good data without knowing it. A prompt alert lets you fix the credentials and refresh before the Monday meeting rather than correcting a decision afterwards.
The failing dataset is named
The alert says which dataset failed and when. In a workspace with dozens of datasets that saves the trip through every refresh history page, and it points straight at the gateway or credential that broke.
One alert per failure, not a flood
Because the last reported failure is remembered, a persistent problem produces a single message instead of hourly repeats. People keep reading the alerts rather than filtering them into a folder they never open.
Credential expiry gets caught early
Expired passwords and rotated keys are the usual cause of refresh failures. Hourly checks mean a rotation on Friday afternoon is noticed that evening, not discovered when a client asks why the dashboard is wrong.
Report owners are no longer the monitoring tool
Analysts often open reports every morning just to check they refreshed. Handing that check to an hourly alert returns the time and removes the dependence on whoever happens to look first.
How it works
What happens, step by step
Every hour, ClickRuntime lists the datasets in your Power BI workspace and checks each one's latest refresh.
It picks out refreshes that failed and skips any it has already told you about.
You get one email per failure with the dataset name, when it failed and the error, before anyone reads yesterday's numbers.
Before it runs live
- Connect Power BI
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Power BI steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify, state
GROUP_ID = "f089354e-8366-4e18-aea3-4cb4a3a50b48" # Finance workspace
API = f"https://api.powerbi.com/v1.0/myorg/groups/{GROUP_ID}/datasets"
@on_trigger
def run(event):
headers = {"Authorization": f"Bearer {credentials.connection('power-bi', 'work')}"}
seen = state.get("alerted") or {}
failures = []
for ds in http.get(API, headers=headers).json()["value"]:
if not ds.get("isRefreshable"):
continue
last = (http.get(f"{API}/{ds['id']}/refreshes", params={"$top": 1}, headers=headers).json()["value"] or [{}])[0]
if last.get("status") == "Failed" and seen.get(ds["id"]) != last.get("requestId"):
failures.append(f"{ds['name']}: failed at {last.get('endTime', '')[:16]}\n {last.get('serviceExceptionJson', '')[:300]}")
seen[ds["id"]] = last.get("requestId")
if failures:
notify.email_me(f"{len(failures)} Power BI refreshes failed", "\n".join(failures))
state.set("alerted", seen)
return {"failures": len(failures)}FAQ
Common questions
Does it need Power BI Premium?
Which refresh statuses trigger an alert?
Can it monitor only certain datasets?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Refresh a dataset when your data load finishes
Your report updates right after new data lands, and you get an email saying whether it worked.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksKeep exploring
Set up “Get an email when a dataset refresh fails” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.