show create table user_info_merge_tree_dt;
CREATE TABLE default.user_info_merge_tree_dt
(
`id` Int64,
`name` String,
`dt` Date
)
ENGINE = ReplacingMergeTree(id)
PARTITION BY dt
PRIMARY KEY id
ORDER BY id
SETTINGS index_granularity = 8192;
select *
from default.user_info_merge_tree_dt;
insert into user_info_merge_tree_dt
values (1, '1', '2022-12-12');
optimize table user_info_merge_tree_dt final;
create table tag_audience
(
tag_name varchar(32),
ids AggregateFunction(groupBitmap, UInt32) comment 'bitmap存储'
) engine ReplacingMergeTree()
order by tag_name
primary key tag_name;
select tag_name, bitmapToArray(ids) as ids
from tag_audience;
insert into tag_audience
values ('a1', bitmapBuild(cast(array(1, 2, 3, 4, 5) as Array(UInt32))));
select tag_name, bitmapToArray(ids)
from tag_audience
where tag_name = 'a1';
insert into tag_audience
select tag_name, bitmapOr(ids, bitmapBuild(cast(array(6, 7, 8) as Array(UInt32))))
from tag_audience;
-- https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/groupbitmapor
-- if add suffix -State on the function, then return bitmap object. eg: groupBitmapOr -> groupBitmapOrState
-- bitmap聚合之后计算基数
select tag_name, groupBitmapOr(ids) as cnt
from tag_audience
group by tag_name;
-- bitmap聚合之后返回新的bitmap
select tag_name, arraySort(bitmapToArray(groupBitmapOrState(ids)))
from tag_audience
group by tag_name;
create table order_amount_sum
(
province_id UInt64,
amount UInt64,
dt datetime
) engine = SummingMergeTree()
PARTITION BY toDate(dt)
PRIMARY KEY province_id
ORDER BY province_id;
-- 2022-12-16 15:39:04
select *
from order_amount_sum;
optimize table order_amount_sum final ;
select now();
insert into order_amount_sum
values (2, 2, now())