OS-314 fixes because I've broken full git struct
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
-- Измерение пользователей
|
||||
CREATE TABLE core.dim_user (
|
||||
user_id INT PRIMARY KEY,
|
||||
name TEXT,
|
||||
age INT,
|
||||
email TEXT,
|
||||
registration_date DATE
|
||||
)
|
||||
distributed by (user_id);
|
||||
|
||||
-- Измерение курсов
|
||||
CREATE TABLE core.dim_course (
|
||||
course_id INT PRIMARY KEY,
|
||||
title TEXT,
|
||||
category TEXT
|
||||
)
|
||||
distributed by (course_id);
|
||||
|
||||
-- Измерение уроков
|
||||
CREATE TABLE core.dim_lesson (
|
||||
lesson_id INT PRIMARY KEY,
|
||||
title TEXT,
|
||||
duration_min INT,
|
||||
course_id INT REFERENCES core.dim_course(course_id)
|
||||
)
|
||||
distributed by (lesson_id);
|
||||
|
||||
-- Опционально: измерение времени
|
||||
CREATE TABLE core.dim_date (
|
||||
date DATE PRIMARY KEY,
|
||||
year INT,
|
||||
month INT,
|
||||
day INT,
|
||||
weekday TEXT
|
||||
)
|
||||
distributed replicated;
|
||||
|
||||
-- Таблицы фактов:
|
||||
CREATE TABLE core.fact_lesson_views (
|
||||
user_id INT REFERENCES core.dim_user(user_id),
|
||||
lesson_id INT REFERENCES core.dim_lesson(lesson_id),
|
||||
course_id INT REFERENCES core.dim_course(course_id),
|
||||
viewed_at TIMESTAMP
|
||||
)
|
||||
distributed by (course_id);
|
||||
|
||||
CREATE TABLE core.enrollments (
|
||||
user_id INT REFERENCES core.dim_user(user_id),
|
||||
course_id INT REFERENCES core.dim_course(course_id),
|
||||
enrolled_at TIMESTAMP
|
||||
)
|
||||
distributed by (course_id);
|
||||
|
||||
--ETL переброс данных из raw в core
|
||||
INSERT INTO core.dim_user (user_id, name, age, email, registration_date)
|
||||
SELECT DISTINCT
|
||||
id::INT,
|
||||
name::TEXT,
|
||||
age::INT,
|
||||
email::TEXT,
|
||||
registration_date::DATE
|
||||
FROM raw.users;
|
||||
|
||||
INSERT INTO core.dim_course (course_id, title, category)
|
||||
SELECT DISTINCT
|
||||
id::INT,
|
||||
title::TEXT,
|
||||
category::TEXT
|
||||
FROM raw.courses;
|
||||
|
||||
INSERT INTO core.dim_lesson (lesson_id, title, duration_min, course_id)
|
||||
SELECT DISTINCT
|
||||
id::INT,
|
||||
title::TEXT,
|
||||
duration_min::INT,
|
||||
course_id::INT
|
||||
FROM raw.lessons;
|
||||
|
||||
INSERT INTO core.dim_lesson (lesson_id, title, duration_min, course_id)
|
||||
SELECT DISTINCT
|
||||
id::INT,
|
||||
title::TEXT,
|
||||
duration_min::INT,
|
||||
course_id::INT
|
||||
FROM raw.lessons;
|
||||
|
||||
-- Заполнение таблицы фактов
|
||||
insert into core.fact_lesson_views (user_id, lesson_id, course_id, viewed_at)
|
||||
select
|
||||
lw.user_id,
|
||||
lw.lesson_id,
|
||||
l.course_id,
|
||||
lw.viewed_at
|
||||
from raw.lessons_views lw
|
||||
join raw.lessons l on lw.lesson_id = l.id;
|
||||
|
||||
insert into core.enrollments (user_id, lesson_id, course_id, viewed_at)
|
||||
select
|
||||
lw.user_id,
|
||||
lw.lesson_id,
|
||||
l.course_id,
|
||||
lw.viewed_at
|
||||
from raw.lessons_views lw
|
||||
join raw.lessons l on lw.lesson_id = l.id;
|
||||
|
||||
insert into enrollments (user_id, course_id, enrolled_at)
|
||||
select
|
||||
user_id,
|
||||
course_id,
|
||||
enrolled_at
|
||||
from raw.enrollments;
|
||||
Reference in New Issue
Block a user