如何获取数组中的所有元素,而不是 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 中的另一个数组中的所有元素?的主要内容,如果未能解决你的问题,请参考以下文章

Hive 检查数组中的元素并获取索引

为啥一个空数组等于一个空字符串,而不是 javascript 中的另一个空数组? [复制]

如何快速检索不同单元格中的数组元素 ios

如何在scala中的另一个数组中使用一个数组,以便使用一个数组中的每个元素附加到另一个数组中的相应元素?

sql 从MySQL中JSON编码字段中的另一个数组中的数组中获取所有值。

如何从两个蜂巢数组中获取不匹配的元素