调用Power BI API Datasets - Get Refresh History检索记录报错求助
问题说明
我正尝试通过PowerShell脚本调用Power BI REST API获取每个数据集的刷新日志,运行时遇到报错,错误截图如下:
解决方案
按以下步骤逐一排查即可解决:
权限配置校验
调用API使用的身份主体(账号/服务主体)必须满足权限要求:- 若使用服务主体调用,需要在Azure AD应用注册中为Power BI API授予
Dataset.Read.All或Dataset.ReadWrite.All的应用权限,且已完成管理员同意 - 若使用个人账号委托调用,需要确保账号是目标数据集所属工作区的成员/管理员,或是数据集所有者
- 若数据集存放在Power BI Premium容量,还要确认身份主体有对应容量的访问权限
- 若使用服务主体调用,需要在Azure AD应用注册中为Power BI API授予
认证逻辑校验
确保获取的访问令牌受众正确,避免因令牌无效触发报错,可参考以下标准令牌获取代码:$tenantId = "替换为你的租户ID" $clientId = "替换为你的Azure AD应用客户端ID" $clientSecret = "替换为你的应用客户端密钥" $authUrl = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" $authBody = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://analysis.windows.net/powerbi/api/.default" } $tokenRes = Invoke-RestMethod -Uri $authUrl -Method Post -Body $authBody $accessToken = $tokenRes.access_token请求参数校验
确保请求URL中的占位符已替换为真实ID,可参考以下标准请求代码:# 个人工作区数据集请求示例 $datasetId = "替换为你的数据集ID" $apiUrl = "https://api.powerbi.com/v1.0/myorg/datasets/$datasetId/refreshes" # 其他工作区数据集请求示例,需替换工作区ID # $groupId = "替换为你的工作区ID" # $apiUrl = "https://api.powerbi.com/v1.0/myorg/groups/$groupId/datasets/$datasetId/refreshes" $headers = @{ Authorization = "Bearer $accessToken" } $refreshHistory = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get # 输出刷新日志 $refreshHistory.value限流处理
若调用频率过高触发接口限流,可在两次请求之间添加2-5秒的等待间隔,避免触发频次限制。
内容的提问来源于stack exchange,提问作者Shahab Haidar
相关产品推荐
相关产品推荐

