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

如何用DAX筛选按ki_File分组的dy_UpCst最大值行

DAX实现按分组筛选最大值行的方案

以下是几种简洁高效的DAX方案,实现按ki_File分组后,筛选出dy_UpCst值最大的行:

方法1:GENERATE + TOPN(直观易懂)

通过GENERATE遍历每个唯一的ki_File,再用TOPN取出对应分组里dy_UpCst最大的行:

筛选后表 = 
GENERATE (
    VALUES ( '源表'[ki_File] ),
    TOPN ( 
        1, 
        FILTER ( '源表', '源表'[ki_File] = EARLIER ( '源表'[ki_File] ) ), 
        '源表'[dy_UpCst], DESC 
        -- 若需处理同分组内最大值重复的情况,可添加额外排序字段,例如:'源表'[某唯一字段], ASC
    )
)

方法2:FILTER + MAXX(简洁筛选)

直接在源表中筛选出dy_UpCst等于对应分组最大值的行:

筛选后表 = 
FILTER (
    '源表',
    '源表'[dy_UpCst] = MAXX ( 
        FILTER ( '源表', '源表'[ki_File] = EARLIER ( '源表'[ki_File] ) ), 
        '源表'[dy_UpCst] 
    )
)

如果同分组内存在多个dy_UpCst等于最大值的行,此方法会保留所有符合条件的行。

方法3:CALCULATETABLE + TREATAS(高性能适配)

先聚合出每个ki_File对应的最大dy_UpCst,再通过TREATAS关联回源表获取完整行数据,大数据量场景下性能更优:

筛选后表 = 
CALCULATETABLE (
    '源表',
    TREATAS (
        SUMMARIZE (
            '源表',
            '源表'[ki_File],
            "Max_UpCst", MAX ( '源表'[dy_UpCst] )
        ),
        '源表'[ki_File],
        '源表'[dy_UpCst]
    )
)

补充说明

  • 若要确保每个分组仅返回一行(即使存在多个最大值),可在TOPN中添加第二个排序依据(比如唯一标识字段),避免结果出现多行。
  • 上述代码中的'源表'需替换为你实际使用的表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:01:26