Hive 查询打印多个条目的 collect_set 值,如果条目是一次则不打印
Posted
技术标签:
【中文标题】Hive 查询打印多个条目的 collect_set 值,如果条目是一次则不打印【英文标题】:Hive query to print the collect_set value for multiple entries and not to print if the entry is once 【发布时间】:2020-11-13 14:16:18 【问题描述】:我在蜂巢中的桌子:
Group1 | sibling
=====================
ad3jkfk 4
ad3jkfk 4
ad3jkfk 2
fkjh43f 1
fkjh43f 8
fkjh43f 8
rjkhd93 7
rjkhd93 4
rjkhd93 7
abcd45 1
defg63 1
预期结果:
Group1 | sibling
===========================
ad3jkfk 4,4,2
fkjh43f 1,8,8
rjkhd93 7,4,7
【问题讨论】:
【参考方案1】:collect_set
产生一个不同值的数组。对于 ad3jkfk,它将产生 4,2
,而不是 4,4,2
如果你想要4,4,2
,请使用collect_list()
。
要过滤超过 1 个元素的数组,请使用 size()
函数:
select Group1, concat_ws(',',sibling_list) sibling --Concatenate array to string delimited w comma like in your example
from
(
select Group1, collect_list(sibling) sibling_list --get the list
from mytable
group by Group1
)s
where size(sibling_list)>1 --filter
【讨论】:
以上是关于Hive 查询打印多个条目的 collect_set 值,如果条目是一次则不打印的主要内容,如果未能解决你的问题,请参考以下文章