📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

構造化・半構造化関数



TiDB Cloud Lake の構造化関数および半構造化関数を使用すると、配列、オブジェクト、マップ、JSON、その他の構造化データ形式を効率的に処理できます。これらの関数は、構造化データおよび半構造化データの作成、解析、クエリ、変換、操作のための包括的な機能を提供します。

JSON 関数

解析と検証

関数説明例
PARSE_JSONJSON 文字列を variant 値に解析しますPARSE_JSON('[1,2,3]')
CHECK_JSON文字列が有効な JSON かどうかを検証しますCHECK_JSON('{"a":1}')
JSON_TYPEOFJSON 値の型を返しますJSON_TYPEOF(PARSE_JSON('[1,2,3]'))

パスベースのクエリ

関数説明例
JSON_PATH_EXISTSJSON パスが存在するかどうかを確認しますJSON_PATH_EXISTS(json_obj, '$.name')
JSON_PATH_QUERYJSONPath を使用して JSON データをクエリしますJSON_PATH_QUERY(json_obj, '$.items[*]')
JSON_PATH_QUERY_ARRAYJSON データをクエリし、結果を配列として返しますJSON_PATH_QUERY_ARRAY(json_obj, '$.items')
JSON_PATH_QUERY_FIRSTJSON パスクエリの最初の結果を返しますJSON_PATH_QUERY_FIRST(json_obj, '$.items[*]')
JSON_PATH_MATCHJSON 値をパスパターンに照合しますJSON_PATH_MATCH(json_obj, '$.age')
JQjq 構文を使用して高度な JSON 処理を行いますJQ('.name', json_obj)

値の抽出

関数説明例
GETJSON オブジェクトからキーで、または配列からインデックスで値を取得しますGET(PARSE_JSON('[1,2,3]'), 0)
GET_PATHパス式を使用して JSON オブジェクトから値を取得しますGET_PATH(json_obj, 'user.name')
GET_IGNORE_CASE大文字と小文字を区別しないキー照合で値を取得しますGET_IGNORE_CASE(json_obj, 'NAME')
JSON_EXTRACT_PATH_TEXTパスを使用して JSON からテキスト値を抽出しますJSON_EXTRACT_PATH_TEXT(json_obj, 'name')

変換と出力

関数説明例
JSON_TO_STRINGJSON 値を文字列に変換しますJSON_TO_STRING(PARSE_JSON('{"a":1}'))
JSON_PRETTYJSON を適切なインデントで整形しますJSON_PRETTY(PARSE_JSON('{"a":1}'))
STRIP_NULL_VALUEJSON の null 値を SQL の NULL 値に変換しますSTRIP_NULL_VALUE(parse_json('null')) → NULL
JSON_STRIP_NULLSJSON オブジェクトから null 値を削除しますJSON_STRIP_NULLS(PARSE_JSON('{"a":1,"b":null}')) → {"a":1}

配列/オブジェクトの展開

関数説明例
JSON_EACHJSON オブジェクトをキーと値のペアに展開しますJSON_EACH(PARSE_JSON('{"a":1,"b":2}'))
JSON_ARRAY_ELEMENTSJSON 配列を個々の要素に展開しますJSON_ARRAY_ELEMENTS(PARSE_JSON('[1,2,3]'))

配列関数

関数説明例
ARRAY式から配列を構築しますARRAY(1, 2, 3)
ARRAY_CONSTRUCT個々の値から配列を作成しますARRAY_CONSTRUCT(1, 2, 3)
RANGE連続した数値の配列を生成しますRANGE(1, 5)
ARRAY_GENERATE_RANGEオプションのステップ付きでシーケンスを生成しますARRAY_GENERATE_RANGE(0, 6, 2)
GETインデックスで配列から要素を取得しますGET([1,2,3], 0)
ARRAY_GETGET 関数のエイリアスですARRAY_GET([1,2,3], 1)
CONTAINS配列に特定の値が含まれているかどうかを確認しますCONTAINS([1,2,3], 2)
ARRAY_CONTAINS配列に特定の値が含まれているかどうかを確認しますARRAY_CONTAINS([1,2,3], 2)
ARRAY_SIZE配列の長さを返します(エイリアス: ARRAY_LENGTH)ARRAY_SIZE([1,2,3])
ARRAY_COUNTNULL ではない要素の数を数えますARRAY_COUNT([1,NULL,2])
ARRAY_ANY最初の非 NULL エントリを返しますARRAY_ANY([NULL,'a','b'])
ARRAY_APPEND配列の末尾に要素を追加しますARRAY_APPEND([1,2], 3)
ARRAY_PREPEND配列の先頭に要素を追加しますARRAY_PREPEND([2,3], 1)
ARRAY_INSERT指定した位置に要素を挿入しますARRAY_INSERT([1,3], 1, 2)
ARRAY_REMOVE指定した要素のすべての出現を削除しますARRAY_REMOVE([1,2,2,3], 2)
ARRAY_REMOVE_FIRST配列の最初の要素を削除しますARRAY_REMOVE_FIRST([1,2,3])
ARRAY_REMOVE_LAST配列の最後の要素を削除しますARRAY_REMOVE_LAST([1,2,3])
ARRAY_CONCAT複数の配列を連結しますARRAY_CONCAT([1,2], [3,4])
ARRAY_SLICE配列の一部を抽出しますARRAY_SLICE([1,2,3,4], 1, 2)
SLICEARRAY_SLICE 関数のエイリアスですSLICE([1,2,3,4], 1, 2)
ARRAYS_ZIP複数の配列を要素ごとに結合しますARRAYS_ZIP([1,2], ['a','b'])
ARRAY_DISTINCT配列から一意な要素を返しますARRAY_DISTINCT([1,2,2,3])
ARRAY_UNIQUEARRAY_DISTINCT 関数のエイリアスですARRAY_UNIQUE([1,2,2,3])
ARRAY_INTERSECTION配列間の共通要素を返しますARRAY_INTERSECTION([1,2,3], [2,3,4])
ARRAY_EXCEPT1 つ目の配列にあり 2 つ目の配列にない要素を返しますARRAY_EXCEPT([1,2,3], [2,3])
ARRAY_OVERLAP配列に共通要素があるかどうかを確認しますARRAY_OVERLAP([1,2], [2,3])
ARRAY_TRANSFORM各配列要素に関数を適用しますARRAY_TRANSFORM([1,2,3], x -> x * 2)
ARRAY_FILTER条件に基づいて配列要素をフィルタリングしますARRAY_FILTER([1,2,3,4], x -> x > 2)
ARRAY_REDUCE集計を使用して配列を単一の値に縮約しますARRAY_REDUCE([1,2,3], 0, (acc, x) -> acc + x)
ARRAY_AGGREGATE関数を使用して配列要素を集計しますARRAY_AGGREGATE([1,2,3], 'sum')
ARRAY_SUM数値の合計を返しますARRAY_SUM([1,2,3])
ARRAY_AVG数値の平均を返しますARRAY_AVG([1,2,3])
ARRAY_MEDIAN数値の中央値を返しますARRAY_MEDIAN([1,3,2])
ARRAY_MIN最小値を返しますARRAY_MIN([1,2,3])
ARRAY_MAX最大値を返しますARRAY_MAX([1,2,3])
ARRAY_STDDEV_POP母標準偏差を返しますARRAY_STDDEV_POP([1,2,3])
ARRAY_STDDEV_SAMP標本標準偏差を返しますARRAY_STDDEV_SAMP([1,2,3])
ARRAY_KURTOSIS過剰尖度を返しますARRAY_KURTOSIS([1,2,3,4])
ARRAY_SKEWNESS歪度を返しますARRAY_SKEWNESS([1,2,3,10])
ARRAY_APPROX_COUNT_DISTINCT重複を除いた件数の近似値を返しますARRAY_APPROX_COUNT_DISTINCT([1,1,2])
ARRAY_SORT値をソートします。バリアントにより順序や null の扱いを制御しますARRAY_SORT([3,1,2])
ARRAY_TO_STRING配列要素を連結しますARRAY_TO_STRING(['a','b'], ',')
ARRAY_COMPACT配列から null 値を削除しますARRAY_COMPACT([1, NULL, 2, NULL, 3])
ARRAY_FLATTENネストした配列を 1 つの配列に平坦化しますARRAY_FLATTEN([[1,2], [3,4]])
ARRAY_REVERSE配列要素の順序を反転しますARRAY_REVERSE([1,2,3])
ARRAY_INDEXOF要素が最初に出現するインデックスを返しますARRAY_INDEXOF([1,2,3,2], 2)
UNNEST配列を個々の行に展開しますUNNEST([1,2,3])

オブジェクト関数

関数説明例
OBJECT_CONSTRUCTキーと値のペアから JSON オブジェクトを作成しますOBJECT_CONSTRUCT('name', 'John', 'age', 30)
OBJECT_CONSTRUCT_KEEP_NULLnull 値を保持したまま JSON オブジェクトを作成しますOBJECT_CONSTRUCT_KEEP_NULL('a', 1, 'b', NULL)
OBJECT_KEYSJSON オブジェクトのすべてのキーを配列として返しますOBJECT_KEYS(PARSE_JSON('{"a":1,"b":2}'))
OBJECT_INSERTJSON オブジェクトにキーと値のペアを挿入または更新しますOBJECT_INSERT(json_obj, 'new_key', 'value')
OBJECT_DELETEJSON オブジェクトからキーと値のペアを削除しますOBJECT_DELETE(json_obj, 'key_to_remove')
OBJECT_PICK指定したキーのみを含む新しいオブジェクトを作成しますOBJECT_PICK(json_obj, 'name', 'age')

マップ関数

関数説明例
MAP_CAT複数のマップを 1 つのマップに結合しますMAP_CAT({'a':1}, {'b':2})
MAP_KEYSマップのすべてのキーを配列として返しますMAP_KEYS({'a':1, 'b':2})
MAP_VALUESマップのすべての値を配列として返しますMAP_VALUES({'a':1, 'b':2})
MAP_SIZEマップ内のキーと値のペア数を返しますMAP_SIZE({'a':1, 'b':2})
MAP_CONTAINS_KEYマップに特定のキーが含まれているかどうかを確認しますMAP_CONTAINS_KEY({'a':1}, 'a')
MAP_INSERTマップにキーと値のペアを挿入しますMAP_INSERT({'a':1}, 'b', 2)
MAP_DELETEマップからキーと値のペアを削除しますMAP_DELETE({'a':1, 'b':2}, 'b')
MAP_TRANSFORM_KEYSマップ内の各キーに関数を適用しますMAP_TRANSFORM_KEYS(map, k -> UPPER(k))
MAP_TRANSFORM_VALUESマップ内の各値に関数を適用しますMAP_TRANSFORM_VALUES(map, v -> v * 2)
MAP_FILTER述語に基づいてキーと値のペアをフィルタリングしますMAP_FILTER(map, (k, v) -> v > 10)
MAP_PICK指定したキーのみを含む新しいマップを作成しますMAP_PICK({'a':1, 'b':2, 'c':3}, 'a', 'c')

型変換関数

関数説明例
AS_BOOLEANVARIANT 値を BOOLEAN に変換しますAS_BOOLEAN(PARSE_JSON('true'))
AS_INTEGERVARIANT 値を BIGINT に変換しますAS_INTEGER(PARSE_JSON('42'))
AS_FLOATVARIANT 値を DOUBLE に変換しますAS_FLOAT(PARSE_JSON('3.14'))
AS_DECIMALVARIANT 値を DECIMAL に変換しますAS_DECIMAL(PARSE_JSON('12.34'))
AS_STRINGVARIANT 値を STRING に変換しますAS_STRING(PARSE_JSON('"hello"'))
AS_BINARYVARIANT 値を BINARY に変換しますAS_BINARY(TO_BINARY('abcd')::VARIANT)
AS_DATEVARIANT 値を DATE に変換しますAS_DATE(TO_DATE('2025-10-11')::VARIANT)
AS_ARRAYVARIANT 値を ARRAY に変換しますAS_ARRAY(PARSE_JSON('[1,2,3]'))
AS_OBJECTVARIANT 値を OBJECT に変換しますAS_OBJECT(PARSE_JSON('{"a":1}'))

型述語関数

関数説明例
IS_ARRAYJSON 値が配列かどうかを確認しますIS_ARRAY(PARSE_JSON('[1,2,3]'))
IS_OBJECTJSON 値がオブジェクトかどうかを確認しますIS_OBJECT(PARSE_JSON('{"a":1}'))
IS_STRINGJSON 値が文字列かどうかを確認しますIS_STRING(PARSE_JSON('"hello"'))
IS_INTEGERJSON 値が整数かどうかを確認しますIS_INTEGER(PARSE_JSON('42'))
IS_FLOATJSON 値が浮動小数点数かどうかを確認しますIS_FLOAT(PARSE_JSON('3.14'))
IS_BOOLEANJSON 値がブール値かどうかを確認しますIS_BOOLEAN(PARSE_JSON('true'))
IS_NULL_VALUEJSON 値が null かどうかを確認しますIS_NULL_VALUE(PARSE_JSON('null'))

このページは役に立ちましたか?