例如,我现在有两列数组:
id col1 col2
A [1, 3] [1, 2, 3]
B [2] [1, 2, 3]
我想要的是 col2
中但不是 col1
中的所有元素:
id output
A [2]
B [1, 3]
我怎样才能实现这个目标?
最佳答案
分解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
关于sql - HIVE中如何获取一个数组中的所有元素而不是另一个数组中的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64132317/