请求编写DAX度量值:统计满足Region不匹配条件的ColumnA去重数量
DAX度量值:按日期与ID统计Region不匹配的去重ID数量
需求说明
需实现一个支持钻取的DAX度量值,满足以下规则:
- 仅统计
Agency = "Yes"的记录 - 针对**日期+ColumnA(ID)**的组合,只要该组合下存在任一满足以下条件的记录,就将该ID计入统计:
- RegionA与RegionB均为空
- RegionA与RegionB值不相等
- RegionA和RegionB其一为空、另一有值
- 最终返回满足条件的去重ColumnA数量
数据样本
| 日期 | ColumnA | Agency | RegionA | RegionB |
|---|---|---|---|---|
| 11/01/2024 | 123 | Yes | Phoenix | Phoenix |
| 11/01/2024 | 123 | Yes | Charlotte | |
| 11/08/2024 | 123 | Yes | Phoenix | Phoenix |
| 11/08/2024 | 123 | Yes | Charlotte | Charlotte |
| 11/01/2024 | 345 | No | Edison | |
| 11/01/2024 | 345 | No | Atlanta | |
| 11/01/2024 | 567 | Yes | Tampa | |
| 11/01/2024 | 567 | Yes | Raleigh | |
| 11/01/2024 | 567 | Yes | Memphis | |
| 11/08/2024 | 345 | Yes | Atlanta | Edison |
| 11/08/2024 | 345 | Yes | Edison | |
| 11/08/2024 | 567 | Yes | Tampa | Tampa |
| 11/08/2024 | 567 | Yes | Raleigh | Raleigh |
预期结果
- 筛选日期为
2024-11-01时,返回2(ID:123、567) - 筛选日期为
2024-11-08时,返回1(ID:345) - 无筛选时,返回2(ID:123、345)
DAX度量值代码
不匹配ID数量 = VAR 符合条件的ID组合 = SUMMARIZE( FILTER( '数据表', '数据表'[Agency] = "Yes" ), '数据表'[日期], '数据表'[ColumnA], "是否存在不匹配", VAR 当前组所有记录 = CALCULATETABLE( '数据表', ALLEXCEPT( '数据表', '数据表'[日期], '数据表'[ColumnA] ) ) VAR 存在均为空 = COUNTROWS( FILTER( 当前组所有记录, ISBLANK( '数据表'[RegionA] ) && ISBLANK( '数据表'[RegionB] ) ) ) > 0 VAR 存在值不匹配 = COUNTROWS( FILTER( 当前组所有记录, NOT( ISBLANK( '数据表'[RegionA] ) && ISBLANK( '数据表'[RegionB] ) ) && '数据表'[RegionA] <> '数据表'[RegionB] ) ) > 0 VAR 存在单空 = COUNTROWS( FILTER( 当前组所有记录, ( ISBLANK( '数据表'[RegionA] ) && NOT( ISBLANK( '数据表'[RegionB] ) ) ) || ( NOT( ISBLANK( '数据表'[RegionA] ) ) && ISBLANK( '数据表'[RegionB] ) ) ) ) > 0 RETURN 存在均为空 || 存在值不匹配 || 存在单空 ) RETURN COUNTROWS( FILTER( 符合条件的ID组合, [是否存在不匹配] = TRUE() ) )
代码逻辑解析
- 基础筛选:先过滤出
Agency = "Yes"的有效记录,排除不需要统计的数据 - 分组判断:通过
SUMMARIZE按日期和ColumnA分组,对每个组进行三个不匹配条件的判断:当前组所有记录:使用ALLEXCEPT保留当前日期和ID的上下文,获取该组的全部原始数据- 分别检查组内是否存在满足三个不匹配条件的记录,只要任一条件成立,标记该组为"存在不匹配"
- 统计结果:筛选出标记为"存在不匹配"的组,统计其数量即为满足条件的去重ID数
钻取支持说明
由于使用ALLEXCEPT保留了日期和ColumnA的上下文,当在报表中钻取到具体日期、ID或其他维度时,度量值会自动适配当前上下文,返回对应维度下的统计结果,完全满足钻取需求。
内容的提问来源于stack exchange,提问作者Srinivas Dhulipala
相关产品推荐
相关产品推荐

