このトピックでは、JSON_TUPLE 関数を使用して、JSON 文字列からパスを指定して値を抽出する方法について説明します。
制限事項
JSON_TUPLE 関数は、Ververica Runtime (VVR) 3.0.0 以降でのみサポートされています。
構文
JSON_TUPLE(str, path1, path2 ..., pathN) 入力パラメーター
パラメーター | データ型 | 説明 |
str | VARCHAR | JSON 文字列です。 |
path1 to pathN | VARCHAR | パスを表す文字列です。先頭に |
例
テストデータ
表 1. T1
d(VARCHAR)
s(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
qwe3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
qwe2
テストステートメント
SELECT d, v FROM T1, lateral table(JSON_TUPLE(d, 'qwe', s)) AS T(v);テスト結果
d(VARCHAR)
v(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd4
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd5
NULL 値処理動作の変更
動作の比較
str 入力パラメーターが NULL の場合、クエリ json_tuple(CAST(NULL AS STRING), 'a', 'b') で関数を呼び出すと仮定します。
SELECT * FROM (VALUES (1), (2)) AS v(x)
, LATERAL TABLE(
json_tuple(CAST(NULL AS STRING), 'a', 'b')
) AS T;
-- 各入力行は NULL を含む 2 行を返します。合計: 4 行 — (1,null), (1,null), (2,null), (2,null)VVR 11.0 より前 (従来の動作)
結果: 4 行。
内容: 各行に 1 つの
NULLカラムが含まれます。
VVR 11.0 以降 (新しい動作)
結果: 0 行 (空のセット)。
内容: なし。