DAX IF语句处理Power BI中列匹配计数的空值过滤问题
正确实现方案
1. DAX 计算列写法(最符合你当前需求)
优先判断两个字段均不为空后再执行相等逻辑,代码如下:
Livraisons blanches = IF( NOT(ISBLANK([Client Quantity])) && NOT(ISBLANK([Quantity Delivered])), IF([Client Quantity] = [Quantity Delivered], 1, 0), BLANK() )
你之前的DAX未生效有两个原因:
- 语法错误:第一个判断条件后缺少逗号,第二个分支的
BLANK漏写括号,正确写法为BLANK()- 逻辑顺序错误:你优先判断了两个值相等,而Power BI中
BLANK() = BLANK()会返回TRUE,空行也会被误判为符合条件返回1,因此必须把非空判断放在逻辑最前面。
2. Power Query 自定义列写法(M语言,在数据加载阶段处理)
如果你希望在Power Query阶段就完成计算,避免后续DAX处理,可添加自定义列,代码如下:
if [Client Quantity] <> null and [Quantity Delivered] <> null then if [Client Quantity] = [Quantity Delivered] then 1 else 0 else null
3. 聚合度量值写法(无需新增列,直接统计符合条件的行数)
如果你的最终目的是统计两个值相等的有效行总数,可直接写度量值,将代码中的你的表名替换为实际表名即可:
有效相等行计数 = CALCULATE( COUNTROWS('你的表名'), '你的表名'[Client Quantity] = '你的表名'[Quantity Delivered], NOT(ISBLANK('你的表名'[Client Quantity])), NOT(ISBLANK('你的表名'[Quantity Delivered])) )
内容的提问来源于stack exchange,提问作者YannP
相关产品推荐
相关产品推荐

