如何按组统计值出现次数,仅当值‘7’恰好出现一次时生成标记?
DAX:仅当分组内唯一值为7时标记
问题
现有DAX代码仅判断分组内是否存在值"7",不符合需求。需要实现:仅当分组内**只有一条记录且该记录值为"7"**时标记为"Y",其余情况均为"N"。
现有数据:
| Group | Value |
|---|---|
| A | 7 |
| A | 2 |
| A | 3 |
| B | 8 |
| B | 9 |
| C | 7 |
| C | 5 |
| C | 7 |
| D | 7 |
期望输出:
| Group | Value | Result |
|---|---|---|
| A | 7 | N |
| A | 2 | N |
| A | 3 | N |
| B | 8 | N |
| B | 9 | N |
| C | 7 | N |
| C | 5 | N |
| C | 7 | N |
| D | 7 | Y |
解决方案
创建计算列,使用以下DAX表达式:
Result = VAR GroupTotalRows = CALCULATE(COUNTROWS('Table'), ALLEXCEPT('Table', 'Table'[Group])) VAR Group7Count = CALCULATE(COUNTROWS('Table'), ALLEXCEPT('Table', 'Table'[Group]), 'Table'[Value] = "7") RETURN IF(GroupTotalRows = 1 && Group7Count = 1, "Y", "N")
代码解释
GroupTotalRows:计算当前分组的总记录数,ALLEXCEPT确保只保留Group列的上下文,排除其他列的筛选影响Group7Count:统计当前分组内值为"7"的记录数量- 最终判断:只有当分组总记录数为1且该记录是"7"时,返回"Y",否则返回"N"
内容的提问来源于stack exchange,提问作者user35131
相关产品推荐
相关产品推荐

