JSON
自 2.2.0 版本起,StarRocks 支持 JSON。本文介绍 JSON 的基本概念,以及 StarRocks 如何创建 JSON 类型的列、导入和查询 JSON 数据,通过 JSON 函数及运算符构造和处理 JSON 数据。
什么是 JSON
JSON 是一种轻量级的数据交换格式,JSON 类型的数据是一种半结构化的数据,支持树形结构。JSON 数据层次清晰,结构灵活易于阅读和处理 ,广泛应用于数据存储和分析场景。JSON 支持的数据类型为数字类型(NUMBER)、字符串类型(STRING)、布尔类型(BOOLEAN)、数组类型(ARRAY)、对象类型(OBJECT),以及 NULL 值。
JSON 的更多介绍,请参见 JSON 官网,JSON 数据的输入和输出语法,请参见 JSON 规范 RFC 7159 。
StarRocks 支持存储和高效查询分析 JSON 数据。StarRocks 采用二进制格式编码来存储 JSON 数据,而不是直接存储所输入文本,因此在数据计算查询时,降低解析成本,从而提升查询效率。
使用 JSON 数据
创建 JSON 类型的列
建表时,通过关键字 JSON,指定列 j 为 JSON 类型。
CREATE TABLE `tj` (
`id` INT(11) NOT NULL COMMENT "",
`j` JSON NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`)
PROPERTIES (
"replication_num" = "3",
"storage_format" = "DEFAULT"
);
导入数据并存储为 JSON 类型
StarRocks 支持如下方式导入数据并存储为 JSON 类型。
- 方式一:通过
INSERT INTO将数据写入至 JSON 类型的列(例如列j)。
INSERT INTO tj (id, j) VALUES (1, parse_json('{"a": 1, "b": true}'));
INSERT INTO tj (id, j) VALUES (2, parse_json('{"a": 2, "b": false}'));
INSERT INTO tj (id, j) VALUES (3, parse_json('{"a": 3, "b": true}'));
INSERT INTO tj (id, j) VALUES (4, json_object('a', 4, 'b', false));
PARSE_JSON 函数能够基于字符串类型的数据构造出 JSON 类型的数据。JSON_OBJECT 函数能够构造出 JSON 对象类型的数据,可以将现有的表转成 JSON 类型。更多说明,请参见 PARSE_JSON 和 JSON_OBJECT。