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

PowerBI Service通过数据网关连接REST API认证问题求助

解决PowerBI Service中Basic认证API带Content参数的刷新问题

问题核心

PowerBI的Web.Contents函数在使用Content参数时,仅支持匿名认证模式;但直接在Service中配置匿名并通过Header传认证信息,会因网关无法正确识别数据源导致凭据验证失败。

解决方案步骤

  • 调整Power Query代码,明确数据源标识
    把API的基础URL和请求路径分离,避免PowerBI将整个请求URL识别为动态地址,确保网关能匹配到正确的数据源。同时保证认证Header在代码中正确生成,不被Service覆盖。
    示例修改后的代码:

    let
        // 定义固定的基础API地址,让PowerBI Service识别为数据源
        BaseApiUrl = "https://**********/piwebapi",
        // 生成Basic认证头(建议把用户名密码做成参数,避免硬编码)
        AuthToken = "Basic " & Binary.ToText(Base64.Encode(Text.ToBinary("你的用户名:你的密码")), BinaryEncoding.Base64),
        // 使用RelativePath指定具体接口,Content参数保留原逻辑
        ApiResponse = Web.Contents(BaseApiUrl, [
            RelativePath = "/你的接口路径",
            Content = Json.FromValue(你的请求体数据),
            Headers = [
                #"Authorization" = AuthToken,
                #"Content-Type" = "application/json"
            ],
            // 标记基础URL为参数化查询,帮助网关识别数据源
            Query = [IsParameterQuery = true]
        ]),
        // 后续解析逻辑保留原样
        ParsedJson = Json.Document(ApiResponse)
    in
        ParsedJson
    
  • 配置PowerBI Service与网关

    1. 确保本地数据网关能正常访问你的API服务器,可在网关的"数据源"页面测试连通性。
    2. 在PowerBI Service的数据集设置中,找到对应的Web数据源(即你定义的BaseApiUrl),配置为匿名认证。
    3. 不要配置Basic认证,因为Web.Contents带Content参数时不支持该模式。
  • 额外注意事项

    • 避免在代码中硬编码用户名密码,建议通过Power Query的参数功能管理,提升安全性。
    • 若API服务器有IP白名单,确保网关所在虚拟机的IP已加入白名单。
    • 刷新前先在PowerBI Desktop中测试修改后的代码,确保本地能正常运行,再重新发布报表到Service。

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:21