如何在 hive 中获取一个数组中的所有元素,而不是另一个数组中的元素?

snz8szmq  于 2021-04-03  发布在  Hive
关注(0)|答案(1)|浏览(4375)

例如,我现在有两列数组。

id     col1     col2
A      [1, 3]   [1, 2, 3]
B      [2]      [1, 2, 3]

我想要的是所有的元素都在col2中,而不是col1中。

id     output
A      [2]
B      [1, 3]

如何才能做到这一点?

mdfafbf1

mdfafbf11#

explode col2数组,使用array_contains检查每个元素都在另一个数组中,再次收集数组中不在col1数组中的元素。

select t.id, 
       collect_set(case when array_contains(t.col1, e.elem) then NULL else e.elem end) as result  
  from my_table t 
       lateral view explode(t.col2) e as elem
 group by t.id

相关问题