【问题标题】:clickhouse MATERIALIZED VIEW issuesclickhouse MATERIALIZED VIEW 问题
【发布时间】:2020-12-18 20:03:19
【问题描述】:

我这样创建了 MATERIALIZED VIEW:

创建目标表:

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, Float32),
  max_load_time AggregateFunction(max, Int32)
)
ENGINE = SummingMergeTree()
PARTITION BY toRelativeWeekNum(day) 
ORDER BY (day,hour)

创建MV:

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,appid,isp,city,country

目标表中的数据开始填充数据。 一段时间后,目标表被新数据填充并且不保存旧数据。 这是为什么呢?

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    SummingMergeTree() PARTITION BY toRelativeWeekNum(day) ORDER BY (day,hour)

    表示计算总和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,appid,isp,city,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, Float32), 
      max_load_time SimpleAggregateFunction(max, Int32) ) 
    ENGINE = AggregatingMergeTree() 
    PARTITION BY toStartOfWeek(ts) 
    ORDER BY (ts,appid,isp,city,country);
    
    CREATE MATERIALIZED VIEW user_deatils_daily_mv TO user_details_daily 
    as select 
       toStartOfHour(toDateTime(session_ts)) ts,
       appid,
       isp,
       city,
       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,appid,isp,city,country;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-25
      • 2022-01-18
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2021-10-06
      • 2017-09-05
      • 2019-08-27
      相关资源
      最近更新 更多