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. 1. TO_BITMAP 函数输入的类型必须是TINYINT,SMALLINT,INT
  2. 2. BITMAP_UNION函数的参数目前仅支持:
  3. - 聚合模型中聚合类型为BITMAP_UNION的列
  4. - TO_BITMAP 函数

example

  1. CREATE TABLE `bitmap_udaf` (
  2. `id` int(11) NULL COMMENT "",
  3. `id2` int(11)
  4. ) ENGINE=OLAP
  5. DUPLICATE KEY(`id`)
  6. DISTRIBUTED BY HASH(`id`) BUCKETS 10;
  7. mysql> select bitmap_count(bitmap_union(to_bitmap(id2))) from bitmap_udaf;
  8. +----------------------------------------------+
  9. | bitmap_count(bitmap_union(to_bitmap(`id2`))) |
  10. +----------------------------------------------+
  11. | 6 |
  12. +----------------------------------------------+
  13. mysql> select bitmap_union_int (id2) from bitmap_udaf;
  14. +-------------------------+
  15. | bitmap_union_int(`id2`) |
  16. +-------------------------+
  17. | 6 |
  18. +-------------------------+
  19. CREATE TABLE `bitmap_test` (
  20. `id` int(11) NULL COMMENT "",
  21. `id2` varchar(0) bitmap_union NULL // 注意: bitmap_union的varchar长度需要指定为0
  22. ) ENGINE=OLAP
  23. AGGREGATE KEY(`id`)
  24. DISTRIBUTED BY HASH(`id`) BUCKETS 10;
  25. mysql> select bitmap_count(bitmap_union(id2)) from bitmap_test;
  26. +-----------------------------------+
  27. | bitmap_count(bitmap_union(`id2`)) |
  28. +-----------------------------------+
  29. | 8 |
  30. +-----------------------------------+

keyword

BITMAP,BITMAP_COUNT,BITMAP_UNION,BITMAP_UNION_INT,TO_BITMAP