Data Vault

Snowflake 資料建模入門

Nuno Rocha

Director of Engineering

Data vault 模型入門

  • Data vault 模型:一種著重歷史追蹤的建模技術,核心元件為 hubs、links、satellites。

Data vault 模型

Snowflake 資料建模入門

Data vault 的元件

  • Hubs:以單一 business key 表示唯一的商業概念。

Data vault 模型:hubs

Snowflake 資料建模入門

Data vault 的元件(1)

  • Links:紀錄 hubs 之間的關係與互動。

Data vault 模型:Links

Snowflake 資料建模入門

Data vault 的元件(2)

  • Satellites:儲存與 hubs、links 相關的描述與歷史細節。

Data vault 模型:Satellites

Snowflake 資料建模入門

建立 hubs

大學資料倉儲 hubs

Snowflake 資料建模入門

建立 hubs(1)

  • AUTOINCREMENT:欄位屬性,為每筆新列自動產生唯一且遞增的數值。
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Snowflake 資料建模入門

建立 hubs(2)

  • 建立新的 hub,包含自動產生的唯一數值鍵與該 hub 的概念 ID:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0)
);
1 接著列出識別各概念的 business key,其中 student_id 會識別每位學生。
Snowflake 資料建模入門

建立 hubs(3)

  • 加入歷史追蹤欄位:
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)
);
Snowflake 資料建模入門

建立 hubs(4)

  • 建立新的 classes hub:
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)
);
  • 建立新的 schools hub:
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)
);
Snowflake 資料建模入門

建立 links

大學資料倉儲 links

Snowflake 資料建模入門

建立 links(1)

  • 建立具有自動產生唯一數值鍵的 link 實體:
CREATE OR REPLACE TABLE link_enrollments (
    link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Snowflake 資料建模入門

建立 links(2)

  • 加入與其他實體的關聯:
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)
);
Snowflake 資料建模入門

建立 links(3)

  • 加入歷史追蹤欄位:
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)
);
Snowflake 資料建模入門

建立 links(4)

  • 建立新的 offerings link 實體:
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)
);
Snowflake 資料建模入門

建立 satellites

大學資料倉儲 satellites

Snowflake 資料建模入門

建立 satellites(1)

  • 建立新的 satellite,列出所有概念屬性:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255)
);
Snowflake 資料建模入門

建立 satellites(2)

  • 加入歷史追蹤欄位:
CREATE OR REPLACE TABLE sat_student (
    name VARCHAR(255),
    email VARCHAR(255),
    load_date TIMESTAMP,
    record_source VARCHAR(255)
);
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)
);
Snowflake 資料建模入門

建立 satellites(4)

  • 建立新的 class satellite:
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)
);
  • 建立新的 school satellite:
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)
);
Snowflake 資料建模入門

術語與功能總覽

  • Data vault 模型:著重歷史追蹤的建模技術,使用 hubs、links、satellites。
  • Hubs:以單一 business key 表示唯一商業概念。
  • Links:捕捉 hubs 之間的關係與互動。
  • Satellites:儲存與 hubs、links 相關的描述與歷史細節。
  • CREATE OR REPLACE TABLE:建立或取代表結構的 SQL 指令。
  • PRIMARY KEY:將欄位定義為唯一識別碼的 SQL 子句。
  • AUTOINCREMENT:為每筆新列自動產生唯一遞增數值的屬性。
  • FOREIGN KEY (...) REFERENCES (...):在兩個資料表之間建立關聯的 SQL 子句。
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)
);
Snowflake 資料建模入門

一起來練習吧!

Snowflake 資料建模入門

Preparing Video For Download...