收集以排除Azure数据工厂中的数组项

时间:2019-06-04 00:20:25

标签: azure-data-factory azure-data-factory-2

在Azure数据工厂中,我们有以下收藏集:

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

whic返回[1, 2]

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

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

Ouput: [4,5]

一种方法是添加两个 lookup 激活项,以生成两个数组,并在第一个数组中添加 Foreach 项,如果第二个数组中不存在则执行另一个活动。

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

谢谢

2 个答案:

答案 0 :(得分:1)

intersection适用于数组。如果您有两个数组(数组是本机Azure Data Factory类型),那么我认为Lookup无法与数据集一起使用吗?令人遗憾的是,Azure数据工厂(ADF v2)就设置操作而言可能没有unionintersection或{{1 }}。

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

ADF pipeline pic 1

minus循环遍历a1参数。将Items属性设置为此:

for each

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

ADF pipeline pic 2

设置@pipeline().parameters.a1 条件以使用contains函数来检查a2参数中for each循环(即if)中当前项目的存在:

if

最后添加一个带有附加变量任务的'if false'活动,例如

ADF pipeline pic 3

for each是数组类型的变量。

ADF pipeline pic 4

现在还不需要启动Spark集群来解决此特定问题; )

答案 1 :(得分:0)

您是否尝试通过ADF映射数据流中的Join转换解决此问题?