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

如何用DAX度量实现Power BI矩阵聚合的减法运算?

实现自定义减法聚合的DAX度量方案

当然可以搞定!咱们可以通过编写一个带条件判断的DAX度量值,精准控制Power BI矩阵中的聚合逻辑,完全匹配你想要的结果。

核心思路

根据矩阵的层级(Header/Subheader/Subheader2)分别定义计算规则:

  • 最底层(Subheader2:C、D):直接返回原始的Amount值
  • 中间层(Subheader:B):计算C的Amount - D的Amount
  • 顶层(Header:A):继承中间层B的计算结果

DAX度量代码

请将代码中的YourTableName替换成你实际使用的表名,确保列名和你的数据一致:

Custom Amount = 
VAR CurrentHeader = SELECTEDVALUE('YourTableName'[Header])
VAR CurrentSubheader = SELECTEDVALUE('YourTableName'[Subheader])
VAR CurrentSubheader2 = SELECTEDVALUE('YourTableName'[Subheader2])

RETURN
// 处理最底层(C、D):直接返回对应Amount
IF(
    NOT ISBLANK(CurrentSubheader2),
    SUM('YourTableName'[Amount]),
    // 处理中间层(B):计算C - D
    IF(
        NOT ISBLANK(CurrentSubheader),
        CALCULATE(SUM('YourTableName'[Amount]), 'YourTableName'[Subheader2] = "C") 
        - CALCULATE(SUM('YourTableName'[Amount]), 'YourTableName'[Subheader2] = "D"),
        // 处理顶层(A):继承B的结果
        CALCULATE([Custom Amount], 'YourTableName'[Subheader] = "B")
    )
)

代码逻辑解释

  1. 变量定义:通过SELECTEDVALUE获取当前上下文的各层级字段值,用来判断当前处于矩阵的哪一层
  2. 最底层判断:如果当前显示的是Subheader2(C或D),直接返回对应行的Amount(因为每个Subheader2对应唯一值,SUM结果就是原始数值)
  3. 中间层计算:当显示的是Subheader(B)时,分别筛选出C和D的Amount,做减法运算
  4. 顶层继承:当显示的是Header(A)时,直接调用中间层B的计算结果,保证A和B的数值一致

效果验证

将这个Custom Amount度量放到矩阵的Values区域,行区域按Header → Subheader → Subheader2的顺序添加,就能得到你想要的结果:

Amount
-10
-10
10
20

内容的提问来源于stack exchange,提问作者apollo89

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:05:13