PowerBI矩阵中Category行总计AverageX计算异常问题求助
PowerBI Matrix 行总计AverageX计算修正方案
问题分析
你在Matrix视觉对象中设置行层级为Category+Sub-Category,需要在Category行总计和全局总计行显示对应层级下Sub-Category的[Result]平均值,但当前Category行总计的计算结果错误(例如ABC类别期望为(4+2.84)/2=3.42,实际得到2.97),之前的两种DAX写法未正确匹配上下文层级。
错误写法原因
- 第一种写法的
ISFILTERED(Table)判断范围过宽,无法区分当前行是Sub-Category层级还是Category层级,导致在Sub-Category行错误执行Category级别的平均计算。 - 第二种写法的
SummaryTable直接生成全表的Category+Sub-Category组合,未结合当前行的Category上下文,计算的是全局所有Sub-Category的平均值,而非当前Category下的子集。
正确DAX度量值
以下两种写法均可实现需求:
写法一:基于ISINSCOPE判断层级
Average Result = IF( // 判断当前行处于Sub-Category层级,直接返回该子类别的Result ISINSCOPE('Table'[Sub-Category]), [Result], // 否则(Category总计或全局总计),计算对应层级下所有Sub-Category的Result平均值 AVERAGEX( VALUES('Table'[Sub-Category]), [Result] ) )
写法二:结合SUMMARIZE明确上下文
Average Result = VAR SubCategorySummary = SUMMARIZE( 'Table', 'Table'[Category], 'Table'[Sub-Category], "@SubResult", [Result] ) RETURN IF( ISINSCOPE('Table'[Sub-Category]), [Result], AVERAGEX(SubCategorySummary, [@SubResult]) )
关键逻辑说明
ISINSCOPE('Table'[Sub-Category]):精准判断当前行是否为Sub-Category明细行,是则直接返回[Result]。VALUES('Table'[Sub-Category]):在Category总计/全局总计层级时,自动返回当前上下文下的所有Sub-Category列表(例如ABC类别下的两个子类别),再通过AVERAGEX计算每个子类别[Result]的算术平均,得到你需要的(4+2.84)/2=3.42这类结果。
内容的提问来源于stack exchange,提问作者kandarp
相关产品推荐
相关产品推荐

