GROUP_BITMAP_MERGE 函数
简介
GROUP_BITMAP_MERGE
GROUP_BITMAP_MERGE
函数用于合并多个中间状态的
Bitmap
Bitmap
对象,最终返回合并后的基数。该函数在处理大规模数据集时非常高效,尤其适用于需要对多个
Bitmap
Bitmap
中间状态进行合并的场景。
语法
group_bitmap_merge(bitmap)
参数
bitmap
bitmap
:BITMAP
BITMAP
类型的中间状态,表示需要合并的 Bitmap
Bitmap
状态。
返回值
返回一个
INT
INT
类型的结果,表示合并后
Bitmap
Bitmap
的
基数(即并集中不重复整数值的个数)。
使用示例
示例 1:合并由多个数组构建的
Bitmap
Bitmap
数据并返回基数:
SELECT group_bitmap_merge(bitmap_build(v)) AS res
FROM VALUES
(ARRAY(1,2,3,4,5,6,7,8,9,10)),
(ARRAY(6,7,8,9,10,11,12,13,14,15)),
(ARRAY(2,4,6,8,10,12))
AS t(v);
+-----+
| res |
+-----+
| 15 |
+-----+
示例 2:与
group_bitmap_state
group_bitmap_state
配合实现两阶段聚合
先用
group_bitmap_state
group_bitmap_state
按分组生成中间状态,再用
group_bitmap_merge
group_bitmap_merge
合并所有分组的结果:
SELECT group_bitmap_merge(state) AS total
FROM (
SELECT c, group_bitmap_state(v) AS state
FROM VALUES ('a', 1), ('a', 2), ('b', 2), ('b', 3) AS t(c, v)
GROUP BY c
);
+-------+
| total |
+-------+
| 3 |
+-------+