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

Power Query中如何高效编写列表对象及优化条件列代码

Power Query条件列代码优化方案

问题背景

你原本的代码通过多次重复判断[Col1]是否等于特定ID值返回"bla1",后续再判断[Col2]是否包含"bla2",否则返回"bla3"。你尝试用列表简化判断但写法有误,因为单个值无法直接与列表做相等比较。

原代码

#"Added Conditional Column" = Table.AddColumn(#"Added Custom", "new col name", 
    each if [Col1] = "10011130" then "bla1" else if [Col1] = "10013030" then "bla1" 
    else if [Col1] = "10014030" then "bla1" else if [Col1] = "10015030" then "bla1" 
    else if Text.Contains([Col2], "bla2") then "bla2" 
    else "bla3")

错误尝试的问题点

你直接用[Col1] = {"10011130", ...}的写法不符合Power Query语法,单个值和列表不能直接用等号比较,需要用List.Contains函数检查值是否存在于列表中。

优化后的实现方案

方案1:内嵌列表直接判断

适合小型数据集或临时使用场景,代码简洁直观:

#"Added Conditional Column" = Table.AddColumn(#"Added Custom", "new col name", 
    each if List.Contains({"10011130", "10013030", "10014030", "10015030"}, [Col1]) then "bla1"
    else if Text.Contains([Col2], "bla2") then "bla2"
    else "bla3")

方案2:定义列表变量(推荐)

适合大型数据集或需要后续修改ID列表的场景,避免每次行迭代重复生成列表,提升性能且更易维护:

let
    // 预先定义目标ID列表,后续修改只需改这里
    targetIDs = {"10011130", "10013030", "10014030", "10015030"},
    #"Added Conditional Column" = Table.AddColumn(#"Added Custom", "new col name", 
        each if List.Contains(targetIDs, [Col1]) then "bla1"
        else if Text.Contains([Col2], "bla2") then "bla2"
        else "bla3")
in
    #"Added Conditional Column"

核心优化点

  • 用List.Contains替代重复的多分支if判断,代码结构更清晰,后续新增/删除ID只需修改列表内容
  • 列表变量的写法减少了重复计算,在处理大量数据时性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:50:11