如何获取数组中的所有元素,而不是 HIVE 中的另一个数组中的所有元素?
Posted
技术标签:
【中文标题】如何获取数组中的所有元素,而不是 HIVE 中的另一个数组中的所有元素?【英文标题】:How to get all the elements in an array but not in another array in HIVE? 【发布时间】:2020-09-30 06:53:18 【问题描述】:例如,我现在有两列数组:
id col1 col2
A [1, 3] [1, 2, 3]
B [2] [1, 2, 3]
我想要的是col2
中的所有元素,而不是col1
中的所有元素:
id output
A [2]
B [1, 3]
我怎样才能做到这一点?
【问题讨论】:
使用Pandas
这是一项工作
【参考方案1】:
分解 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
【讨论】:
以上是关于如何获取数组中的所有元素,而不是 HIVE 中的另一个数组中的所有元素?的主要内容,如果未能解决你的问题,请参考以下文章
为啥一个空数组等于一个空字符串,而不是 javascript 中的另一个空数组? [复制]
如何在scala中的另一个数组中使用一个数组,以便使用一个数组中的每个元素附加到另一个数组中的相应元素?