You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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写法未正确匹配上下文层级。

错误写法原因

  1. 第一种写法的ISFILTERED(Table)判断范围过宽,无法区分当前行是Sub-Category层级还是Category层级,导致在Sub-Category行错误执行Category级别的平均计算。
  2. 第二种写法的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:15:23