diff --git a/clickhouse/migrations/20251104112214_post_analytics_events_mv.down.sql b/clickhouse/migrations/20251104112214_post_analytics_events_mv.down.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/clickhouse/migrations/20251104112214_post_analytics_events_mv.up.sql b/clickhouse/migrations/20251104112214_post_analytics_events_mv.up.sql new file mode 100644 index 0000000000..2310738309 --- /dev/null +++ b/clickhouse/migrations/20251104112214_post_analytics_events_mv.up.sql @@ -0,0 +1,19 @@ +ALTER TABLE api.post_analytics_events_mv + MODIFY QUERY +SELECT target_id AS post_id, + sumIf(toUInt64(1), event_name = 'share post') AS shares_external, + sumIf(toUInt64(1), event_name = 'share to squad') AS shares_internal, + uniqStateIf(user_id, event_name = 'bookmark post') AS bookmarks, + sumIf(toUInt64(1), (event_name = 'impression') AND (target_type = 'post')) AS impressions, + uniqStateIf(user_id, (event_name = 'impression') AND (target_type = 'post')) AS reach, + uniqStateIf(user_id, (event_name = 'impression') AND (target_type = 'post')) AS reach_all, + sumIf(toUInt64(1), (event_name = 'click') AND (target_type = 'post')) AS clicks, + sumIf(toUInt64(1), (event_name = 'go to link') AND (target_type = 'post')) AS go_to_link, + max(server_timestamp) AS created_at +FROM events.raw_events +WHERE (event_name IN ('share post', 'bookmark post', 'impression', 'share to squad', 'click', 'go to link')) + AND (target_id IS NOT NULL) + AND (target_type = 'post') + AND (server_timestamp > '2025-10-08 13:00:00') +GROUP BY target_id + SETTINGS materialized_views_ignore_errors = 1; diff --git a/src/cron/postAnalyticsClickhouse.ts b/src/cron/postAnalyticsClickhouse.ts index b8a47be15d..0a7899a63b 100644 --- a/src/cron/postAnalyticsClickhouse.ts +++ b/src/cron/postAnalyticsClickhouse.ts @@ -57,7 +57,7 @@ export const postAnalyticsClickhouseCron: Cron = { sum(clicks_ads) AS "clicksAds", sum(go_to_link) AS "goToLink" FROM api.post_analytics - FINAL + WHERE "created_at" > {lastRunAt: DateTime} GROUP BY id HAVING "updatedAt" > {lastRunAt: DateTime} ORDER BY "updatedAt" DESC;