PowerBI DAX需求:按ID判断是否存在Closed状态并返回布尔值
DAX实现按ID判断是否存在"Closed"状态并返回每行结果
你可以通过DAX计算列实现这个需求,以下是两种常用的可行写法:
方法1:基于COUNTROWS的判断
新建计算列,公式如下:
is closed = CALCULATE( COUNTROWS( FILTER( '你的表名', '你的表名'[ID] = EARLIER('你的表名'[ID]) && '你的表名'[State] = "Closed" ) ) > 0 )
逻辑说明
EARLIER('你的表名'[ID])锁定当前行的ID值,确保仅针对当前ID进行状态检查FILTER筛选出当前ID下所有状态为"Closed"的行- 用
COUNTROWS统计筛选结果的行数,大于0则说明该ID存在"Closed"状态,返回TRUE,否则返回FALSE
方法2:基于CONTAINSROW的简洁写法
另一种更精简的实现方式:
is closed = CALCULATE( CONTAINSROW( '你的表名'[State], "Closed" ), ALLEXCEPT('你的表名', '你的表名'[ID]) )
逻辑说明
ALLEXCEPT('你的表名', '你的表名'[ID])保留当前ID的上下文,移除其他列的筛选影响CONTAINSROW直接判断当前ID对应的State列中是否包含"Closed"值,存在则返回TRUE,否则返回FALSE
验证效果
将上述任一公式应用到你的表中,会得到与期望一致的输出:
| ID | State | is closed |
|---|---|---|
| 1 | Open | TRUE |
| 1 | Closed | TRUE |
| 2 | Open | FALSE |
| 2 | Open | FALSE |
| 2 | Open | FALSE |
| 3 | Open | TRUE |
| 3 | Closed | TRUE |
| 3 | Reopend | TRUE |
| 3 | Open | TRUE |
内容的提问来源于stack exchange,提问作者Menno
相关产品推荐
相关产品推荐

