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

如何调用Python脚本/API生成动态NLG文本并展示在Power BI仪表板

可行性结论

该需求完全可实现,依托Power BI原生Python视觉对象能力即可完成筛选触发、动态数据传递、NLG计算、结果实时展示全流程,不需要额外采购第三方付费组件。

具体实现流程

前置准备

  • 在运行Power BI Desktop的本地设备提前配置好Python环境,安装pandas、matplotlib、requests(调用远程API时需要)以及NLG逻辑依赖的所有库,记好Python解释器的本地安装路径。
  • 提前调试好NLG能力:如果用本地Python脚本跑NLG,先写好处理函数,确保传入结构化薪资数据能返回正确的自然语言结果;如果用部署好的远程Python API,先测通接口,确认接口可接收结构化数据、返回标准NLG文本。

步骤1:关联Power BI和本地Python环境

  • 打开Power BI Desktop,依次点击「文件」→「选项和设置」→「选项」→「Python脚本编写」
  • 在设置页选择你提前配置好的Python环境主目录,点击确定完成关联。

步骤2:添加Python视觉对象承载NLG结果

  • 在右侧可视化面板找到标识为Py的Python视觉对象,点击添加到仪表板画布,调整大小和摆放位置,这个对象就是后续展示动态NLG文本的载体。
  • 把NLG计算需要用到的所有字段(员工ID、薪资金额、发放月份等)全部拖入该Python视觉的「值」配置栏。不需要额外写筛选事件监听逻辑:只要字段被拖入Python视觉的取值范围,后续所有筛选操作(包括月份筛选器切换、柱状图点选交叉筛选)触发时,Power BI都会自动把当前筛选上下文对应的子集数据传入Python脚本,完全自动响应筛选变化。

步骤3:编写脚本对接NLG逻辑

  • 点击画布上的Python视觉对象,下方会弹出Python脚本编辑区,Power BI会自动生成基础代码,将你拖入的字段转换为名为dataset的pandas DataFrame,这个变量存储的就是当前筛选条件下的动态数据——比如筛选Jan2022时,dataset里仅包含Jan2022的所有员工薪资数据。
  • 在自动生成的基础代码下方补充NLG调用逻辑,最后用matplotlib把生成的文本渲染到视觉区域即可,参考代码如下:
# 以下为Power BI自动生成的基础代码,请勿修改
import pandas as pd
import matplotlib.pyplot as plt

dataset = pd.DataFrame({
    # Power BI会自动填充拖入的字段数据,无需手动编辑
})

# ----- 以下为自定义NLG调用逻辑 -----
# 方式1:调用本地NLG脚本
# from my_nlg_module import generate_salary_nlg
# nlg_text = generate_salary_nlg(dataset)

# 方式2:调用远程部署的Python API
# import requests
# resp = requests.post("你的API地址", json=dataset.to_dict(orient="records"))
# nlg_text = resp.json()["result"]

# 渲染文本,隐藏坐标轴
plt.figure(figsize=(10, 2), dpi=100)
plt.text(0.02, 0.5, nlg_text, fontsize=12, wrap=True)
plt.axis("off")
plt.tight_layout()
plt.show()

步骤4:效果联调

  • 保存脚本后,切换月份筛选器的选项即可看到效果:每次筛选变更,Power BI会自动重跑Python脚本,传入新筛选条件下的dataset,生成新的NLG文本渲染展示,完全匹配你提到的场景——比如选中Jan2022时,就会展示Employee E1 has received 1500/- salary during Jan2022,切换筛选条件时E1、1500、Jan2022三个参数会自动同步更新。
注意事项
  • 本地Power BI Desktop端跑该方案无任何限制,装对Python依赖即可正常使用;如果需要把报表发布到Power BI云端服务,尽量只使用云端原生支持的Python库(pandas、matplotlib、requests等),如果NLG逻辑依赖小众库,建议把NLG能力封装成HTTP接口,脚本里仅保留接口调用逻辑,避免云端运行报错。
  • Python脚本不要加冗余的耗时逻辑,每次筛选变更都会触发脚本重跑,单轮计算耗时尽量控制在2秒内,避免筛选切换后加载延迟过高影响体验。
  • 如果需要对NLG文本做格式调整(比如改字体大小、颜色、高亮关键参数),直接修改matplotlib渲染部分的代码参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:45:34