关于clickhouse中物化视图的一些问题总结

本文讨论了在ClickHouse中创建物化视图时遇到的JOIN操作问题,指出当物化视图基于两表JOIN时,仅在左表有数据插入时更新,右表插入数据时不更新。此外,还提到了JOIN语句的特殊写法,需要明确指定库名。针对有频繁删除或修改操作的情况,推荐使用CollapsingMergeTree或VersionedCollapsingMergeTree引擎以实现同步更新和删除。
摘要由CSDN通过智能技术生成

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,其他引擎是不能做到同步更新和删除的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值