Dimensionaal modelleren

Introductie tot datamodellering in Snowflake

Nuno Rocha

Director of Engineering

Introductie: het dimensionale datamodel

  • Dimensionaal modelleren: Een datastructuurtechniek die metingen (facts) scheidt van beschrijvende details (dimensies), geoptimaliseerd voor rapportage en analyse.

Dimensionaal model

Introductie tot datamodellering in Snowflake

Introductie: het dimensionale datamodel (1)

  • Dimensies: Entiteiten met categorische data in een dimensionaal model.
  • Facts: Entiteiten die activiteiten binnen de categorieën in de dimensies vastleggen en kwantificeren.

Dimensionaal hogeschoolmodel

Introductie tot datamodellering in Snowflake

Schema van het stermodel

Dimensionaal stermodel

Introductie tot datamodellering in Snowflake

Schema van het stermodel

  • Snowflake Data Warehouse: Een cloudservice voor opslag en analyse.
  • Snowflake-schema: Een manier om data in een dimensionaal model te organiseren met subdimensies.

Snowflake, datawarehouse vs dimensionaal model

Introductie tot datamodellering in Snowflake

Schema van het sneeuwvlokmodel

Dimensionaal sneeuwvlokmodel

Introductie tot datamodellering in Snowflake

Dimensies definiëren

  • Hernoem entiteiten naar dim_EntityName voor duidelijkheid, aansluitend op dimensies in het model:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introductie tot datamodellering in Snowflake

Datedimensie definiëren

  • Maak de tabel dim_date om vaste sleuteldata over inschrijvingen op school op te slaan:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introductie tot datamodellering in Snowflake

Fact inschrijvingen definiëren

  • Maak een fact-entiteit met verwijzingen naar alle dimensies:
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)
);
Introductie tot datamodellering in Snowflake

Data ophalen uit de dimensies

Dimensionaal datamodel voor hogeschool

Introductie tot datamodellering in Snowflake

Data ophalen uit de dimensies (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Join om studentnamen op te halen
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Join om lesnamen op te halen
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Join om te filteren op de 'Science' school
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Join om te beperken tot jaar 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Introductie tot datamodellering in Snowflake

Overzicht: terminologie en functies

  • Dimensionaal modelleren: Een datastructuurtechniek die metingen (facts) scheidt van beschrijvende details (dimensies), geoptimaliseerd voor rapportage en analyse
  • Dimensies: Entiteiten met categorische data in een dimensionaal model
  • Facts: Entiteiten die activiteiten binnen de categorieën in de dimensies vastleggen en kwantificeren
  • ALTER TABLE: SQL-commando om de structuur van een bestaande entiteit te wijzigen
  • RENAME TO: SQL-commando, gebruikt met ALTER TABLE, om een entiteit te hernoemen
  • JOIN ON: SQL-clausule om rijen uit tabellen te combineren op basis van een gerelateerde kolom
  • WHERE: SQL-clausule om records te filteren op een voorwaarde
  • AND: Logische operator met WHERE om meerdere voorwaarden te combineren
Introductie tot datamodellering in Snowflake

Functieoverzicht

-- Een entiteit wijzigen
ALTER TABLE table_name 
RENAME TO new_name;
-- Data opvragen uit samengevoegde entiteiten, gefilterd op voorwaarden
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;
Introductie tot datamodellering in Snowflake

Laten we oefenen!

Introductie tot datamodellering in Snowflake

Preparing Video For Download...