You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure Data Factory中获取Power BI有效访问令牌失败,需导出可视化表格为Excel

解决Power BI报表导出Excel及ADF中获取有效作用域令牌的问题

一、完善Azure Entra ID应用注册配置

1. 设置应用ID URI

  • 登录Azure门户,进入Azure Entra ID → 应用注册,找到你的目标应用
  • 在“概述”页面点击添加应用ID URI,选择“添加”选项
  • 可使用默认生成的api://{你的客户端ID}格式,也可自定义URI,完成后保存配置

2. 配置重定向URI(授权码流场景需要)

  • 在应用注册的身份验证页面,点击添加平台,选择“Web”类型
  • 输入重定向URI(示例:http://localhost:8080/redirect),勾选“授权代码流”选项,保存配置

二、配置正确的Power BI权限

  • 进入应用注册的API权限页面,点击添加权限 → 选择Power BI Service
  • 根据使用场景选择对应权限:
    • 若采用客户端凭证流(自动化无交互):选择“应用权限”,添加Report.Read.All权限,点击授予管理员同意(需租户管理员权限)
    • 若采用授权码流(需用户交互):选择“委托权限”,添加Report.Read.All权限,同样需完成管理员同意(或按租户配置由用户自行同意)

三、获取带有效作用域的Power BI访问令牌

方案1:客户端凭证流(推荐ADF自动化场景)

在ADF中创建REST活动,配置如下:

  • URL:https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token
  • 请求方法:POST
  • 请求头:Content-Type: application/x-www-form-urlencoded
  • 表单格式请求体:
    • grant_type: client_credentials
    • client_id: 你的应用客户端ID
    • client_secret: 你的应用客户端密钥
    • scope: https://analysis.windows.net/powerbi/api/.default
  • 执行活动后,返回结果中的access_token即为带有效作用域的令牌,可用于后续Power BI API调用

方案2:授权码流(需用户交互)

  1. 获取授权码
    构造以下URL,替换占位符后在浏览器打开,使用拥有Power BI报表访问权限的用户登录:

    https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/authorize?client_id={客户端ID}&response_type=code&redirect_uri={你的重定向URI}&response_mode=query&scope=https://analysis.windows.net/powerbi/api/Report.Read.All offline_access&state=12345
    

    登录成功后,跳转页面的地址栏中code参数即为授权码

  2. 换取访问令牌
    在ADF中创建REST活动,配置:

    • URL:https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token
    • 请求方法:POST
    • 请求头:Content-Type: application/x-www-form-urlencoded
    • 表单格式请求体:
      • grant_type: authorization_code
      • client_id: 你的应用客户端ID
      • client_secret: 你的应用客户端密钥
      • code: 刚获取的授权码
      • redirect_uri: 你的重定向URI
      • scope: https://analysis.windows.net/powerbi/api/Report.Read.All

四、调用Power BI导出API生成Excel文件

  1. 触发导出请求
    创建新的REST活动,配置:

    • URL:https://api.powerbi.com/v1.0/myorg/reports/{报表ID}/ExportTo
    • 请求方法:POST
    • 请求头:
      • Authorization: Bearer @{activity('获取令牌活动名').output.access_token}
      • Content-Type: application/json
    • JSON格式请求体:
      {
        "format": "Excel"
      }
      

    执行后,返回结果中的id字段为导出操作ID

  2. 轮询获取下载链接
    创建另一个REST活动,配置:

    • URL:https://api.powerbi.com/v1.0/myorg/operations/{操作ID}
    • 请求方法:GET
    • 请求头:Authorization: Bearer @{activity('获取令牌活动名').output.access_token}
    • 轮询此接口,直到返回结果的status字段变为Succeeded,此时resourceLocation字段即为Excel文件的下载链接
  3. 下载文件到存储
    使用ADF的复制活动,源选择REST源并输入上述下载链接,目标选择你的存储账户(如Blob存储),完成Excel文件的保存


内容的提问来源于stack exchange,提问作者Walbersy Navarro Valladares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:13:13