数据金库

Snowflake 中的数据建模入门

Nuno Rocha

Director of Engineering

数据金库模型简介

  • 数据金库模型:一种侧重历史数据跟踪的建模技术,包含 Hub、Link 和 Satellite。

数据金库模型

Snowflake 中的数据建模入门

数据金库的组成

  • Hubs:用单一业务键表示唯一的业务概念。

数据金库模型:Hubs

Snowflake 中的数据建模入门

数据金库的组成(1)

  • Links:捕获 Hub 之间的关系与交互。

数据金库模型:Links

Snowflake 中的数据建模入门

数据金库的组成(2)

  • Satellites:存储与 Hub 和 Link 相关的描述性与历史信息。

数据金库模型:Satellites

Snowflake 中的数据建模入门

构建 Hub

高校数据金库:Hubs

Snowflake 中的数据建模入门

构建 Hub(1)

  • AUTOINCREMENT:属性,用于为每条新记录自动生成唯一、递增的数值。
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
Snowflake 中的数据建模入门

构建 Hub(2)

  • 创建包含自动生成的唯一数值主键和概念业务键的 Hub:
CREATE OR REPLACE TABLE hub_students (
    student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
    student_id NUMBER(10,0)
);
1 接下来列出标识每个概念的业务键,student_id 将标识每位学生。
Snowflake 中的数据建模入门

构建 Hub(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 中的数据建模入门

构建 Hub(4)

  • 创建新的班级 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)
);
  • 创建新的学校 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)

  • 创建新的开课 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)

  • 创建新的班级 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)
);
  • 创建新的学校 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 中的数据建模入门

术语与功能概览

  • 数据金库模型:一种侧重历史数据跟踪的建模技术,包含 Hub、Link 和 Satellite。
  • Hubs:用单一业务键表示唯一的业务概念。
  • Links:捕获 Hub 之间的关系与交互。
  • Satellites:存储与 Hub 和 Link 相关的描述性与历史信息。
  • 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...