すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:FROM_JSON

最終更新日:Jan 17, 2025

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は、複合型関数または文字列関数です。

  • ARRAY、MAP、STRUCT、JSONなどの複雑なデータ型のデータを処理するために使用される関数の詳細については、複合型関数.

  • 文字列検索と変換に関連する関数の詳細については、文字列関数.