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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:32:07