JSONのNULL値を含む項目のSELECTについて調べました。
STRIP_NULL_VALUEをかませばいいようです。
STRIP_NULL_VALUEを付けた場合と付けない場合でどう違うの?ということを実験したメモです。
この公式ドキュメントの例にあるSQLを使います。
--テーブル作成
CREATE OR REPLACE TABLE mytable
(
SRC Variant
);
--データを2行追加
INSERT INTO mytable
SELECT PARSE_JSON(column1)
FROM VALUES
('{
"a": "1",
"b": "2",
"c": null
}')
, ('{
"a": "1",
"b": "2",
"c": "3"
}');
SnowsightのGUI上で見るデータプレビューだとこんな感じです。
cという項目に1行目:null、2行目:"3"という値が入っています。
aとbはどうでもいいので、cだけに絞ってSELECTしてみます。
--普通にSELECT
SELECT src:c FROM mytable;
--STRIP_NULL_VALUEを付けてSELECT
SELECT STRIP_NULL_VALUE(src:c) FROM mytable;
STRIP_NULL_VALUEを付けた方はnullの文字の色がうすい状態になってます。
ちょっとわかりづらいので、結果欄をコピーしてテキストエディタに貼り付けてみました。
--普通にSELECTの結果
SRC:C
null
"3"
--STRIP_NULL_VALUEを付けてSELECTの結果
STRIP_NULL_VALUE(SRC:C)
"3"
普通にSELECTした方はnullというテキストが入っていますが
STRIP_NULL_VALUE付きでSELECTした方はNull値になってることが確認できました。