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

PowerBI中使用DAX实现按Source分组并对max(FYandFW)对应度量值求和的问题

PowerBI中使用DAX实现按Source分组并对max(FYandFW)对应度量值求和的问题

嗨,我来帮你搞定这个需求!从你的示例数据和预期结果来看,核心就是要先按Source分组,找出每个分组里最大的FYandFW值,然后把这些最大值对应的num(也就是带**标记的行)加总起来,对吧?

下面给你两种场景的DAX解决方案,你可以根据自己的实际情况选择:

场景1:num是数据表中的一列

如果你的num是直接存在表中的列(比如示例里的**代表这个行需要被计入求和),可以用这个度量值:

Sum of Max FYandFW Values = 
// 第一步:生成每个Source对应的最大FYandFW值的临时表
VAR MaxFYPerSource = 
    SUMMARIZE(
        '你的数据表名',
        '你的数据表名'[Source],
        "@MaxFY", MAX('你的数据表名'[FYandFW])
    )
// 第二步:筛选出原表中每个Source的最大FYandFW对应的行
VAR TargetRows = 
    FILTER(
        '你的数据表名',
        ( '你的数据表名'[Source], '你的数据表名'[FYandFW] ) IN MaxFYPerSource
    )
// 第三步:对筛选后的行的num列求和
RETURN
    SUMX(TargetRows, '你的数据表名'[num])

场景2:num是一个已有的度量值

如果num不是表列,而是你已经定义好的度量值,那需要稍微调整一下,确保筛选上下文正确:

Sum of Max FYandFW Measures = 
// 生成每个Source的最大FYandFW临时表
VAR MaxFYPerSource = 
    SUMMARIZE(
        '你的数据表名',
        '你的数据表名'[Source],
        "@MaxFY", MAX('你的数据表名'[FYandFW])
    )
// 用ALL清除外部筛选,确保能正确找到所有Source的目标行
VAR TargetRows = 
    FILTER(
        ALL('你的数据表名'),
        ( '你的数据表名'[Source], '你的数据表名'[FYandFW] ) IN MaxFYPerSource
    )
// 对目标行应用你的num度量值并求和
RETURN
    SUMX(TargetRows, [你的num度量值名称])

简单验证你的示例

拿你给的数据来说:

  • Company A的最大FYandFW是202453,对应行的num是**(假设值为1)
  • Company B的最大FYandFW是202502,对应行的num是**(假设值为1)
    用上面的度量值计算后,结果就是2,完全符合你的预期。

小提示

  • 记得把代码里的你的数据表名和你的num度量值名称替换成你实际的表名和度量值哦
  • 如果FYandFW是文本类型也没关系,MAX函数会按字符顺序取最大的(你的格式是年份+周数,文本排序逻辑和数值排序一致)
  • 如果某个Source有多个相同的最大FYandFW行,这个代码会把所有这些行的num都加进去;如果只需要取其中一行,可以改用TOPN函数来筛选

备注:内容来源于stack exchange,提问作者symkly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:03:13