最適なアプローチの選択

Snowflakeで学ぶデータモデリング入門

Nuno Rocha

Director of Engineering

各モデリング手法のユースケース

エンティティ・リレーションシップ (ER) モデルのユースケース

Snowflakeで学ぶデータモデリング入門

各モデリング手法のユースケース (1)

ディメンショナル・モデルのユースケース

Snowflakeで学ぶデータモデリング入門

各モデリング手法のユースケース (2)

データボルト・モデリングのユースケース

Snowflakeで学ぶデータモデリング入門

技術的考慮点

ERモデルの長所と短所

Snowflakeで学ぶデータモデリング入門

技術的考慮点 (1)

ディメンショナル・モデルの長所と短所

Snowflakeで学ぶデータモデリング入門

技術的考慮点 (2)

データボルトの長所と短所

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句
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: グループ内アイテム数を返す集計関数
  • 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: 属性で最大値を返す集計関数
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: エンティティから列を取得
  • JOIN ON: 関連属性に基づきエンティティ行を結合
  • LEFT JOIN ON: 左側の全行と、キーに基づく右側の一致行を結合。未一致でも左側は表示され、右側属性は空
  • COUNT: グループ内件数を返す集計関数
  • MAX: 属性の最大値を返す集計関数
  • GROUP BY: 同一値のデータを集計
Snowflakeで学ぶデータモデリング入門

関数まとめ

SELECT column_name, 
    COUNT(another_column) AS alias_name,
    MAX(other_column) AS alias_name
FROM table_name table_alias
    -- キーに基づいてエンティティを結合
    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
-- 特定の列で集計
GROUP BY column_name;
Snowflakeで学ぶデータモデリング入門

Ayo berlatih!

Snowflakeで学ぶデータモデリング入門

Preparing Video For Download...