【发布时间】:2019-10-22 20:26:13
【问题描述】:
我想在使用 hive 时删除数组中的连续重复项。
collect_list() 保留所有重复项,而 collect_set() 仅保留不同的条目。我有点需要中间地带的东西。
例如,从下表:
id | number
==============
fk 4
fk 4
fk 2
4f 1
4f 8
4f 8
h9 7
h9 4
h9 7
我想得到这样的东西:
id | aggregate
===========================
fk Array<int>(4,2)
4f Array<int>(1,8)
h9 Array<int>(7,4,7)
【问题讨论】:
-
问题是数据集中没有确定行顺序的列。是什么让 h9,7 和 h9,4 连续?表未按定义排序。只有 order by 才能保证所需的行顺序。另请阅读:stackoverflow.com/a/47416027/2700344
-
好点!忘了说这已经按时间戳排序了。
-
您还有一个时间戳列,对吧?没有这个专栏,问题就无法挽救了
标签: sql arrays list hive hiveql