Snowflake 数据对象

Snowflake 中的数据建模入门

Nuno Rocha

Director of Engineering

数据仓库

数据仓库示意

Snowflake 中的数据建模入门

传统 vs. 虚拟仓库

Snowflake 虚拟数据仓库

Snowflake 中的数据建模入门

传统 vs. 虚拟仓库 (1)

Snowflake 虚拟数据仓库 vs. 传统数据仓库

Snowflake 中的数据建模入门

传统 vs. 虚拟仓库 (2)

  • CREATE WAREHOUSE:在 Snowflake 中创建用于数据处理的虚拟计算资源。
  • USE WAREHOUSE:设置当前会话使用的数据仓库。

Snowflake 虚拟数据仓库 vs. 传统数据仓库

Snowflake 中的数据建模入门

模式与表

数据库、模式、表

Snowflake 中的数据建模入门

模式与表 (1)

Snowflake 界面

Snowflake 中的数据建模入门

模式与表 (2)

  • CREATE DATABASE:在 Snowflake 中创建用于组织数据对象的新数据库。
  • CREATE SCHEMA:定义用于分组表和视图的容器。
  • CREATE TABLE:在指定模式内创建表结构和列。

Snowflake 界面,创建元素

Snowflake 中的数据建模入门

视图

视图可视化

  • VIEWS(视图)
    • 类似虚拟实体。
    • 避免数据重复。
    • 节省存储并确保一致性。
    • 基于查询逻辑动态展示数据。
Snowflake 中的数据建模入门

视图 (1)

  • 示例视图:汇总客户紧急订单
CREATE OR REPLACE VIEW customer_urgent_orders AS
SELECT c.c_name AS customer_name, 
    COUNT(DISTINCT o_orderkey) AS order_count,
    SUM(o_totalprice) AS total_price
FROM customer AS c
    JOIN orders AS o 
    ON c.c_custkey = o.o_custkey
WHERE o.o_orderpriority = '1-URGENT'
GROUP BY c.c_name;
ORDER BY total_price DESC;
Snowflake 中的数据建模入门

物化视图

预计算视图

  • MATERIALIZED VIEWS(物化视图)
    • 存储预计算结果。
    • 通过保存计算提升查询性能。
    • 减少查询时间。
    • 维护可随时检索的刷新快照。
    • 封装复杂操作,简化建模。
Snowflake 中的数据建模入门

物化视图 (1)

CREATE OR REPLACE MATERIALIZED VIEW top_customers AS
SELECT o.o_custkey AS customer_id,
    c.c_name AS customer_name,
    CASE 
        WHEN SUM(o.o_totalprice) > 5000000 THEN 'Over Price'
        WHEN SUM(o.o_totalprice) > 3000000 THEN 'Top Price'
        WHEN SUM(o.o_totalprice) > 2000000 THEN 'Average Price'
        ELSE 'Review Price'
    END AS total_price
FROM customer AS c
    JOIN orders AS o ON c.c_custkey = o.o_custkey
GROUP BY o.o_custkey, c.c_name
HAVING total_price > 2000000;
Snowflake 中的数据建模入门

术语概览

  • 数据仓库(传统):以单台服务器为中心,集中存储与分析海量数据。
  • 虚拟数据仓库(Snowflake):用于处理与分析的云端计算资源集合,灵活可扩展。
  • 数据库:Snowflake 中的顶层容器,包含模式。
  • 模式(Schema):逻辑结构集合,包含表、视图等。
  • :数据库中的实体表示;按行列存储,位于模式内。
  • 视图:保存的查询;以虚拟实体呈现数据,不单独存储。
  • 物化视图:视图的存储版本,物理保存结果以加速访问。
Snowflake 中的数据建模入门

功能概览

CREATE OR REPLACE WAREHOUSE data_warehouse_name;
USE WAREHOUSE data_warehouse_name;
CREATE OR REPLACE DATABASE database_name;
CREATE OR REPLACE SCHEMA schema_name;
CREATE OR REPLACE TABLE table_name(
    column_name datatype,
    other_columns datatype);
Snowflake 中的数据建模入门

示例(物化)视图模板

CREATE OR REPLACE VIEW view_name AS
SELECT column_name, 
    SUM(column_name2) AS sum_alias,
    CASE WHEN column_name5   condition   value THEN assigned_value
        ELSE another_assigned_value
    END AS case_alias
FROM table_name AS table_alias
    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
GROUP BY column_name;
Snowflake 中的数据建模入门

开始练习吧!

Snowflake 中的数据建模入门

Preparing Video For Download...