源表結構: pcgid string mobilegid string value double 測試數據如下: p1 m1 0.6p1 m2 0.9p2 m1 1.0 需要的結果是: p1 {"m2":"0.9","m1":"0.6"} 2 p2 {"m1":"1.0"} 1 就是對源表進行gro ...
源表結構:
pcgid string
mobilegid string
value double
測試數據如下:
p1 m1 0.6
p1 m2 0.9
p2 m1 1.0
需要的結果是:
p1 {"m2":"0.9","m1":"0.6"} 2
p2 {"m1":"1.0"} 1
就是對源表進行group by之後對另外兩個欄位變成key-value存成一個map
查了一下,hive中沒有現成的函數可以直接得到結果。不過可以轉一個思路,把mobilegid和value先連接成字元串,然後再把整個set的結果連接成一個字元串,最後再用str_to_map,完美解決。
select pcgid as gid,str_to_map(concat_ws(",",collect_set(concat_ws(':', mobilegid, cast(value as string)) ))) as gids,count(1) as num from gemini_product_id_connect_result_pair group by pcgid;
p