GROUP_BITMAP_STATE
功能描述
GROUP_BITMAP_STATE
GROUP_BITMAP_STATE
函数用于根据输入的表达式(
expr
expr
)构建一个
BITMAP
BITMAP
类型的结果。该函数通常用于对整数类型的数据进行分组操作,并将每个分组的唯一值转换为一个
bitmap
bitmap
数组。
参数说明
返回类型
使用示例
示例 1:按分组构建 Bitmap 并查看元素
SELECT c, bitmap_to_array(group_bitmap_state(v)) AS bitmap_array
FROM VALUES ('a', 1), ('a', 2), ('a', 2), ('b', 3) AS v(c, v)
GROUP BY c;
+----+--------------+
| c | bitmap_array |
+----+--------------+
| a | [1,2] |
| b | [3] |
+----+--------------+
在这个示例中,
a
a
分组包含两个唯一值 1 和 2,
b
b
分组只包含唯一值 3。
示例 2:与
group_bitmap_merge
group_bitmap_merge
配合实现两阶段聚合
先用
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 |
+-------+