Power Query嵌套JSON分页脚本开发技术求助
Power Query 迭代分页脚本适配方案
以下是适配你需求的Power Query分页代码,核心逻辑是通过递归函数循环请求API,直到响应的_pagination.next字段为空时停止:
let // 替换为你的测试API端点 InitialUrl = "https://your-test-api-endpoint.com/data", // 定义递归分页函数 GetAllPages = (url as text) as table => let // 发送API请求并解析JSON响应 Response = Json.Document(Web.Contents(url)), // 提取当前页数据(替换为你实际的数据字段路径) CurrentPageData = Response[data], // 展开嵌套JSON数据(复用你已有的展开逻辑) ExpandedData = Table.FromRecords(CurrentPageData), // 安全提取下一页链接,不存在则返回null NextPageUrl = try Response[_pagination][next] otherwise null, // 递归获取后续页面,无下一页则返回空表 NextPageData = if NextPageUrl <> null then GetAllPages(NextPageUrl) else Table.FromRecords({}) in // 合并当前页与所有后续页数据 Table.Combine({ExpandedData, NextPageData}), // 启动分页请求 AllData = GetAllPages(InitialUrl) in AllData
关键细节说明:
- 递归函数
GetAllPages:是分页逻辑的核心,负责单页请求、数据提取、下一页判断及循环调用 try...otherwise容错处理:避免因_pagination.next字段缺失导致的脚本报错,直接返回null终止循环- 数据拼接:用
Table.Combine将多页数据合并为完整表格 - 自定义替换:记得把
InitialUrl换成你的测试端点,Response[data]替换为业务实际需要提取的数据字段路径
调试建议:
- 先单独验证单页请求逻辑,确保能正常解析并展开嵌套JSON
- 逐步排查
NextPageUrl的取值是否符合预期 - 若需添加请求头(如授权信息),可修改
Web.Contents参数:Response = Json.Document(Web.Contents(url, [Headers=[Authorization="Bearer your-test-token"]]))
内容的提问来源于stack exchange,提问作者wildcat89
相关产品推荐
相关产品推荐

