为啥我们不能在 clickhouse 的另一个视图之上制作物化视图?
Posted
技术标签:
【中文标题】为啥我们不能在 clickhouse 的另一个视图之上制作物化视图?【英文标题】:Why we can't make materialized view on top of another view in clickhouse?为什么我们不能在 clickhouse 的另一个视图之上制作物化视图? 【发布时间】:2020-05-09 06:52:17 【问题描述】:A 是一个 collapsingMergeTree 引擎表
CREATE VIEW A AS SELECT * FROM A final;
创建物化视图 a_mview1 到 B AS选择ID, 姓名 来自A;
这不起作用,似乎我们无法在视图上显示 mview..但是为什么?
【问题讨论】:
【参考方案1】:CREATE VIEW A AS SELECT * FROM A final;
这是不可能的。因为 MV 从不读取源表。 MV 从 INSERT 命令获取插入的块。
【讨论】:
【参考方案2】:普通视图不存储任何数据(参见doc),因此将其用作Materialized视图的数据源是错误的。
需要根据原始表创建物化视图:
CREATE TABLE A (
..
) ENGINE = CollapsingMergeTree
.. ;
CREATE MATERIALIZED VIEW a_mview1 TO B
AS
SELECT ..
FROM A
.. ;
详情请看文章ClickHouse Materialized Views Illuminated。
【讨论】:
以上是关于为啥我们不能在 clickhouse 的另一个视图之上制作物化视图?的主要内容,如果未能解决你的问题,请参考以下文章