MaxCompute支持ARRAY、MAP、STRUCT及JSON四种复杂数据类型,本文介绍JSON类型函数及其功能。
索引
函数 | 功能 |
根据给定的JSON字符串和输出格式信息,返回ARRAY、MAP或STRUCT类型。 | |
在一个标准JSON字符串中,按照指定方式抽取指定的字符串。 | |
生成JSON ARRAY。将一个可能为空的JSON类型对象,转换为包含这些类型的数组。 | |
判断一个JSON数据中是否包含指定的 JSON 元素。 | |
查看json_path对应的JSON值是否存在。 | |
支持将JSON数组或JSON对象中的每个元素拆解(展开)成多行记录输出。 | |
按照指定的json_path,从JSON格式的字符串或JSON类型数据中提取对应的字符串或JSON数据。 | |
将JSON数据转换成STRING类型,默认不自动进行美化。 | |
在JSON文件指定位置中插入JSON值。 | |
返回指定路径下的JSON数据的长度。 | |
生成JSON OBJECT,要求key和value成对出现。 | |
将STRING类型转成JSON类型,非JSON格式转换为字符串会报错。 | |
美化JSON,增加换行及空格。 | |
替换JSON文件指定位置的值或新增对应的值。 | |
从JSON对象或JSON数组中移除所有值为 | |
在一个标准的JSON字符串中,按照输入的一组键抽取各个键指定的字符串。 | |
返回JSON数据所属的数据类型名称。 | |
去掉JSON数据中的引号。 | |
检查字符串是否为合法的JSON格式。 | |
将指定的复杂类型输出为JSON字符串。 |
适用范围
SDK版本要求
仅支持Java SDK V0.44.0及以上版本。
仅支持PyODPS V0.11.4.1及以上版本。
表操作限制
暂不支持对一张表新增JSON列。
暂不支持Cluster表。
暂不支持Delta Table类型表。
SQL操作限制
暂不支持对JSON类型的比较操作。
暂不支持对JSON类型进行
ORDER BY、GROUP BY或作为JOIN的key。
数据精度
目前JSON NUMBER的整数部分使用BIGINT类型存储,当整数部分超出BIGINT范围时会溢出。
目前JSON NUMBER的小数部分使用DOUBLE类型存储,当小数部分转换为DOUBLE时会损失精度。
字符限制:生成JSON类型数据所用的字符串里不支持UNICODE
\u0000。引擎兼容性:如果表存在其他引擎读取情况,比如Hologres等,目前不支持读取JSON数据类型。
Java UDF和Python UDF暂不支持JSON类型。
JSON数据类型可以被嵌套使用,最多支持不超过20层的嵌套。
开发工具
目前支持的开发工具包括odpscmd客户端,Studio和DataWorks,暂不支持Dataphin等外围生态。如果需要跟外部系统组合使用,请先确认后再使用。使用odpscmd客户端时需要关注以下内容:
需要将客户端升级到V0.46.5及以上版本,否则无法使用
DESC json_table命令且无法通过Tunnel下载JSON类型数据。需要将客户端安装路径下的
conf\odps_config.ini文件中的参数use_instance_tunnel设置为false,否则查询会报错。
相关文档
JSON数据类型详情请参见JSON数据类型。