2013-05-30 18 views
8

Mam tabeli jak poniżej:Grupowanie wierszy ula w tablicy tej wierszy

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

I chciałbym grupa wszystkie aliasy użytkownikowi w tablicy, w nowej tabeli, która będzie wyglądać tak:

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

nie mogę dowiedzieć się, jak to zrobić z HiveQL.Do muszę napisać UDF do tego?

Dzięki!

Odpowiedz

11

Zapoznaj się z built-in aggregate functioncollect_set.

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

Zdecydowanie że :) Dzięki! – C4stor

+0

jest jakikolwiek sposób na użycie collect_set dla pola typu struct. – rht

+0

Dzięki @Lukas. :) –