Power BI-数据集刷新完成数据PowerShell

时间:2020-09-17 21:02:11

标签: powershell powerbi

我正在使用PowerShell以编程方式刷新powerbi.com数据集。一切都很好。但是,如果有一种方法可以从Microsoft检索刷新完成时间数据,将会很有帮助。我可以列出我要开始进行刷新的过程,但这是有据可查的,并且与该问题无关。

由于powerbi.com显示了数据集的刷新完成时间,因此可以抓住该数据是有理由的,但是我找不到关于此的任何文档。这里有没有人试图获取这些数据(下面的截图)?

enter image description here

1 个答案:

答案 0 :(得分:1)

代替POST方法(该方法将触发刷新),即这是Refresh Dataset In Group API,请将方法更改为GET以使用Get Refresh History In Group API。这将返回有关此数据集刷新的信息。因此,PowerShell代码可能是这样的:

Import-Module MicrosoftPowerBIMgmt

$username = "my super strong password"
$password = "user@domain.com" | ConvertTo-SecureString -asPlainText -Force

$groupId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$datasetId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

$credential = New-Object System.Management.Automation.PSCredential($username, $password)

Connect-PowerBIServiceAccount -Credential $credential

$refreshes_response = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/groups/$groupId/datasets/$datasetId/refreshes" -Method Get 

Disconnect-PowerBIServiceAccount

$refreshes_response_json = ConvertFrom-Json $refreshes_response

foreach ($refresh in $refreshes_response_json.value)
{
    Write-Output "refreshType: $($refresh.refreshType), startTime: $($refresh.startTime), endTime: $($refresh.endTime), status: $($refresh.status)"
}

您还可以通过在URL中提供数字来限制返回的刷新次数:

GET https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes?$top={$top}

但是,如果最后一个未成功,则您可能希望查看较旧的事件以找到最后一个成功的事件。还要查看刷新的状态,因为它可能仍在进行中(在这种情况下,它会显示Unknown)。