2017-06-05 5 views
0

次の表を2行の新しい表に変換したいとします。新しいテーブルでは、各user_idには、最初のテーブルの他のすべてのカラムを要約する1つのJSONファイルがあります。HIVEの各グループの複数の列をJSONファイルに集約する方法

user_id reservation_id nights price AAA 10001 1 100 AAA 10002 1 120 BBB 20003 7 350 user_id reservation_details AAA {10001:{'nights':1, 'price':100}, 10002:{'nights':1, 'price':120}} BBB {20003:{'nights':7, 'price':350}}

答えて

1
select  user_id 
      ,concat("{",concat_ws(',',collect_list(concat(string(reservation_id),":{'nights':",string(nights),",'price':",string(price),"}"))),"}") as reservation_details 

from  mytable 

group by user_id  

+---------+-----------------------------------------------------------------+ 
| user_id |      reservation_details      | 
+---------+-----------------------------------------------------------------+ 
| AAA  | {10001:{'nights':1,'price':100},10002:{'nights':1,'price':120}} | 
| BBB  | {20003:{'nights':7,'price':350}}        | 
+---------+-----------------------------------------------------------------+ 
+0

に感謝!ちょっとひねって 'string(varname)'を 'cast(varname as string)'に置き換えて動作させます。 –

+0

あなたを歓迎します:-)これはテスト済みのコードです。どのようなHiveバージョンを使用していますか? –

+0

hive-common-0.13.1-cdh5.3.3.jar –

関連する問題