如何删除hive数组中值为0的元素

Posted

技术标签:

【中文标题】如何删除hive数组中值为0的元素【英文标题】:How to remove the elements with value as zero in hive array 【发布时间】:2021-04-01 15:21:09 【问题描述】:

我在 hive 中有一个数组列,其中包含 7 个数字。

例如:[32,4,0,43,23,0,1]

我希望我的输出为[32,4,43,23,1](删除所有零元素)

有人帮我完成这个吗?

【问题讨论】:

【参考方案1】:

分解数组,过滤,再次收集。

演示:

with mydata as (
select array(32,4,0,43,23,0,1) as initial_array
)

select initial_array, collect_set(element) as result_array
from
(
select initial_array, e.element
  from mydata
       lateral view outer explode(initial_array)e as element
) s
where element != 0
group by initial_array

结果:

initial_array       result_array
[32,4,0,43,23,0,1]  [32,4,43,23,1]

【讨论】:

collect_set 将删除重复项,因此请使用 collect_list 而不是 collect_set

以上是关于如何删除hive数组中值为0的元素的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL函数去除数组中的0值和空值

用C语言数据结构编写 删除顺序表中值为x的元素 跪求大神解答 ! !

函数removeVoid(arr),删除该数组中值为“null,undefined”的值,返回原数组

如何删除多维数组中的唯一元素?

如何删除每个元素的第一个元素

Javascript中如何删除数组中指定元素后形成新的数组