使用join语句更新物化视图

nab*_*ngs 7 clickhouse

假设我有2个表AB.我MVjoin两个表的查询创建一个(物化视图),psuedo像:

create materialized view a_b engine = Memory as 
select * from(
    select * from A
) all inner join (
    select * from B
) using some_col;
Run Code Online (Sandbox Code Playgroud)

我知道,a_b插入数据时只更新到表中A,并没有别的发生当推数据B.我希望我的MV必须在两个表都更新时更新.

我的解决方法是创建另一个MV改变postition A,B并指向a_blike

create materialized view a_b_2 to a_b as 
select * from(
    select * from B
) all inner join (
    select * from A
) using same_col;
Run Code Online (Sandbox Code Playgroud)

我对这种方法有一些疑问:
1.是否有任何more legal way归档相同的效果clickhouse
2.假设我有2个传入的批次数据BD_A,并将同时BD_B插入.2批次自己的一些数据()是合适的条件.是否有任何机会,失去了这些,因为流程插入之前,和进程插入之前,.ABBD_A_BjoinMVBD_A_BMV a_bBD_ABMV a_b_2BD_BA

Ram*_*lat 2

据我了解,您正在尝试解决限制。

Clickhouse 不支持 MV 的多个源表,他们对此有充分的理由。我实际上向开发人员询问了这个问题并得到了这个答案

在 ClickHouse 物化视图中,其行为更像是 BEFORE INSERT TRIGGER,每次处理插入时到达的新块。

因此,这是很自然的限制,因为对 2 个不同表的插入将异步进行,并且您通常希望在 JOIN 中看到整个表,而不仅仅是新到达的块。