Dimensional modeling

Einführung in das Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Einführung in das dimensionale Datenmodell

  • Dimensional Modeling: Eine Datenstrukturierungstechnik, die Messwerte (Fakten) von beschreibenden Details (Dimensionen) trennt – optimiert für Reporting und Analyse.

Dimensional model

Einführung in das Data Modeling in Snowflake

Einführung in das dimensionale Datenmodell (1)

  • Dimensionen: Entitäten mit kategorialen Daten in einem dimensionalen Modell.
  • Fakten: Entitäten, die Aktivitäten innerhalb der Dimensionen erfassen und quantifizieren.

Dimensional college model

Einführung in das Data Modeling in Snowflake

Sternschema des dimensionalen Modells

Dimensional star model

Einführung in das Data Modeling in Snowflake

Sternschema des dimensionalen Modells

  • Snowflake Data Warehouse: Ein cloudbasierter Speicher- und Analysedienst.
  • Snowflake-Schema: Eine Organisationsmethode im dimensionalen Modell mit Unterdimensionen.

Snowflake, data warehouse vs dimensional model

Einführung in das Data Modeling in Snowflake

Snowflake-Schema des dimensionalen Modells

Dimensional snowflake model

Einführung in das Data Modeling in Snowflake

Dimensionen definieren

  • Benenne Entitäten der Klarheit halber zu dim_EntityName um – so folgen sie den Dimensionen im Modell:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Einführung in das Data Modeling in Snowflake

Datumsdimension definieren

  • Erstelle die Tabelle dim_date, um feste Schlüsseldaten zu Schüleranmeldungen zu speichern:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Einführung in das Data Modeling in Snowflake

Fakt „enrollments" definieren

  • Erstelle eine Fakten-Entität mit Verweisen auf alle Dimensionen:
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)
);
Einführung in das Data Modeling in Snowflake

Daten aus den Dimensionen abrufen

College dimensional data model

Einführung in das Data Modeling in Snowflake

Daten aus den Dimensionen abrufen (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Join für Schülernamen
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Join für Kursnamen
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Join, um auf die Schule „Science" zu filtern
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Join, um die Daten auf das Jahr 2023 zu beschränken
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Einführung in das Data Modeling in Snowflake

Begriffe und Funktionen im Überblick

  • Dimensional Modeling: Technik zur Datenstrukturierung, trennt Messwerte (Fakten) von beschreibenden Details (Dimensionen), optimiert für Reporting und Analyse
  • Dimensionen: Entitäten mit kategorialen Daten in einem dimensionalen Modell
  • Fakten: Entitäten, die Aktivitäten innerhalb der Dimensionen erfassen und quantifizieren
  • ALTER TABLE: SQL-Befehl, um die Struktur einer bestehenden Entität zu ändern
  • RENAME TO: SQL-Befehl, zusammen mit ALTER TABLE, zum Umbenennen einer Entität
  • JOIN ON: SQL-Klausel zum Zusammenführen von Zeilen aus Tabellen, basierend ON einer verwandten Spalte
  • WHERE: SQL-Klausel zum Filtern von Datensätzen anhand einer Bedingung
  • AND: Logischer Operator in WHERE, um mehrere Bedingungen zu kombinieren
Einführung in das Data Modeling in Snowflake

Funktionen im Überblick

-- Eine Entität ändern
ALTER TABLE table_name 
RENAME TO new_name;
-- Daten aus verknüpften Entitäten mit Bedingungen abfragen
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;
Einführung in das Data Modeling in Snowflake

Lass uns üben!

Einführung in das Data Modeling in Snowflake

Preparing Video For Download...