我们这次说下Starrocks中的数据类型,
分为了数值类型,字符串类型,日期类型,以及数组,JSON, BITMAP,HLL
我们大致过一下
- 数值类型
TINYINT:1 字节有符号整数,范围 [-128, 127]。
SMALLINT: 2 字节有符号整数,范围 [-32768, 32767]。
INT: 4 字节有符号整数,范围 [-2147483648, 2147483647]。
BIGINT: 8 字节有符号整数,范围 [-9223372036854775808, 9223372036854775807]。
LARGEINT: 16 字节有符号整数,范围 [-2^127 + 1 ~ 2^127 – 1]
DECIMAL(P [, S]): 高精度定点数,P 代表一共有多少个有效数字 (precision),S 代表小数点后最多有多少数字 (scale)
DOUBLE:8 字节浮点数。
FLOAT:4 字节浮点数。
BOOLEAN, BOOL: true or false
- 字符串类型
CHAR(M):定长字符串,M 代表的是定长字符串的长度。M 的范围是 1~255。
VARCHAR(M):变长字符串。M 代表变长字符串长度,单位:字节,默认取值为 1。
STRING: 字符串,最大长度 65533 字节。
BINARY/VARBINARY:用于存储二进制数据,单位为字节。
- 日期类型
DATE: 目前的取值范围是 [‘0000-01-01’, ‘9999-12-31’],默认的打印形式是 ‘YYYY-MM-DD’。
DATETIME: 日期时间类型,取值范围是 [‘0000-01-01 00:00:00’, ‘9999-12-31 23:59:59′]。
打印的形式是’YYYY-MM-DD HH: MM: SS’
- 数组类型
支持嵌套,切片等操作,可以定义数组的同时定义类型
ARRAY<type>,type是内部类型,仅支持1,2,3中的数据类型,可以为NULL
访问的时候支持下标访问,甚至支持递归下标
select [[1,2],[3,4]][2];
- BITMAP
BITMAP 与 HLL (HyperLogLog) 类似,常用来加速 count distinct 的去重计数使用。
- Json
StarRocks 支持存储和高效查询分析 JSON 数据。StarRocks 采用二进制格式编码来存储 JSON 数据,而不是直接存储所输入文本,因此在数据计算查询时,降低解析成本,从而提升查询效率。
在使用过程中,支持使用语法来提取数据
mysql> select * from tj where j->’a’ = 1;
+——+———————+
| id | j |
+——+———————+
| 1 | {“a”: 1, “b”: true} |
+——+———————+
设置可以进行order by
mysql> select * from tj
where j->’a’ <= parse_json(‘3′)
order by cast(j->’a’ as int);
+——+———————-+
| id | j |
+——+———————-+
| 1 | {“a”: 1, “b”: true} |
| 2 | {“a”: 2, “b”: false} |
| 3 | {“a”: 3, “b”: true} |
| 4 | {“a”: 4, “b”: false} |
+——+———————-+
- HLL(HyperLogLog)
HyperLogLog 类型,用于近似去重, 在部分对去重精度要求不高的场景下,您可以选择使用 HLL 算法减轻数据去重分析的计算压力。根据数据集大小以及所采用的哈希函数的类型,HLL 算法的误差可控制在 1% 至 10% 左右。
建表时指定语法为
CREATE TABLE test(
dt DATE, id INT, uv HLL HLL_UNION ) DISTRIBUTED BY HASH(ID); |