PowerBI度量值创建求助:多列空值条件判断需求
解决Power BI度量值判断空值的问题
首先得指出你原代码的核心问题:FILTER是表函数,返回的是一个表对象,但度量值要求返回标量值(比如数字、文本这类单个值),直接用它作为度量值肯定会报错。另外,用= ""只能识别空白文本,没法覆盖真正的空值(比如数据库里的NULL),用ISBLANK()会更准确。
根据你的需求,我给你两种常用的实现方案,你可以根据实际场景选择:
方案1:判断当前筛选范围内是否存在空值(返回1/0)
如果你需要的是「只要当前筛选范围内有任意一行的ColA/ColB/ColC为空,就返回1,否则返回0」,可以用这个写法:
M_DataIssues = VAR HasEmptyRows = COUNTROWS( FILTER( ALL(Table), -- 用ALL(Table)会忽略所有外部筛选,如果你想保留筛选,就换成Table ISBLANK(Table[ColA]) || ISBLANK(Table[ColB]) || ISBLANK(Table[ColC]) ) ) RETURN IF(HasEmptyRows > 0, 1, 0)
- 用
COUNTROWS()统计符合条件的行数,再通过IF()转换成1/0的标记; - 如果不需要忽略外部筛选(比如页面上的切片器筛选要生效),把
ALL(Table)改成Table即可。
方案2:行级判断空值(每行返回1/0)
如果你是想在表格可视化里,给每一行标记「是否有空值」(有空值返回1,否则0),可以用这个写法:
M_DataIssues = VAR CurrentColA = SELECTEDVALUE(Table[ColA]) VAR CurrentColB = SELECTEDVALUE(Table[ColB]) VAR CurrentColC = SELECTEDVALUE(Table[ColC]) RETURN IF( ISBLANK(CurrentColA) || ISBLANK(CurrentColB) || ISBLANK(CurrentColC), 1, 0 )
SELECTEDVALUE()会获取当前行上下文里的列值,确保每一行都能独立判断;- 把这个度量值拖到表格里,就能看到每行的标记结果。
额外提示
如果你想用这个度量值做筛选,只需要把它拖到「筛选器」面板,设置为「等于1」,就能筛选出所有存在空值的行,完全符合你只能用度量值的要求。
内容的提问来源于stack exchange,提问作者SQL_M




