我需要在数组中逐列左外连接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