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

Power BI调用Web API传递JSON参数及动态输入需求咨询

我刚好做过类似的需求,给你一步步拆解解决方案:

1. 通过POST请求传递JSON参数并解析响应

首先打开Power Query编辑器,新建空白查询,进入高级编辑器替换成以下M代码:

let
    // 定义请求URL和JSON参数
    url = "http://localhost:56661/api",
    jsonBody = "{
        ""id"":1,
        ""name"":""api"",
        ""data"":""this is for testing""
    }",
    // 设置请求头(必须指定Content-Type为application/json)
    headers = [
        #"Content-Type" = "application/json"
    ],
    // 发送POST请求,注意把JSON文本转成二进制格式
    response = Web.Contents(url, [
        Headers = headers,
        Content = Text.ToBinary(jsonBody)
    ]),
    // 解析API返回的JSON响应
    parsedJson = Json.Document(response)
in
    parsedJson

这段代码完成了三个核心动作:构造POST请求体、发送请求、解析JSON响应。你可以直接把这个查询加载到数据模型,之后就能在报表里用可视化组件展示解析后的结果了。

2. 让用户在仪表板动态输入/编辑JSON参数

有两种方案,根据你的需求选择:

方案A:拆分字段为独立参数(用户友好型)

如果希望用户不用写完整JSON,只需要修改单个字段:

  • 点击Power BI主页的建模选项卡 → 新建参数,分别创建三个参数:
    • id:类型选整数,默认值设为1,勾选"允许用户在报表中编辑"
    • name:类型选文本,默认值设为"api",勾选"允许用户在报表中编辑"
    • data:类型选文本,默认值设为"this is for testing",勾选"允许用户在报表中编辑"
  • 回到Power Query编辑器,修改之前的M代码,把硬编码的jsonBody换成参数拼接:
let
    url = "http://localhost:56661/api",
    // 用参数动态拼接JSON字符串
    jsonBody = "{""id"":" & Text.From(id) & ",""name"":""" & name & """,""data"":""" & data & """}",
    headers = [
        #"Content-Type" = "application/json"
    ],
    response = Web.Contents(url, [
        Headers = headers,
        Content = Text.ToBinary(jsonBody)
    ]),
    parsedJson = Json.Document(response)
in
    parsedJson
  • 加载查询后,在报表页添加参数控件:点击可视化面板的「参数」选项,把三个参数拖到画布上,用户就能直接在仪表板修改字段值,点击刷新按钮即可重新调用API获取新结果。

方案B:允许用户直接输入完整JSON(灵活型)

如果需要用户自定义完整的JSON结构:

  • 创建一个文本类型的参数,命名为customJsonBody,默认值填你的示例JSON,勾选"允许用户在报表中编辑"
  • 修改M代码,直接使用参数作为请求体:
let
    url = "http://localhost:56661/api",
    // 直接使用用户输入的JSON作为请求体
    jsonBody = customJsonBody,
    headers = [
        #"Content-Type" = "application/json"
    ],
    response = Web.Contents(url, [
        Headers = headers,
        Content = Text.ToBinary(jsonBody)
    ]),
    parsedJson = Json.Document(response)
in
    parsedJson
  • 同样添加参数控件到报表,用户可以输入任意合法的JSON字符串,刷新后立即生效。
3. 避坑注意事项
  • 如果遇到跨数据源隐私错误:在Power Query编辑器点击文件 → 选项和设置 → 数据源设置,找到你的localhost API,把隐私级别设为公开
  • 确保你的API能正确接收POST请求并返回标准JSON格式,否则解析步骤会报错
  • 动态参数修改后,必须点击报表的刷新按钮才会重新调用API

内容的提问来源于stack exchange,提问作者Ravi Kiran G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:07:29