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

如何在ADF数据流中实现基于条件的两步排序逻辑

ADF数据流两步排序去重解决方案

核心思路

放弃聚合转换,改用窗口转换+筛选的组合逻辑,精准选出符合双重排序规则的唯一行,彻底避免随机取值问题。

具体操作步骤

  • 添加窗口转换并接入源数据:
    • 分区配置:将id设为「Partition by」字段,确保相同id的行被划分到同一组。
    • 排序规则:在「Order by」中依次设置两个降序条件:date1(降序)、date2(降序)。这样每个id组内,date1最大的行排在首位;若date1相同,则date2最大的行排在首位。
    • 新增行号列:在窗口转换的列设置中,新增一列(例如命名为row_num),使用表达式 rowNumber()。该函数会给每个窗口内的行按排序顺序编号,第一行就是我们需要保留的目标行。
  • 添加筛选转换并接入窗口转换的输出:
    • 设置过滤条件为 row_num == 1,只保留每个id组内排序后的第一行。
  • (可选)添加选择转换,移除临时生成的row_num列,只保留业务所需的id、date1、date2及其他字段。

原聚合方法无效的原因

聚合转换仅对分组后的列执行聚合计算(如max(date1)),若直接选取非聚合列(比如原始date2),ADF会随机从分组内挑选某一行的值,无法保证该值与max(date1)、max(date2)属于同一行,最终导致结果不符合预期。而窗口转换先完成组内排序,再通过行号精准锁定目标行,能确保拿到完整的符合规则的数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:12