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

Power Query List.Generate迭代重复数据问题:如何修正仅返回单页结果?

解决Power Query中List.Generate重复第一页数据的问题

你的代码出现重复第一页数据的原因是List.Generate的next生成器逻辑错误:在记录中定义page = [page] + 1后,后续的fnGetFindings([page], outcome_id)调用依然使用的是迭代前的旧页码值,而非更新后的新页码。导致第二次迭代时仍调用第一页数据,直到第三次迭代才会用页码2调用函数(此时返回空列表,循环终止),最终生成包含两次第一页数据的结果。

修改方案(推荐使用方案一)

方案一:用Let表达式先计算新页码

通过let表达式提前计算出更新后的页码,再调用函数,确保参数使用的是最新页码:

outcome_list = List.Generate (
    () => [page = 1, result = fnGetFindings(1, outcome_id)],
    each not List.IsEmpty([result]),
    each let
        newPage = [page] + 1
    in
        [page = newPage, result = fnGetFindings(newPage, outcome_id)],
    each [result]
)

方案二:调整记录字段顺序(可读性较差)

如果不想用let表达式,可以调整记录内的字段顺序,先基于旧页码计算新页码对应的结果,再更新page字段:

outcome_list = List.Generate (
    () => [page = 1, result = fnGetFindings(1, outcome_id)],
    each not List.IsEmpty([result]),
    each [result = fnGetFindings([page] + 1, outcome_id), page = [page] + 1],
    each [result]
)

修改后,List.Generate会在第一次迭代返回第一页数据,第二次迭代调用页码2的函数(返回空列表),循环直接终止,最终结果仅包含一次第一页数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:51