我需要在數組中逐列左外連接2個表。配置單元,在數組中連接2個表格
表一個模型:
- 結構ID - 串
- IPS - 串
表2模型的陣列: - 串
- IP - 字符串
我希望的結果是在格式:
號,IP,主機名(如果存在)
所有的在第一表的陣列,其具有相應的IP在所述第二表中的IP需要匹配。
我不確定如何開始,歡迎任何想法或參考。
我需要在數組中逐列左外連接2個表。配置單元,在數組中連接2個表格
表一個模型:
表2模型的陣列: - 串
我希望的結果是在格式:
號,IP,主機名(如果存在)
所有的在第一表的陣列,其具有相應的IP在所述第二表中的IP需要匹配。
我不確定如何開始,歡迎任何想法或參考。
您可以使用第二個表格上的explode選項,然後執行如下的連接。
比方說你有一個TABLE_1與字符串名稱的數組和表2是有名字
CREATE TABLE TABLE_1(ID字符串,IPS陣列); CREATE TABLE table_2(ip string,hostname int);
然後,您可以使用爆炸udf在table_1上創建橫向視圖。
select id,ip from table_1 LATERAL VIEW explode(ips)ep AS ip;
這將針對數組中的每個值將單行分解爲多行。請閱讀Lateral view documentation獲取更多幫助。
最終的連接查詢將是這樣的。
SELECT t1.id,t1.ip, t2.hostname
FROM
(select id,ip from table_1 LATERAL VIEW explode(ips) ep AS ip) AS t1
LEFT JOIN table_2 AS t2
ON (t2.ip=t1.ip);
上述解決方案是否解決了您的問題? –
需要一些示例數據的表格模型供人們深入探討您的問題。 – DanteTheSmith
表一:結構id - 字符串,ips - 字符串數組。表二:ip - 字符串,主機名 - 字符串。結果是:id,ips,hostname(如果存在) – user8753324
我對你的問題做了一些編輯。如果它被批准,我希望它會鼓勵人們給你一個答案,因爲它現在更簡潔,更易於閱讀。 – DanteTheSmith