数据类型
TINYINT数据类型
长度: 长度为1个字节的有符号整型。
范围: [-128, 127]
转换: PALO可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成CHAR。
举例:
1 mysql> select cast(100 as char);
2 +------------------------+
3 | CAST(100 AS CHARACTER) |
4 +------------------------+
5 | 100 |
6 +------------------------+
7 1 row in set (0.00 sec)
SMALLINT数据类型
长度: 长度为2个字节的有符号整型。
范围: [-32768, 32767]
转换: PALO可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,CHAR。
举例:
1 mysql> select cast(10000 as char);
2 +--------------------------+
3 | CAST(10000 AS CHARACTER) |
4 +--------------------------+
5 | 10000 |
6 +--------------------------+
7 1 row in set (0.01 sec)
8
9 mysql> select cast(10000 as tinyint);
10 +------------------------+
11 | CAST(10000 AS TINYINT) |
12 +------------------------+
13 | 16 |
14 +------------------------+
15 1 row in set (0.00 sec)
INT数据类型
长度: 长度为4个字节的有符号整型。
范围: [-2147483648, 2147483647]
转换: PALO可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,CHAR
举例:
1 mysql> select cast(111111111 as char);
2 +------------------------------+
3 | CAST(111111111 AS CHARACTER) |
4 +------------------------------+
5 | 111111111 |
6 +------------------------------+
7 1 row in set (0.01 sec)
BIGINT数据类型
长度: 长度为8个字节的有符号整型。
范围: [-9223372036854775808, 9223372036854775807]
转换: PALO可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,INT,CHAR
举例:
1 mysql> select cast(9223372036854775807 as char);
2 +----------------------------------------+
3 | CAST(9223372036854775807 AS CHARACTER) |
4 +----------------------------------------+
5 | 9223372036854775807 |
6 +----------------------------------------+
7 1 row in set (0.01 sec)
LARGEINT数据类型
长度: 长度为16个字节的有符号整型。
范围: [-2^127, 2^127-1]
转换: PALO可以自动将该类型转换成浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,INT,BIGINT,CHAR
举例:
1 mysql> select cast(922337203685477582342342 as double);
2 +------------------------------------------+
3 | CAST(922337203685477582342342 AS DOUBLE) |
4 +------------------------------------------+
5 | 9.223372036854776e23 |
6 +------------------------------------------+
7 1 row in set (0.05 sec)
FLOAT数据类型
长度: 长度为4字节的浮点类型。
范围: -3.40E+38 ~ +3.40E+38。
转换: PALO会自动将FLOAT类型转换成DOUBLE类型。用户可以使用CAST()将其转换成TINYINT, SMALLINT, INT, BIGINT, STRING, TIMESTAMP。
DOUBLE数据类型
长度: 长度为8字节的浮点类型。
范围: -1.79E+308 ~ +1.79E+308。
转换: PALO不会自动将DOUBLE类型转换成其他类型。用户可以使用CAST()将其转换成TINYINT, SMALLINT, INT, BIGINT, STRING, TIMESTAMP。用户可以使用指数符号来描述DOUBLE 类型,或通过STRING转换获得。
DECIMAL数据类型
DECIMAL[M, D]
保证精度的小数类型。M代表一共有多少个有效数字,D代表小数点后最多有多少数字。M的范围是[1,27],D的范围是[1,9],另外,M必须要大于等于D的取值。默认取值为decimal[10,0]。
precision: 1 ~ 27
scale: 0 ~ 9
举例:
1.默认取值是decimal(10, 0)
1 mysql> CREATE TABLE testTable1 (k1 bigint, k2 varchar(100), v decimal SUM) DISTRIBUTED BY RANDOM BUCKETS 8;
2 Query OK, 0 rows affected (0.09 sec)
3
4 mysql> describe testTable1;
5 +-------+----------------+------+-------+---------+-------+
6 | Field | Type | Null | Key | Default | Extra |
7 +-------+----------------+------+-------+---------+-------+
8 | k1 | bigint(20) | Yes | true | N/A | |
9 | k2 | varchar(100) | Yes | true | N/A | |
10 | v | decimal(10, 0) | Yes | false | N/A | SUM |
11 +-------+----------------+------+-------+---------+-------+
12 3 rows in set (0.01 sec)
2.显式指定decimal的取值范围
1 CREATE TABLE testTable2 (k1 bigint, k2 varchar(100), v decimal(8,5) SUM) DISTRIBUTED BY RANDOM BUCKETS 8;
2 Query OK, 0 rows affected (0.11 sec)
3
4 mysql> describe testTable2;
5 +-------+---------------+------+-------+---------+-------+
6 | Field | Type | Null | Key | Default | Extra |
7 +-------+---------------+------+-------+---------+-------+
8 | k1 | bigint(20) | Yes | true | N/A | |
9 | k2 | varchar(100) | Yes | true | N/A | |
10 | v | decimal(8, 5) | Yes | false | N/A | SUM |
11 +-------+---------------+------+-------+---------+-------+
12 3 rows in set (0.00 sec)
DATE数据类型
范围: ['1000-01-01', '9999-12-31']。默认的打印形式是’YYYY-MM-DD’。
DATETIME数据类型
范围: ['1000-01-01 00:00:00', '9999-12-31 00:00:00']。默认的打印形式是’YYYY-MM-DD HH:MM:SS’。
CHAR数据类型
范围: char[(length)],定长字符串,长度length范围1~255,默认为1。
转换:用户可以通过CAST函数将CHAR类型转换成TINYINT,,SMALLINT,INT,BIGINT,LARGEINT,DOUBLE,DATE或者DATETIME类型。
示例:
1 mysql> select cast(1234 as bigint);
2 +----------------------+
3 | CAST(1234 AS BIGINT) |
4 +----------------------+
5 | 1234 |
6 +----------------------+
7 1 row in set (0.01 sec)
VARCHAR数据类型
范围: char(length),变长字符串,长度length范围1~65535。
转换:用户可以通过CAST函数将CHAR类型转换成TINYINT,,SMALLINT,INT,BIGINT,LARGEINT,DOUBLE,DATE或者DATETIME类型。
示例:
1 mysql> select cast('2011-01-01' as date);
2 +----------------------------+
3 | CAST('2011-01-01' AS DATE) |
4 +----------------------------+
5 | 2011-01-01 |
6 +----------------------------+
7 1 row in set (0.01 sec)
8
9 mysql> select cast('2011-01-01' as datetime);
10 +--------------------------------+
11 | CAST('2011-01-01' AS DATETIME) |
12 +--------------------------------+
13 | 2011-01-01 00:00:00 |
14 +--------------------------------+
15 1 row in set (0.01 sec)
16
17 mysql> select cast(3423 as bigint);
18 +----------------------+
19 | CAST(3423 AS BIGINT) |
20 +----------------------+
21 | 3423 |
22 +----------------------+
23 1 row in set (0.01 sec)
HLL 数据类型
HLL(HyperLogLog) 类型是一个二进制类型。HLL 类型只能用于聚合类型的表(Aggregation Table),并且必须指定聚合类型为 HLL_UNION。
HLL 类型主要用于非精确快速去重场景下,对数据进行预聚合。
HLL列只能通过配套的 hll_union_agg、hll_cardinality、hll_hash 进行查询或使用。
BITMAP 数据类型
BITMAP 类型是一个二进制类型。BITMAP 类型只能用于聚合类型的表(Aggregation Table),并且必须指定聚合类型为 BITMAP_UNION。
BITMAP 类型主要用于精确去重场景下,对数据进行预聚合。同时也可以用于如用户画像场景存放用户ID等。
BITMAP 列只能通过配套的 BITMAP 函数进行查询和使用。