2013-05-30 38 views
8

Tôi có một bảng như sau:Phân nhóm hàng hive trong một mảng của hàng này

User:String Alias:String 
JohnDoe  John 
JohnDoe  JDoe 
Roger  Roger 

Và tôi muốn để nhóm tất cả các bí danh của một người dùng trong một mảng, trong một bảng mới sẽ trông như thế này:

User:String Alias:array<String> 
JohnDoe  [John, JDoe] 
Roger  [Roger] 

Tôi không thể tìm ra cách thực hiện điều đó bằng HiveQL. Tôi có phải viết UDF cho điều đó không?

Cảm ơn!

Trả lời

11

Khám phá built-in aggregate functioncollect_set.

select 
    User, 
    collect_set(Alias) as Alias 
from table 
group by User; 
+0

Chắc chắn :) Cảm ơn! – C4stor

+0

là có cách nào để sử dụng collect_set cho trường kiểu struct. – rht

+0

Cảm ơn @Lukas. :) –

Các vấn đề liên quan