diff --git a/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191313.csv b/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191313.csv deleted file mode 100644 index 3a43417..0000000 --- a/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191313.csv +++ /dev/null @@ -1,59 +0,0 @@ -"user_id","lesson_id","course_id","viewed_at" -1,2,1,2023-01-16 10:15:00.000 +0300 -1,3,1,2023-01-17 09:00:00.000 +0300 -1,4,1,2023-01-17 09:30:00.000 +0300 -1,4,1,2023-01-18 10:00:00.000 +0300 -1,6,2,2023-02-02 14:00:00.000 +0300 -1,13,4,2023-02-15 10:30:00.000 +0300 -5,16,5,2023-03-22 11:00:00.000 +0300 -12,2,1,2023-01-17 10:20:00.000 +0300 -12,3,1,2023-04-10 11:30:00.000 +0300 -14,2,1,2023-01-09 08:15:00.000 +0300 -14,4,1,2023-01-10 10:30:00.000 +0300 -14,6,2,2023-01-10 14:00:00.000 +0300 -14,9,3,2023-01-10 08:00:00.000 +0300 -1,4,1,2023-01-17 11:00:00.000 +0300 -12,9,3,2023-03-12 10:00:00.000 +0300 -14,3,1,2023-01-10 10:00:00.000 +0300 -14,7,2,2023-01-11 10:00:00.000 +0300 -14,8,2,2023-01-12 11:00:00.000 +0300 -1,12,4,2023-02-15 10:00:00.000 +0300 -12,1,1,2023-01-17 10:00:00.000 +0300 -14,5,1,2023-01-11 09:00:00.000 +0300 -1,1,1,2023-01-16 10:00:00.000 +0300 -5,15,5,2023-03-21 10:00:00.000 +0300 -12,1,1,2023-04-10 11:00:00.000 +0300 -14,1,1,2023-01-09 08:00:00.000 +0300 -3,6,2,2023-03-06 12:00:00.000 +0300 -4,9,3,2023-04-02 10:00:00.000 +0300 -4,6,2,2023-03-12 14:00:00.000 +0300 -4,7,2,2023-03-13 09:00:00.000 +0300 -6,3,1,2023-01-08 09:00:00.000 +0300 -6,6,2,2023-01-11 14:00:00.000 +0300 -6,7,2,2023-01-12 10:00:00.000 +0300 -6,8,2,2023-01-13 11:00:00.000 +0300 -6,9,3,2023-03-09 11:00:00.000 +0300 -7,9,3,2023-03-11 14:00:00.000 +0300 -2,9,3,2023-03-16 10:00:00.000 +0300 -2,10,3,2023-03-16 10:30:00.000 +0300 -3,2,1,2023-02-26 11:20:00.000 +0300 -4,10,3,2023-04-03 10:00:00.000 +0300 -6,2,1,2023-01-07 10:15:00.000 +0300 -6,4,1,2023-01-08 09:30:00.000 +0300 -6,13,4,2023-02-06 09:30:00.000 +0300 -7,2,1,2023-01-14 10:20:00.000 +0300 -7,3,1,2023-01-15 09:00:00.000 +0300 -7,10,3,2023-03-11 14:30:00.000 +0300 -9,13,4,2023-02-13 10:30:00.000 +0300 -13,6,2,2023-01-20 14:00:00.000 +0300 -13,7,2,2023-01-21 10:00:00.000 +0300 -2,1,1,2023-01-21 09:00:00.000 +0300 -6,1,1,2023-01-07 10:00:00.000 +0300 -6,14,4,2023-02-07 10:00:00.000 +0300 -7,1,1,2023-01-14 10:00:00.000 +0300 -9,12,4,2023-02-13 10:00:00.000 +0300 -9,1,1,2023-02-16 11:00:00.000 +0300 -3,1,1,2023-02-26 11:00:00.000 +0300 -6,5,1,2023-01-09 10:00:00.000 +0300 -6,12,4,2023-02-06 09:00:00.000 +0300 -13,12,4,2023-02-21 09:00:00.000 +0300 diff --git a/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191356.csv b/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191356.csv new file mode 100644 index 0000000..7be0742 --- /dev/null +++ b/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 1. Загрузка тестовых данных/csv files/fact_lesson_views_202605191356.csv @@ -0,0 +1,59 @@ +"user_id","lesson_id","course_id","viewed_at" +3,6,2,2023-03-06 12:00:00.000 +4,9,3,2023-04-02 10:00:00.000 +4,6,2,2023-03-12 14:00:00.000 +4,7,2,2023-03-13 09:00:00.000 +6,3,1,2023-01-08 09:00:00.000 +6,6,2,2023-01-11 14:00:00.000 +6,7,2,2023-01-12 10:00:00.000 +6,8,2,2023-01-13 11:00:00.000 +6,9,3,2023-03-09 11:00:00.000 +7,9,3,2023-03-11 14:00:00.000 +2,9,3,2023-03-16 10:00:00.000 +2,10,3,2023-03-16 10:30:00.000 +3,2,1,2023-02-26 11:20:00.000 +4,10,3,2023-04-03 10:00:00.000 +6,2,1,2023-01-07 10:15:00.000 +6,4,1,2023-01-08 09:30:00.000 +6,13,4,2023-02-06 09:30:00.000 +7,2,1,2023-01-14 10:20:00.000 +7,3,1,2023-01-15 09:00:00.000 +7,10,3,2023-03-11 14:30:00.000 +9,13,4,2023-02-13 10:30:00.000 +13,6,2,2023-01-20 14:00:00.000 +13,7,2,2023-01-21 10:00:00.000 +2,1,1,2023-01-21 09:00:00.000 +6,1,1,2023-01-07 10:00:00.000 +6,14,4,2023-02-07 10:00:00.000 +7,1,1,2023-01-14 10:00:00.000 +9,12,4,2023-02-13 10:00:00.000 +9,1,1,2023-02-16 11:00:00.000 +3,1,1,2023-02-26 11:00:00.000 +6,5,1,2023-01-09 10:00:00.000 +6,12,4,2023-02-06 09:00:00.000 +13,12,4,2023-02-21 09:00:00.000 +1,2,1,2023-01-16 10:15:00.000 +1,3,1,2023-01-17 09:00:00.000 +1,4,1,2023-01-17 09:30:00.000 +1,4,1,2023-01-18 10:00:00.000 +1,6,2,2023-02-02 14:00:00.000 +1,13,4,2023-02-15 10:30:00.000 +5,16,5,2023-03-22 11:00:00.000 +12,2,1,2023-01-17 10:20:00.000 +12,3,1,2023-04-10 11:30:00.000 +14,2,1,2023-01-09 08:15:00.000 +14,4,1,2023-01-10 10:30:00.000 +14,6,2,2023-01-10 14:00:00.000 +14,9,3,2023-01-10 08:00:00.000 +1,4,1,2023-01-17 11:00:00.000 +12,9,3,2023-03-12 10:00:00.000 +14,3,1,2023-01-10 10:00:00.000 +14,7,2,2023-01-11 10:00:00.000 +14,8,2,2023-01-12 11:00:00.000 +1,12,4,2023-02-15 10:00:00.000 +12,1,1,2023-01-17 10:00:00.000 +14,5,1,2023-01-11 09:00:00.000 +1,1,1,2023-01-16 10:00:00.000 +5,15,5,2023-03-21 10:00:00.000 +12,1,1,2023-04-10 11:00:00.000 +14,1,1,2023-01-09 08:00:00.000 diff --git a/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 2. Создание витринных таблиц/task_2_lesson_popularity_summary.sql b/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 2. Создание витринных таблиц/task_2_lesson_popularity_summary.sql new file mode 100644 index 0000000..35698e3 --- /dev/null +++ b/mnoskov/clickhouse/Пет-проект: Витринный слой/Этап 2. Создание витринных таблиц/task_2_lesson_popularity_summary.sql @@ -0,0 +1,99 @@ +-- Вариант 1(не работает): +CREATE TABLE mnoskov.lesson_popularity_summary +ON CLUSTER clickhouse_cluster +( + lesson_id UInt64, + lesson_title String, + course_id UInt64, + course_title String, + total_views UInt64, + unique_users UInt64, + first_view DateTime, + last_view DateTime +) +ENGINE = ReplicatedMergeTree( + '/clickhouse/tables/{shard}/mnoskov/lesson_popularity_summary', + '{replica}' +) +ORDER BY lesson_id; + +CREATE MATERIALIZED VIEW mnoskov.mv_lesson_popularity_summary +ON CLUSTER clickhouse_cluster +TO mnoskov.lesson_popularity_summary +AS +WITH result_flv AS ( + SELECT + lesson_id, + count() AS total_views, + uniq(user_id) AS unique_users, + min(viewed_at) AS first_view, + max(viewed_at) AS last_view + FROM + mnoskov.core_fact_lesson_views flv + GROUP BY + lesson_id +) +SELECT + cdl.lesson_id AS lesson_id, + cdl.title AS lesson_title, + cdc.course_id AS course_id, + cdc.title AS course_title, + rflv.total_views AS total_views, + rflv.unique_users AS unique_users, + rflv.first_view AS first_view, + rflv.last_view AS last_view +FROM + mnoskov.core_dim_lesson cdl +JOIN + mnoskov.core_dim_course cdc ON cdl.course_id = cdc.course_id +JOIN + result_flv rflv ON cdl.lesson_id = rflv.lesson_id; + + +-- Вариант 2(не работает): +CREATE TABLE mnoskov.lesson_popularity_summary +ON CLUSTER clickhouse_cluster +( + lesson_id UInt64, + lesson_title String, + course_id UInt64, + course_title String, + total_views AggregateFunction(count), + unique_users AggregateFunction(uniq, UInt64), + first_view AggregateFunction(min, DateTime), + last_view AggregateFunction(max, DateTime) +) +ENGINE AggregatingMergeTree +ORDER BY lesson_id; + +CREATE MATERIALIZED VIEW mnoskov.mv_lesson_popularity_summary +ON CLUSTER clickhouse_cluster +TO mnoskov.lesson_popularity_summary +AS +WITH result_flv AS ( + SELECT + lesson_id, + countState() AS total_views, + uniqState(user_id) AS unique_users, + minState(viewed_at) AS first_view, + maxState(viewed_at) AS last_view + FROM + mnoskov.core_fact_lesson_views flv + GROUP BY + lesson_id +) +SELECT + cdl.lesson_id AS lesson_id, + cdl.title AS lesson_title, + cdc.course_id AS course_id, + cdc.title AS course_title, + rflv.total_views AS total_views, + rflv.unique_users AS unique_users, + rflv.first_view AS first_view, + rflv.last_view AS last_view +FROM + mnoskov.core_dim_lesson cdl +JOIN + mnoskov.core_dim_course cdc ON cdl.course_id = cdc.course_id +JOIN + result_flv rflv ON cdl.lesson_id = rflv.lesson_id; \ No newline at end of file