added STEP4.1, STEP4.2, STEP5

This commit is contained in:
SERGEY_KONEV
2025-12-25 12:25:42 +03:00
parent 6b5ae71123
commit ebc2f07fc8
4 changed files with 75 additions and 1 deletions
@@ -0,0 +1,42 @@
/*
- ВИТРИНА АНАЛИЗА ПОПУЛЯРНОСТИ КАЖДОГО УРОКА
- ВСЕ УЧАСТВУЮЩИЕ ИЗМЕРЕНИЯ DISTRIBUTED REPLICATED
- ИТОГОВОЕ ПРЕДСТВАЛЕНИЕ DISTRIBUTED BY (lesson_id, course_id)
*/
CREATE MATERIALIZED VIEW IF NOT EXISTS dm.lesson_popularity_summary AS
-- EXPLAIN ANALYZE
WITH t1 AS (
SELECT
lesson_id,
course_id,
COUNT(lesson_id) AS total_views,
COUNT(DISTINCT user_id) AS unique_users,
MIN(viewed_at)AS first_view,
MAX(viewed_at)AS last_view
FROM core.fact_lesson_views
GROUP BY lesson_id, course_id
),
t2 AS (
SELECT
l.lesson_id,
l.title AS lesson_title,
c.course_id,
c.title AS course_title
FROM core.dim_course c
LEFT JOIN core.dim_lesson l USING(course_id)
)
SELECT
t1.lesson_id,
t2.lesson_title,
t1.course_id,
t2.course_title,
t1.total_views,
t1.unique_users,
t1.first_view,
t1.last_view
FROM t1
LEFT JOIN t2 USING(lesson_id)
DISTRIBUTED BY (lesson_id, course_id);
@@ -0,0 +1,28 @@
/*
- ВИТРИНА АНАЛИЗА НЕАКТИВНЫХ ПОЛЬЗОВАТЕЛЕЙ
- ВСЕ УЧАСТВУЮЩИЕ ТАБЛИЦЫ DISTRIBUTED BY (user_id)
- ИТОГОВОЕ ПРЕДСТВАЛЕНИЕ ТАК ЖЕ DISTRIBUTED BY (user_id)
*/
CREATE MATERIALIZED VIEW IF NOT EXISTS dm.inactive_users_summary AS
-- EXPLAIN ANALYZE
WITH t1 AS (
SELECT
user_id,
count(DISTINCT course_id) AS enrollments_count
FROM core.enrollments
GROUP BY user_id
)
SELECT
u.user_id,
u.name AS user_name,
u.email,
u.age,
coalesce(t1.enrollments_count, 0),
u.registration_date
FROM core.dim_user u
LEFT JOIN t1 USING (user_id)
WHERE u.user_id NOT IN (SELECT user_id FROM core.fact_lesson_views)
DISTRIBUTED BY (user_id);
@@ -1,9 +1,10 @@
/*
- ВИТРИНА ДЛЯ АНАЛИЗА КОНВЕРСИИ ПРОХОЖДЕНИЯ КУРСА ПОЛЬЗОВАТЕЛЯМИ
- CORE.DIM_USER И CORE.FACT_LESSON_VIEWS DISTRIBUTED BY (user_id)
- ИТОГОВОЕ РАСПРЕДЕЛЕНИЕ ПО (user_id, course_id)
*/
CREATE MATERIALIZED VIEW dm.course_completion_rate AS
CREATE MATERIALIZED VIEW IF NOT EXISTS dm.course_completion_rate AS
WITH t1 AS (
SELECT
e.user_id,
+3
View File
@@ -0,0 +1,3 @@
SELECT * FROM dm.lesson_popularity_summary LIMIT 10;
SELECT * FROM dm.inactive_users_summary LIMIT 10;
SELECT * FROM dm.course_completion_rate LIMIT 10;