Dimensional modeling

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

Nuno Rocha

Director of Engineering

แนะนำ Dimensional data model

  • Dimensional modeling: เทคนิคการจัดโครงสร้างข้อมูลที่แยกการวัดผล (facts) ออกจากรายละเอียดเชิงอธิบาย (dimensions) เพื่อเพิ่มประสิทธิภาพการรายงานและการวิเคราะห์

Dimensional model

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

แนะนำ Dimensional data model (1)

  • Dimensions: เอนทิตีที่มีข้อมูลเชิงหมวดหมู่ใน dimensional model
  • Facts: เอนทิตีที่บันทึกและวัดปริมาณกิจกรรมภายในหมวดหมู่ของ dimensions

Dimensional college model

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

Star schema ของ dimensional model

Dimensional star model

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

Star schema ของ dimensional model

  • Snowflake Data Warehouse: บริการจัดเก็บและวิเคราะห์ข้อมูลบนคลาวด์
  • Snowflake Schema: วิธีจัดระเบียบข้อมูลใน dimensional model ที่รองรับ sub-dimensions

Snowflake, data warehouse vs dimensional model

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

Snowflake schema ของ dimensional model

Dimensional snowflake model

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

การกำหนด dimensions

  • เปลี่ยนชื่อเอนทิตีเป็น dim_EntityName เพื่อความชัดเจน ตามรูปแบบของ dimensions ในโมเดล:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Data Modeling ใน Snowflake เบื้องต้น

การกำหนด date dimension

  • สร้างตาราง dim_date เพื่อเก็บวันที่สำคัญที่เกี่ยวข้องกับการลงทะเบียนเรียนของนักศึกษา:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การกำหนด enrollments fact

  • สร้างเอนทิตี fact ที่มีการอ้างอิงไปยัง dimensions ทั้งหมด:
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)
);
Data Modeling ใน Snowflake เบื้องต้น

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

College dimensional data model

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

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

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Joining to get student names
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Joining to get class names
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Joining to filter for the 'Science' school
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Joining to restrict data to the year 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Data Modeling ใน Snowflake เบื้องต้น

ภาพรวมคำศัพท์และฟังก์ชัน

  • Dimensional modeling: เทคนิคการจัดโครงสร้างข้อมูลที่แยกการวัดผล (facts) ออกจากรายละเอียดเชิงอธิบาย (dimensions) เพื่อเพิ่มประสิทธิภาพการรายงานและการวิเคราะห์
  • Dimensions: เอนทิตีที่มีข้อมูลเชิงหมวดหมู่ใน dimensional model
  • Facts: เอนทิตีที่บันทึกและวัดปริมาณกิจกรรมภายในหมวดหมู่ของ dimensions
  • ALTER TABLE: คำสั่ง SQL ที่ใช้แก้ไขโครงสร้างของเอนทิตีที่มีอยู่
  • RENAME TO: คำสั่ง SQL ที่ใช้ร่วมกับ ALTER TABLE เพื่อเปลี่ยนชื่อเอนทิตี
  • JOIN ON: คำสั่ง SQL สำหรับรวมแถวจากหลายตาราง โดยอิงตามคอลัมน์ที่เชื่อมโยงกัน
  • WHERE: คำสั่ง SQL สำหรับกรองระเบียนตามเงื่อนไขที่กำหนด
  • AND: ตัวดำเนินการตรรกะที่ใช้ร่วมกับ WHERE เพื่อรวมหลายเงื่อนไข
Data Modeling ใน Snowflake เบื้องต้น

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

-- Modifying a entity
ALTER TABLE table_name 
RENAME TO new_name;
-- Querying data from merged entities filtered by specific conditions
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;
Data Modeling ใน Snowflake เบื้องต้น

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

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

Preparing Video For Download...