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

Power BI中用Function.InvokeAfter()实现每100次API查询后停顿1秒

实现每100行调用API后停顿1秒的Power Query方案

你当前的代码是每行调用API后都停顿1秒,12000行就要耗3个多小时在停顿上,完全没必要。要实现每100行批量处理后停顿1秒,按以下步骤操作:

步骤1:添加索引列

先给你的数据加一个从0开始的索引列,用来做分组依据:

= Table.AddIndexColumn(源, "索引", 0, 1, Int64.Type)

步骤2:按100行分组

用索引列把数据每100行分成一组,分组键用Number.IntegerDivide([索引], 100),这样0-99行是一组,100-199行是下一组,以此类推:

= Table.Group(添加索引列, {"分组键"}, {{"组内数据", each _, type table [Kunde ID=number, 索引=Int64.Type]}})

步骤3:分组处理API调用+批量停顿

给分组后的表格加自定义列,先处理组内所有行的API调用,完成后再停顿1秒(只在每组结束后停一次):

= Table.AddColumn(分组后, "API结果", (分组) => 
    let
        // 遍历组内每行调用API获取数据
        组内获取数据 = Table.AddColumn(分组[组内数据], "API返回", (行) => 
            Json.Document(
                Web.Contents("https://data.brreg.no/enhetsregisteret/api/enheter/" & Number.ToText(行[Kunde ID]), 
                [Headers=[Accept="application/json"]])
            ),
        // 组内所有行处理完后,停顿1秒再返回结果
        组后停顿 = Function.InvokeAfter(() => 组内获取数据, #duration(0,0,0,1))
    in
        组后停顿
)

步骤4:展开数据

最后把分组里的结果展开,恢复成原始的行结构:

= Table.ExpandTableColumn(添加自定义列, "API结果", {"Kunde ID", "API返回"}, {"Kunde ID", "API返回"})

注意事项

  • 如果API有严格的调用频率限制,你可以根据实际情况调整分组行数(比如改成50行一组)或者停顿时间
  • 要是索引列从1开始,记得把分组键改成Number.IntegerDivide([索引]-1, 100),保证每组刚好100行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:35:30