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

Azure Data Factory数据流中基于多列规则去除文件重复行

在Azure Data Factory数据流中实现自定义规则去重

针对你的需求(当First_name+Last_name+Email完全相同,或First_name+Last_name+phone完全相同则判定为重复,需去除重复项),可以通过以下步骤在ADF数据流中实现:

步骤1:生成分组标识

添加派生列转换,创建两个组合键,分别对应两个去重规则:

  • Key_Email: concat(First_name, Last_name, Email)
  • Key_Phone: concat(First_name, Last_name, phone)

若需忽略大小写(如邮箱、姓名的大小写差异),可使用lower()统一转换,例如:concat(lower(First_name), lower(Last_name), lower(Email))

步骤2:聚合+联合+去重(可靠实现)

这种方法可以同时覆盖两个去重规则,确保最终结果无重复:

  1. 第一次聚合:按Key_Email分组,对First_name、Last_name、Email、phone字段分别取第一个值(如first(First_name)),得到所有Email维度的唯一行。
  2. 第二次聚合:按Key_Phone分组,同样对四个字段取第一个值,得到所有Phone维度的唯一行。
  3. 联合转换:将两次聚合的结果进行联合(Union)。
  4. 去重转换:基于全部4列进行去重,最终得到符合要求的唯一行集合。

替代步骤:窗口函数标记过滤

如果希望更灵活控制保留的行(如保留最早/最新行),可以用以下方式:

  1. 在步骤1生成分组键后,添加窗口转换,定义两个行号列:
    • RowNum_Email: row_number() over (partition by Key_Email order by First_name)(按Key_Email分组给每行编序号)
    • RowNum_Phone: row_number() over (partition by Key_Phone order by First_name)(按Key_Phone分组给每行编序号)
  2. 添加过滤转换,设置条件为保留每个分组的第一行:
    RowNum_Email == 1 || RowNum_Phone == 1
    
  3. 最后再添加一次去重转换,基于全部4列去重,避免同一行被多次保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:43:12