Hive 从多列中查找列
我有一个关于数据库查询的问题。请参阅下表Hive 从多列中查找列,hive,hiveql,Hive,Hiveql,我有一个关于数据库查询的问题。请参阅下表 Table : 1 ID Country 1 x 2 y 3 z 4 k Table : 2 eng fre fre1 fre2 x x x1 k y t x2 n z Output Table id country 1 x 2 x1 3 x2 4 x1 如何在蜂箱中实现这一点 非常感谢您的帮助。您可以加入三次,但速度可能较慢: select
Table : 1
ID Country
1 x
2 y
3 z
4 k
Table : 2
eng fre fre1 fre2
x x
x1 k y t
x2 n z
Output Table
id country
1 x
2 x1
3 x2
4 x1
如何在蜂箱中实现这一点
非常感谢您的帮助。您可以加入三次,但速度可能较慢:
select a.id, coalesce(b.eng, c.eng, d.eng) as Country
from table_1 a
left join table_2 b on a.country=b.fre
left join table_2 c on a.country=c.fre1
left join table_2 d on a.country=d.fre2
;
第一个选项在我的情况下不起作用,因为配置单元不支持pivot。剩下的唯一选项是我已经使用过的第二个选项,但正如您提到的,我有220万条记录,这就是为什么查询需要永远执行的原因。第一个查询应该在配置单元上工作,因为其中没有配置单元不支持的内容。支持子查询,还支持coalesce()和max()。请试着运行它,它应该工作得很好这
--pivot table 2
只是一个注释。我得到的输出表的id为罚款,但国家为空。我猜当您在执行max(coalesce)时,它只从表2中获取fre名称,其中表1包含fre或fre1或fre2。但我们只希望eng对应于输出表中的fre或fre1或fre2。很可能您的表2中不包含空值。可能是空字符串?