Monitoring ADF pipeline failures in the context of Power BI requires two things: detecting the failure in ADF, and understanding which Power BI datasets are affected by that failure.
Detecting ADF failures
ADF provides several built-in monitoring mechanisms:
- Azure Monitor integration: ADF can send diagnostic logs and metrics to Azure Monitor. Alert rules can be configured on failed pipeline runs, with notifications via email, Teams, or webhook.
- ADF native alerts: In the ADF Monitoring Hub, you can configure pipeline-level alerts for failures. These fire on individual pipeline failures but don't aggregate across pipelines or correlate with downstream effects.
- ADF REST API: The
queryPipelineRunsandqueryActivityRunsendpoints return run history with status, error messages, and output metrics (includingrowsCopied). Polling this API detects failures and zero-row copies.
Detecting zero-row copies (silent ADF failures)
ADF reports a pipeline run as Succeeded based on execution, not on whether data was copied. A zero-row copy — where the source had no data — shows as Succeeded. To detect this, check the rowsCopied metric in the Copy Activity output. If it's 0 or significantly below baseline, the pipeline technically succeeded but Power BI will get stale data.
Connecting ADF failures to Power BI impact
To understand which Power BI datasets a failed ADF pipeline affects, you need to know: 1. Which tables did this pipeline write to (sink dataset in the Copy Activity configuration)? 2. Which Power BI datasets read from those tables (from the Power BI datasource API)? 3. When are those datasets next scheduled to refresh?
If the next Power BI refresh runs before the pipeline is rerun and succeeds, those datasets will load stale data.
Proactive alerting
The most valuable alert pattern is proactive rather than reactive: when an ADF pipeline fails at 02:30, and you know three Power BI datasets are scheduled to refresh at 05:00 and depend on this pipeline's output, alert at 02:30 with this context. This gives you time to fix or delay the Power BI refresh before users see stale data.