如何通过Excel Power Query从嵌套JSON中提取Web分析数据?
用Excel Power Query提取嵌套JSON中的Web分析数据
嘿,刚好我处理过类似的嵌套API数据提取需求,给你一步步拆解怎么用Power Query搞定这个事儿:
步骤1:获取第一层站点列表数据
首先咱们先把~/sites返回的200条站点基础数据拉进来:
- 打开Excel,点击「数据」选项卡 → 「获取数据」→ 「自其他来源」→ 「自Web」
- 输入
~/sites的完整API地址(你实际的接口URL),点击确定 - 数据加载到Power Query编辑器后,选择「转换」选项卡 → 「解析」→ 「JSON」
- 现在你会看到一个包含所有站点条目的列表,点击列表列的展开按钮,选择要保留的字段:
id、url、pages、visits,还有_links.site.href(建议把这个字段重命名为「站点详情URL」,方便后续识别)
步骤2:批量拉取站点详情(获取分析数据的入口链接)
接下来我们要通过每个站点的详情URL,拿到分析数据的入口:
- 在Power Query编辑器里,点击「添加列」→ 「自定义列」
- 输入M代码来调用详情API:
= Json.Document(Web.Contents([站点详情URL])) - 点击确定后,你会得到一个包含站点详情JSON的列,再次点击展开按钮,找到
_links.analytics.overview.summary.href字段,提取出来并重命名为「分析汇总URL」
步骤3:提取最终的Web分析数据
最后一步就是批量获取每个站点的分析汇总数据:
- 再次添加自定义列,调用分析汇总URL:
= Json.Document(Web.Contents([分析汇总URL])) - 展开这个列里的所有分析字段(比如访问量、用户数等具体指标),然后把这些字段和之前的站点基础数据合并到同一表格里
- 点击「关闭并上载」,把整理好的数据导入Excel表格
一些需要注意的小细节
- API权限:确保你的API请求带有正确的认证信息(比如Headers里的Token),如果需要的话,可以在
Web.Contents里添加参数:= Json.Document(Web.Contents("你的API地址", [Headers=[Authorization="Bearer 你的Token"]])) - 速率限制:如果API有请求频率限制,可以在Power Query里添加延迟,避免被限流,比如用
Function.InvokeAfter来包装请求 - 错误处理:可以用
try...otherwise来捕获请求失败的情况,避免整个流程中断:= try Json.Document(Web.Contents([分析汇总URL])) otherwise null
内容的提问来源于stack exchange,提问作者Jeppe KS




