■ はじめに
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