如何用循环迭代参数列表并重构Power Query重复调用代码?
Power Query 重构重复调用为循环遍历实现
重构目标
将重复调用fnCheckId处理参数列表的代码,改为通过循环遍历ParametersList参数列表的实现,每次循环输出的表作为下一次循环的输入表。
重构后代码
let ParametersList = {"CustomerID","FirstName","LastName"}, // 用List.Accumulate实现迭代循环,初始值为源表srcTbl,依次处理每个参数 Result = List.Accumulate( ParametersList, srcTbl, (currentTbl, currentClm) => fnCheckId(currentTbl, currentClm) ) in Result
代码说明
List.Accumulate是Power Query实现迭代逻辑的核心函数,三个参数的作用:- 第一个参数:要遍历的目标列表
ParametersList - 第二个参数:迭代的初始输入值,即第一次循环用的源表
srcTbl - 第三个参数:迭代处理逻辑,用当前循环的输入表
currentTbl和当前参数currentClm调用fnCheckId,返回结果作为下一次循环的输入
- 第一个参数:要遍历的目标列表
相关依赖代码
fnCheckId函数
(tbl as table, clm as text)=> let #"Added Custom" = Table.AddColumn(tbl,"QA "&clm, each if Text.Length(Record.Field(_, clm))>3 then "Ok" else "Nok") in #"Added Custom"
源表定义(srcTbl)
srcTbl = Table.FromRows( { {1, "Bob", "Smith", "123-4567"}, {2, "Jim", "Brown", "987-6543"}, {3, "Paul", "Wick", "543-7890"} }, {"CustomerID", "FirstName", "LastName", "Phone"} )
效果说明
重构后的代码和原重复调用逻辑完全一致:依次对CustomerID、FirstName、LastName三个字段执行检查,每次新增对应的QA 字段名列,标记字段内容长度是否大于3。
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

