选择合适的方法

Snowflake 中的数据建模入门

Nuno Rocha

Director of Engineering

各建模技术的用例

实体-关系 (ER) 模型的用例

Snowflake 中的数据建模入门

各建模技术的用例 (1)

维度建模的用例

Snowflake 中的数据建模入门

各建模技术的用例 (2)

数据金库建模的用例

Snowflake 中的数据建模入门

技术考量

ER 模型的优缺点

Snowflake 中的数据建模入门

技术考量 (1)

维度模型的优缺点

Snowflake 中的数据建模入门

技术考量 (2)

数据金库的优缺点

Snowflake 中的数据建模入门

数据模型实战

维恩图中的模型

Snowflake 中的数据建模入门

数据模型实战 (1)

高校数据在维恩图中的模型

Snowflake 中的数据建模入门

从模型检索数据

  • 通过引用学生的枢纽实体及其卫星,检索学生明细数据:
SELECT
    hs.student_key,
    ss.student_name
FROM hub_students AS hs
    JOIN sat_student AS ss ON hs.student_key = ss.student_key;
Snowflake 中的数据建模入门

从模型检索数据 (1)

  • LEFT JOIN ON:SQL 子句,基于键在 ON 条件上,将左表的所有行与右表匹配行组合。
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
Snowflake 中的数据建模入门

从模型检索数据 (2)

  • COUNT:返回组内项目数量的聚合函数。
  • GROUP BY:按相同值分组聚合数据的子句。
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
Snowflake 中的数据建模入门

从模型检索数据 (3)

  • MAX:在一组值中查找某属性最大值的聚合函数。
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;
Snowflake 中的数据建模入门

函数概览

  • SELECT FROM:从实体提取列的命令
  • JOIN ON:基于关联属性合并实体行的子句
  • LEFT JOIN ON:基于键在 ON 条件上,将左表所有行与右表匹配行组合。无匹配时,仍返回左表行,右侧属性为空
  • COUNT:返回组内项目数量的聚合函数
  • MAX:在一组值中查找某属性最大值的聚合函数
  • GROUP BY:按相同值分组聚合数据的子句
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;
Snowflake 中的数据建模入门

Passons à la pratique !

Snowflake 中的数据建模入门

Preparing Video For Download...