PowerBI矩阵使用DISTINCTCOUNT度量值时小计不正确求助
解决PowerBI矩阵唯一值小计错误的方案
问题根源:默认的
CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber]))在矩阵小计行时,会继承子分组的上下文过滤器,导致父级小计变成子级数值的简单累加,而非统计父分组范围内的全局唯一值总数。针对性修正方案:
根据你的分组+子分组结构,用以下两种DAX度量值解决:- 多层分组通用写法(自动适配父/子行)
PSUs = IF( ISINSCOPE(ARPU[你的子分组列]), // 替换为矩阵行区域的子分组字段名 // 子分组行:正常统计当前子组内的唯一值 CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber])), // 父分组小计:忽略子分组的过滤,统计整个父组内的唯一值 CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber]), ALL(ARPU[你的子分组列])) )如果有超过两层的嵌套分组,可嵌套
ISINSCOPE判断更多层级,比如:PSUs = SWITCH( TRUE(), ISINSCOPE(ARPU[最细分子分组列]), CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber])), ISINSCOPE(ARPU[中间分组列]), CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber]), ALL(ARPU[最细分子分组列])), // 最顶层分组小计 CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber]), ALL(ARPU[中间分组列], ARPU[最细分子分组列])) )- 基于SUMX的聚合写法
这种写法通过先按父分组聚合,再计算每个父分组内的唯一值:
PSUs = VAR ParentGroups = VALUES(ARPU[你的父分组列]) // 替换为矩阵行区域的父分组字段名 RETURN SUMX( SUMMARIZE(ARPU, ARPU[你的父分组列]), CALCULATE(DISTINCTCOUNT(ARPU[DistinctNumber]), ALL(ARPU[你的子分组列])) )操作步骤:
- 将上述代码中的
你的父分组列、你的子分组列替换为你矩阵行区域实际使用的字段 - 替换后将新度量值拖入矩阵的值区域
- 刷新数据后查看小计是否正常
- 将上述代码中的
内容的提问来源于stack exchange,提问作者LoganH244
相关产品推荐
相关产品推荐

