如何解决clickhouse材质视图问题
我这样创建了材料视图:
创建目标表:
CREATE TABLE user_deatils_daily (
day date,hour UInt8,appid UInt32,isp String,city String,country String,session_count UInt64,avg_score AggregateFunction(avg,Float32),min_revenue AggregateFunction(min,max_load_time AggregateFunction(max,Int32)
)
ENGINE = SummingMergeTree()
PARTITION BY toRelativeWeekNum(day)
ORDER BY (day,hour)
创建视频:
CREATE MATERIALIZED VIEW user_deatils_daily_mv
TO user_deatils_daily as
select toDate(session_ts) as day,toHour(toDateTime(session_ts)) as hour,appid,isp,city,country,count(session_uuid) as session_count,avgState() as avg_score,minState(revenue) as min_revenue,maxState(perf_page_load_time) as max_load_time
from user_deatils where toDate(session_ts)>='2020-08-26' group by session_ts,country
目标表中的数据开始填充数据。 一段时间后,目标表被新数据填充,并且不保存旧数据。 为什么呢?
解决方法
SummingMergeTree()分区依据toRelativeWeekNum(day)ORDER BY(日期,小时)
均值计算总和groupby toRelativeWeekNum(day),day,hour)
user_deatils_daily
对user_deatils_daily_mv
一无所知。它们没有关系。
user_deatils_daily_mv
只是插入user_deatils_daily
SummingMergeTree对group by session_ts,appid,isp,city,country
一无所知
我希望看到ORDER BY (ts,country);
我会做的:
CREATE TABLE user_details_daily
( ts DateTime,appid UInt32,isp String,city String,country String,session_count SimpleAggregateFunction(sum,UInt64),avg_score AggregateFunction(avg,Float32),min_revenue SimpleAggregateFunction(min,max_load_time SimpleAggregateFunction(max,Int32) )
ENGINE = AggregatingMergeTree()
PARTITION BY toStartOfWeek(ts)
ORDER BY (ts,country);
CREATE MATERIALIZED VIEW user_deatils_daily_mv TO user_details_daily
as select
toStartOfHour(toDateTime(session_ts)) ts,country,count(session_uuid) as session_count,avgState() as avg_score,min(revenue) as min_revenue,max(perf_page_load_time) as max_load_time
from user_details
where toDate(session_ts)>='2020-08-26' group by ts,country;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。