集合以排除Azure数据工厂中的数组项 [英] Collection to exclude array items in azure data factory

查看:8
本文介绍了集合以排除Azure数据工厂中的数组项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

哪个返回[1, 2]

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

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

Ouput: [4,5]

一种方法是添加两个查找活动,结果是两个数组和Foreach第一个数组中的项,如果第二个项数组中不存在,则执行另一个活动。

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

谢谢

推荐答案

intersection使用数组。如果你有两个数组(数组是原生的Azure数据工厂类型),那么我不认为Lookup会像处理数据集一样工作?很遗憾,Azure Data Factory(ADF V2)在可能是complementexceptminus的集合操作方面没有对unionintersection的补充。

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

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

@pipeline().parameters.a1

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

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

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

最后添加一个带有追加变量任务的‘If False’活动,例如

a3是数组类型的变量。

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

这篇关于集合以排除Azure数据工厂中的数组项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆