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

Excel PowerQuery中实现API多参数嵌套循环调用的方法咨询

PowerQuery实现多分组+分页循环调用API

核心思路

要同时实现GroupID遍历和offset分页,需要做嵌套循环:先遍历每个GroupID,对每个分组单独获取总记录数、计算分页次数,再按offset拉取该分组的所有页数据,最后合并所有分组的结果。

修改后的完整代码

SourceURL = "www.api.com/user",
    // 从GroupTable提取所有GroupID列表
    GroupIDList = GroupTable[GroupID],
    BatchSize = 1000,
    // 定义同时接收GroupID和Offset的获取数据函数
    FetchPage = (GroupID as text, Offset as number) =>
        let
            // 调用API时同时传入groupId和offset参数
            Response = Json.Document(Web.Contents(SourceURL, [
                Query = [
                    #"offset" = Text.From(Offset),
                    #"groupId" = GroupID
                ]
            ])),
            Data = Response[results]
        in
            Data,
    // 嵌套循环:先遍历每个GroupID,再遍历该分组的所有offset
    AllGroupData = List.Transform(GroupIDList, (CurrentGroup) =>
        let
            // 获取当前分组的总记录数
            InitialResponse = Json.Document(Web.Contents(SourceURL, [Query=[#"groupId"=CurrentGroup]])),
            TotalRecords = InitialResponse[total],
            NumberOfCalls = Number.RoundUp(TotalRecords / BatchSize),
            // 生成当前分组需要的offset列表
            GroupOffsets = List.Numbers(0, NumberOfCalls, BatchSize),
            // 拉取当前分组的所有页数据
            GroupPages = List.Transform(GroupOffsets, (Offset) => FetchPage(CurrentGroup, Offset))
        in
            GroupPages
    ),
    // 合并所有分组的所有页数据
    CombineAllData = List.Combine(List.Combine(AllGroupData)),
    // 转换为表格
    OutputTable = Table.FromList(CombineAllData, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
    OutputTable

关键修改说明

  1. 提取GroupID列表:直接从GroupTable的GroupID列生成列表,替代原代码中错误的ListGroup写法。
  2. 升级FetchPage函数:新增GroupID参数,API请求同时携带groupId和offset两个查询参数,匹配接口要求。
  3. 嵌套循环处理:
    • 外层遍历每个GroupID,先请求该分组的总记录数,计算需要的分页次数。
    • 内层对当前分组的offset列表循环,调用FetchPage拉取每一页数据。
  4. 合并数据:先合并每个分组内的所有页数据,再合并所有分组的数据,确保最终结果包含所有分组的全部记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:37:12