Files
homework/mdrozdov/clickhouse/view_distribute.sql
T
2026-01-31 03:29:26 +07:00

34 lines
1.4 KiB
SQL

-- task 1
CREATE TABLE dist_table
ENGINE = Distributed(
'cluster_name', -- нет доступа к конфигу infra clickhouse
'mdrozdov',
'logs',
rand()
);
--rand() это параметр по которому мы распределяем данные при insert на разные ноды, в данном
--случае нам это нужно для равномерности распределения, потому что таблица не требует особых связей или тп
-- task 2
--Создай VIEW top_active_users, который показывает топ-100 пользователей по числу событий
CREATE VIEW top_active_users AS
select user_id, count(*) as total_events
from events
group by user_id
order by total_events desc
limit 100
-- не подходит для дашборда с миллионами строк, потому что вычисляется каждый раз при вызове
-- для дашбордов лучше подойдет materialized view, тк хранит данные запроса и обновляется автоматически
-- при вставке новых данных
--task 3
CREATE MATERIALIZED VIEW
to
ENGINE = SummingMergeTree
order by date
mv_clicks_per_day AS
select
toDate(event_time) as date,
count(*) as total_clicks
from raw_events
group by date