例如,我现在有两列数组。
id col1 col2 A [1, 3] [1, 2, 3] B [2] [1, 2, 3]
我想要的是所有的元素都在col2中,而不是col1中。
id output A [2] B [1, 3]
如何才能做到这一点?
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
1条答案
按热度按时间mdfafbf11#
explode col2数组,使用array_contains检查每个元素都在另一个数组中,再次收集数组中不在col1数组中的元素。