gpt4 book ai didi

sql - 如何通过运算符(operator)从 Hive 组中获取元素数组/包?

转载 作者:可可西里 更新时间:2023-11-01 14:09:22 26 4
gpt4 key购买 nike

我想按给定字段分组并获得包含分组字段的输出。以下是我要实现的目标的示例:-

假设一个名为“sample_table”的表有两列,如下所示:-

F1  F2
001 111
001 222
001 123
002 222
002 333
003 555

我想编写将提供以下输出的 Hive 查询:-

001 [111, 222, 123]
002 [222, 333]
003 [555]

在 Pig 中,这可以很容易地通过这样的事情来实现:-

grouped_relation = GROUP sample_table BY F1;

有人可以建议在 Hive 中是否有一种简单的方法可以做到这一点?我能想到的是为此编写一个用户定义函数 (UDF),但这可能是一个非常耗时的选项。

最佳答案

内置聚合函数 collect_set ( doumented here ) 几乎可以满足您的需求。它实际上适用于您的示例输入:

SELECT F1, collect_set(F2)
FROM sample_table
GROUP BY F1

不幸的是,它还会删除重复的元素,我想这不是您想要的行为。我觉得 collect_set 存在很奇怪,但没有保留重复项的版本。 Someone else apparently thought the same thing .看起来顶部和第二个答案会给你你需要的 UDAF。

关于sql - 如何通过运算符(operator)从 Hive 组中获取元素数组/包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com