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

如何在DAX中按分组汇总最新日期的金额并求和

DAX实现分组取最新日期并汇总金额

需求说明

按Group1和Group2分组,仅保留每个分组下最大(最新)日期的数据,同时对该日期对应的Amount求和。

示例数据

Group1Group2DateAmount
A1B16/20/20253
A1B16/20/20255
A1B16/19/20257
A2B26/20/20259
A2B26/19/202511

预期结果

Group1Group2Date总金额
A1B16/20/20258
A2B26/20/20259

解决方案

以下两种DAX写法均可实现需求,选择适合你数据模型的方式即可:

方法1:先获取分组最大日期再关联求和

最新日期金额汇总 = 
VAR 分组最大日期 = 
    SUMMARIZE(
        '原表',
        '原表'[Group1],
        '原表'[Group2],
        "最大日期", MAX('原表'[Date])
    )
RETURN
    SUMMARIZE(
        NATURALINNERJOIN('原表', 分组最大日期),
        '原表'[Group1],
        '原表'[Group2],
        '原表'[Date],
        "总金额", SUM('原表'[Amount])
    )
  • 步骤说明:
    1. 用SUMMARIZE生成每个Group1+Group2组合的最大日期临时表;
    2. 通过NATURALINNERJOIN关联原表与临时表,过滤出仅包含最大日期的行;
    3. 再次用SUMMARIZE对过滤后的数据按分组和日期求和。

方法2:直接筛选最大日期后求和

最新日期金额汇总 = 
CALCULATETABLE(
    SUMMARIZE(
        '原表',
        '原表'[Group1],
        '原表'[Group2],
        '原表'[Date],
        "总金额", SUM('原表'[Amount])
    ),
    FILTER(
        '原表',
        '原表'[Date] = CALCULATE(MAX('原表'[Date]), ALLEXCEPT('原表', '原表'[Group1], '原表'[Group2]))
    )
)
  • 步骤说明:
    1. 内部SUMMARIZE负责常规分组求和逻辑;
    2. 外层FILTER结合ALLEXCEPT,保留Group1和Group2的上下文,计算每个分组的最大日期,仅筛选出该日期对应的行;
    3. CALCULATETABLE将筛选后的结果传入求和逻辑,得到最终汇总表。

注意:将代码中的'原表'替换为你实际使用的表名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:05:02