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

在DAX中按分组求TopN:获取各Source对应MAX(FYandFW num)的sum值

解决DAX计算每个Source最大FYandFW num对应sum总和的问题

需求说明

按每个Source分组,找到每组内最大的FYandFW num,然后计算这些最大值对应的sum字段的总和(预期结果为6:Company A最大202453对应sum=1,Company B最大202502对应sum=5,1+5=6)

样本数据集

SourceFYandFW numsum
Company A2024531
Company A2024522
Company A2024513
Company B2025014
Company B2025025
Company B2024536

原代码问题分析

你当前的DAX代码逻辑存在冲突:

  • VAR j = VALUES('Table'[FYandFW num])会引入当前上下文的FYandFW num筛选,干扰对每个Source最大值的匹配
  • 最终CALCULATE中同时使用t和j作为筛选条件,导致无法正确定位到每个Source的最大值对应的sum记录

正确DAX写法

写法一:使用SUMX遍历分组计算

Amt = 
SUMX(
    VALUES('Table'[Source]),
    // 计算当前Source分组下的最大FYandFW num
    VAR MaxFYandFW = CALCULATE(MAX('Table'[FYandFW num]))
    // 取当前分组下等于最大值的sum总和
    RETURN CALCULATE(SUM('Table'[sum]), 'Table'[FYandFW num] = MaxFYandFW)
)

写法二:先构建最大值表再筛选求和

Amt = 
// 生成每个Source对应的最大FYandFW num的临时表
VAR MaxFYandFWPerSource = 
    SUMMARIZE(
        'Table',
        'Table'[Source],
        "@MaxFYandFW", MAX('Table'[FYandFW num])
    )
RETURN
    // 用临时表筛选原数据,计算符合条件的sum总和
    CALCULATE(
        SUM('Table'[sum]),
        TREATAS(
            MaxFYandFWPerSource,
            'Table'[Source],
            'Table'[FYandFW num]
        )
    )

两种写法都能得到预期的合计结果6,可根据你的模型上下文选择使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:17:06