2017-10-10 47 views
0

我需要在數組中逐列左外連接2個表。配置單元,在數組中連接2個表格

表一個模型:

  • 結構ID - 串
  • IPS - 串

表2模型的陣列: - 串

  • 主機名

    • IP - 字符串

    我希望的結果是在格式:

    號,IP,主機名(如果存在)

    所有的在第一表的陣列,其具有相應的IP在所述第二表中的IP需要匹配。

    我不確定如何開始,歡迎任何想法或參考。

  • +0

    需要一些示例數據的表格模型供人們深入探討您的問題。 – DanteTheSmith

    +0

    表一:結構id - 字符串,ips - 字符串數組。表二:ip - 字符串,主機名 - 字符串。結果是:id,ips,hostname(如果存在) – user8753324

    +0

    我對你的問題做了一些編輯。如果它被批准,我希望它會鼓勵人們給你一個答案,因爲它現在更簡潔,更易於閱讀。 – DanteTheSmith

    回答

    0

    您可以使用第二個表格上的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); 
    
    +0

    上述解決方案是否解決了您的問題? –

    相關問題