From d04f8702ee1e4417b00eaa42bdf13ff523f985f1 Mon Sep 17 00:00:00 2001 From: Bonifatsiy Date: Wed, 14 Jan 2026 22:00:57 +0400 Subject: [PATCH] OS-52,53,54 --- .../greenplum/dsolovianov-202601142129.sql | 417 ++++++++++++++++++ 1 file changed, 417 insertions(+) create mode 100644 dsolovianov/greenplum/dsolovianov-202601142129.sql diff --git a/dsolovianov/greenplum/dsolovianov-202601142129.sql b/dsolovianov/greenplum/dsolovianov-202601142129.sql new file mode 100644 index 0000000..045de55 --- /dev/null +++ b/dsolovianov/greenplum/dsolovianov-202601142129.sql @@ -0,0 +1,417 @@ +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +-- ЭТАП 1 +-- 1.1 - СОЗДАНИЕ СХЕМ + +CREATE SCHEMA core; + + +ALTER SCHEMA core OWNER TO dsolovianov; + + +CREATE SCHEMA dm; + + +ALTER SCHEMA dm OWNER TO dsolovianov; + + +CREATE SCHEMA raw; + + +ALTER SCHEMA raw OWNER TO dsolovianov; + +SET default_tablespace = ''; + + + +-- 1.2 - Создание raw-таблиц + +CREATE TABLE raw.courses ( + id integer, + title character varying(50), + category character varying(50), + created_at character varying(50) +); + + +ALTER TABLE raw.courses OWNER TO dsolovianov; + + +CREATE TABLE raw.enrollments ( + id integer, + user_id integer, + course_id integer, + enrolled_at character varying(50) +); + + +ALTER TABLE raw.enrollments OWNER TO dsolovianov; + + +CREATE TABLE raw.lesson_views ( + id integer, + user_id integer, + lesson_id integer, + viewed_at character varying(50) +); + + +ALTER TABLE raw.lesson_views OWNER TO dsolovianov; + + +CREATE TABLE raw.lessons ( + id integer, + course_id integer, + title character varying(50), + duration_min integer +); + + +ALTER TABLE raw.lessons OWNER TO dsolovianov; + + +CREATE TABLE raw.users ( + id integer, + name character varying(50), + age integer, + email character varying(50), + registration_date character varying(50) +); + + +ALTER TABLE raw.users OWNER TO dsolovianov; + + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +-- Этап 3. Слой Core + +CREATE TABLE core.dim_course ( + course_id integer NOT NULL, + title text, + category text +); + + +ALTER TABLE core.dim_course OWNER TO dsolovianov; + + +CREATE TABLE core.dim_date ( + date date NOT NULL, + year integer, + month integer, + day integer, + weekday text +); + + +ALTER TABLE core.dim_date OWNER TO dsolovianov; + + +CREATE TABLE core.dim_lesson ( + lesson_id integer NOT NULL, + title text, + duration_min integer, + course_id integer +); + + +ALTER TABLE core.dim_lesson OWNER TO dsolovianov; + + +CREATE TABLE core.dim_user ( + user_id integer NOT NULL, + name text, + age integer, + email text, + registration_date date +); + + +ALTER TABLE core.dim_user OWNER TO dsolovianov; + + +CREATE TABLE core.enrollments ( + user_id integer, + course_id integer, + enrolled_at timestamp without time zone +); + + +ALTER TABLE core.enrollments OWNER TO dsolovianov; + + +CREATE TABLE core.fact_lesson_views ( + user_id integer, + lesson_id integer, + course_id integer, + viewed_at timestamp without time zone +); + + +ALTER TABLE core.fact_lesson_views OWNER TO dsolovianov; + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +COPY core.dim_course (course_id, title, category) FROM stdin; +2 Python для анализа данных programming +1 SQL для начинающих data +3 BI с нуля business +\. + + +COPY core.dim_date (date, year, month, day, weekday) FROM stdin; +2023-01-15 2023 1 15 Sunday +2023-01-16 2023 1 16 Monday +2023-01-21 2023 1 21 Saturday +2023-01-20 2023 1 20 Friday +2023-03-05 2023 3 5 Sunday +2023-02-01 2023 2 1 Wednesday +2023-04-02 2023 4 2 Sunday +2023-03-06 2023 3 6 Monday +2023-04-01 2023 4 1 Saturday +2023-04-03 2023 4 3 Monday +\. + + +-- +-- TOC entry 2500 (class 0 OID 25643) +-- Dependencies: 274 +-- Data for Name: dim_lesson; Type: TABLE DATA; Schema: core; Owner: dsolovianov +-- + +COPY core.dim_lesson (lesson_id, title, duration_min, course_id) FROM stdin; +4 Основы BI 12 3 +5 Метрики и дашборды 18 3 +2 JOIN 15 1 +1 SELECT и FROM 10 1 +3 Pandas 20 2 +\. + + +-- +-- TOC entry 2498 (class 0 OID 25627) +-- Dependencies: 272 +-- Data for Name: dim_user; Type: TABLE DATA; Schema: core; Owner: dsolovianov +-- + +COPY core.dim_user (user_id, name, age, email, registration_date) FROM stdin; +3 Charlie 22 charlie@mail.com 2023-02-20 +1 Alice 25 alice@mail.com 2023-01-10 +2 Bob 30 bob@gmail.com 2023-02-05 +5 Ethan 35 ethan@gmail.com 2023-03-10 +4 Diana 28 diana@mail.com 2023-03-01 +\. + + +-- +-- TOC entry 2502 (class 0 OID 25872) +-- Dependencies: 276 +-- Data for Name: enrollments; Type: TABLE DATA; Schema: core; Owner: dsolovianov +-- + +COPY core.enrollments (user_id, course_id, enrolled_at) FROM stdin; +4 3 2023-04-01 00:00:00 +1 2 2023-02-01 00:00:00 +2 1 2023-01-20 00:00:00 +1 1 2023-01-15 00:00:00 +3 2 2023-03-05 00:00:00 +\. + + +-- +-- TOC entry 2503 (class 0 OID 25885) +-- Dependencies: 277 +-- Data for Name: fact_lesson_views; Type: TABLE DATA; Schema: core; Owner: dsolovianov +-- + +COPY core.fact_lesson_views (user_id, lesson_id, course_id, viewed_at) FROM stdin; +2 1 1 2023-01-21 09:00:00 +1 2 1 2023-01-16 10:15:00 +3 3 2 2023-03-06 12:00:00 +1 1 1 2023-01-16 10:00:00 +4 4 3 2023-04-02 10:00:00 +4 5 3 2023-04-03 10:00:00 +\. + + +-- +-- TOC entry 2494 (class 0 OID 25615) +-- Dependencies: 268 +-- Data for Name: courses; Type: TABLE DATA; Schema: raw; Owner: dsolovianov +-- + +COPY raw.courses (id, title, category, created_at) FROM stdin; +3 BI с нуля business 2023-03-01 +1 SQL для начинающих data 2023-01-01 +2 Python для анализа данных programming 2023-01-15 +\. + + +-- +-- TOC entry 2496 (class 0 OID 25621) +-- Dependencies: 270 +-- Data for Name: enrollments; Type: TABLE DATA; Schema: raw; Owner: dsolovianov +-- + +COPY raw.enrollments (id, user_id, course_id, enrolled_at) FROM stdin; +1 1 1 2023-01-15 +2 1 2 2023-02-01 +3 2 1 2023-01-20 +4 3 2 2023-03-05 +5 4 3 2023-04-01 +\. + + +-- +-- TOC entry 2497 (class 0 OID 25624) +-- Dependencies: 271 +-- Data for Name: lesson_views; Type: TABLE DATA; Schema: raw; Owner: dsolovianov +-- + +COPY raw.lesson_views (id, user_id, lesson_id, viewed_at) FROM stdin; +2 1 2 2023-01-16 10:15:00.000 +1 1 1 2023-01-16 10:00:00.000 +3 2 1 2023-01-21 09:00:00.000 +5 4 4 2023-04-02 10:00:00.000 +4 3 3 2023-03-06 12:00:00.000 +6 4 5 2023-04-03 10:00:00.000 +\. + + +-- +-- TOC entry 2495 (class 0 OID 25618) +-- Dependencies: 269 +-- Data for Name: lessons; Type: TABLE DATA; Schema: raw; Owner: dsolovianov +-- + +COPY raw.lessons (id, course_id, title, duration_min) FROM stdin; +1 1 SELECT и FROM 10 +2 1 JOIN 15 +3 2 Pandas 20 +4 3 Основы BI 12 +5 3 Метрики и дашборды 18 +\. + + +-- +-- TOC entry 2493 (class 0 OID 25612) +-- Dependencies: 267 +-- Data for Name: users; Type: TABLE DATA; Schema: raw; Owner: dsolovianov +-- + +COPY raw.users (id, name, age, email, registration_date) FROM stdin; +1 Alice 25 alice@mail.com 2023-01-10 +2 Bob 30 bob@gmail.com 2023-02-05 +3 Charlie 22 charlie@mail.com 2023-02-20 +5 Ethan 35 ethan@gmail.com 2023-03-10 +4 Diana 28 diana@mail.com 2023-03-01 +\. + + +-- +-- TOC entry 2314 (class 2606 OID 25642) +-- Name: dim_course dim_course_pkey; Type: CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.dim_course + ADD CONSTRAINT dim_course_pkey PRIMARY KEY (course_id); + + +-- +-- TOC entry 2318 (class 2606 OID 25663) +-- Name: dim_date dim_date_pkey; Type: CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.dim_date + ADD CONSTRAINT dim_date_pkey PRIMARY KEY (date); + + +-- +-- TOC entry 2316 (class 2606 OID 25650) +-- Name: dim_lesson dim_lesson_pkey; Type: CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.dim_lesson + ADD CONSTRAINT dim_lesson_pkey PRIMARY KEY (lesson_id); + + +-- +-- TOC entry 2312 (class 2606 OID 25634) +-- Name: dim_user dim_user_pkey; Type: CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.dim_user + ADD CONSTRAINT dim_user_pkey PRIMARY KEY (user_id); + + +-- +-- TOC entry 2319 (class 2606 OID 25651) +-- Name: dim_lesson dim_lesson_course_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.dim_lesson + ADD CONSTRAINT dim_lesson_course_id_fkey FOREIGN KEY (course_id) REFERENCES core.dim_course(course_id); + + +-- +-- TOC entry 2320 (class 2606 OID 25880) +-- Name: enrollments enrollments_course_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.enrollments + ADD CONSTRAINT enrollments_course_id_fkey FOREIGN KEY (course_id) REFERENCES core.dim_course(course_id); + + +-- +-- TOC entry 2321 (class 2606 OID 25875) +-- Name: enrollments enrollments_user_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.enrollments + ADD CONSTRAINT enrollments_user_id_fkey FOREIGN KEY (user_id) REFERENCES core.dim_user(user_id); + + +-- +-- TOC entry 2322 (class 2606 OID 25898) +-- Name: fact_lesson_views fact_lesson_views_course_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.fact_lesson_views + ADD CONSTRAINT fact_lesson_views_course_id_fkey FOREIGN KEY (course_id) REFERENCES core.dim_course(course_id); + + +-- +-- TOC entry 2323 (class 2606 OID 25893) +-- Name: fact_lesson_views fact_lesson_views_lesson_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.fact_lesson_views + ADD CONSTRAINT fact_lesson_views_lesson_id_fkey FOREIGN KEY (lesson_id) REFERENCES core.dim_lesson(lesson_id); + + +-- +-- TOC entry 2324 (class 2606 OID 25888) +-- Name: fact_lesson_views fact_lesson_views_user_id_fkey; Type: FK CONSTRAINT; Schema: core; Owner: dsolovianov +-- + +ALTER TABLE ONLY core.fact_lesson_views + ADD CONSTRAINT fact_lesson_views_user_id_fkey FOREIGN KEY (user_id) REFERENCES core.dim_user(user_id); + + +-- Completed on 2026-01-14 21:29:24 + +-- +-- PostgreSQL database dump complete +-- +