Azure Data Factory中无需自定义活动实现数组参数去重
Azure Data Factory 字符串数组去重实现(无自定义活动)
针对管道中数组类型参数存在重复简单字符串值的场景,以下两种方案均完全使用ADF原生能力实现,无需自定义活动:
方案1:内置函数直接实现(优先推荐)
- 核心逻辑:ADF原生的
union()函数用于计算多个集合的并集,返回结果会自动剔除重复元素,刚好匹配简单值数组的去重需求,执行无额外活动开销。 - 用法:假设你的重复数组参数名为
targetArray,在任意需要使用去重结果的位置,直接使用如下表达式即可:
@union(pipeline().parameters.targetArray, createArray())
- 效果验证:如果传入参数值为
["cn-east","cn-north","cn-south","cn-east","cn-north"],表达式返回结果为["cn-east","cn-north","cn-south"],元素顺序和首次出现顺序保持一致。
注意:该方案仅适用于字符串、数字这类简单值类型数组,你的场景是简单字符串数组,完全适配。
方案2:筛选活动可视化流程实现
如果需要将去重逻辑做成管道内的可见步骤,方便调试排查,可以用内置活动组合实现,步骤如下:
- 管道内新增一个数组类型变量,命名为
dedupResult,初始值设置为空数组[]
- 管道内新增一个数组类型变量,命名为
- 添加ForEach活动,遍历待去重的原始数组参数,如果需要保留元素原有顺序,开启ForEach的「顺序执行」配置
- 在ForEach活动内部添加If条件活动,判断条件表达式如下:
@not(contains(variables('dedupResult'), item()))
- 在If条件的True分支中添加「追加变量」活动,目标变量选择
dedupResult,追加值设置为当前循环项@item()
- 在If条件的True分支中添加「追加变量」活动,目标变量选择
- ForEach执行完成后,
dedupResult变量存储的就是去重后的数组。
提示:如果数组元素量超过1万,优先选择方案1,避免ForEach循环的性能开销和项数限制影响。
内容的提问来源于stack exchange,提问作者qvt
相关产品推荐
相关产品推荐

