如何创建Power BI度量值,过滤含指定ID的编码并统计符合条件的编码数量
问题原因
你写的DAX返回错误结果的核心逻辑问题是:FILTER('Table', NOT('Table'[ID] in {2,8}))是逐行过滤原表,仅排除ID为2/8的单独行,编码45对应的ID=5、7的行仍然会被保留,所以去重计数时仍然会把45算入,最终得到错误结果2。
正确实现方案
你需要的逻辑是按编码聚合判断:只要某编码下存在任意一条ID为2或8的记录,就直接排除整个编码,符合要求的写法有两种:
写法1:逐编码校验筛选
Unsuccessful = CALCULATE( DISTINCTCOUNT('Table'[Code]), FILTER( VALUES('Table'[Code]), // 取所有不重复的编码逐个判断 // 统计当前编码下ID为2/8的记录数,为0则符合要求 CALCULATE(COUNTROWS('Table'), 'Table'[ID] IN {2,8}) = 0 ) )
写法2:集合差集计算(逻辑更直观)
Unsuccessful = COUNTROWS( EXCEPT( VALUES('Table'[Code]), // 所有编码的集合 // 所有关联过ID=2/8的编码集合 CALCULATETABLE(VALUES('Table'[Code]), 'Table'[ID] IN {2,8}) ) )
两种写法都会返回正确结果1。
内容的提问来源于stack exchange,提问作者user14241810
相关产品推荐
相关产品推荐

