Apache Doris支持的数据类型详解

目录

  • 1. TINYINT
  • 2. SMALLINT
  • 3. INT
  • 4. BIGINT
  • 5. LARGEINT
  • 6. FLOAT
  • 7. DOUBLE
  • 8. DECIMAL
  • 9. BOOLEAN
  • 10. CHAR
  • 11. VARCHAR(M)
  • 12. STRING
  • 13. DATE
  • 14. DATETIME
  • 15. BITMAP
  • 16. HLL(HyperLogLog)

1. TINYINT

1字节有符号整数,范围:[-128, 127]

2. SMALLINT

2字节有符号整数,范围:[-32768, 32767]

3. INT

4字节有符号整数,范围:[-2147483648, 2147483647]

4. BIGINT

8字节有符号整数,范围:[-9223372036854775808, 9223372036854775807]

5. LARGEINT

16字节有符号整数,范围:[-2^127 + 1 ~ 2^127 - 1]

6. FLOAT

4字节浮点数

7. DOUBLE

8字节浮点数

8. DECIMAL

格式:DECIMAL(M[,D])。默认为DECIMAL(9, 0)

16字节高精度定点数,M 代表一共有多少个有效数字(precision,范围1 ~ 27),D 代表小数位有多少个数字(scale,范围0 ~ 9)。所以整数位数字个数的范围是1 ~ 18

9. BOOLEAN

与TINYINT一样,0代表false,1代表true

10. CHAR

语法:CHAR(M)。默认是CHAR(1)

定长字符串,M代表的是定长字符串的长度。M的范围是1-255

11. VARCHAR(M)

变长字符串,M代表的是变长字符串的字节长度。M的范围是1-65533

变长字符串是以UTF-8编码存储的,因此英文字符占1个字节,中文字符占3个字节

12. STRING

变长字符串,最大支持2147483643字节(2GB-4)。String类型的长度还受BE配置参数 string_type_soft_limit的影响, 实际能存储的最大长度取两者最小值

String类型只能用在value列,不能用在key列和分区分桶列

变长字符串是以UTF-8编码存储的,因此英文字符占1个字节,中文字符占3个字节

13. DATE

DATE类型:3字节,取值范围是:[‘0000-01-01’, ‘9999-12-31’], 默认的打印形式是’YYYY-MM-DD’

DATE函数:语法是:DATE(expr),表示将输入的类型转化为DATE类型。例如:SELECT DATE('2022-08-01 10:02:03');

14. DATETIME

3字节,日期时间类型,取值范围是:[‘0000-01-01 00:00:00’, ‘9999-12-31 23:59:59’],打印的形式是’YYYY-MM-DD HH:MM:SS’

15. BITMAP

是整型的集合,元素最大支持到2^64 - 1。BITMAP不能作为key列使用,建表时配合聚合类型为BITMAP_UNION。用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制

并且BITMAP列只能通过配套的bitmap_union_count、bitmap_union、bitmap_hash等函数进行查询或使用

离线场景下使用BITMAP会影响导入速度,在数据量大的情况下查询速度会慢于HLL,并优于Count Distinct

实时场景下BITMAP如果不使用全局字典,使用了bitmap_hash()可能会导致有千分之一左右的误差

查询示例:

select hour, BITMAP_UNION_COUNT(pv) over(order by hour) uv from(
   select hour, BITMAP_UNION(device_id) as pv
   from metric_table -- 查询每小时的累计UV
   where datekey=20220801
group by hour order by 1
) final;

16. HLL(HyperLogLog)

1~16385 个字节。HLL不能作为key列使用,建表时配合聚合类型为HLL_UNION。用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制

并且HLL列只能通过配套的hll_union_agg、hll_raw_agg、hll_cardinality、hll_hash进行查询或使用

HLL是模糊去重,在数据量大的情况性能优于Count Distinct。HLL的误差通常在1%左右,有时会达到2%

查询示例:

select hour, HLL_UNION_AGG(pv) over(order by hour) uv from(
   select hour, HLL_RAW_AGG(device_id) as pv
   from metric_table -- 查询每小时的累计UV
   where datekey=20220801
group by hour order by 1
) final;

你可能感兴趣的:(#,Apache,Doris,Apache,Doris,数据类型,largeint,bitmap,hyperlogLog)