2017-03-17 102 views
0

我想通過group by子句獲取數組的聯合。 Hive沒有任何通用方法來聚合數組聯合。 除了內置的配置單元功能外,是否還有其他解決方案?陣列聯合的聚合函數[HIVE]

例子:

CREATE TABLE base_table 
(
    day string, 
    sample_data array<string> 
) 

SELECT day, ARRAY_UNION(sample_data) FROM 
(
SELECT day, sample_data from base_table1 
UNION ALL 
SELECT day, sample_data from base_table2 
) 
GROUP BY day 
+1

非常,非常,非常不清晰。 「數組聯合」? 「通過一組」?請提供包括所需結果和相關的代碼(表定義等)數據樣本 –

+0

'SELECT天,COLLECT_LIST(SAMPLE_DATA)FROM ( SELECT天,從base_table1 UNION ALL SAMPLE_DATA SELECT 天,從base_table2 SAMPLE_DATA) GROUP BY day' – mrsrinivas

+1

你也可以寫一個'UDAF'也 – mrsrinivas

回答

1

您可以嘗試collect_listcollect_set

SELECT day, COLLECT_LIST(sample_data) FROM 
(
    SELECT day, sample_data from base_table1 
    UNION ALL 
    SELECT day, sample_data from base_table2 
) 
GROUP BY day 
+0

這不行。我需要運行collect_list(array)。 collect_list不適用於複雜的數據類型。 –

+0

您可以添加樣本輸入和輸出數據嗎? – mrsrinivas