10.2 Subscriptions, Alerts, and Semantic Model Refresh
Key Takeaways
- Subscriptions email a report/page snapshot (PDF, PowerPoint, or link) on a schedule or after refresh, with optional pre-set filters; one report can have many independent subscriptions.
- Data alerts fire only on dashboard tiles built from card, gauge, or KPI visuals, are checked only at refresh time, can trigger a Power Automate flow, and are capped at 250 per user.
- Scheduled refresh allows 8 refreshes/day on Pro (shared capacity) and 48/day on Premium Per User, Premium, or Fabric capacity.
- Incremental refresh requires two parameters named exactly RangeStart and RangeEnd of type Date/Time, plus a policy defining archive and incremental windows.
- Incremental refresh is configured in Desktop but partitions are created only after publishing to the service - in Desktop the parameters simply filter the data.
Quick Answer: Subscriptions email a report/page snapshot (PDF, PowerPoint, or link) on a schedule or after refresh, with optional pre-set filters. Data alerts notify when a dashboard tile (card, gauge, or KPI only) crosses a threshold. Scheduled refresh keeps Import data current — 8x/day on Pro, 48x/day on Premium/PPU/Fabric. Incremental refresh partitions data by date (via RangeStart/RangeEnd) so only recent partitions refresh, keeping refresh fast as data grows.
Email subscriptions
Open a report -> Subscribe to report. Each subscription is independent, so one report can have several with different filters and schedules.
| Setting | Options |
|---|---|
| Recipients | Self, other users, groups, external (with admin approval) |
| Frequency | Daily, Weekly (choose days), Monthly, or After data refresh |
| Time / dates | Specific time; optional start/end dates |
| Page | Which report page to capture |
| Filters | Pre-set filters baked into the snapshot |
| Format | PDF attachment, PowerPoint, or link only |
| Subject / message | Custom email text |
After data refresh sends only when the dataset actually refreshes — ideal when timing should follow data availability rather than a clock.
Data alerts
Data alerts live on dashboard tiles built from card, gauge, or KPI visuals (never on charts, tables, or reports). Configure via the tile's More options -> Manage alerts -> Add alert rule: a condition (Above/Below a threshold) and a notification cadence (e.g., at most once an hour / once a day).
- Alerts are checked only when the data refreshes — they do not poll continuously.
- Notifications arrive via email and the notification center.
- You can trigger a Power Automate flow when an alert fires (e.g., post to Teams, create a ticket).
- Limit: up to 250 alerts per user.
| Alerts | Subscriptions | |
|---|---|---|
| Trigger | Value crosses threshold | Schedule or after refresh |
| Delivers | A notification | A report snapshot |
| Where | Dashboard tiles only | Reports and dashboards |
| Visuals | Card/gauge/KPI | Any page |
Scheduled refresh
Configure under Semantic model -> Settings -> Refresh -> Scheduled refresh (frequency, time slots, time zone, failure notifications). Refresh limits by license:
| License | Max refreshes/day |
|---|---|
| Power BI Pro (shared capacity) | 8 |
| Premium Per User (PPU) | 48 |
| Premium / Fabric capacity | 48 |
Exam staple: Pro = 8 scheduled refreshes/day; Premium/PPU/Fabric = 48. The 8-refresh quota on shared capacity resets daily. (Higher cadence is possible only via the XMLA endpoint / API on Premium.)
Refresh types: full (reload everything), incremental (only changed partitions), on-demand (manual), and API/Power Automate-triggered. Monitor under Refresh history (start/end, duration, status, error detail).
Incremental refresh
Incremental refresh keeps refresh duration roughly constant as data grows, because only recent partitions reload.
Step 1 — parameters. In Power Query, create two parameters named exactly RangeStart and RangeEnd, both Date/Time (these reserved names are required).
Step 2 — filter the table using them:
Table.SelectRows(Source, each [OrderDate] >= RangeStart and [OrderDate] < RangeEnd)
Step 3 — policy. Right-click the table -> Incremental refresh: set Archive data for the last N years/months and Incrementally refresh the last N days/months. Optionally enable Detect data changes (only refresh partitions where a watermark column changed) and Only refresh complete periods.
After publishing, the service creates date-based partitions automatically and refreshes only those in the incremental window; archive partitions stay loaded. Note the key exam fact: you configure incremental refresh in Desktop, but partitioning only happens after you publish to the service — in Desktop the parameters simply filter the data.
Detect data changes and "only refresh complete periods"
Two incremental-refresh options deserve their own treatment because they change behavior meaningfully. Detect data changes adds a poll-column step: instead of blindly refreshing every partition in the incremental window, Power BI checks a max(LastModified) watermark per partition and refreshes only partitions whose watermark actually moved — so a refresh that would touch the last 10 days might reload just the 2 days that changed. Only refresh complete days/months prevents loading a partial current period (e.g., it won't load a half-finished current month), which keeps period-over-period comparisons clean.
Both are optional toggles in the incremental-refresh policy dialog.
Refresh failures: the troubleshooting order
The exam frequently presents "scheduled refresh fails — why?" Work the likely causes in order: (1) expired or wrong credentials on the data source (the most common cause — re-enter them in dataset settings); (2) a missing or offline gateway for on-premises sources; (3) a timeout because the refresh exceeded the duration cap (2 hours on Pro, 5 hours on Premium); (4) a source schema change (renamed/removed column) that breaks a query step; or (5) capacity throttling on an overloaded Premium capacity.
Failure notifications can be routed to the dataset owner and additional specified addresses, and Refresh history gives the exact error.
Alerts, subscriptions, and Power Automate
Know how the three notification mechanisms differ. A subscription pushes a snapshot on a schedule. A data alert pushes a notification when a tile value crosses a threshold (checked only at refresh). A Power Automate flow can be triggered by a data alert to do something richer — post to a Teams channel, create a ticket, send a templated email to a distribution list, or even write back to a system. So "notify the on-call team in Teams when inventory drops below 100" is a data alert + Power Automate pattern, not a subscription.
On the exam
Frequent items: choose a subscription (weekly, PDF, region filter) for scheduled delivery; recall that data alerts require card/gauge/KPI dashboard tiles and can trigger Power Automate; recall 8 (Pro) vs 48 (Premium/PPU/Fabric) refreshes/day and the 2h/5h duration caps; name the RangeStart/RangeEnd Date/Time parameters for incremental refresh; and know Detect data changes refreshes only partitions whose watermark moved.
A manager wants to receive an email every Monday morning with a PDF of the weekly sales report showing only their region. What should you configure?
Data alerts in Power BI are available on:
What are the two parameters required for incremental refresh, and what data type must they be?
How many scheduled refreshes per day does a dataset on Power BI Pro (shared capacity) allow, and how many on Premium/PPU?