Power BI DAX列比较:排除含指定多状态ID的计数统计
DAX实现排除双状态ID的计数方案
核心逻辑:先定位所有同时绑定notified、success两种状态的ID,将这批ID从全量去重ID集合中剔除后再做计数即可,无需逐行比对字段值。
方案1:写度量值(适配所有可视化场景,推荐)
直接新建度量值,替换代码里的表名为你实际的数据集名称即可:
合规ID计数 = // 第一步:取出所有需要排除的ID集合 VAR ExcludedIDs = CALCULATETABLE ( VALUES ( '你的业务表'[ID] ), '你的业务表'[状态] = "notified", CALCULATETABLE ( VALUES ( '你的业务表'[ID] ), '你的业务表'[状态] = "success" ) ) // 第二步:统计排除后的去重ID数量 RETURN COUNTROWS ( FILTER ( VALUES ( '你的业务表'[ID] ), NOT [ID] IN ExcludedIDs ) )
注意事项:
- 代码里的状态值要和你实际数据集里的拼写、大小写完全匹配,如果你数据里的通知状态是
Notifed(拼写缺i),就把代码里的"notified"改成对应文本,否则会匹配失败 - 这个度量值可以直接拖到卡片图、矩阵、带切片器联动的图表里用,会自动跟随筛选条件计算
方案2:加计算列(适配入门用户点选操作习惯)
如果不习惯写度量值,可以新建计算列,给每个ID打上是否需要排除的标记:
ID有效性标记 = VAR CurID = '你的业务表'[ID] VAR IDAllStatus = CALCULATETABLE ( VALUES ( '你的业务表'[状态] ), '你的业务表'[ID] = CurID ) RETURN IF ( "notified" IN IDAllStatus && "success" IN IDAllStatus, "需排除", "保留" )
标记完成后,在视觉筛选器里把ID有效性标记筛成「保留」,直接对ID字段做非重复计数就能得到结果,操作门槛更低。
快速校验方法
拉一个表格视觉对象,放入ID、状态两个字段,找几个确认同时有notified、success状态的ID,核对是否没有被计入统计结果,避免表名、字段名、状态值写错导致计算偏差。
内容的提问来源于stack exchange,提问作者MSS
相关产品推荐
相关产品推荐

