Dimensionsmodellering

Introduktion till datamodellering i Snowflake

Nuno Rocha

Director of Engineering

Introduktion till dimensionsdatamodellen

  • Dimensionsmodellering: En datastruktureringsteknik som separerar mätvärden (fakta) från beskrivande detaljer (dimensioner), optimerad för rapportering och analys.

Dimensional model

Introduktion till datamodellering i Snowflake

Introduktion till dimensionsdatamodellen (1)

  • Dimensioner: Entiteter med kategorisk data i en dimensionsmodell.
  • Fakta: Entiteter som registrerar och kvantifierar aktiviteter inom dimensionernas kategorier.

Dimensional college model

Introduktion till datamodellering i Snowflake

Stjärnschema för dimensionsmodell

Dimensional star model

Introduktion till datamodellering i Snowflake

Stjärnschema för dimensionsmodell

  • Snowflake Data Warehouse: En molnbaserad lagrings- och analystjänst.
  • Snowflake-schema: En metod för att organisera data i en dimensionsmodell som inkluderar subdimensioner.

Snowflake, data warehouse vs dimensional model

Introduktion till datamodellering i Snowflake

Snowflake-schema för dimensionsmodell

Dimensional snowflake model

Introduktion till datamodellering i Snowflake

Definiera dimensioner

  • Byt namn på entiteter till dim_EntityName för tydlighetens skull, i enlighet med dimensionerna i modellen:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introduktion till datamodellering i Snowflake

Definiera datumdimension

  • Skapar tabellen dim_date för att lagra viktiga fasta datum kopplade till studenters inskrivning i skolan:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introduktion till datamodellering i Snowflake

Definiera inskrivningsfakta

  • Skapa en faktaentitet med referenser till alla dimensioner:
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)
);
Introduktion till datamodellering i Snowflake

Hämta data från dimensionerna

College dimensional data model

Introduktion till datamodellering i Snowflake

Hämta data från dimensionerna (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;
Introduktion till datamodellering i Snowflake

Terminologi och funktionsöversikt

  • Dimensionsmodellering: En datastruktureringsteknik som separerar mätvärden (fakta) från beskrivande detaljer (dimensioner), optimerad för rapportering och analys
  • Dimensioner: Entiteter med kategorisk data i en dimensionsmodell
  • Fakta: Entiteter som registrerar och kvantifierar aktiviteter inom dimensionernas kategorier
  • ALTER TABLE: SQL-kommando för att ändra strukturen på en befintlig entitet
  • RENAME TO: SQL-kommando som används med ALTER TABLE för att byta namn på en entitet
  • JOIN ON: SQL-sats för att kombinera rader från tabeller baserat ON en relaterad kolumn
  • WHERE: SQL-sats för att filtrera poster utifrån ett villkor
  • AND: Logisk operator som används med WHERE-satsen för att kombinera flera villkor
Introduktion till datamodellering i Snowflake

Funktionsöversikt

-- 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;
Introduktion till datamodellering i Snowflake

Nu kör vi en övning!

Introduktion till datamodellering i Snowflake

Preparing Video For Download...