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

Microsoft Azure Data Factory:如何实现基于包含关系的表关联?

Azure Data Factory Data Flows 实现包含关系的表关联方案

针对你需要基于「表1的Name是否包含在表2的Names字段中」实现关联的需求,提供两种可行方案:

方案一:拆分表2后执行等值关联(高性能推荐)

适用于表2数据量较大的场景,利用Data Flows的优化操作提升效率:

  1. 拆分表2的Names字段为单行记录

    • 引入表2数据源后,添加「派生列」转换,生成数组列:
      NameArray = split(Names, ', ')
      
      该表达式会将逗号分隔的Names拆分为单个名字组成的数组。
    • 接着添加「展开(Flatten)」转换,选择NameArray列作为展开对象,将数组拆分为多行。此时表2的每条多名字记录会被拆分为多条单名字记录,每条记录保留原Country值。
  2. 左外连接表1与处理后的表2

    • 引入表1数据源,添加「Join」转换,关联表1和拆分后的表2。
    • 设置关联条件为:表1.Name == 表2.NameArray
    • 关联类型选择左外连接,确保表1中无匹配的记录(如Lacie Garrison)被保留。
  3. 清理输出结果

    • 添加「选择」转换,保留Id、Name、Country列即可得到预期结果。若存在重复匹配(表2同一名字对应多个Country),可添加「聚合」转换,按Id和Name分组,用first(Country)取唯一匹配值。

方案二:Lookup转换配合contains表达式(快速实现)

适用于表2数据量较小的场景,无需拆分表结构:

  1. 在表1数据流中添加Lookup转换

    • 以表1为主数据流,添加「Lookup」转换,关联表2数据源。
    • 在匹配条件中输入表达式:
      contains(表2.Names, 表1.Name)
      
    • 关联类型选择左外连接。
  2. 提取关联字段

    • 从Lookup的输出结果中,选择表2的Country字段添加到主数据流。
    • 用「选择」转换保留所需的Id、Name、Country列,完成关联。

注意:方案二的contains是逐行字符串匹配操作,数据量大时性能不如方案一的等值Join,需根据数据规模选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:25:21