用于排除 Azure 数据工厂中的数组项的集合

Collection to exclude array items in azure data factory

在 Azure 数据工厂中,我们有如下集合:

intersection([1, 2, 3], [101, 2, 1, 10],[6, 8, 1, 2])

whic returns [1, 2]

我在找十字路口对面。对于给定的两个数组,它应该 return 个元素不存在于第一个数组中。

Ex: If we pass two arrays, 
    Array a: [1,2,3,4,5]
    Array b: [1,2,3]

Ouput: [4,5]

一种方法是添加两个 lookup 活动,生成两个数组和第一个数组中项目的 Foreach,如果第二个项目中不存在array 执行另一个 activity.

在 Azure 数据工厂中有没有更好的方法?

谢谢

您是否尝试使用 ADF 映射数据流中的连接转换解决此问题?

intersection 适用于数组。如果您有两个数组(数组是本机 Azure 数据工厂类型),那么我认为 Lookup 无法正常工作,因为它可以处理数据集?遗憾的是 Azure 数据工厂 (ADF v2) 在集合操作方面没有 unionintersection 的补充,可能是 complementexceptminus.

但是您可以使用 for each 循环和 if 条件来解决这个问题。例如,我有一个带有两个数组参数的 ADF v2 管道,如下所示:

for each循环遍历a1参数。将项目 属性 设置为:

@pipeline().parameters.a1

for each 循环中,添加一个 if 条件:

设置if条件使用contains函数检查a2参数是否为for each循环中当前项的存在(即item()):

@contains(pipeline().parameters.a2,item())

最后添加一个'if false' activity,带有一个Append variable任务,eg

a3是数组类型的变量。

目前还不需要启动 Spark 集群来解决这个特定问题; )