2016-12-02 9 views
0

データベースクエリに関する質問が1つあります。以下の表を参照してください。複数の列から列を検索

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 

ハイブでこれを達成する方法は?

ありがとうございました。

答えて

1

あなたは三回に参加できますが、それは遅い実行できます:ハイブは、ピボットをサポートしていないので、

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 
; 
+0

最初のオプションは、私の場合には動作しません。残っているオプションだけが私がすでに使用していた2番目のオプションですが、あなたが言及したように、私は220万レコードしか持っていないので、クエリは永遠に実行されます。 –

+0

Hiveがサポートしていないことが何もないので、1番目のクエリはHiveで動作するはずです。サブクエリがサポートされ、coalesce()およびmax()もサポートされています。実行してみてください。うまくいくはずです – leftjoin

+0

この '--pivot table2'は単なるコメントです。 – leftjoin

関連する問題