Forum Discussion
Clarification on Asynchronous vs Synchronous Behavior of Enhanced API for Dataset Refresh
I’m using the Enhanced API to refresh a dataset.
The API waits for the dataset refresh to complete before returning the response, which seems like synchronous behavior.
However, according to the documentation here, it mentions the process as asynchronous.
Can someone clarify if its an expected behavior?
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes
{"type": "Full","objects": [{"table": "salesdata"}]}
{"startTime": "2024-12-04T06:44:31.363Z","endTime": "2024-12-04T06:49:45.807Z","type": "Full","commitMode": "Transactional","status": "Completed","extendedStatus": "Completed","currentRefreshType": "Full","numberOfAttempts": 0,"objects": [{"table": "SalesData","partition": "SalesData","status": "Completed"}],"refreshAttempts": [{"attemptId": 1,"startTime": "2024-12-04T06:44:31.6101471Z","endTime": "2024-12-04T06:49:45.8077528Z","type": 0}],"ADFWebActivityResponseHeaders": {"Pragma": "no-cache","Transfer-Encoding": "chunked","x-ms-root-activity-id": "773930e3-b8f1-4546-bb96-c2a75504c508","Strict-Transport-Security": "max-age=31536000; includeSubDomains","X-Frame-Options": "deny","X-Content-Type-Options": "nosniff","RequestId": "773930e3-b8f1-4546-bb96-c2a75504c508","Access-Control-Expose-Headers": "RequestId","Cache-Control": "no-store, must-revalidate, no-cache","Date": "Wed, 04 Dec 2024 06:50:07 GMT","Content-Type": "application/json; charset=utf-8"},"effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (East US)","executionDuration": 338,"durationInQueue": {"integrationRuntimeQueue": 10},"billingReference": {"activityType": "ExternalActivity","billableDuration": [{"meterType": "AzureIR","duration": 0.09999999999999999,"unit": "Hours"}]}}
Additionally, attaching some screenshots for reference:
Not sure if anything has changed recently but in general the API only allows you to request a refresh. With the Enhanced API you get a Request ID back.
Mind you , it is just a request, and it is (was?) asynchronous . If you want to know the status of your request you need to implement your own polling mechanism. Ideally with reasonable intervals (eg every five minutes). Without Request ID the indicator is the presence of and EndDate for the first entry in the refresh history. With Request ID (ie enhanced API) you can submit a polling query which returns the status for that Request ID.
1 Reply
- lbendlinSuper User
Not sure if anything has changed recently but in general the API only allows you to request a refresh. With the Enhanced API you get a Request ID back.
Mind you , it is just a request, and it is (was?) asynchronous . If you want to know the status of your request you need to implement your own polling mechanism. Ideally with reasonable intervals (eg every five minutes). Without Request ID the indicator is the presence of and EndDate for the first entry in the refresh history. With Request ID (ie enhanced API) you can submit a polling query which returns the status for that Request ID.