Data Vault

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

Nuno Rocha

Director of Engineering

แนะนำ Data vault model

  • Data vault model: เทคนิคการสร้างโมเดลที่เน้นการติดตามข้อมูลในเชิงประวัติศาสตร์ โดยใช้ hubs, links และ satellites เป็นองค์ประกอบหลัก

Data vault model

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

องค์ประกอบของ data vault

  • Hubs: แทนแนวคิดทางธุรกิจที่ไม่ซ้ำกัน โดยใช้ business key เพียงหนึ่งรายการ

Data vault model: hubs

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

องค์ประกอบของ data vault (1)

  • Links: บันทึกความสัมพันธ์และการเชื่อมต่อระหว่าง hubs

Data vault model: Links

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

องค์ประกอบของ data vault (2)

  • Satellites: เก็บรายละเอียดเชิงพรรณนาและประวัติที่เกี่ยวข้องกับ hubs และ links

Data vault model: Satellites

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

การสร้าง hubs

College data vault hubs

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

การสร้าง hubs (1)

  • AUTOINCREMENT: คุณสมบัติที่สร้างค่าตัวเลขไม่ซ้ำกันโดยอัตโนมัติ โดยเพิ่มค่าตามลำดับสำหรับแต่ละแถวใหม่
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง hubs (2)

  • สร้าง hub ใหม่พร้อม numerical key ที่ไม่ซ้ำกันซึ่งสร้างโดยอัตโนมัติ และ concept id ของ hub:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0)
);
1 ต่อมาเราระบุ business key ที่ใช้ระบุแต่ละแนวคิด โดย student_id จะเป็นตัวระบุนักเรียนแต่ละคน
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง hubs (3)

  • เพิ่ม attribute สำหรับการติดตามประวัติ:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง hubs (4)

  • สร้าง hub ใหม่สำหรับ classes:
CREATE OR REPLACE TABLE hub_classes (
    class_key NUMBER(10,0)
          AUTOINCREMENT 
          PRIMARY KEY,
    class_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
  • สร้าง hub ใหม่สำหรับ schools:
CREATE OR REPLACE TABLE hub_schools (
    school_key NUMBER(10,0) 
          AUTOINCREMENT 
          PRIMARY KEY,
    school_id NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง links

College data vault links

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

การสร้าง links (1)

  • สร้าง entity ของ link พร้อม numerical key ที่ไม่ซ้ำกันซึ่งสร้างโดยอัตโนมัติ:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง links (2)

  • เพิ่มความสัมพันธ์กับ entity อื่น:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_key NUMBER(10,0),
    class_key NUMBER(10,0),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง links (3)

  • เพิ่ม attribute สำหรับการติดตามประวัติ:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_key NUMBER(10,0),
    class_key NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง links (4)

  • สร้าง entity ของ link ใหม่สำหรับ offerings:
CREATE OR REPLACE TABLE link_offerings (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    class_key NUMBER(10,0),
    school_key NUMBER(10,0),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (class_key) REFERENCES hub_classes(class_key),
    FOREIGN KEY (school_key) REFERENCES hub_schools(school_key)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง satellites

College data vault satellites

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

การสร้าง satellites (1)

  • สร้าง entity ของ satellite ใหม่พร้อมรายการ attribute ทั้งหมดของแนวคิดนั้น:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง satellites (2)

  • เพิ่ม attribute สำหรับการติดตามประวัติ:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง satellites (3)

  • เพิ่มการเชื่อมโยงระหว่าง satellite กับ hub ที่เกี่ยวข้อง:
CREATE OR REPLACE TABLE sat_student (
    student_key NUMBER(10,0),
    name VARCHAR(255),
    email VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (student_key) REFERENCES hub_students(student_key)
);
Data Modeling ใน Snowflake เบื้องต้น

การสร้าง satellites (4)

  • สร้าง satellite ใหม่สำหรับ class:
CREATE OR REPLACE TABLE sat_class (
    class_key NUMBER(10,0),
    class_name VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (class_key) 
    REFERENCES hub_classes(class_key)
);
  • สร้าง satellite ใหม่สำหรับ school:
CREATE OR REPLACE TABLE sat_school (
    school_key NUMBER(10,0),
    school_name VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255),
    FOREIGN KEY (school_key) 
    REFERENCES hub_schools(school_key)
);
Data Modeling ใน Snowflake เบื้องต้น

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

  • Data vault model: เทคนิคการสร้างโมเดลที่เน้นการติดตามข้อมูลในเชิงประวัติศาสตร์ โดยใช้ hubs, links และ satellites
  • Hubs: แทนแนวคิดทางธุรกิจที่ไม่ซ้ำกัน โดยใช้ business key เพียงหนึ่งรายการ
  • Links: บันทึกความสัมพันธ์และการเชื่อมต่อระหว่าง hubs
  • Satellites: เก็บรายละเอียดเชิงพรรณนาและประวัติที่เกี่ยวข้องกับ hubs และ links
  • CREATE OR REPLACE TABLE: คำสั่ง SQL สำหรับสร้างหรือแทนที่โครงสร้างตาราง
  • PRIMARY KEY: clause ของ SQL สำหรับกำหนดคอลัมน์เป็น identifier ที่ไม่ซ้ำกัน
  • AUTOINCREMENT: คุณสมบัติที่สร้างค่าตัวเลขไม่ซ้ำกันโดยอัตโนมัติ โดยเพิ่มค่าตามลำดับสำหรับแต่ละแถวใหม่
  • FOREIGN KEY (...) REFERENCES (...): clause ของ SQL สำหรับสร้างการเชื่อมโยงระหว่างสองตาราง
Data Modeling ใน Snowflake เบื้องต้น

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

CREATE OR REPLACE TABLE table_name (
      -- Create an auto generated unique value as primary key
      unique_key column_datatype AUTOINCREMENT PRIMARY KEY,
      other_business_key column_datatype,
      foreign_column column_datatype,
      other_foreign_column column_datatype,
      -- Adding relationship with other entities
      FOREIGN KEY(foreign_column) REFERENCES foreign_table(PK_from_foreign_table),
      FOREIGN KEY(other_foreign) REFERENCES foreign_table(PK_from_other_foreign)
);
Data Modeling ใน Snowflake เบื้องต้น

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

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

Preparing Video For Download...