DAX编写COUNTIFS等效公式报错:文本与布尔值无法比较
DAX公式错误分析与修正
报错原因
报错「DAX comparison operations do not support comparing values of type Text with values of type True/False」的直接原因是这行代码:
MachineData[Type] <> CONTAINSSTRING(MachineData[Type], "rinse")
CONTAINSSTRING函数返回的是布尔值(TRUE/FALSE),而MachineData[Type]是文本类型,用<>(不等于)运算符直接把文本和布尔值做比较,触发了类型不匹配的错误。
另外,DATESBETWEEN的用法也不正确:这个函数的作用是返回符合范围的日期表,不能直接作为FILTER的筛选条件,需要改成直接对日期字段做范围比较。
修正后的DAX公式
针对你的需求,修正后的公式如下:
Completed 1 Month = COUNTROWS( FILTER( MachineData, MachineData[Successful Run?] = "Y" && NOT CONTAINSSTRING(MachineData[Type], "rinse") && MachineData[StartTime] >= SELECTEDVALUE('DateTable'[Date]) - 30 && MachineData[StartTime] <= SELECTEDVALUE('DateTable'[Date]) ) )
关键修正点:
- 把
MachineData[Type] <> CONTAINSSTRING(...)改成NOT CONTAINSSTRING(MachineData[Type], "rinse"),直接用布尔值取反来判断Type不包含"rinse"。 - 替换
DATESBETWEEN为直接的日期范围比较,用SELECTEDVALUE('DateTable'[Date])获取切片器所选的日期(前提是你有独立的日期表关联到MachineData,这是Power BI的最佳实践;如果没有独立日期表,也可以用MAX(MachineData[StartTime]),但切片器筛选可能不够精准)。
关于「Analysis Complete?」列空值的影响
当前公式里没有用到「Analysis Complete?」字段,所以该列的空值不会导致这次报错,可以排除这个因素。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

