jsonStrで指定されたJSON文字列とschemaで指定された出力形式に基づいて、ARRAY、MAP、またはSTRUCT型のデータを返します。
構文
from_json(<jsonStr>, <schema>)パラメーター
jsonStr: 必須です。 入力したJSON文字列。
schema: 必須です。 JSON文字列のスキーマ。 このパラメーターの値は、
array<bigint>、map<string, array<string>>、struct<a:int, b:double, 'C':map<string,string>>など、テーブルを作成するステートメントと同じ形式である必要があります。説明構造体のキーは大文字と小文字を区別します。
struct <a:BIGINT, b:DOUBLE>に相当するa BIGINT, b DOUBLEの形式で構造体を指定することもできます。次の表に、JSONデータ型とMaxComputeデータ型の間のマッピングを示します。
JSONデータ型
MaxComputeデータ型
OBJECT
STRUCT、マップ、およびストリング
ARRAY
アレイとストリング
NUMBER
TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL、およびSTRING
BOOLEAN
ブーリアンとストリング
STRING
STRING、CHAR、VARCHAR、BINARY、DATE、およびDATETIME
NULL
すべてのタイプ
説明OBJECT型とARRAY型のJSON文字列は、可能な限り解析されます。 JSON文字列のデータ型がMaxComputeデータ型にマッピングされていない場合、JSON文字列は省略されます。 使いやすいように、すべてのJSONデータ型をMaxComputeでサポートされているSTRINGデータ型に変換できます。 JSON文字列をFLOAT、DOUBLE、またはDECIMAL型の値に変換する場合、値の小数点以下の桁の精度は保証されません。 GET_JSON_OBJECT関数を使用するか、JSON文字列をstring型の値に変換してから、取得した値をFLOAT、DOUBLE、またはDECIMAL型の値に変換することをお勧めします。
戻り値
ARRAY、MAP、またはSTRUCTタイプの値が返されます。
FROM_JSON
例1: 特定のJSON文字列を特定のデータ型の値に変換します。 サンプル文:
-- The return value is {a:1,b:0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double'); -- The return value is {time:26/08/2015}. select from_json('{"time":"26/08/2015"}', 'time string'); -- The return value is {a:1, b:0.8, c:NULL}. select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); -- The return value is [1,2,3]. select from_json('[1, 2, 3, "a"]', 'array<bigint>'); -- The return value is {a:1, b:[1,2,3], c:{}, d:v}. select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');例2:
map_keysおよびfrom_json関数を使用して、JSON文字列のすべてのキーを取得します。 同じ目的でJSON_KEYSを使用することもできます。 サンプル文:-- The return value is [a, b]. select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
関連関数
FROM_JSONは、複合型関数または文字列関数です。