MaxCompute supports four complex data types: ARRAY, MAP, STRUCT, and JSON. This topic describes the functions and features of the JSON data type.
Index
Function | Features |
Returns an ARRAY, MAP, or STRUCT type from a JSON string based on the specified output format. | |
Extracts a string from a JSON string using a specified path. | |
Transforms a JSON object, which can be empty, into a JSON array that contains the object. | |
Checks whether a JSON document contains a specified JSON element. | |
Checks whether a specified JSONPath exists in a JSON document. | |
Expands each element in a JSON array or JSON object into multiple rows. | |
Extracts data from a JSON string or JSON data type based on a specified JSONPath. | |
Converts a JSON data type to a string. The output is not prettified by default. | |
Inserts a JSON value at a specified position in a JSON document. | |
Returns the length of the JSON data at a specified path. | |
Generates a JSON object from key-value pairs. | |
Converts a string to a JSON data type. An error is returned if the string is not in valid JSON format. | |
Formats a JSON string for readability by adding line breaks and spaces. | |
Replaces an existing value or adds a new value at a specified path in a JSON document. | |
Removes all fields or elements with a value of | |
Extracts strings from a standard JSON string for a specified group of keys. | |
Returns the type name of a JSON value. | |
Removes quotes from a JSON string. | |
Checks whether a string is valid JSON. | |
Converts a specified complex data type to a JSON string. |
Usage notes
SDK version requirements
Only Java SDK V0.44.0 and later versions are supported.
Only PyODPS V0.11.4.1 and later versions are supported.
Table operation limits
You cannot add a JSON column to a table.
Clustered tables are not supported.
Tables of the Delta Table type are not supported.
SQL operation limits
Comparison operations on the JSON type are not supported.
You cannot use
ORDER BYorGROUP BYclauses on the JSON type. You also cannot use a JSON type column as aJOINkey.
Data precision
The integer part of a JSON NUMBER is stored as a BIGINT type. An overflow occurs if the integer is outside the BIGINT range.
The decimal part of a JSON NUMBER is stored as a DOUBLE type. Precision loss may occur when the decimal part is converted to the DOUBLE type.
Character limits: The Unicode character
\u0000is not supported in strings that are used to generate JSON data.Engine compatibility: If you use another engine, such as Hologres, to read data from a table, the JSON data type cannot be read.
Java UDFs and Python UDFs do not support the JSON type.
The JSON data type can be nested up to 20 levels deep.
Development tools
Supported development tools include the MaxCompute client (odpscmd), MaxCompute Studio, and DataWorks. External ecosystems such as Dataphin are not supported. If you want to use the JSON data type with an external system, you must confirm its compatibility before you start. When you use the odpscmd client, note the following:
You must upgrade the client to V0.46.5 or later. Otherwise, you cannot run the
DESC json_tablecommand or download JSON data using Tunnel.In the
conf\odps_config.inifile in the client installation path, set theuse_instance_tunnelparameter tofalse. Otherwise, queries will fail.
References
For more information about the JSON data type, see JSON data type.