我们这次说下Starrocks中的数据类型,

分为了数值类型,字符串类型,日期类型,以及数组,JSON, BITMAP,HLL

我们大致过一下

  1. 数值类型

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

  1. 字符串类型

CHAR(M):定长字符串,M 代表的是定长字符串的长度。M 的范围是 1~255。

VARCHAR(M):变长字符串。M 代表变长字符串长度,单位:字节,默认取值为 1。

STRING: 字符串,最大长度 65533 字节。

BINARY/VARBINARY:用于存储二进制数据,单位为字节。

  1. 日期类型

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’

  1. 数组类型

支持嵌套,切片等操作,可以定义数组的同时定义类型

ARRAY<type>,type是内部类型,仅支持1,2,3中的数据类型,可以为NULL

访问的时候支持下标访问,甚至支持递归下标

select [[1,2],[3,4]][2];

  1. BITMAP

BITMAP 与 HLL (HyperLogLog) 类似,常用来加速 count distinct 的去重计数使用。

  1. 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} |

+——+———————-+

  1. HLL(HyperLogLog)

HyperLogLog 类型,用于近似去重, 在部分对去重精度要求不高的场景下,您可以选择使用 HLL 算法减轻数据去重分析的计算压力。根据数据集大小以及所采用的哈希函数的类型,HLL 算法的误差可控制在 1% 至 10% 左右。

建表时指定语法为

CREATE TABLE test(

dt DATE,

id INT,

uv HLL HLL_UNION

)

DISTRIBUTED BY HASH(ID);

发表评论

邮箱地址不会被公开。 必填项已用*标注