に最終更新
TRY_PARSE_TO_VARIANT
説明
TRY_PARSE_TO_VARIANT は、単一の完全な JSON 値を解析して VARIANT に変換します。TRY_ 接頭辞が示すとおり、解析エラーが発生した場合はクエリを失敗させず、SQL NULL を返します。デフォルトでは、有効な JSON ではないテキストは解析エラーになりません。詳しくは「戻り値」を参照してください。この関数は Doris 4.1.4 以降で使用できます。このページでは Doris 5.0.0 以降の動作を説明します。
構文
TRY_PARSE_TO_VARIANT(<json_value>)
パラメータ
| パラメータ | 説明 |
|---|---|
<json_value> | 単一の完全な JSON 値を含む CHAR、VARCHAR、STRING 式、または JSON/JSONB 式です。JSON/JSONB 入力は JSON テキストに変換してから VARIANT として解析されます。 |
戻り値
NULL 許容の VARIANT 値を返します。
- 有効な入力は、解析後の VARIANT 値を返します。
- 次の解析エラーでは SQL
NULLを返します。オブジェクトのキーがvariant_max_json_key_lengthバイト(BE 設定、デフォルトは 255)を超える場合、同一オブジェクト内に重複したキーがある場合(ただし、BE 設定のvariant_enable_duplicate_json_path_checkがtrueの場合は最初の値が保持されます)、ネストが 128 階層を超える場合、文字列が有効な UTF-8 ではない場合です。 - 有効な JSON ではないテキスト、および [-2^63, 2^64 - 1] の範囲外の整数や
DOUBLEの範囲外の数値を含む JSON は、PARSE_TO_VARIANT と同様に VARIANT の文字列として返されます。SQLNULLを返すのは、BE 設定のvariant_throw_exeception_on_invalid_jsonがtrue(デフォルトはfalse)の場合に限られます。 - 空文字列は空のオブジェクト
{}を返します。 - SQL
NULLを入力すると SQLNULLを返します。 - JSON リテラルの
nullは VARIANT のnullを返し、SQLNULLとは異なります。
例
有効な値は保持し、解析エラーは SQL NULL に変換する:
SELECT CAST(
TRY_PARSE_TO_VARIANT('{"id": 1}')
AS STRING
) AS valid_value,
TRY_PARSE_TO_VARIANT('{"id": 1, "id": 2}') IS NULL AS duplicate_is_null,
TRY_PARSE_TO_VARIANT(NULL) IS NULL AS input_is_null;
+-------------+-------------------+---------------+
| valid_value | duplicate_is_null | input_is_null |
+-------------+-------------------+---------------+
| {"id":1} | 1 | 1 |
+-------------+-------------------+---------------+
JSON/JSONB 入力を解析する:
SELECT CAST(
TRY_PARSE_TO_VARIANT(CAST('[10, 20, 30]' AS JSON))
AS STRING
) AS value;
+------------+
| value |
+------------+
| [10,20,30] |
+------------+
JSON の null は SQL NULL とは異なり、有効な JSON ではないテキストは文字列として保持される:
SELECT TRY_PARSE_TO_VARIANT('null') IS NULL AS json_null_is_sql_null,
VARIANT_TYPE(TRY_PARSE_TO_VARIANT('{"id":')) AS invalid_json_type;
+-----------------------+-------------------+
| json_null_is_sql_null | invalid_json_type |
+-----------------------+-------------------+
| 0 | string |
+-----------------------+-------------------+
使用上の注意
- 解析エラーでクエリを失敗させ、データ品質の問題を明らかにするには、PARSE_TO_VARIANT を使用します。
- この関数は解析エラーだけを SQL
NULLに変換します。有効な JSON のnullの意味は変わりません。 - Stream Load などのロードジョブも、この関数と同じルールで JSON テキストを解析します。「解析エラー」を参照してください。