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

PowerBI中M Query实现特定CASE逻辑报错求助

问题原因及解决方法

错误原因

你使用Table.TransformColumns时,each关键字对应的是当前列(A)的单个值,而非整行记录。当A的值为null时,你试图通过[B]访问其他列,相当于在一个null值上调用字段属性,这就触发了“无法对NULL类型应用字段访问”的错误。

解决方法

提供两种可行的M Query写法,任选其一即可:

方法1:用Table.TransformRows处理整行

这种方式直接操作整行记录,逻辑更清晰:

#"Transformed Rows" = Table.TransformRows(#"PreviousStep", (row) =>
    let
        currentA = row[A],
        currentB = row[B],
        updatedA = if (currentA = null or currentA = "") and (currentB = null or currentB = "") then "SELF" else currentA
    in
        Record.ReplaceFields(row, {"A", updatedA})
),
#"Result" = Table.FromRecords(#"Transformed Rows")

方法2:在Table.TransformColumns中明确传入整行参数

修改转换函数,同时接收当前列值和整行记录,避免上下文混淆:

#"Result" = Table.TransformColumns(#"PreviousStep", {
    {"A", (currentA, row) => 
        if (currentA = null or currentA = "") and (row[B] = null or row[B] = "") then "SELF" else currentA, type text
    }
})

额外提示

如果不确定B列是否存在,可以在判断前加个安全检查:Record.HasFields(row, "B") and (row[B] = null or row[B] = ""),避免因列不存在引发新错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:42:41