homework, pet project DE Dmitry_Medvedev #1
@@ -0,0 +1,87 @@
|
||||
-- Задание 1
|
||||
|
||||
CREATE TABLE mnoskov.logs
|
||||
ON CLUSTER clickhouse_cluster (
|
||||
dt DateTime,
|
||||
user_id UInt32,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/logs',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY dt;
|
||||
|
||||
CREATE TABLE mnoskov.dist_logs
|
||||
ON CLUSTER clickhouse_cluster
|
||||
ENGINE = Distributed(
|
||||
'clickhouse_cluster',
|
||||
'mnoskov',
|
||||
'logs',
|
||||
rand()
|
||||
);
|
||||
-- параметр rand() - это ключ распределния как я понял. Если стоит он, то распределяются данные случайно, если укащать колонку, то по колонке.
|
||||
|
||||
|
||||
-- Задание 2
|
||||
|
||||
CREATE TABLE mnoskov.events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt32,
|
||||
event_type String,
|
||||
ts DateTime
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY (ts, user_id);
|
||||
|
||||
CREATE VIEW top_active_users AS
|
||||
SELECT
|
||||
user_id,
|
||||
count(*) AS cnt_user
|
||||
FROM
|
||||
mnoskov.events
|
||||
GROUP BY
|
||||
user_id
|
||||
ORDER BY
|
||||
cnt_user DESC, user_id
|
||||
LIMIT 100;
|
||||
-- VIEW не подойдет, тк вьюшка будет каждый раз считаться заново, а это энергозатратно, поэтому надо использовать MATERIALIZED VIEW.
|
||||
|
||||
|
||||
-- Задание 3
|
||||
|
||||
-- тут вообще жопа какая-то. Если смотреть на пример создания MV, то выдает ошибку мол engine указывать нельзя. Полез в документацию, там сказано что после указания имени mv нужно добавлять TO ... но все равно выдется ошибка.
|
||||
-- этот способ я в хабре нашел
|
||||
CREATE TABLE raw_events
|
||||
(
|
||||
event_time DateTime,
|
||||
user_id UInt32,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (event_time, user_id);
|
||||
|
||||
CREATE TABLE agr_clicks_per_day
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
event_date Date,
|
||||
count UInt64
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY event_date;
|
||||
|
||||
CREATE MATERIALIZED VIEW mv_clicks_per_day TO agr_clicks_per_day AS
|
||||
SELECT
|
||||
toDate(event_time) AS event_date,
|
||||
count(*) AS count
|
||||
FROM
|
||||
mnoskov.raw_events
|
||||
GROUP BY
|
||||
event_date;
|
||||
|
||||
SELECT * FROM agr_clicks_per_day;
|
||||
-- ничего у меня получилось, и с SummingMergeTree ни с MergeTree. Как очень непонятно материализованные таблицы работают. Если делать как в теории в инфре, то тоже ничего не работает.
|
||||
Reference in New Issue
Block a user