如何简化Power Query中多条件IF THEN语句的编写?
简化Power Query多值匹配的几种方法
嘿,这个问题我太懂了!之前写Power Query的时候也被嵌套if搞得头大,给你几个更简洁的实现思路,绝对能解决你后续扩展的问题:
方法1:用List.Contains快速判断(最适合当前场景)
把需要匹配的所有值放进一个列表,用List.Contains一次性判断是否在列表内,代码瞬间简洁,后续加新值只要往列表里加就行:
Table.AddColumn(#"Added cluster_rating", "rating", each if List.Contains({"1", "2", "3"}, [variable_text1]) then "1-3" else null)
方法2:用switch表达式(适合多组匹配规则)
如果之后需要扩展更多匹配规则(比如不同取值对应不同评级),Power Query的switch语法可读性更强,支持多值匹配同一结果:
Table.AddColumn(#"Added cluster_rating", "rating", each switch [variable_text1] case "1", "2", "3" => "1-3" // 可以轻松扩展其他规则,比如: // case "4", "5", "6" => "4-6" else null )
方法3:用查找表匹配(适合大量规则的场景)
如果需要匹配的值特别多,甚至规则需要经常修改,建议把规则单独做成一个查找表,和业务逻辑分离,维护起来更方便:
let // 第一步:定义匹配规则表 RatingRules = #table( {"variable_value", "rating"}, { {"1", "1-3"}, {"2", "1-3"}, {"3", "1-3"}, // 后续加规则直接在这里新增行即可 {"4", "4-6"}, {"5", "4-6"} } ), // 第二步:给原表添加匹配后的rating列 AddedRating = Table.AddColumn(#"Added cluster_rating", "rating", each Table.Lookup(RatingRules, "variable_value", [variable_text1], "rating") ) in AddedRating
内容的提问来源于stack exchange,提问作者Crysis85




