De juiste aanpak kiezen

Introductie tot datamodellering in Snowflake

Nuno Rocha

Director of Engineering

Use-cases per modelleertechniek

Use-cases voor entiteit-relatiemodellen (ER)

Introductie tot datamodellering in Snowflake

Use-cases per modelleertechniek (1)

Use-cases voor dimensionale modellen

Introductie tot datamodellering in Snowflake

Use-cases per modelleertechniek (2)

Use-cases voor Data Vault-modellering

Introductie tot datamodellering in Snowflake

Technische overwegingen

Plus- en minpunten van ER-model

Introductie tot datamodellering in Snowflake

Technische overwegingen (1)

Plus- en minpunten van dimensionaal model

Introductie tot datamodellering in Snowflake

Technische overwegingen (2)

Plus- en minpunten van data vault

Introductie tot datamodellering in Snowflake

Datamodellen in de praktijk

Modellen in Venn-diagram

Introductie tot datamodellering in Snowflake

Datamodellen in de praktijk (1)

Hogeschooldata in modellen in Venn-diagram

Introductie tot datamodellering in Snowflake

Data ophalen uit de modellen

  • Haal details over studenten op via de hub-entiteit en z’n satelliet:
SELECT
    hs.student_key,
    ss.student_name
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key;
Introductie tot datamodellering in Snowflake

Data ophalen uit de modellen (1)

  • LEFT JOIN ON: SQL-clausule die alle rijen van de linkertabel combineert met overeenkomende rijen van de rechtertabel op basis van een sleutel (ON)
SELECT
    hs.student_key,
    ss.student_name
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key
    LEFT JOIN link_enrollment AS le ON hs.student_key = le.student_key
Introductie tot datamodellering in Snowflake

Data ophalen uit de modellen (2)

  • COUNT: aggregatiefunctie die het aantal items in een groep geeft.
  • GROUP BY: SQL-clausule om data met dezelfde waarden te groeperen.
SELECT
    hs.student_key,
    ss.student_name,
    COUNT(le.class_key) AS NumberOfEnrollments
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key
    LEFT JOIN link_enrollment AS le ON hs.student_key = le.student_key
GROUP BY hs.student_key, 
    ss.student_name
Introductie tot datamodellering in Snowflake

Data ophalen uit de modellen (3)

  • MAX: aggregatiefunctie die de hoogste waarde van een attribuut vindt.
SELECT
    hs.student_key,
    ss.student_name,
    COUNT(le.class_key) AS NumberOfEnrollments
    MAX(sc.load_date) AS MostRecentEnrollmentDate
FROM hub_students hs
    JOIN sat_student ss ON hs.student_key = ss.student_key
    LEFT JOIN link_enrollment le ON hs.student_key = le.student_key
    LEFT JOIN sat_class sc ON le.class_key = sc.class_key
GROUP BY hs.student_key, 
    ss.student_name;
Introductie tot datamodellering in Snowflake

Overzicht functies

  • SELECT FROM: SQL-commando om kolommen op te halen uit een entiteit
  • JOIN ON: SQL-clausule die rijen combineert op basis van een gerelateerd attribuut
  • LEFT JOIN ON: combineert alle rijen van de linkertabel met matches uit de rechtertabel op basis van een sleutel. Zonder match blijven linkerrijen staan met lege waarden rechts
  • COUNT: aggregatiefunctie die het aantal items in een groep geeft
  • MAX: aggregatiefunctie die de hoogste waarde van een attribuut vindt
  • GROUP BY: SQL-clausule om data met dezelfde waarden te groeperen
Introductie tot datamodellering in Snowflake

Overzicht functies

SELECT column_name, 
    COUNT(another_column) AS alias_name,
    MAX(other_column) AS alias_name
FROM table_name table_alias
    -- Entiteiten mergen op hun sleutels
    JOIN other_table AS other_alias 
    ON table_alias.FK = other_alias.PK
    LEFT JOIN another_table AS another_alias 
    ON table_alias.FK = other_alias.PK
-- Data aggregeren per kolom(men)
GROUP BY column_name;
Introductie tot datamodellering in Snowflake

Laten we oefenen!

Introductie tot datamodellering in Snowflake

Preparing Video For Download...