首页 / JSON
JSON 函数对照
JSON 函数在 MaxCompute、Hologres、StarRocks、Doris、Hive、Spark SQL、Flink SQL 中的写法对照,共 2 个函数。其中 2 个函数在部分引擎中需要改写或没有对应函数。
目录:from_json · get_json_object
FROM_JSON 按 schema 解析 JSON
FROM_JSON 按指定的 schema 把 JSON 字符串解析成 STRUCT、MAP 或 ARRAY。只有 MaxCompute 和 Spark 同名可用,写法基本一致;StarRocks、Doris 和 Hologres 先转成 JSON 类型再取字段,Hive 和 Flink 只能按路径取值。
| 引擎 | 支持 | 写法 |
|---|---|---|
| MaxCompute | 支持 | from_json(jsonStr, schema) |
| Hologres | 需改写 | json_str::jsonb ->> 'key' |
| StarRocks | 需改写 | parse_json(str) |
| Doris | 需改写 | JSON_PARSE(json_str) |
| Hive | 需改写 | json_tuple(jsonStr, k1, k2, ...) |
| Spark SQL | 支持 | from_json(jsonStr, schema[, options]) |
| Flink SQL | 需改写 | JSON_VALUE(json, path) / JSON_QUERY(json, path) |
GET_JSON_OBJECT 提取 JSON 字段
GET_JSON_OBJECT 按 JSON 路径从字符串中取值。各引擎的函数名、返回类型和路径规则差别较大,是迁移时最容易出错的函数之一。
| 引擎 | 支持 | 写法 |
|---|---|---|
| MaxCompute | 支持 | GET_JSON_OBJECT(json, json_path) |
| Hologres | 支持 | GET_JSON_OBJECT(json, json_path) |
| StarRocks | 支持 | get_json_object(json_str, json_path) |
| Doris | 需改写 | GET_JSON_STRING(json_str, json_path) |
| Hive | 支持 | get_json_object(json_string, path) |
| Spark SQL | 支持 | get_json_object(json_txt, path) |
| Flink SQL | 需改写 | JSON_VALUE(json, path) |