การเลือกแนวทางที่เหมาะสม

Data Modeling ใน Snowflake เบื้องต้น

Nuno Rocha

Director of Engineering

กรณีการใช้งานของแต่ละเทคนิคการสร้างโมเดล

กรณีการใช้งาน Entity-Relationship (ER) Models

Data Modeling ใน Snowflake เบื้องต้น

กรณีการใช้งานของแต่ละเทคนิคการสร้างโมเดล (1)

กรณีการใช้งาน Dimensional Models

Data Modeling ใน Snowflake เบื้องต้น

กรณีการใช้งานของแต่ละเทคนิคการสร้างโมเดล (2)

กรณีการใช้งาน Data Vault Modeling

Data Modeling ใน Snowflake เบื้องต้น

ข้อพิจารณาด้านเทคนิค

ข้อดีและข้อเสียของ ER model

Data Modeling ใน Snowflake เบื้องต้น

ข้อพิจารณาด้านเทคนิค (1)

ข้อดีและข้อเสียของ dimensional model

Data Modeling ใน Snowflake เบื้องต้น

ข้อพิจารณาด้านเทคนิค (2)

ข้อดีและข้อเสียของ data vault

Data Modeling ใน Snowflake เบื้องต้น

โมเดลข้อมูลในทางปฏิบัติ

โมเดลข้อมูลในแผนภาพเวนน์

Data Modeling ใน Snowflake เบื้องต้น

โมเดลข้อมูลในทางปฏิบัติ (1)

ข้อมูลของวิทยาลัยในโมเดลบนแผนภาพเวนน์

Data Modeling ใน Snowflake เบื้องต้น

การดึงข้อมูลจากโมเดล

  • ดึงข้อมูลรายละเอียดของนักศึกษาโดยอ้างอิง hub entity และ satellite:
SELECT
    hs.student_key,
    ss.student_name
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key;
Data Modeling ใน Snowflake เบื้องต้น

การดึงข้อมูลจากโมเดล (1)

  • LEFT JOIN ON: คำสั่ง SQL ที่รวมทุกแถวจาก entity ด้านซ้ายกับแถวที่ตรงกันจากตารางด้านขวา โดยอิงจาก ON key
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
Data Modeling ใน Snowflake เบื้องต้น

การดึงข้อมูลจากโมเดล (2)

  • COUNT: ฟังก์ชัน aggregate ใน 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
Data Modeling ใน Snowflake เบื้องต้น

การดึงข้อมูลจากโมเดล (3)

  • MAX: ฟังก์ชัน aggregate ใน 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;
Data Modeling ใน Snowflake เบื้องต้น

ภาพรวมของฟังก์ชัน

  • SELECT FROM: คำสั่ง SQL สำหรับดึงคอลัมน์จาก entity
  • JOIN ON: คำสั่ง SQL สำหรับรวมแถวจาก entity โดยอิงจากแอตทริบิวต์ที่เกี่ยวข้อง
  • LEFT JOIN ON: คำสั่ง SQL ที่รวมทุกแถวจาก entity ด้านซ้ายกับแถวที่ตรงกันจากตารางด้านขวา โดยอิงจาก ON key หากไม่มีข้อมูลที่ตรงกัน ผลลัพธ์จะยังคงแสดงแถวของ entity ด้านซ้ายโดยมีค่าว่างสำหรับแอตทริบิวต์ด้านขวา
  • COUNT: ฟังก์ชัน aggregate ใน SQL ที่คืนค่าจำนวนรายการในกลุ่ม
  • MAX: ฟังก์ชัน aggregate ใน SQL ที่หาค่าสูงสุดในชุดค่าของแอตทริบิวต์
  • GROUP BY: คำสั่ง SQL สำหรับรวมกลุ่มข้อมูลที่มีค่าเหมือนกัน
Data Modeling ใน 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;
Data Modeling ใน Snowflake เบื้องต้น

มาฝึกกันเถอะ!

Data Modeling ใน Snowflake เบื้องต้น

Preparing Video For Download...