Выбор правильного подхода

Введение в моделирование данных в Snowflake

Nuno Rocha

Director of Engineering

Сценарии применения каждой техники моделирования

Сценарии применения моделей «сущность — связь» (ER)

Введение в моделирование данных в Snowflake

Сценарии применения каждой техники моделирования (1)

Сценарии применения размерных моделей

Введение в моделирование данных в Snowflake

Сценарии применения каждой техники моделирования (2)

Сценарии применения моделирования Data Vault

Введение в моделирование данных в Snowflake

Технические аспекты

Плюсы и минусы ER-модели

Введение в моделирование данных в Snowflake

Технические аспекты (1)

Плюсы и минусы размерной модели

Введение в моделирование данных в Snowflake

Технические аспекты (2)

Плюсы и минусы Data Vault

Введение в моделирование данных в Snowflake

Модели данных на практике

Модели на диаграмме Венна

Введение в моделирование данных в Snowflake

Модели данных на практике (1)

Данные колледжа на диаграмме Венна по моделям

Введение в моделирование данных в Snowflake

Извлечение данных из моделей

  • Получение подробных данных о студентах через хаб-сущность и связанный с ней сателлит:
SELECT
    hs.student_key,
    ss.student_name
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key;
Введение в моделирование данных в Snowflake

Извлечение данных из моделей (1)

  • LEFT JOIN ON: конструкция SQL, которая объединяет все строки из левой сущности с совпадающими строками правой таблицы по ключу 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
Введение в моделирование данных в Snowflake

Извлечение данных из моделей (2)

  • COUNT: агрегатная функция SQL, возвращающая количество элементов в группе.
  • GROUP BY: конструкция SQL для группировки строк с одинаковыми значениями.
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
Введение в моделирование данных в Snowflake

Извлечение данных из моделей (3)

  • MAX: агрегатная функция SQL, находящая наибольшее значение атрибута в наборе.
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;
Введение в моделирование данных в Snowflake

Обзор функций

  • SELECT FROM: команда SQL для выборки столбцов из сущности
  • JOIN ON: конструкция SQL, объединяющая строки сущностей по связанному атрибуту
  • LEFT JOIN ON: конструкция SQL, объединяющая все строки левой сущности с совпадающими строками правой таблицы по ключу ON. Если совпадений нет, строки левой сущности всё равно отображаются — с пустыми значениями для правых атрибутов
  • COUNT: агрегатная функция SQL, возвращающая количество элементов в группе
  • MAX: агрегатная функция SQL, находящая наибольшее значение атрибута в наборе
  • GROUP BY: конструкция SQL для группировки строк с одинаковыми значениями
Введение в моделирование данных в Snowflake

Обзор функций

SELECT column_name, 
    COUNT(another_column) AS alias_name,
    MAX(other_column) AS alias_name
FROM table_name table_alias
    -- Merge entities based on their keys
    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
-- Aggregate data by specific columns
GROUP BY column_name;
Введение в моделирование данных в Snowflake

Давайте потренируемся!

Введение в моделирование данных в Snowflake

Preparing Video For Download...