homework, pet project DE Dmitry_Medvedev #1
+157
@@ -0,0 +1,157 @@
|
||||
-- Задание 1
|
||||
|
||||
--DROP TABLE mnoskov.raw_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.raw_events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/raw_events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
--DROP TABLE mnoskov.clean_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.clean_events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/clean_events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_clean
|
||||
ON CLUSTER clickhouse_cluster
|
||||
TO mnoskov.clean_events
|
||||
AS
|
||||
SELECT
|
||||
user_id,
|
||||
ts,
|
||||
nullif(event_type, '') AS event_type -- это я сделать чтобы выводилось NULL а не '' - пустая строка.
|
||||
FROM mnoskov.raw_events
|
||||
WHERE user_id != 0 AND event_type IS NOT NULL
|
||||
ORDER BY ts;
|
||||
|
||||
-- Тесты:
|
||||
SELECT * FROM raw_events;
|
||||
SELECT * FROM mnoskov.mv_clean;
|
||||
|
||||
TRUNCATE TABLE mnoskov.raw_events ON CLUSTER clickhouse_cluster sync;
|
||||
INSERT INTO mnoskov.raw_events
|
||||
(user_id, ts, event_type)
|
||||
VALUES
|
||||
(0, '2024-07-17 10:00:00', 'click'),
|
||||
(1, '2024-07-17 10:01:00', 'view'),
|
||||
(2, '2024-07-17 10:02:00', NULL);
|
||||
|
||||
|
||||
-- Задание 2
|
||||
|
||||
--raw_events
|
||||
--DROP TABLE mnoskov.raw_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.raw_events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/raw_events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
--click_events
|
||||
--DROP TABLE mnoskov.click_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.click_events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/click_events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
--login_events
|
||||
--DROP TABLE mnoskov.login_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.login_events1
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/login_events1',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
--purchase_events
|
||||
--DROP TABLE mnoskov.purchase_events ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE TABLE mnoskov.purchase_events1
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt64,
|
||||
ts DateTime,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/purchase_events1',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY ts;
|
||||
|
||||
--mv_click
|
||||
--DROP VIEW mnoskov.mv_click ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_click
|
||||
ON CLUSTER clickhouse_cluster
|
||||
TO mnoskov.click_events
|
||||
AS
|
||||
SELECT * FROM mnoskov.raw_events WHERE event_type = 'click'
|
||||
ORDER BY ts;
|
||||
|
||||
--mv_login
|
||||
--DROP VIEW mnoskov.mv_login ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_login
|
||||
ON CLUSTER clickhouse_cluster
|
||||
TO mnoskov.login_events1
|
||||
AS
|
||||
SELECT * FROM mnoskov.raw_events WHERE event_type = 'login'
|
||||
ORDER BY ts;
|
||||
|
||||
--mv_purchase
|
||||
--DROP VIEW mnoskov.mv_purchase ON CLUSTER clickhouse_cluster sync;
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_purchase
|
||||
ON CLUSTER clickhouse_cluster
|
||||
TO mnoskov.purchase_events1
|
||||
AS
|
||||
SELECT * FROM mnoskov.raw_events WHERE event_type = 'purchase'
|
||||
ORDER BY ts;
|
||||
|
||||
|
||||
-- Тесты:
|
||||
SELECT * FROM mnoskov.click_events;
|
||||
SELECT * FROM mnoskov.login_events1;
|
||||
SELECT * FROM mnoskov.purchase_events1;
|
||||
|
||||
TRUNCATE TABLE mnoskov.raw_events ON CLUSTER clickhouse_cluster sync;
|
||||
INSERT INTO mnoskov.raw_events
|
||||
(user_id, ts, event_type)
|
||||
VALUES
|
||||
(1, '2024-07-17 10:00:00', 'click'),
|
||||
(2, '2024-07-17 10:01:00', 'login'),
|
||||
(3, '2024-07-17 10:02:00', 'purchase');
|
||||
Reference in New Issue
Block a user