Практика 'Типы данных' - ClickHouse
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
-- Задание 1
|
||||
|
||||
CREATE TABLE mnoskov.page_views
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
url String,
|
||||
view_time DateTime
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
PARTITION BY toYYYYMM(view_time)
|
||||
ORDER BY (user_id, view_time);
|
||||
|
||||
|
||||
-- Задание 2
|
||||
CREATE TABLE mnoskov.users
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
id UInt64,
|
||||
name String,
|
||||
update_at DateTime
|
||||
)
|
||||
ENGINE = ReplacingMergeTree(update_at)
|
||||
ORDER BY id;
|
||||
|
||||
|
||||
-- Задание 3
|
||||
CREATE TABLE mnoskov.region_sales
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
region String,
|
||||
date Date,
|
||||
sales UInt64
|
||||
)
|
||||
ENGINE = SummingMergeTree
|
||||
PARTITION BY toYYYYMM(date)
|
||||
ORDER BY (region, date);
|
||||
|
||||
INSERT INTO mnoskov.region_sales (region, date, sales)
|
||||
VALUES
|
||||
('Moscow', '2026-05-01', 100),
|
||||
('Moscow', '2026-05-01', 150),
|
||||
('Moscow', '2026-05-01', 200),
|
||||
('Berlin', '2026-05-02', 300),
|
||||
('Berlin', '2026-05-02', 120),
|
||||
('Berlin', '2026-05-02', 80),
|
||||
('Paris', '2026-05-03', 500),
|
||||
('Paris', '2026-05-03', 250),
|
||||
('London', '2026-05-04', 400),
|
||||
('Tokyo', '2026-05-05', 700);
|
||||
|
||||
SELECT * FROM mnoskov.region_sales;
|
||||
-- Все четко работает.
|
||||
|
||||
|
||||
-- Задание 4
|
||||
CREATE TABLE mnoskov.user_metrics
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
region String,
|
||||
avg_age_state AggregateFunction(avg, UInt8),
|
||||
active_users_state AggregateFunction(uniq, UInt64)
|
||||
)
|
||||
ENGINE = AggregatingMergeTree
|
||||
ORDER BY region;
|
||||
|
||||
CREATE TABLE mnoskov.user_metrics_source
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
region String,
|
||||
age UInt8,
|
||||
user_id UInt64
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY region;
|
||||
|
||||
INSERT INTO mnoskov.user_metrics_source
|
||||
(region, age, user_id)
|
||||
VALUES
|
||||
('Moscow', 25, 1001),
|
||||
('Moscow', 30, 1002),
|
||||
('Moscow', 22, 1003),
|
||||
('Moscow', 25, 1001),
|
||||
('Berlin', 40, 2001),
|
||||
('Berlin', 35, 2002),
|
||||
('Berlin', 29, 2003),
|
||||
('Berlin', 35, 2002),
|
||||
('Paris', 31, 3001),
|
||||
('Paris', 28, 3002),
|
||||
('Paris', 45, 3003),
|
||||
('Paris', 31, 3001),
|
||||
('London', 50, 4001),
|
||||
('London', 41, 4002),
|
||||
('London', 38, 4003),
|
||||
('London', 41, 4002),
|
||||
('Tokyo', 27, 5001),
|
||||
('Tokyo', 33, 5002),
|
||||
('Tokyo', 29, 5003),
|
||||
('Tokyo', 33, 5002);
|
||||
SELECT * FROM mnoskov.user_metrics_source;
|
||||
|
||||
INSERT INTO mnoskov.user_metrics
|
||||
SELECT
|
||||
region,
|
||||
avgState(age) AS avg_age_state,
|
||||
uniqState(user_id) AS active_users_state
|
||||
FROM
|
||||
mnoskov.user_metrics_source
|
||||
GROUP BY
|
||||
region;
|
||||
|
||||
SELECT
|
||||
region,
|
||||
avgMerge(avg_age_state),
|
||||
uniqMerge(active_users_state)
|
||||
FROM
|
||||
mnoskov.user_metrics
|
||||
GROUP BY
|
||||
region;
|
||||
-- Че то кликхаус странно себя ведет, то таблицы сами очищаются, то удаленные таблицы воскресают.
|
||||
Reference in New Issue
Block a user