33

Hiveでサポートされている、、、または関数がないためIFNULL、 NULLを0に変換するのに問題があります。試しましたが、次のエラーメッセージが表示されました。ISNULLNVLCOALESCE(*column name*, 0)

引数の型の不一致0:COALESCEの後の式はすべて同じ型である必要があります:「bigint」が必要ですが、「int」が見つかりました

これを解決する方法は?

4

7 に答える 7

47

Hiveは、0.8バージョン以降のbigintリテラルをサポートしています。したがって、追加の「L」で十分です。

COALESCE(column, 0L)
于 2013-01-14T12:16:38.923 に答える
26

Lamakがコメントで指摘したようにCOALESCE(column, CAST(0 AS BIGINT))、エラーを解決します。

于 2012-11-19T20:34:54.673 に答える
6

0.11ハイブはNVL機能を持っている のでnvl(T value, T default_value)

これは 、値がnullの場合はデフォルト値を返し、それ以外の場合は値を返します。

于 2015-07-21T07:09:12.030 に答える
5

[ハイブ言語マニュアル][1]から:

COALESCE(T v1、T v2、...)

NULLではない最初の値を返します。すべての値がNULLの場合はNULLを返します。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions

于 2013-05-21T23:32:25.353 に答える
4

顧客の主要な連絡先メディアが電子メールの場合、電子メールがnullの場合は電話番号、電話番号もnullの場合はアドレス。COALESCEを使用して次のように記述されます

coalesce(email,phonenumber,address) 

ハイブでも同じことは、nvlを次のようにチェーンすることで実現できます。

nvl(email,nvl(phonenumber,nvl(address,'n/a')))
于 2017-07-10T16:47:52.040 に答える
3

Hiveの言語DDLおよびUDFから

NVL(value, default value) 

値がnullの場合はデフォルト値を返し、それ以外の場合は値を返します

于 2016-08-23T03:43:29.397 に答える
2
nvl(value,defaultvalue) as Columnname

欠落している値を指定されたdefaultvalueに設定します

于 2016-11-02T17:49:00.003 に答える