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中不包含空值。可能是空字符串?