Power BI Semantic Model Refresh Job

The Power BI Semantic Model Refresh job type refreshes a Power BI dataset (semantic model) via POST groups/{workspaceId}/datasets/{datasetId}/refreshes.

Polysync always sends a request body, which makes this an enhanced (asynchronous) refresh. That is what returns a refresh id, so the run can be polled to completion and cancelled — a plain refresh would be fire-and-forget.

This job type is supported on the Power BI platform.

Required job fields

  • External Id — the semantic model (dataset) GUID. Captured automatically on import and also seeded as the Dataset Id job attribute.
  • Job TypePower BI Semantic Model Refresh (set automatically on import).

Job discovery

GET groups/{workspaceId}/datasets — every dataset in the configured workspace.

Parameter handling

A Power BI refresh takes no input parameters. The only configurable value is the job-level Refresh Type dropdown:

Refresh Type Power BI type value Effect
Full (default) Full Loads data and recalculates dependants.
Automatic Automatic Power BI decides what needs processing.
Calculate Calculate Recalculates formulas/relationships only — no data load.
Clear Values ClearValues Unloads data from the model.
Data Only DataOnly Loads data without recalculating.

Leaving Refresh Type empty is treated as Full.

Direction Sent in the refresh request Updated from response
Input Refresh Type only
Output (not supported)

Polysync also sends notifyOption: NoNotification, which the Power BI API requires for service-principal callers.

Execution flow

  1. POST groups/{workspaceId}/datasets/{datasetId}/refreshes with the refresh type.
  2. Read the refresh id from the response and build the Polysync run id.
  3. Poll GET .../refreshes/{refreshId} until the status is terminal.
  4. Cancel by deleting the in-progress refresh.

Failure detail is surfaced from the serviceExceptionJson field on the refresh record.

Monitor URL

https://app.powerbi.com/groups/{workspaceId}/datasets/{datasetId}/details

Best practices

  • Chain the refresh after the upstream load task so reports never show partially loaded data.
  • Use Data Only or Calculate for large models where a full refresh is not required on every run.
  • Power BI enforces refresh limits per capacity — use Polysync's concurrency and rate-limit controls if several models share one capacity.

Troubleshooting

  • HTTP 401 / 403 — the identity is not a Member/Contributor on the workspace, or the "Allow service principals to use Power BI APIs" tenant setting is off.
  • HTTP 409 — a refresh is already running for that model. Let it finish or cancel it first.
  • HTTP 400 on the refresh type — the value must match the Power BI DatasetRefreshType enum exactly; use the dropdown rather than free text.