@@ -322,6 +322,24 @@ TTL toDateTime(hour) + INTERVAL 1 YEAR
322322SETTINGS index_granularity = 8192
323323` ;
324324
325+ /**
326+ * Daily aggregated pageviews for mini-charts
327+ */
328+ const CREATE_DAILY_PAGEVIEWS_TABLE = `
329+ CREATE TABLE IF NOT EXISTS ${ DATABASES . ANALYTICS } .daily_pageviews (
330+ client_id String CODEC(ZSTD(1)),
331+ date Date CODEC(Delta(2), ZSTD(1)),
332+
333+ pageviews UInt64 CODEC(ZSTD(1)),
334+
335+ INDEX idx_client_id client_id TYPE bloom_filter(0.01) GRANULARITY 1
336+ ) ENGINE = SummingMergeTree
337+ PARTITION BY toYYYYMM(date)
338+ ORDER BY (client_id, date)
339+ TTL toDateTime(date) + INTERVAL 1 YEAR
340+ SETTINGS index_granularity = 8192
341+ ` ;
342+
325343/**
326344 * Materialized view for custom events hourly aggregation
327345 */
@@ -340,6 +358,20 @@ FROM ${DATABASES.ANALYTICS}.custom_event_spans
340358GROUP BY client_id, path, event_name, hour
341359` ;
342360
361+ /**
362+ * Materialized view for daily pageviews aggregation
363+ */
364+ const CREATE_DAILY_PAGEVIEWS_MV = `
365+ CREATE MATERIALIZED VIEW IF NOT EXISTS ${ DATABASES . ANALYTICS } .daily_pageviews_mv
366+ TO ${ DATABASES . ANALYTICS } .daily_pageviews
367+ AS SELECT
368+ client_id,
369+ toDate(time) AS date,
370+ countIf(event_name = 'screen_view') AS pageviews
371+ FROM ${ DATABASES . ANALYTICS } .events
372+ GROUP BY client_id, date
373+ ` ;
374+
343375const CREATE_CUSTOM_OUTGOING_LINKS_TABLE = `
344376CREATE TABLE IF NOT EXISTS ${ DATABASES . ANALYTICS } .outgoing_links (
345377 id UUID,
@@ -566,6 +598,15 @@ export interface CustomEventsHourlyAggregate {
566598 unique_sessions : number ;
567599}
568600
601+ /**
602+ * Daily pageviews aggregate type
603+ */
604+ export interface DailyPageviewsAggregate {
605+ client_id : string ;
606+ date : string ;
607+ pageviews : number ;
608+ }
609+
569610export interface CustomOutgoingLink {
570611 id : string ;
571612 client_id : string ;
@@ -718,6 +759,7 @@ export async function initClickHouseSchema() {
718759 name : "custom_events_hourly" ,
719760 query : CREATE_CUSTOM_EVENTS_HOURLY_TABLE ,
720761 } ,
762+ { name : "daily_pageviews" , query : CREATE_DAILY_PAGEVIEWS_TABLE } ,
721763 { name : "blocked_traffic" , query : CREATE_BLOCKED_TRAFFIC_TABLE } ,
722764 { name : "email_events" , query : CREATE_EMAIL_EVENTS_TABLE } ,
723765 { name : "outgoing_links" , query : CREATE_CUSTOM_OUTGOING_LINKS_TABLE } ,
@@ -732,6 +774,7 @@ export async function initClickHouseSchema() {
732774 name : "custom_events_hourly_mv" ,
733775 query : CREATE_CUSTOM_EVENTS_HOURLY_MV ,
734776 } ,
777+ { name : "daily_pageviews_mv" , query : CREATE_DAILY_PAGEVIEWS_MV } ,
735778 ] ;
736779
737780 // Uptime tables
0 commit comments