1、join连表操作
如果创建物化视图materializ view(或视图view)的数据是由两表join产生的,那么物化视图仅有在左表插入数据时才更新。如果只有右表插入数据,则不更新。
而且要注意,创建语句中的两表join的写法和mysql有点不太一样,写法有误导致不能成功创建而报错: Code: 352. Cannot detect left and right JOIN keys. JOIN ON section is ambiguous.区别就是表名前面要加上库名;写法错误和正确的的例子如:
错误:
from customer as cust
left any join customer_details_v as det
on cust.CustomerID = det.CustomerID;
正确
from test.customer as cust
left any join test.customer_details_v as det
on cust.CustomerID = det.CustomerID;
这种特殊的写法至少在21.8.5.7版本都是存在的,似乎是一个bug,也有人在GitHub提了issues,详情见:https://github.com/ClickHouse/ClickHouse/issues/11000
2 同步更新和删除:
如果表数据不是只增的,而是有较频繁的删除或修改(如接入changelog的表),物化视图底层需要改用CollapsingMergeTree/VersionedCollapsingMergeTree,其他引擎是不能做到同步更新和删除的