Modellazione dimensionale

Introduzione al Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Introduzione al modello dati dimensionale

  • Modellazione dimensionale: tecnica di strutturazione dei dati che separa misure (fact) da dettagli descrittivi (dimensioni), ottimizzata per reportistica e analisi.

Modello dimensionale

Introduzione al Data Modeling in Snowflake

Introduzione al modello dati dimensionale (1)

  • Dimensioni: entità con dati categoriali in un modello dimensionale.
  • Fact: entità che catturano e quantificano attività nelle categorie delle dimensioni.

Modello dimensionale del college

Introduzione al Data Modeling in Snowflake

Schema del modello dimensionale a stella

Modello a stella dimensionale

Introduzione al Data Modeling in Snowflake

Schema del modello dimensionale a stella

  • Snowflake Data Warehouse: servizio cloud per storage e analytics.
  • Schema a fiocco di neve: metodo per organizzare dati in un modello dimensionale con sotto-dimensioni.

Snowflake, data warehouse vs modello dimensionale

Introduzione al Data Modeling in Snowflake

Schema del modello dimensionale a fiocco di neve

Modello dimensionale a fiocco di neve

Introduzione al Data Modeling in Snowflake

Definire le dimensioni

  • Rinomina le entità in dim_NomeEntità per chiarezza, seguendo le dimensioni del modello:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introduzione al Data Modeling in Snowflake

Definire la dimensione data

  • Crea la tabella dim_date per salvare date chiave fisse legate alle iscrizioni degli studenti:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introduzione al Data Modeling in Snowflake

Definire la fact delle iscrizioni

  • Crea una fact che contiene i riferimenti a tutte le dimensioni:
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)
);
Introduzione al Data Modeling in Snowflake

Recuperare dati dalle dimensioni

Modello dati dimensionale del college

Introduzione al Data Modeling in Snowflake

Recuperare dati dalle dimensioni (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Join per ottenere i nomi degli studenti
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Join per ottenere i nomi dei corsi
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Join per filtrare per la scuola "Science"
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Join per limitare i dati all'anno 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Introduzione al Data Modeling in Snowflake

Panoramica di termini e funzioni

  • Modellazione dimensionale: tecnica che separa misure (fact) da dettagli descrittivi (dimensioni), ottimizzata per report e analisi
  • Dimensioni: entità con dati categoriali in un modello dimensionale
  • Fact: entità che catturano e quantificano attività nelle categorie delle dimensioni
  • ALTER TABLE: comando SQL per modificare la struttura di un'entità esistente
  • RENAME TO: comando SQL, usato con ALTER TABLE, per rinominare un'entità
  • JOIN ON: clausola SQL per unire righe da tabelle, basata su una colonna correlata
  • WHERE: clausola SQL per filtrare record in base a una condizione
  • AND: operatore logico usato con WHERE per combinare più condizioni
Introduzione al Data Modeling in Snowflake

Panoramica delle funzioni

-- Modificare un'entità
ALTER TABLE table_name 
RENAME TO new_name;
-- Interrogare dati da entità unite, filtrati da condizioni specifiche
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;
Introduzione al Data Modeling in Snowflake

Passons à la pratique !

Introduzione al Data Modeling in Snowflake

Preparing Video For Download...