LowCodeStacks
Sign in

Refresh on your terms: table-level refresh, automatic retries and refreshing from Power Automate

Refresh only the Power BI table that changed, refresh data without pulling in schema changes, retry failed refreshes automatically, and trigger refresh from Power Automate when the data is ready instead of on a fixed clock. With the limits for each.

Power BIFix · Tutorial4 min read

Checked against Microsoft Learn · 7 sourcesHow we write guides

Scheduled refresh at fixed times works until it doesn't: the data lands late, one huge table makes everything slow, or a refresh fails at 3 a.m. and nobody re-runs it. Power BI now gives you finer control. Here's what to use, and when.

Know your limits first

Shared capacity (Pro)Premium, PPU or Fabric capacity
Scheduled refreshes per day848
Longest refresh2 hours5 hours (longer through XMLA)
API-triggered refreshesCount toward the 8No fixed number; limited by capacity resources
Refresh now in the serviceDoesn't count toward the 8—

Also good to know:

  • A schedule is turned off after 4 failures in a row.
  • Scheduled refresh is paused after two months of nobody viewing the reports.
  • Scheduled refreshes start within about 15 minutes of the slot, occasionally up to an hour later, and can begin up to 5 minutes early.

1. Choose what to refresh

Open the Refresh drop-down, in Power BI Desktop or when editing the model in the service:

OptionDoesUse when
Refresh schema and dataSyncs the structure with the source, then loads data. This is the defaultNormal use
Sync schema onlyPicks up new columns or type changes without loading dataYou changed the source structure and want to check the model first
Refresh data onlyLoads fresh data and keeps the current structureThe source gained columns you don't want in the model yet

Table level: select a single table (in the service, in Model explorer) to refresh only that table's schema, data or both. That's ideal when one table changed and the rest is expensive to reload.

Warning

A schema sync removes columns or tables that were renamed or removed at the source. That can break visuals, measures and row-level security that depend on them. When a source changes shape, use Sync schema only and check the model before you refresh data.

In the service, when you only view a model, just Refresh data is offered. Switch to editing to see every option.

2. Retry failures automatically (Premium, PPU, Embedded)

The enhanced refresh REST API can retry by itself. Send a POST to …/groups/{workspaceId}/datasets/{modelId}/refreshes with a body such as:

json
{
  "type": "full",
  "retryCount": 2,
  "timeout": "02:00:00",
  "objects": [ { "table": "Sales" } ]
}
  • retryCount (default 0): how many times Power BI retries before marking it failed.
  • timeout (default 5 hours): applies to each attempt. Retries can make the total longer, but never more than 24 hours.
  • objects: refresh only the tables or partitions you list.
  • Only one refresh at a time per model. A second request while one runs gets 400 Bad Request.
  • You can check progress or cancel an enhanced refresh by its request ID, which you can't do with a normal refresh.

It needs a model on Premium, PPU or Embedded, and an app or user with Dataset.ReadWrite.All and permission on the model.

3. Refresh when the data is ready (Power Automate)

Instead of guessing a time, refresh after the data lands:

  1. Trigger on the event that means "data is ready". For example: a file arrives in SharePoint, a pipeline finishes, or a row is written to a control table.
  2. Add the Power BI connector's refresh action (it still uses the old word dataset) and pick the workspace and model.

Things to plan for:

  • No failure email. Refreshes started by Power Automate or the API don't send refresh-failure notifications. Check the refresh history, or have your flow alert someone.
  • Shared capacity: API-triggered refreshes count toward the 8 a day.
  • Monthly refresh: Power BI has no monthly schedule option. Microsoft suggests Power Automate for a custom interval. On Fabric, data pipeline refresh templates can also run monthly and cascading refreshes.

4. Make the scheduled ones healthier

  • Add failure contacts: in the model's settings, add a shared mailbox or support alias under Email these contacts when the refresh fails. External addresses aren't supported.
  • Use incremental refresh for big fact tables, so each run loads only recent data. See Refresh failed: a checklist for the full set of fixes.
  • On Premium, use the admin portal's Refresh summary to spot overlapping refresh slots.

Sources