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
相关产品推荐
相关产品推荐

