Files
doris/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/bitmap.md

1.8 KiB

#BITMAP

description

Syntax

TO_BITMAP(expr) : 将TINYINT,SMALLINT和INT类型的列转为Bitmap

BITMAP_UNION(expr) : 计算两个Bitmap的并集,返回值是序列化后的Bitmap值

BITMAP_COUNT(expr) : 计算Bitmap中不同值的个数

BITMAP_UNION_INT(expr) : 计算TINYINT,SMALLINT和INT类型的列中不同值的个数,返回值和 COUNT(DISTINCT expr)相同

注意:

1. TO_BITMAP 函数输入的类型必须是TINYINT,SMALLINT,INT
2. BITMAP_UNION函数的参数目前仅支持: 
	- 聚合模型中聚合类型为BITMAP_UNION的列
	- TO_BITMAP 函数

example

CREATE TABLE `bitmap_udaf` (
  `id` int(11) NULL COMMENT "",
  `id2` int(11)
) ENGINE=OLAP
DUPLICATE KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10;


mysql> select bitmap_count(bitmap_union(to_bitmap(id2))) from bitmap_udaf;
+----------------------------------------------+
| bitmap_count(bitmap_union(to_bitmap(`id2`))) |
+----------------------------------------------+
|                                            6 |
+----------------------------------------------+

mysql> select bitmap_union_int (id2) from bitmap_udaf;
+-------------------------+
| bitmap_union_int(`id2`) |
+-------------------------+
|                       6 |
+-------------------------+



CREATE TABLE `bitmap_test` (
  `id` int(11) NULL COMMENT "",
  `id2` varchar(0) bitmap_union NULL  // 注意: bitmap_union的varchar长度需要指定为0
) ENGINE=OLAP
AGGREGATE KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10;


mysql> select bitmap_count(bitmap_union(id2)) from bitmap_test;
+-----------------------------------+
| bitmap_count(bitmap_union(`id2`)) |
+-----------------------------------+
|                                 8 |
+-----------------------------------+

keyword

BITMAP,BITMAP_COUNT,BITMAP_UNION,BITMAP_UNION_INT,TO_BITMAP