MaxCompute は、配列、マップ、構造体、JSON の 4 つの複合データ型をサポートしています。このトピックでは、JSON データ型の関数と機能について説明します。
関数一覧
関数 | 機能 |
指定された出力形式に基づいて、JSON 文字列から配列、マップ、または構造体型を返します。 | |
指定されたパスを使用して、JSON 文字列から文字列を抽出します。 | |
JSON オブジェクト (空の場合も含む) を、そのオブジェクトを含む JSON 配列に変換します。 | |
JSON ドキュメントに指定された JSON 要素が含まれているかどうかをチェックします。 | |
JSON ドキュメント内に指定された JSONPath が存在するかどうかをチェックします。 | |
JSON 配列または JSON オブジェクトの各要素を複数の行に展開します。 | |
指定された JSONPath に基づいて、JSON 文字列または JSON データ型からデータを抽出します。 | |
JSON データ型を文字列に変換します。デフォルトでは、出力は整形されません。 | |
JSON ドキュメントの指定された位置に JSON 値を挿入します。 | |
指定されたパスにある JSON データの長さを返します。 | |
キーと値のペアから JSON オブジェクトを生成します。 | |
文字列を JSON データ型に変換します。文字列が有効な JSON 形式でない場合、エラーが返されます。 | |
改行とスペースを追加して、JSON 文字列を読みやすくフォーマットします。 | |
JSON ドキュメント内の指定されたパスにある既存の値を置換するか、新しい値を追加します。 | |
JSON オブジェクトまたは JSON 配列から、値が | |
指定されたキーのグループに対して、標準の JSON 文字列から文字列を抽出します。 | |
JSON 値の型名を返します。 | |
JSON 文字列から引用符を削除します。 | |
文字列が有効な JSON かどうかをチェックします。 | |
指定された複合データ型を JSON 文字列に変換します。 |
注意事項
SDK のバージョン要件
Java SDK V0.44.0 以降のバージョンのみがサポートされています。
PyODPS V0.11.4.1 以降のバージョンのみがサポートされています。
テーブル操作の制限
テーブルに JSON 型の列を追加することはできません。
クラスター化テーブルはサポートされていません。
Delta Table 型のテーブルはサポートされていません。
SQL 操作の制限
JSON 型での比較演算はサポートされていません。
JSON 型に対して
ORDER BY句やGROUP BY句は使用できません。また、JSON 型の列をJOINキーとして使用することもできません。
データ精度
JSON の NUMBER 型の整数部分は BIGINT 型として格納されます。整数が BIGINT の範囲外の場合、オーバーフローが発生します。
JSON の NUMBER 型の小数部分は DOUBLE 型として格納されます。小数部分を DOUBLE 型に変換する際に、精度低下が発生する可能性があります。
文字制限:JSON データを生成する文字列では、Unicode 文字
\u0000はサポートされていません。エンジンの互換性:Hologres などの別のエンジンを使用してテーブルからデータを読み取る場合、JSON データ型は読み取れません。
Java UDF と Python UDF は JSON 型をサポートしていません。
JSON データ型は最大 20 レベルまでネストできます。
開発ツール
サポートされている開発ツールには、MaxCompute クライアント (odpscmd)、MaxCompute Studio、DataWorks があります。Dataphin などの外部エコシステムはサポートされていません。外部システムで JSON データ型を使用する場合は、使用を開始する前に互換性を確認する必要があります。odpscmd クライアントを使用する場合は、次の点にご注意ください:
クライアントを V0.46.5 以降にアップグレードする必要があります。そうしないと、
DESC json_tableコマンドを実行したり、Tunnel を使用して JSON データをダウンロードしたりできません。クライアントのインストールパスにある
conf\odps_config.iniファイルで、use_instance_tunnelパラメーターをfalseに設定します。そうしないと、クエリが失敗します。
関連資料
JSON データ型の詳細については、「JSON データ型」をご参照ください。