-- drop projections ALTER TABLE umami.website_event DROP PROJECTION website_event_url_path_projection; ALTER TABLE umami.website_event DROP PROJECTION website_event_referrer_domain_projection; --drop view DROP TABLE umami.website_event_stats_hourly_mv; -- rename columns ALTER TABLE umami.website_event RENAME COLUMN "subdivision1" TO "region"; ALTER TABLE umami.website_event_stats_hourly RENAME COLUMN "subdivision1" TO "region"; -- drop columns ALTER TABLE umami.website_event DROP COLUMN "subdivision2"; -- recreate projections ALTER TABLE umami.website_event ADD PROJECTION website_event_url_path_projection ( SELECT * ORDER BY toStartOfDay(created_at), website_id, url_path, created_at ); ALTER TABLE umami.website_event MATERIALIZE PROJECTION website_event_url_path_projection; ALTER TABLE umami.website_event ADD PROJECTION website_event_referrer_domain_projection ( SELECT * ORDER BY toStartOfDay(created_at), website_id, referrer_domain, created_at ); ALTER TABLE umami.website_event MATERIALIZE PROJECTION website_event_referrer_domain_projection; -- recreate view CREATE MATERIALIZED VIEW umami.website_event_stats_hourly_mv TO umami.website_event_stats_hourly AS SELECT website_id, session_id, visit_id, hostname, browser, os, device, screen, language, country, region, city, entry_url, exit_url, url_paths as url_path, url_query, utm_source, utm_medium, utm_campaign, utm_content, utm_term, referrer_domain, page_title, gclid, fbclid, msclkid, ttclid, li_fat_id, twclid, event_type, event_name, views, min_time, max_time, tag, timestamp as created_at FROM (SELECT website_id, session_id, visit_id, hostname, browser, os, device, screen, language, country, region, city, argMinState(url_path, created_at) entry_url, argMaxState(url_path, created_at) exit_url, arrayFilter(x -> x != '', groupArray(url_path)) as url_paths, arrayFilter(x -> x != '', groupArray(url_query)) url_query, arrayFilter(x -> x != '', groupArray(utm_source)) utm_source, arrayFilter(x -> x != '', groupArray(utm_medium)) utm_medium, arrayFilter(x -> x != '', groupArray(utm_campaign)) utm_campaign, arrayFilter(x -> x != '', groupArray(utm_content)) utm_content, arrayFilter(x -> x != '', groupArray(utm_term)) utm_term, arrayFilter(x -> x != '', groupArray(referrer_domain)) referrer_domain, arrayFilter(x -> x != '', groupArray(page_title)) page_title, arrayFilter(x -> x != '', groupArray(gclid)) gclid, arrayFilter(x -> x != '', groupArray(fbclid)) fbclid, arrayFilter(x -> x != '', groupArray(msclkid)) msclkid, arrayFilter(x -> x != '', groupArray(ttclid)) ttclid, arrayFilter(x -> x != '', groupArray(li_fat_id)) li_fat_id, arrayFilter(x -> x != '', groupArray(twclid)) twclid, event_type, if(event_type = 2, groupArray(event_name), []) event_name, sumIf(1, event_type = 1) views, min(created_at) min_time, max(created_at) max_time, arrayFilter(x -> x != '', groupArray(tag)) tag, toStartOfHour(created_at) timestamp FROM umami.website_event GROUP BY website_id, session_id, visit_id, hostname, browser, os, device, screen, language, country, region, city, event_type, timestamp);