2017-10-17 1 views
0

問題は次のとおりです。コードの特定の列の意味を「翻訳」する新しい列を作成する辞書として使用するこのルックアップテーブルがあります。HiveQL - 辞書に表示されていない要素に対処する方法

さんが言ってみましょう:

表1:

ID Code 
01 A 
02 B 
03 C 

Lookup_table(辞書):

Code Meaning 
A  Alice 
B  Bob 
C  Charlie 

私は簡単に新しい列を持つ新しいテーブル(表2)を作成するためにJOINを行うことができますそれに「意味」が追加されました:

表2:

CREATE TABLE Table2 AS SELECT T1.ID, T1.Code, LKP.Meaning 
FROM Table1 AS T1 
LEFT OUTER JOIN Lookup_table AS LKP 
ON (T1.Code = LKP.Code); 

ただし、新しいコードがTable1(例: ( "04"、 "D"))、Lookup_tableにそのための翻訳はありませんか? (あなたが答えとしてNULLを避けたいとすると)この状況に答える意味で「他者」のようなものを得る方法はありますか?

ありがとうございます!

答えて

0

これを達成するにはCOALESCE()を使用できます。 COALESCE()は2つの引数をとり、最初の引数はNULLではありません。次のように

あなたのクエリを変更することができますあなたの場合は

CREATE TABLE Table2 AS 
SELECT 
T1.ID AS ID, 
T1.Code AS Code, 
COALESCE(LKP.Meaning,'others') AS Meaning 
FROM Table1 AS T1 
LEFT OUTER JOIN Lookup_table AS LKP 
ON (T1.Code = LKP.Code); 

はこれが最初のパラメータとしてLKP.Meaningを置くことを意味します。この値がNULLの場合は、'others'が表示されます。

Hive Documentationも参照してください。

+1

ありがとうございます!それはうまく動作します。私は補助テーブルを使用して回避策を使用していましたが、あなたの方がはるかに洗練されたソリューションです。良い! – MiguelFCerdan

関連する問題