Forum Discussion

powerbi_jenhen's avatar
powerbi_jenhen
Resolver II
4 years ago
Solved

Wait for Power BI dataset to refresh using the API

Hi,

 

Via Powershell I'm able to invoke the Power BI API to start a dataset refresh using the "refresh dataset in group" API but using a while loop like below on the status value doesn't appear to exit the loop when the refresh completes to a status "Completed"? How can I write logic to wait for the dataset refresh to complete as once completed I need to set a variable value to output for another process to trigger:

 

while($status -eq "Unknown")
{
Start-Sleep -s 5
$history = Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json
#this loop never exits even although the dataset refresh completes with status "Completed"
}
  • You forgot to set the value of $status inside the loop.

    Don't ask for it every five seconds. Every minute is enough.

4 Replies

  • You forgot to set the value of $status inside the loop.

    Don't ask for it every five seconds. Every minute is enough.

    • powerbi_jenhen's avatar
      powerbi_jenhen
      Resolver II

      Thanks for your reply.

       

      The value of status will be set by the Power BI Service, I'm using the Start-Sleep to wait for status to change to "Completed" when the refresh completes. However, once I see the refresh has completed the new status isn't reflected to exit the loop.

       

      Thanks.

    • powerbi_jenhen's avatar
      powerbi_jenhen
      Resolver II

      You were correct in the end, thanks!

       

      I needed to get the status from the $history.status within the while loop, I was getting this from the status variable outside of the while loop so this was never changing. After setting the while loop condition status to the while loop status the correct status value was returning to exit the while loop...phew! 

    • Delbert's avatar
      Delbert
      New Member

      Thank you. Your posts and solution were most helpful.