Пет-проект: Витринный слой. Задание 3: Создай витрину inactive_users_summary
This commit is contained in:
+75
@@ -0,0 +1,75 @@
|
|||||||
|
--DROP TABLE mnoskov.inactive_users_summary ON CLUSTER clickhouse_cluster sync;
|
||||||
|
CREATE TABLE mnoskov.inactive_users_summary
|
||||||
|
ON CLUSTER clickhouse_cluster
|
||||||
|
(
|
||||||
|
user_id UInt64,
|
||||||
|
name String,
|
||||||
|
email String,
|
||||||
|
age UInt8,
|
||||||
|
registered_courses_count UInt8,
|
||||||
|
registration_date DateTime
|
||||||
|
)
|
||||||
|
ENGINE = ReplicatedMergeTree(
|
||||||
|
'/clickhouse/tables/{shard}/mnoskov/inactive_users_summary',
|
||||||
|
'{replica}'
|
||||||
|
)
|
||||||
|
ORDER BY user_id;
|
||||||
|
|
||||||
|
--DROP VIEW mnoskov.mv_inactive_users_summary ON CLUSTER clickhouse_cluster sync;
|
||||||
|
CREATE MATERIALIZED VIEW mnoskov.mv_inactive_users_summary
|
||||||
|
ON CLUSTER clickhouse_cluster
|
||||||
|
TO mnoskov.inactive_users_summary
|
||||||
|
AS
|
||||||
|
SELECT
|
||||||
|
u.user_id AS user_id,
|
||||||
|
u.name AS name,
|
||||||
|
u.email AS email,
|
||||||
|
u.age AS age,
|
||||||
|
e.registered_courses_count AS registered_courses_count,
|
||||||
|
u.registration_date AS registration_date
|
||||||
|
FROM
|
||||||
|
mnoskov.core_dim_user u
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
user_id,
|
||||||
|
count() AS registered_courses_count
|
||||||
|
FROM
|
||||||
|
mnoskov.core_enrollments
|
||||||
|
GROUP BY
|
||||||
|
user_id
|
||||||
|
) e ON u.user_id = e.user_id
|
||||||
|
WHERE u.user_id NOT IN (SELECT lv.user_id FROM mnoskov.core_fact_lesson_views lv); -- я ломалася тут между NOT IN и NOT EXISTS, но решил оставить первый тк это уже витрины мы делаем, и NULL поидее быть не должно
|
||||||
|
|
||||||
|
|
||||||
|
-- Чтение очищение заполнение
|
||||||
|
SHOW TABLES FROM mnoskov;
|
||||||
|
|
||||||
|
SELECT * FROM mnoskov.core_dim_user;
|
||||||
|
SELECT * FROM mnoskov.inactive_users_summary;
|
||||||
|
|
||||||
|
TRUNCATE TABLE mnoskov.core_dim_user ON CLUSTER clickhouse_cluster SYNC;
|
||||||
|
TRUNCATE TABLE mnoskov.inactive_users_summary ON CLUSTER clickhouse_cluster SYNC;
|
||||||
|
|
||||||
|
INSERT INTO mnoskov.core_dim_user (user_id, name, age, email, registration_date)
|
||||||
|
VALUES
|
||||||
|
(1, 'Alice', 25, 'alice@mail.com', '2023-01-09 23:00:00'),
|
||||||
|
(2, 'Bob', 30, 'bob@gmail.com', '2023-02-04 23:00:00'),
|
||||||
|
(3, 'Charlie', 22, 'charlie@mail.com', '2023-02-19 23:00:00'),
|
||||||
|
(4, 'Diana', 28, 'diana@mail.com', '2023-02-28 23:00:00'),
|
||||||
|
(5, 'Ethan', 35, 'ethan@gmail.com', '2023-03-09 23:00:00'),
|
||||||
|
(6, 'Frank', 29, 'frank@mail.com', '2023-01-04 23:00:00'),
|
||||||
|
(7, 'Grace', 26, 'grace@gmail.com', '2023-01-11 23:00:00'),
|
||||||
|
(8, 'Henry', 32, 'henry@mail.com', '2023-01-19 23:00:00'),
|
||||||
|
(9, 'Iris', 24, 'iris@gmail.com', '2023-02-09 23:00:00'),
|
||||||
|
(10, 'Jack', 27, 'jack@mail.com', '2023-04-14 23:00:00'),
|
||||||
|
(11, 'Kelly', 23, 'kelly@gmail.com', '2023-04-19 23:00:00'),
|
||||||
|
(12, 'Leo', 31, 'leo@mail.com', '2023-01-14 23:00:00'),
|
||||||
|
(13, 'Mia', 26, 'mia@mail.com', '2023-01-17 23:00:00'),
|
||||||
|
(14, 'Nina', 28, 'nina@mail.com', '2023-01-07 23:00:00'),
|
||||||
|
(15, 'Oscar', 33, 'oscar@gmail.com', '2023-01-09 23:00:00'),
|
||||||
|
(16, 'Paul', 29, 'paul@mail.com', '2023-02-14 23:00:00'),
|
||||||
|
(17, 'Quinn', 24, 'quinn@gmail.com', '2023-03-19 23:00:00'),
|
||||||
|
(18, 'Rita', 27, 'rita@mail.com', '2023-03-31 23:00:00'),
|
||||||
|
(19, 'Sam', 30, 'sam@gmail.com', '2023-04-09 23:00:00'),
|
||||||
|
(21, 'Tinanal', 22, 'tinanal@mail.com', '2023-04-19 23:02:00')
|
||||||
|
(22, 'Anal2', 24, 'tinanal222@mail.com', '2023-04-19 23:22:00');
|
||||||
Reference in New Issue
Block a user