Modelare dimensională

Introducere în modelarea datelor în Snowflake

Nuno Rocha

Director of Engineering

Introducere în modelul dimensional

  • Modelare dimensională: Tehnică de structurare a datelor care separă măsurătorile (fapte) de detaliile descriptive (dimensiuni), optimizată pentru raportare și analiză.

Model dimensional

Introducere în modelarea datelor în Snowflake

Introducere în modelul dimensional (1)

  • Dimensiuni: Entități cu date categorice într-un model dimensional.
  • Fapte: Entități care captează și cuantifică activitățile din categoriile dimensiunilor.

Model dimensional pentru colegiu

Introducere în modelarea datelor în Snowflake

Schema modelului dimensional stea

Model dimensional stea

Introducere în modelarea datelor în Snowflake

Schema modelului dimensional stea

  • Snowflake Data Warehouse: Serviciu cloud de stocare și analiză a datelor.
  • Schema Snowflake: Metodă de organizare a datelor într-un model dimensional care include sub-dimensiuni.

Snowflake, data warehouse vs model dimensional

Introducere în modelarea datelor în Snowflake

Schema modelului dimensional snowflake

Model dimensional snowflake

Introducere în modelarea datelor în Snowflake

Definirea dimensiunilor

  • Redenumiți entitățile ca dim_NumeEntitate pentru claritate, urmând dimensiunile din model:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introducere în modelarea datelor în Snowflake

Definirea dimensiunii dată

  • Crearea tabelului dim_date pentru stocarea datelor fixe cheie legate de înmatriculările studenților:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introducere în modelarea datelor în Snowflake

Definirea faptului de înmatriculare

  • Creați o entitate de tip fact cu referințe la toate dimensiunile:
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)
);
Introducere în modelarea datelor în Snowflake

Extragerea datelor din dimensiuni

Model dimensional pentru colegiu

Introducere în modelarea datelor în Snowflake

Extragerea datelor din dimensiuni (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;
Introducere în modelarea datelor în Snowflake

Prezentare terminologie și funcții

  • Modelare dimensională: Tehnică de structurare a datelor care separă măsurătorile (fapte) de detaliile descriptive (dimensiuni), optimizată pentru raportare și analiză
  • Dimensiuni: Entități cu date categorice într-un model dimensional
  • Fapte: Entități care captează și cuantifică activitățile din categoriile dimensiunilor
  • ALTER TABLE: Comandă SQL pentru modificarea structurii unei entități existente
  • RENAME TO: Comandă SQL, utilizată cu ALTER TABLE, pentru redenumirea unei entități
  • JOIN ON: Clauză SQL pentru combinarea rândurilor din tabele pe baza unei coloane comune
  • WHERE: Clauză SQL pentru filtrarea înregistrărilor după o condiție
  • AND: Operator logic utilizat cu clauza WHERE pentru combinarea mai multor condiții
Introducere în modelarea datelor în Snowflake

Prezentare funcții

-- 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;
Introducere în modelarea datelor în Snowflake

Să exersăm!

Introducere în modelarea datelor în Snowflake

Preparing Video For Download...