Комментарии написаны, таблицы приведены в порядок

This commit is contained in:
Batirbulat
2025-12-24 21:07:56 +03:00
parent ad47dd718e
commit e7f7bb8dc6
+38 -14
View File
@@ -87,6 +87,7 @@ ORDER BY (lesson_id, course_id);
*/
CREATE TABLE bhabibullin.lesson_popularity_summary
ON CLUSTER clickhouse_cluster
(
lesson_id UInt32,
lesson_title String,
@@ -97,10 +98,14 @@ CREATE TABLE bhabibullin.lesson_popularity_summary
first_view DateTime64(3, 'UTC'),
last_view DateTime64(3, 'UTC')
)
ENGINE = MergeTree
ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/bhabibullin/lesson_popularity_summary',
'{replica}'
)
ORDER BY (lesson_id, course_id);
CREATE MATERIALIZED VIEW mv_lesson_popularity_summary
ON CLUSTER clickhouse_cluster
TO bhabibullin.lesson_popularity_summary
AS
SELECT
@@ -140,8 +145,9 @@ GROUP BY
flv.course_id,
c.title;
select * from bhabibullin.mv_lesson_popularity_summary mlps ;
select * from bhabibullin.lesson_popularity_summary lps ;
select * from bhabibullin.mv_lesson_popularity_summary ;
select * from bhabibullin.lesson_popularity_summary ;
show tables;
/*
### ✅ **Задание 3: Создай витрину `inactive_users_summary`**
@@ -161,7 +167,13 @@ select * from bhabibullin.lesson_popularity_summary lps ;
Эта витрина может использоваться для продуктовой аналитики, триггерных рассылок (например, напоминаний), анализа оттока, повышения вовлечённости.
*/
CREATE TABLE bhabibullin.inactive_users_summary(
DROP TABLE bhabibullin.inactive_users_summary;
DROP VIEW bhabibullin.mv_inactive_users_summary ;
show tables;
CREATE TABLE bhabibullin.inactive_users_summary
ON CLUSTER clickhouse_cluster
(
user_id UInt32,
name String,
email String,
@@ -169,10 +181,14 @@ CREATE TABLE bhabibullin.inactive_users_summary(
enrollment_count UInt32,
registration_date Date
)
ENGINE = MergeTree()
ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/bhabibullin/inactive_users_summary',
'{replica}'
)
ORDER BY user_id;
CREATE MATERIALIZED VIEW bhabibullin.mv_inactive_users_summary
ON CLUSTER clickhouse_cluster
to bhabibullin.inactive_users_summary
AS
SELECT
@@ -204,6 +220,9 @@ WHERE (cdu.user_id, 1) NOT IN (
GROUP BY user_id
);
select * from bhabibullin.inactive_users_summary ius ;
select * from bhabibullin.mv_inactive_users_summary mius ;
/*
### ✅ **Задание 4: Создай витрину `course_completion_rate`**
@@ -218,8 +237,8 @@ WHERE (cdu.user_id, 1) NOT IN (
- Коэффициент завершения (`lessons_viewed / lessons_in_course`)
*/
CREATE TABLE IF NOT EXISTS bhabibullin.course_completion_rate
ON CLUSTER clickhouse_cluster
(
user_id UInt32,
user_name String,
@@ -229,11 +248,15 @@ CREATE TABLE IF NOT EXISTS bhabibullin.course_completion_rate
lessons_viewed UInt32,
completion_rate Float64
)
ENGINE = MergeTree()
ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/bhabibullin/course_completion_rate',
'{replica}'
)
ORDER BY (user_id, course_id);
CREATE MATERIALIZED VIEW IF NOT EXISTS bhabibullin.mv_course_completion_rate
ON CLUSTER clickhouse_cluster
TO bhabibullin.course_completion_rate
AS
WITH lessons_in_course AS (
@@ -312,6 +335,9 @@ JOIN core_dim_course c ON e.course_id = c.course_id
JOIN lessons_in_course AS lic ON c.course_id = lic.course_id
LEFT JOIN views_user_course AS vuc ON vuc.user_id = u.user_id AND vuc.course_id = c.course_id;
select * from bhabibullin.course_completion_rate;
select * from bhabibullin.mv_course_completion_rate;
/*
# 📊 Этап 3. Анализ и запросы
@@ -333,9 +359,9 @@ LIMIT 5;
SELECT
name,
email,
registered_courses_count
enrollment_count
FROM inactive_users_summary
WHERE registered_courses_count > 0
WHERE enrollment_count > 0
ORDER BY registration_date DESC;
--Курсы с самым высоким процентом завершения
@@ -350,10 +376,9 @@ LIMIT 5;
-- топ 5 курсов по количеству уникальных пользователей
SELECT
course_title,
uniqExact(user_id) AS active_users
unique_users
FROM lesson_popularity_summary
GROUP BY course_title
ORDER BY active_users DESC
ORDER BY unique_users DESC
LIMIT 5;
--новые пользователи за прошлый месяц
@@ -368,7 +393,7 @@ ORDER BY registration_date DESC;
/*
### ✅ **Задание 6: Сравни данные с Greenplum**
1. Выбери 2–3 значения из таблиц `_summary_source` в Greenplum
2. Сравни с ClickHouse-результатами:
- Совпадает ли `SUM`, `AVG`, `MIN`, `MAX`
@@ -382,4 +407,3 @@ ORDER BY registration_date DESC;
С этим даже траблы были при пет проекте, кликхаус тяжело обрабатывает нулл значения
*/