首页 > 解决方案 > Power BI - 数据集刷新完成数据 PowerShell

问题描述

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

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

在此处输入图像描述

标签: powershellpowerbi

解决方案


代替将触发刷新的 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在这种情况下会说)。


推荐阅读