PowerShell停止PowerBI数据集刷新URI中refreshId含义及获取方式
Power BI 取消刷新接口
refreshId参数说明 什么是refreshId
refreshId是Power BI服务为每一次数据集刷新操作分配的唯一GUID值,单次手动触发、计划触发、API触发的刷新任务都会生成独立的ID,用于唯一标记对应刷新任务,不会重复。
获取refreshId的方法
从刷新历史记录接口获取(最通用的方式)
调用获取数据集刷新历史的REST接口,返回结果中每条刷新记录的id字段就是对应任务的refreshId,接口地址:GET https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/refreshes你可以在接口后追加
?$top=N参数指定返回最近N条刷新记录,比如?$top=10即返回最近10条记录,筛选其中status字段值为InProgress的记录,就是当前正在运行的长耗时刷新任务,对应的id值即可直接传入取消接口。
接口返回的核心字段示例:{ "value": [ { "id": "7c9d2f4a-1b3c-4d5e-8f9a-0b1c2d3e4f5a", "status": "InProgress", "startTime": "2024-06-15T09:22:14.357Z", "refreshType": "Scheduled" } ] }上述示例中
7c9d2f4a-1b3c-4d5e-8f9a-0b1c2d3e4f5a就是可用的refreshId。从刷新触发的响应中获取
如果你是通过POST接口主动触发的数据集刷新(即调用POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/refreshes启动任务),触发成功后响应头的RequestId字段就是本次刷新的refreshId,触发时直接留存该值即可,无需后续查询历史。
PowerShell 实操示例
以下是完整的PowerShell脚本,实现自动查找正在运行的刷新任务并终止:
# 登录Power BI服务,已登录可跳过 Connect-PowerBIServiceAccount # 替换为实际的数据集ID $datasetId = "替换为你的数据集ID" # 拉取最近5条刷新记录 $refreshHistory = Invoke-PowerBIRestMethod -Url "datasets/$datasetId/refreshes?`$top=5" -Method Get | ConvertFrom-Json # 筛选正在运行的刷新任务 $runningTask = $refreshHistory.value | Where-Object status -eq "InProgress" | Select-Object -First 1 if ($runningTask) { $targetRefreshId = $runningTask.id Write-Host "定位到运行中刷新任务,ID: $targetRefreshId" # 调用取消接口 Invoke-PowerBIRestMethod -Url "datasets/$datasetId/refreshes/$targetRefreshId" -Method Delete Write-Host "终止请求已发送" } else { Write-Host "当前无运行中的数据集刷新任务" }
注意事项
- 仅状态为
InProgress的刷新任务支持终止,对已完成、已失败、已取消的任务传入对应refreshId调用DELETE接口会返回错误。 - 如果操作的是标准工作区(而非“我的工作区”)内的数据集,在接口路径中加入对应工作区ID即可,参数逻辑完全一致。
内容的提问来源于stack exchange,提问作者Dedeepya Vajja
相关产品推荐
相关产品推荐

