如何在Power BI M语言中按条件更新列值?
Power BI M语言:修复COL_A列的条件更新代码
你这段代码无法运行的核心问题是Table.TransformColumns中上下文引用错误,以下是两种修复方案:
方案1:修正Table.TransformColumns的上下文引用
STEP_2 = Table.TransformColumns(STEP_1, {"COL_A", (currentValue) => if currentValue is null then if [COL_B] = "WW" then "WW" else if Text.Upper([COL_C]) = "XX" then "XX" else if Text.Upper([COL_C]) = "YY" then "YY" else if Text.Upper([COL_C]) = "ZZ" then "ZZ" else "JJ" else currentValue })
说明
原代码用each简写时,内部的[COL_A]会被解析为当前列的迭代值,而非行上下文的COL_A,导致空值判断逻辑混乱。改用(currentValue) =>明确接收当前列的值,行上下文里的[COL_B]、[COL_C]就能正常访问。
方案2:用Table.ReplaceValue实现更直观的行级逻辑
STEP_2 = Table.ReplaceValue(STEP_1, each [COL_A], (row) => if row[COL_A] is null then if row[COL_B] = "WW" then "WW" else if Text.Upper(row[COL_C]) = "XX" then "XX" else if Text.Upper(row[COL_C]) = "YY" then "YY" else if Text.Upper(row[COL_C]) = "ZZ" then "ZZ" else "JJ" else row[COL_A], Replacer.ReplaceValue, {"COL_A"})
说明
这种写法直接基于行对象(row)访问所有列,逻辑更清晰,也避免了上下文混淆的问题。
内容的提问来源于stack exchange,提问作者Fabrizio Ferrari
相关产品推荐
相关产品推荐

