首页/数据/数仓建模速查/ClickHouse 物化视图:写入触发器
湖仓与引擎63 条

ClickHouse 物化视图:写入触发器

ClickHouse 物化视图本质是插入触发器:源表写入时把结果写入目标表;做聚合加速时要用 AggregatingMergeTree 与状态函数配合。

数仓建模速查数据更新于 2026-10-12
本质插入触发
目标表聚合引擎
状态AggregateFunction
合并查询时 merge 状态

物化视图示例

物化视图示例
CREATE TABLE dw.trade_store_agg
(
  dt Date,
  store_id String,
  order_cnt AggregateFunction(count, UInt64),
  pay_amt AggregateFunction(sum, Decimal(18,2))
)
ENGINE = AggregatingMergeTree
ORDER BY (dt, store_id);

CREATE MATERIALIZED VIEW dw.mv_trade_store TO dw.trade_store_agg AS
SELECT dt, store_id,
       countState() AS order_cnt,
       sumState(pay_amt) AS pay_amt
FROM dw.trade_order
GROUP BY dt, store_id;
查询时用 countMerge 与 sumMerge 读出聚合值,直接查状态列会得到二进制中间值。

易错点

  • 物化视图只对新写入生效,历史数据未回填

数据来源与参考

  • ClickHouse 官方文档:Materialized Views
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌