Hiveでサポートされている、、、または関数がないためIFNULL
、 NULLを0に変換するのに問題があります。試しましたが、次のエラーメッセージが表示されました。ISNULL
NVL
COALESCE(*column name*, 0)
引数の型の不一致0:COALESCEの後の式はすべて同じ型である必要があります:「bigint」が必要ですが、「int」が見つかりました
これを解決する方法は?
Hiveは、0.8バージョン以降のbigintリテラルをサポートしています。したがって、追加の「L」で十分です。
COALESCE(column, 0L)
Lamakがコメントで指摘したようにCOALESCE(column, CAST(0 AS BIGINT))
、エラーを解決します。
0.11ハイブはNVL機能を持っている
のでnvl(T value, T default_value)
これは 、値がnullの場合はデフォルト値を返し、それ以外の場合は値を返します。
[ハイブ言語マニュアル][1]から:
COALESCE(T v1、T v2、...)
NULLではない最初の値を返します。すべての値がNULLの場合はNULLを返します。
顧客の主要な連絡先メディアが電子メールの場合、電子メールがnullの場合は電話番号、電話番号もnullの場合はアドレス。COALESCEを使用して次のように記述されます
coalesce(email,phonenumber,address)
ハイブでも同じことは、nvlを次のようにチェーンすることで実現できます。
nvl(email,nvl(phonenumber,nvl(address,'n/a')))
nvl(value,defaultvalue) as Columnname
欠落している値を指定されたdefaultvalueに設定します