Dimenzionální modelování

Úvod do datového modelování ve Snowflake

Nuno Rocha

Director of Engineering

Úvod do dimenzionálního datového modelu

  • Dimenzionální modelování: Technika strukturování dat oddělující měření (fakta) od popisných detailů (dimenzí), optimalizovaná pro reporting a analýzu.

Dimenzionální model

Úvod do datového modelování ve Snowflake

Úvod do dimenzionálního datového modelu (1)

  • Dimenze: Entity s kategorickými daty v dimenzionálním modelu.
  • Fakta: Entity zachycující a kvantifikující aktivity v rámci kategorií dimenzí.

Dimenzionální model vysoké školy

Úvod do datového modelování ve Snowflake

Schéma hvězdicového dimenzionálního modelu

Hvězdicový dimenzionální model

Úvod do datového modelování ve Snowflake

Schéma hvězdicového dimenzionálního modelu

  • Snowflake Data Warehouse: Cloudová služba pro ukládání a analýzu dat.
  • Snowflake Schema: Metoda organizace dat v dimenzionálním modelu zahrnující podřazené dimenze.

Snowflake – datový sklad vs. dimenzionální model

Úvod do datového modelování ve Snowflake

Schéma dimenzionálního modelu sněhové vločky

Dimenzionální model sněhové vločky

Úvod do datového modelování ve Snowflake

Definování dimenzí

  • Přejmenujte entity na dim_NázevEntity pro přehlednost, čímž označíte dimenze v modelu:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Úvod do datového modelování ve Snowflake

Definování datové dimenze

  • Vytvoření tabulky dim_date pro ukládání klíčových pevných dat souvisejících s přijímáním studentů:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Úvod do datového modelování ve Snowflake

Definování faktové tabulky zápisů

  • Vytvořte faktovou entitu obsahující reference na všechny dimenze:
CREATE OR REPLACE TABLE fact_enrollments (
    enrollment_id NUMBER(10,0) PRIMARY KEY,
    student_id NUMBER(10,0),
    class_id NUMBER(10,0),
    date_id NUMBER(10,0),
    FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
    FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
    FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);
Úvod do datového modelování ve Snowflake

Načítání dat z dimenzí

Dimenzionální datový model pro vysokou školu

Úvod do datového modelování ve Snowflake

Načítání dat z dimenzí (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Joining to get student names
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Joining to get class names
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Joining to filter for the 'Science' school
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Joining to restrict data to the year 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Úvod do datového modelování ve Snowflake

Přehled terminologie a funkcí

  • Dimenzionální modelování: Technika strukturování dat oddělující měření (fakta) od popisných detailů (dimenzí), optimalizovaná pro reporting a analýzu
  • Dimenze: Entity s kategorickými daty v dimenzionálním modelu
  • Fakta: Entity zachycující a kvantifikující aktivity v rámci kategorií dimenzí
  • ALTER TABLE: Příkaz SQL pro úpravu struktury existující entity
  • RENAME TO: Příkaz SQL používaný s ALTER TABLE pro přejmenování entity
  • JOIN ON: Klauzule SQL pro spojení řádků z tabulek na základě souvisejícího sloupce
  • WHERE: Klauzule SQL pro filtrování záznamů podle podmínky
  • AND: Logický operátor používaný s klauzulí WHERE ke kombinování podmínek
Úvod do datového modelování ve Snowflake

Přehled funkcí

-- Modifying a entity
ALTER TABLE table_name 
RENAME TO new_name;
-- Querying data from merged entities filtered by specific conditions
SELECT 
    table_name.column_name,
    other_name.*
FROM table_name
    JOIN other_table 
    ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Úvod do datového modelování ve Snowflake

Pojďme cvičit!

Úvod do datového modelování ve Snowflake

Preparing Video For Download...