用途
AggregatingMergeTree
用来做增量数据统计聚合- 用
bitmap
存储用户id,因为id数据量较大,用bitmap
存储可以有效节约空间
案例
举个例子
在clickhouse
中建立表,引擎为AggregatingMergeTree
,因为要做一些自定义聚合,所以选择这个引擎.
create table testbit(
label String,
name String,
uv AggregateFunction(groupBitmap,UInt64) comment 'bitmap存储用户'
)engine=AggregatingMergeTree()
partition by label
order by (label,name);
向表中插入数据
对于AggregateFunction类型
的列字段,在进行数据的写入和查询时与其他的表引擎有很大区别,在写入数据时,需要调用-State
函数;而在查询数据时,则需要调用相应的-Merge
函数。
insert into testbit
select `gender`,
gender,
groupBitmapState(toUInt64(uid))
from usertable
group by gender;
查询数据
比如,查询男女用户各自的总数
select label,bitmapCardinality(groupBitmapMergeState(uv)) as uv
from testbit
group by label;
+-----+----+
|label|uv |
+-----+----+
|女 |1146|
|男 |1253|
+-----+----+