微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

clickhouse材质视图问题

如何解决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_dailyuser_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 举报,一经查实,本站将立刻删除。