Snowflake Data Objects

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

Nuno Rocha

Director of Engineering

Data warehouse

ภาพแทน Data warehouse

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

Warehouse แบบดั้งเดิม vs. แบบ Virtual

Virtual data warehouse ของ Snowflake

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

Warehouse แบบดั้งเดิม vs. แบบ Virtual (1)

Virtual data warehouse ของ Snowflake เทียบกับ data warehouse แบบดั้งเดิม

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

Warehouse แบบดั้งเดิม vs. แบบ Virtual (2)

  • CREATE WAREHOUSE: คำสั่ง Snowflake สำหรับสร้างทรัพยากรการประมวลผล virtual เพื่อใช้งาน data processing
  • USE WAREHOUSE: คำสั่ง Snowflake สำหรับกำหนด data warehouse ที่ใช้งานอยู่ใน session ปัจจุบัน

Virtual data warehouse ของ Snowflake เทียบกับ data warehouse แบบดั้งเดิม

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

Schema และตาราง

Database, Schema, ตาราง

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

Schema และตาราง (1)

Snowflake UI

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

Schema และตาราง (2)

  • CREATE DATABASE: คำสั่ง Snowflake สำหรับสร้าง database ใหม่เพื่อจัดระเบียบ data object
  • CREATE SCHEMA: คำสั่ง Snowflake สำหรับสร้าง container สำหรับจัดกลุ่มตารางและ view
  • CREATE TABLE: คำสั่ง Snowflake สำหรับสร้างโครงสร้างตารางและคอลัมน์ข้อมูลใน schema ที่กำหนด

Snowflake UI การสร้าง element

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

View

ภาพประกอบ View

  • VIEWS:
    • ทำงานเหมือน virtual entity
    • ป้องกันข้อมูลซ้ำซ้อน
    • ประหยัดพื้นที่จัดเก็บและรักษาความสอดคล้องของข้อมูล
    • แสดงข้อมูลแบบ dynamic ตาม logic ของ query
Data Modeling ใน Snowflake เบื้องต้น

View (1)

  • ตัวอย่าง VIEW สรุปคำสั่งซื้อเร่งด่วนของลูกค้า
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;
Data Modeling ใน Snowflake เบื้องต้น

Materialized View

View ที่คำนวณผลล่วงหน้า

  • MATERIALIZED VIEWS:
    • จัดเก็บผลลัพธ์ที่คำนวณไว้ล่วงหน้า
    • เพิ่มประสิทธิภาพ query โดยบันทึกผลการประมวลผล
    • ลดเวลาในการประมวลผล query
    • เก็บ snapshot ข้อมูลที่อัปเดตอยู่เสมอสำหรับเรียกใช้ได้ทุกเมื่อ
    • รวบรวม operation ที่ซับซ้อนเพื่อให้ data modeling ง่ายขึ้น
Data Modeling ใน Snowflake เบื้องต้น

Materialized View (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;
Data Modeling ใน Snowflake เบื้องต้น

สรุปคำศัพท์

  • Data warehouse (แบบดั้งเดิม): ระบบรวมศูนย์สำหรับจัดเก็บและวิเคราะห์ข้อมูลขนาดใหญ่โดยใช้เซิร์ฟเวอร์เดียว
  • Virtual data warehouse (ใน Snowflake): ชุดทรัพยากรประมวลผลบน cloud ที่ยืดหยุ่นและปรับขนาดได้ ใช้สำหรับประมวลผลและวิเคราะห์ข้อมูลโดยเฉพาะ
  • Database: ใน Snowflake คือ container หลักสำหรับเก็บข้อมูล โดยบรรจุ schema ต่าง ๆ ไว้ภายใน
  • Schema: กลุ่มของโครงสร้างเชิงตรรกะที่บรรจุตาราง view และอื่น ๆ
  • Table: ตัวแทนของ entity ใน database เป็นโครงสร้างจัดเก็บข้อมูลพื้นฐานที่จัดในแถวและคอลัมน์ภายใน schema
  • View: คิวรีที่บันทึกไว้ซึ่งนำเสนอข้อมูลในรูป virtual entity โดยไม่จัดเก็บข้อมูลแยกต่างหาก
  • Materialized View: View ที่บันทึกผลลัพธ์ของ query ไว้จริงเพื่อให้เข้าถึงได้รวดเร็วขึ้น
Data Modeling ใน 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);
Data Modeling ใน Snowflake เบื้องต้น

ตัวอย่าง template สำหรับ (Materialized) View

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;
Data Modeling ใน Snowflake เบื้องต้น

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

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

Preparing Video For Download...