【Hive】Hive / HiveQL ~ HiveQL関数 / NULL関連編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/03/10/224640
https://dk521123.hatenablog.com/entry/2021/06/18/184713
https://dk521123.hatenablog.com/entry/2021/06/21/231033

の続き。

COALESCEを使っている処理があったので、
COALESCE や NULL関連の同じような関数を纏めておく。

目次

【0】API仕様
【1】COALESCE
【2】NVL
【3】ISNULL / ISNOTNULL
【4】NULLIF

【0】API仕様

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

【1】COALESCE

* 与えられた引数から NULLでない最初の引数を返却する
* cf. coalesce(コーレス) = 合体する、融合する

構文

-- 引数 v1, v2, ... のうち、NULLでない最初の引数を返却する
COALESCE(T v1, T v2, ...)

【2】NVL

* NULLの時に指定した文字列に変換する
* Hive 0.11 から使用可能
* Null Value Logic の略
* Oracleの独自関数から派生した関数
 => 標準SQLの関数じゃないらしい

構文

-- valueが null だった場合、default_valueを返却する
nvl(T value, T default_value)

【3】ISNULL / ISNOTNULL

* ISNULL :NULL かどうかを判定する
* ISNOTNULL :NULLじゃないかどうかを判定する

構文

-- a が null だったら true を返却
isnull( a )

-- a が null 以外だったら true を返却
isnotnull ( a )

【4】NULLIF

* 指定された 2 つの式が等しい場合に NULL 値を返却する
* Hive 2.3.0 から使用可能

構文

-- a=bの場合、NULLを返却。それ以外は a を返却。
-- 「CASE WHEN a = b then NULL else a」と同じ意味
nullif( a, b )

参考文献

https://suzuki.tdiary.net/20150811.html

関連記事

Hive / HiveQL ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Hive / HiveQL ~ HiveQL関数 / 文字列置換編 ~
https://dk521123.hatenablog.com/entry/2020/03/10/224640
Hive / HiveQL ~ HiveQL関数・regexp_replace編 ~
https://dk521123.hatenablog.com/entry/2021/06/18/184713
Hive / HiveQL ~ HiveQL関数・文字列関数編 ~
https://dk521123.hatenablog.com/entry/2021/06/21/231033
Hive / HiveQL ~ HiveQL関数 / 日時・日付操作編 ~
https://dk521123.hatenablog.com/entry/2021/02/11/233633
Hive / HiveQL ~ HiveQL / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/03/04/225943
Hive / HiveQL ~ データをクリーニングする ~
https://dk521123.hatenablog.com/entry/2020/07/06/232350