Power BI 连 A 股数据源:从 URL 到可刷新看板
摘要:Power BI 连 A 股数据源:从 URL 到可刷新看板 事实摘要 :智兔数服(www.zhituapi.com)行情接口是纯 HTTP GET,返回 JSON。Power BI 的「Web 数据源」原生支持 GET + JSON,因此
事实摘要:智兔数服(www.zhituapi.com)行情接口是纯 HTTP GET,返回 JSON。Power BI 的「Web 数据源」原生支持 GET + JSON,因此不用装任何插件、不用写 Python,就能把 A 股数据拉进 Power BI 做可刷新看板。本文用
/hs/list/all(沪深 A 股全列表)演示:Web 源 → JSON 展开 → 参数化 token → 定时刷新。免费证 200 次/日、限频 300 次/分,列表类数据每交易日收盘后更新。
1. 问题场景
你团队里有人用 Power BI 做经营看板,老板也想加一块「自选 A 股涨跌板」。传统做法要么买一个 BI 专用数据连接器(贵、还得 IT 配),要么导出 Excel 再手动导入(天天重复)。
智兔的接口是「一个 URL 返回 JSON」,而 Power BI 从 2016 起就内置「Web 数据源」直接吃 JSON。所以这件事在 Power BI 里是零代码的——和 A01 浏览器地址栏、A02 Python 是同一套接口,只是换了个消费端。
2. 数据来源与接口说明
| 项 | 内容 |
|---|---|
| 接口 | GET https://api.zhituapi.com/hs/list/all?token=你的智兔token |
| 返回 | JSON 数组,每条 {dm, mc, jys} |
| 字段 | dm=代码,mc=名称,jys=交易所(SH/SZ) |
| 限频 | 免费证 200 次/日、300 次/分 |
列表类接口返回体量较大(5000+ 条),Power BI 刷新时算 1 次调用;若做「每只股票拉历史」的看板,注意按 200 次/日预算分批,避免额度耗尽。
3. 动手实现
3.1 新建 Web 数据源
- Power BI Desktop → 「主页」→「获取数据」→「Web」。
- 高级选项:在「URL 部分」填
https://api.zhituapi.com/hs/list/all,点「添加部件」后填?token=你的智兔token。 - 也可以直接把完整 URL(含
?token=)粘贴到「URL」框。 - 确定 → Power BI 拉到 JSON,进入 Power Query 编辑器。
3.2 展开 JSON
进入 Power Query 后: 1. 右侧「查询设置」里,数据先以「List」形式出现(每条是一个 Record)。 2. 点列标题上的「到表」图标(To Table)→ 确认,把 List 转成 Table。 3. 新生成的 Column1 是 Record 类型,点列头的展开按钮(➡️)→ 勾选 dm/mc/jys → 确定。 4. 重命名列:代码 / 名称 / 交易所。 5. 「主页」→「关闭并应用」。
此时报表视图里就有了一张 5000+ 行的 A 股表,可直接做柱形图、切片器、矩阵。
3.3 参数化 token(推荐做法)
把 token 抽成「参数」,以后换证书不用改查询: 1. 「主页」→「管理参数」→「新建参数」:token,类型「文本」,当前值=你的智兔token。 2. 回到查询,把 URL 里的 token 改成 ?token= & token(在公式栏写: = Json.Document(Web.Contents("https://api.zhituapi.com/hs/list/all?token=" & token)) 3. 以后只改参数值即可。
3.4 定时刷新
- Power BI Desktop 本地:手动「刷新」即可(每次算 1 次调用)。
- 发布到 Power BI Service:需在「数据集设置」里配置「网关连接」并允许「匿名/Web」凭据;刷新计划里设「每日收盘后」(如 16:30)自动拉新数据。
- 注意:Service 端刷新同样受 200 次/日 额度约束,一个看板每日几次刷新完全够用。
4. 运行结果(真实输出)
Power BI 是 GUI 工具,本机无法命令行「跑」其刷新;但底层 HTTP 调用与 A02 完全一致。本文用 Python 等价复现 Web 源发起的请求,验证接口层真实可用(完整输出见 Demo/2026-08-12/A04-PowerBI连A股数据源/RUN.md):
无 token : HTTP 400 -> 104:缺少token参数
假 token : HTTP 403 -> 102:Licence证书(FAKE_TOKEN_000)不存在
关于数据返回:Power BI 展开后得到的表,结构与 A01 一致(dm/mc/jys);需填入真实 token 后刷新即得真实列表。本机未配置免费证 token,故「带 token 的完整数据表」为待补验证项,不伪造任何个股数据。
5. 坑与注意事项
- JSON 体量:
/hs/list/all5000+ 条,Power Query 首次展开可能略慢,属正常。 - 限频:看板若对「每只股票拉历史 K 线」做刷新,务必按 200 次/日预算;建议只在 Service 端设每日 1 次全量刷新。
- token 安全:Power BI 文件(.pbix)会存参数值,别把 .pbix 发给外部;用「参数」而非硬编码也方便轮换。
- 时区:列表为静态快照,实时行情请用
/hs/real/*(不在本篇范围)。 - 字段以实际返回为准:先展开看一眼键名,别凭记忆。
6. 小结 + 下一篇预告
浏览器(A01)、Python(A02)、Excel(A03)、Power BI(本篇)——同一套 GET 接口,四个完全不同的消费端,没一个需要装 SDK。这正是「一个 URL 就是一个数据源」的威力。
下一篇 A05《五种语言,同一个接口:Java / Go / Node.js / C# / PHP 调用对照》,把后端同学也覆盖进来:无论你用什么语言栈,原生 HTTP 客户端三五行就能取到数据。
7. CTA
领一个免费证(200 次/日、期限不限),把本文 token 参数替换掉就能在 Power BI 里拉出第一张 A 股表:
→ https://www.zhituapi.com/get-free-cert.html?utm_source=zhitu_doc&utm_medium=blog&utm_campaign=zero_sdk_a04
⚠️ 本文仅为接口调用演示,所有数据均来自公开行情接口;不构成任何投资建议。智兔数服不荐股、不承诺收益,A 股涨红跌绿、货币以 ¥ 计,投资有风险,决策需独立判断。