Power BI:基于多OR条件度量值筛选表报错求助
解决DAX度量值报错:“Multiple columns cannot be converted to a scalar value”
错误原因
- 度量值返回类型不匹配:DAX度量值要求返回单个标量值(如数字、文本),但你的代码中
FILTER返回的是完整的表,这直接触发了报错。 - 逻辑运算符优先级错误:
&&的优先级高于||,原代码会先计算CONTAINSSTRING(...) && 'CRA Intake Status' = "To Do",再和后面的条件做或运算,不符合你需要的“Parent Link满足条件,且后面任意一个条件成立”的逻辑。
解决办法
方案1:创建计算表(而非度量值)
如果你的目标是得到筛选后的数据集,直接创建计算表,修正逻辑括号即可:
Filter missing requirements = VAR MTMB = "ABN-1095" RETURN FILTER('Sheet1', CONTAINSSTRING('Sheet1'[Parent Link], MTMB) && ( 'Sheet1'[CRA Intake Status] = "To Do" || 'Sheet1'[Eligible for Capitalisation] = "No" || ISBLANK('Sheet1'[Eligible for Capitalisation]) || 'Sheet1'[Solution Intent status] IN {"To Do", "Undefined"} ) )
- 用括号包裹所有
||条件,确保先判断这些条件是否有一个成立,再和Parent Link的筛选条件做&&运算。 - 用
IN简化多值判断,让代码更简洁易读。
方案2:调整为合法的度量值(返回标量)
如果需要在报表中使用度量值(比如统计符合条件的行数),将筛选后的表转换为标量值,例如用COUNTROWS统计行数:
Filter missing requirements = VAR MTMB = "ABN-1095" VAR FilteredTable = FILTER('Sheet1', CONTAINSSTRING('Sheet1'[Parent Link], MTMB) && ( 'Sheet1'[CRA Intake Status] = "To Do" || 'Sheet1'[Eligible for Capitalisation] = "No" || ISBLANK('Sheet1'[Eligible for Capitalisation]) || 'Sheet1'[Solution Intent status] IN {"To Do", "Undefined"} ) ) RETURN COUNTROWS(FilteredTable)
- 先通过
VAR定义筛选后的表,再用COUNTROWS返回符合条件的行数,满足度量值必须返回标量的要求。
内容的提问来源于stack exchange,提问作者Laurens
相关产品推荐
相关产品推荐

