我需要在HiveSQL中的GROUP BY中合并数组。表模式是这样的:
key int,
value ARRAY<int>
现在这里是我想要运行的SQL:
SELECT key, array_merge(value)
FROM table_above
GROUP BY key
如果这个array_merge函数只保留唯一值,那将更好但不是必须的。
干杯, ķ
答案 0 :(得分:2)
没有UDAF来执行这种操作。以下查询应该导致相同而没有太多开销(继续运行一个映射和一个reduce操作)删除重复
select key, collect_set(explodedvalue) from (
select key, explodedvalue from table_above lateral view explode(value) e as explodedvalue
) t group by key;
答案 1 :(得分:0)
这里已经有一段时间了,但以防万一其他人偶然发现; combine_unique 的 Brickhouse udf 可能就是您正在寻找的(该存储库提供了有关如何开始使用其 UDF 的说明)。
语法与问题中提出的相同:
guard let url = URL(string: "https://amiiboapi.com/api/") else {
fatalError("Invalid URL")
}
var publisher = URLSession.shared.dataTaskPublisher(for: url)
.receive(on: RunLoop.main)
.map(\.data)
.decode(type: AmiiboList.self, decoder: JSONDecoder())
.sink(receiveCompletion: { completion in
if case .failure(let err) = completion {
print("Failed with error \(err)")
}
}, receiveValue: { value in
print("Received \(value)")
// print(" Received \(value.amiibo[0].release)")
})