ДОПОЛНИЛ - Пет-проект: Витринный слой. Задание 1: Загрузить CSV-файлы.

This commit is contained in:
mnoskov
2026-05-19 13:19:32 +03:00
parent 84006e9b80
commit a83112d155
7 changed files with 3111 additions and 1 deletions
@@ -0,0 +1,6 @@
"course_id","title","category","created_at"
2,Python для анализа данных,programming,2023-01-15 00:00:00.000 +0300
3,BI с нуля,business,2023-03-01 00:00:00.000 +0300
4,Excel для аналитиков,business,2023-02-01 00:00:00.000 +0300
1,SQL для начинающих,data,2023-01-01 00:00:00.000 +0300
5,Основы машинного обучения,data,2023-03-15 00:00:00.000 +0300
1 course_id title category created_at
2 2 Python для анализа данных programming 2023-01-15 00:00:00.000 +0300
3 3 BI с нуля business 2023-03-01 00:00:00.000 +0300
4 4 Excel для аналитиков business 2023-02-01 00:00:00.000 +0300
5 1 SQL для начинающих data 2023-01-01 00:00:00.000 +0300
6 5 Основы машинного обучения data 2023-03-15 00:00:00.000 +0300
@@ -0,0 +1,19 @@
"lesson_id","title","duration_min","course_id"
2,JOIN,15,1
3,WHERE и фильтрация,12,1
4,Агрегации и GROUP BY,18,1
6,Pandas основы,20,2
7,NumPy,15,2
8,Визуализация данных,22,2
9,Основы BI,12,3
10,Метрики и дашборды,18,3
13,Сводные таблицы,18,4
16,Линейная регрессия,30,5
18,Кластеризация,25,5
1,SELECT и FROM,10,1
5,Подзапросы,25,1
11,Power BI введение,20,3
12,Формулы в Excel,15,4
14,Графики и диаграммы,14,4
15,Введение в ML,20,5
17,Классификация,28,5
1 lesson_id title duration_min course_id
2 2 JOIN 15 1
3 3 WHERE и фильтрация 12 1
4 4 Агрегации и GROUP BY 18 1
5 6 Pandas основы 20 2
6 7 NumPy 15 2
7 8 Визуализация данных 22 2
8 9 Основы BI 12 3
9 10 Метрики и дашборды 18 3
10 13 Сводные таблицы 18 4
11 16 Линейная регрессия 30 5
12 18 Кластеризация 25 5
13 1 SELECT и FROM 10 1
14 5 Подзапросы 25 1
15 11 Power BI введение 20 3
16 12 Формулы в Excel 15 4
17 14 Графики и диаграммы 14 4
18 15 Введение в ML 20 5
19 17 Классификация 28 5
@@ -0,0 +1,21 @@
"user_id","name","age","email","registration_date"
1,Alice,25,alice@mail.com,2023-01-10 00:00:00.000 +0300
5,Ethan,35,ethan@gmail.com,2023-03-10 00:00:00.000 +0300
11,Kelly,23,kelly@gmail.com,2023-04-20 00:00:00.000 +0300
12,Leo,31,leo@mail.com,2023-01-15 00:00:00.000 +0300
14,Nina,28,nina@mail.com,2023-01-08 00:00:00.000 +0300
15,Oscar,33,oscar@gmail.com,2023-01-10 00:00:00.000 +0300
17,Quinn,24,quinn@gmail.com,2023-03-20 00:00:00.000 +0300
20,Tina,25,tina@mail.com,2023-04-18 00:00:00.000 +0300
2,Bob,30,bob@gmail.com,2023-02-05 00:00:00.000 +0300
3,Charlie,22,charlie@mail.com,2023-02-20 00:00:00.000 +0300
4,Diana,28,diana@mail.com,2023-03-01 00:00:00.000 +0300
6,Frank,29,frank@mail.com,2023-01-05 00:00:00.000 +0300
7,Grace,26,grace@gmail.com,2023-01-12 00:00:00.000 +0300
8,Henry,32,henry@mail.com,2023-01-20 00:00:00.000 +0300
9,Iris,24,iris@gmail.com,2023-02-10 00:00:00.000 +0300
10,Jack,27,jack@mail.com,2023-04-15 00:00:00.000 +0300
13,Mia,26,mia@gmail.com,2023-01-18 00:00:00.000 +0300
16,Paul,29,paul@mail.com,2023-02-15 00:00:00.000 +0300
18,Rita,27,rita@mail.com,2023-04-01 00:00:00.000 +0300
19,Sam,30,sam@gmail.com,2023-04-10 00:00:00.000 +0300
1 user_id name age email registration_date
2 1 Alice 25 alice@mail.com 2023-01-10 00:00:00.000 +0300
3 5 Ethan 35 ethan@gmail.com 2023-03-10 00:00:00.000 +0300
4 11 Kelly 23 kelly@gmail.com 2023-04-20 00:00:00.000 +0300
5 12 Leo 31 leo@mail.com 2023-01-15 00:00:00.000 +0300
6 14 Nina 28 nina@mail.com 2023-01-08 00:00:00.000 +0300
7 15 Oscar 33 oscar@gmail.com 2023-01-10 00:00:00.000 +0300
8 17 Quinn 24 quinn@gmail.com 2023-03-20 00:00:00.000 +0300
9 20 Tina 25 tina@mail.com 2023-04-18 00:00:00.000 +0300
10 2 Bob 30 bob@gmail.com 2023-02-05 00:00:00.000 +0300
11 3 Charlie 22 charlie@mail.com 2023-02-20 00:00:00.000 +0300
12 4 Diana 28 diana@mail.com 2023-03-01 00:00:00.000 +0300
13 6 Frank 29 frank@mail.com 2023-01-05 00:00:00.000 +0300
14 7 Grace 26 grace@gmail.com 2023-01-12 00:00:00.000 +0300
15 8 Henry 32 henry@mail.com 2023-01-20 00:00:00.000 +0300
16 9 Iris 24 iris@gmail.com 2023-02-10 00:00:00.000 +0300
17 10 Jack 27 jack@mail.com 2023-04-15 00:00:00.000 +0300
18 13 Mia 26 mia@gmail.com 2023-01-18 00:00:00.000 +0300
19 16 Paul 29 paul@mail.com 2023-02-15 00:00:00.000 +0300
20 18 Rita 27 rita@mail.com 2023-04-01 00:00:00.000 +0300
21 19 Sam 30 sam@gmail.com 2023-04-10 00:00:00.000 +0300
@@ -0,0 +1,46 @@
"user_id","course_id","enrolled_at"
2,1,2023-01-20 00:00:00.000 +0300
3,2,2023-03-05 00:00:00.000 +0300
6,1,2023-01-06 00:00:00.000 +0300
6,2,2023-01-10 00:00:00.000 +0300
6,4,2023-02-05 00:00:00.000 +0300
7,1,2023-01-13 00:00:00.000 +0300
7,3,2023-03-10 00:00:00.000 +0300
8,3,2023-01-22 00:00:00.000 +0300
13,2,2023-01-19 00:00:00.000 +0300
13,4,2023-02-20 00:00:00.000 +0300
16,2,2023-02-16 00:00:00.000 +0300
16,4,2023-02-16 00:00:00.000 +0300
19,1,2023-04-11 00:00:00.000 +0300
19,2,2023-04-11 00:00:00.000 +0300
2,3,2023-03-15 00:00:00.000 +0300
4,2,2023-03-10 00:00:00.000 +0300
7,2,2023-02-01 00:00:00.000 +0300
9,1,2023-02-15 00:00:00.000 +0300
18,4,2023-04-05 00:00:00.000 +0300
4,3,2023-04-01 00:00:00.000 +0300
8,1,2023-01-22 00:00:00.000 +0300
8,2,2023-01-22 00:00:00.000 +0300
9,4,2023-02-12 00:00:00.000 +0300
10,1,2023-04-16 00:00:00.000 +0300
18,1,2023-04-02 00:00:00.000 +0300
3,1,2023-02-25 00:00:00.000 +0300
6,3,2023-03-08 00:00:00.000 +0300
1,2,2023-02-01 00:00:00.000 +0300
11,2,2023-04-21 00:00:00.000 +0300
14,2,2023-01-09 00:00:00.000 +0300
14,3,2023-01-09 00:00:00.000 +0300
14,5,2023-03-20 00:00:00.000 +0300
17,3,2023-03-22 00:00:00.000 +0300
20,2,2023-04-19 00:00:00.000 +0300
12,3,2023-03-10 00:00:00.000 +0300
1,1,2023-01-15 00:00:00.000 +0300
12,1,2023-01-16 00:00:00.000 +0300
14,1,2023-01-09 00:00:00.000 +0300
14,4,2023-02-01 00:00:00.000 +0300
15,1,2023-01-11 00:00:00.000 +0300
15,3,2023-03-05 00:00:00.000 +0300
17,5,2023-03-25 00:00:00.000 +0300
5,5,2023-03-20 00:00:00.000 +0300
1,4,2023-02-10 00:00:00.000 +0300
15,2,2023-02-01 00:00:00.000 +0300
1 user_id course_id enrolled_at
2 2 1 2023-01-20 00:00:00.000 +0300
3 3 2 2023-03-05 00:00:00.000 +0300
4 6 1 2023-01-06 00:00:00.000 +0300
5 6 2 2023-01-10 00:00:00.000 +0300
6 6 4 2023-02-05 00:00:00.000 +0300
7 7 1 2023-01-13 00:00:00.000 +0300
8 7 3 2023-03-10 00:00:00.000 +0300
9 8 3 2023-01-22 00:00:00.000 +0300
10 13 2 2023-01-19 00:00:00.000 +0300
11 13 4 2023-02-20 00:00:00.000 +0300
12 16 2 2023-02-16 00:00:00.000 +0300
13 16 4 2023-02-16 00:00:00.000 +0300
14 19 1 2023-04-11 00:00:00.000 +0300
15 19 2 2023-04-11 00:00:00.000 +0300
16 2 3 2023-03-15 00:00:00.000 +0300
17 4 2 2023-03-10 00:00:00.000 +0300
18 7 2 2023-02-01 00:00:00.000 +0300
19 9 1 2023-02-15 00:00:00.000 +0300
20 18 4 2023-04-05 00:00:00.000 +0300
21 4 3 2023-04-01 00:00:00.000 +0300
22 8 1 2023-01-22 00:00:00.000 +0300
23 8 2 2023-01-22 00:00:00.000 +0300
24 9 4 2023-02-12 00:00:00.000 +0300
25 10 1 2023-04-16 00:00:00.000 +0300
26 18 1 2023-04-02 00:00:00.000 +0300
27 3 1 2023-02-25 00:00:00.000 +0300
28 6 3 2023-03-08 00:00:00.000 +0300
29 1 2 2023-02-01 00:00:00.000 +0300
30 11 2 2023-04-21 00:00:00.000 +0300
31 14 2 2023-01-09 00:00:00.000 +0300
32 14 3 2023-01-09 00:00:00.000 +0300
33 14 5 2023-03-20 00:00:00.000 +0300
34 17 3 2023-03-22 00:00:00.000 +0300
35 20 2 2023-04-19 00:00:00.000 +0300
36 12 3 2023-03-10 00:00:00.000 +0300
37 1 1 2023-01-15 00:00:00.000 +0300
38 12 1 2023-01-16 00:00:00.000 +0300
39 14 1 2023-01-09 00:00:00.000 +0300
40 14 4 2023-02-01 00:00:00.000 +0300
41 15 1 2023-01-11 00:00:00.000 +0300
42 15 3 2023-03-05 00:00:00.000 +0300
43 17 5 2023-03-25 00:00:00.000 +0300
44 5 5 2023-03-20 00:00:00.000 +0300
45 1 4 2023-02-10 00:00:00.000 +0300
46 15 2 2023-02-01 00:00:00.000 +0300
@@ -0,0 +1,59 @@
"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
1 user_id lesson_id course_id viewed_at
2 1 2 1 2023-01-16 10:15:00.000 +0300
3 1 3 1 2023-01-17 09:00:00.000 +0300
4 1 4 1 2023-01-17 09:30:00.000 +0300
5 1 4 1 2023-01-18 10:00:00.000 +0300
6 1 6 2 2023-02-02 14:00:00.000 +0300
7 1 13 4 2023-02-15 10:30:00.000 +0300
8 5 16 5 2023-03-22 11:00:00.000 +0300
9 12 2 1 2023-01-17 10:20:00.000 +0300
10 12 3 1 2023-04-10 11:30:00.000 +0300
11 14 2 1 2023-01-09 08:15:00.000 +0300
12 14 4 1 2023-01-10 10:30:00.000 +0300
13 14 6 2 2023-01-10 14:00:00.000 +0300
14 14 9 3 2023-01-10 08:00:00.000 +0300
15 1 4 1 2023-01-17 11:00:00.000 +0300
16 12 9 3 2023-03-12 10:00:00.000 +0300
17 14 3 1 2023-01-10 10:00:00.000 +0300
18 14 7 2 2023-01-11 10:00:00.000 +0300
19 14 8 2 2023-01-12 11:00:00.000 +0300
20 1 12 4 2023-02-15 10:00:00.000 +0300
21 12 1 1 2023-01-17 10:00:00.000 +0300
22 14 5 1 2023-01-11 09:00:00.000 +0300
23 1 1 1 2023-01-16 10:00:00.000 +0300
24 5 15 5 2023-03-21 10:00:00.000 +0300
25 12 1 1 2023-04-10 11:00:00.000 +0300
26 14 1 1 2023-01-09 08:00:00.000 +0300
27 3 6 2 2023-03-06 12:00:00.000 +0300
28 4 9 3 2023-04-02 10:00:00.000 +0300
29 4 6 2 2023-03-12 14:00:00.000 +0300
30 4 7 2 2023-03-13 09:00:00.000 +0300
31 6 3 1 2023-01-08 09:00:00.000 +0300
32 6 6 2 2023-01-11 14:00:00.000 +0300
33 6 7 2 2023-01-12 10:00:00.000 +0300
34 6 8 2 2023-01-13 11:00:00.000 +0300
35 6 9 3 2023-03-09 11:00:00.000 +0300
36 7 9 3 2023-03-11 14:00:00.000 +0300
37 2 9 3 2023-03-16 10:00:00.000 +0300
38 2 10 3 2023-03-16 10:30:00.000 +0300
39 3 2 1 2023-02-26 11:20:00.000 +0300
40 4 10 3 2023-04-03 10:00:00.000 +0300
41 6 2 1 2023-01-07 10:15:00.000 +0300
42 6 4 1 2023-01-08 09:30:00.000 +0300
43 6 13 4 2023-02-06 09:30:00.000 +0300
44 7 2 1 2023-01-14 10:20:00.000 +0300
45 7 3 1 2023-01-15 09:00:00.000 +0300
46 7 10 3 2023-03-11 14:30:00.000 +0300
47 9 13 4 2023-02-13 10:30:00.000 +0300
48 13 6 2 2023-01-20 14:00:00.000 +0300
49 13 7 2 2023-01-21 10:00:00.000 +0300
50 2 1 1 2023-01-21 09:00:00.000 +0300
51 6 1 1 2023-01-07 10:00:00.000 +0300
52 6 14 4 2023-02-07 10:00:00.000 +0300
53 7 1 1 2023-01-14 10:00:00.000 +0300
54 9 12 4 2023-02-13 10:00:00.000 +0300
55 9 1 1 2023-02-16 11:00:00.000 +0300
56 3 1 1 2023-02-26 11:00:00.000 +0300
57 6 5 1 2023-01-09 10:00:00.000 +0300
58 6 12 4 2023-02-06 09:00:00.000 +0300
59 13 12 4 2023-02-21 09:00:00.000 +0300
@@ -1,3 +1,5 @@
-- DIM
--DROP TABLE IF EXISTS mnoskov.core_dim_user ON CLUSTER clickhouse_cluster SYNC;
CREATE TABLE mnoskov.core_dim_user
ON CLUSTER clickhouse_cluster
@@ -58,4 +60,38 @@ ENGINE=ReplicatedMergeTree(
'/clickhouse/tables/{shard}/mnoskov/core_dim_date',
'{replica}'
)
ORDER BY date;
ORDER BY date;
-- FACT
--DROP TABLE IF EXISTS mnoskov.core_fact_lesson_views;
CREATE TABLE mnoskov.core_fact_lesson_views
ON CLUSTER clickhouse_cluster
(
user_id UInt64,
lesson_id UInt64,
course_id UInt64,
viewed_at DateTime
)
ENGINE=ReplicatedMergeTree(
'/clickhouse/tables/{shard}/mnoskov/core_fact_lesson_views',
'{replica}'
)
PARTITION BY toYYYYMM(viewed_at)
ORDER BY (viewed_at, user_id); -- я если честно не знаю как с этой таблицей поступить в ORDER BY. Наставьте меня на путь истиный.
--DROP TABLE IF EXISTS mnoskov.core_enrollments;
CREATE TABLE mnoskov.core_enrollments
ON CLUSTER clickhouse_cluster
(
user_id UInt64,
course_id UInt64,
enrolled_at DateTime
)
ENGINE=ReplicatedMergeTree(
'/clickhouse/tables/{shard}/mnoskov/core_enrollments',
'{replica}'
)
PARTITION BY toYYYYMM(enrolled_at)
ORDER BY (enrolled_at, user_id);