首页/数据/NoSQL 速查/AggregatingMergeTree 聚合状态
ClickHouse56 条

AggregatingMergeTree 聚合状态

AggregatingMergeTree 存储聚合函数中间状态(AggregateFunction 列):写入用 -State 组合器,查询用 -Merge 组合器,通常作为物化视图的目标表实现增量预聚合。

NoSQL 速查数据更新于 2026-10-12
列类型AggregateFunction(func, types…),如 AggregateFunction(uniq, UInt64)
写入uniqState(x)、avgState(x) 等带 State 后缀的函数
查询uniqMerge(col)、avgMerge(col) 等带 Merge 后缀的函数

示例

示例
CREATE TABLE agg_daily
(
    d Date,
    n UInt64,
    u AggregateFunction(uniq, UInt64),
    a AggregateFunction(avg, Float64)
)
ENGINE = AggregatingMergeTree
ORDER BY (d, n);

INSERT INTO agg_daily SELECT d, n, uniqState(id), avgState(v)
FROM events GROUP BY d, n;

SELECT d, n, uniqMerge(u) AS uv, avgMerge(a) AS avg_v
FROM agg_daily GROUP BY d, n;
状态列直接 SELECT 出来是二进制内容,必须用对应 Merge 函数读取;状态可在多个部分间继续合并。

易错点

  • State 与 Merge 函数必须成对匹配,写错聚合函数类型查询会报类型错误
  • 聚合状态随维度基数增长而膨胀,物化视图的 GROUP BY 维度要与查询模式一致

数据来源与参考

  • ClickHouse Docs: AggregatingMergeTree
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌