Objek Data Snowflake

Pengantar Pemodelan Data di Snowflake

Nuno Rocha

Director of Engineering

Gudang data

Representasi gudang data

Pengantar Pemodelan Data di Snowflake

Gudang tradisional vs. virtual

Gudang data virtual Snowflake

Pengantar Pemodelan Data di Snowflake

Gudang tradisional vs. virtual (1)

Gudang data virtual Snowflake vs. gudang data tradisional

Pengantar Pemodelan Data di Snowflake

Gudang tradisional vs. virtual (2)

  • CREATE WAREHOUSE: Klausa Snowflake untuk menyiapkan sumber daya komputasi virtual untuk pemrosesan data.
  • USE WAREHOUSE: Klausa untuk menetapkan gudang data aktif pada sesi saat ini.

Gudang data virtual Snowflake vs. gudang data tradisional

Pengantar Pemodelan Data di Snowflake

Skema dan tabel

Database, Skema, Tabel

Pengantar Pemodelan Data di Snowflake

Skema dan tabel (1)

UI Snowflake

Pengantar Pemodelan Data di Snowflake

Skema dan tabel (2)

  • CREATE DATABASE: Klausa Snowflake untuk membuat database baru guna mengelola objek data.
  • CREATE SCHEMA: Klausa untuk membuat wadah yang mengelompokkan tabel dan view.
  • CREATE TABLE: Perintah untuk membuat struktur tabel dan kolom data dalam skema tertentu.

UI Snowflake, Membuat elemen

Pengantar Pemodelan Data di Snowflake

View

Visualisasi view

  • VIEW:
    • Bertindak sebagai entitas virtual.
    • Menghindari duplikasi data.
    • Menghemat penyimpanan dan menjaga konsistensi.
    • Menyajikan data dinamis sesuai logika kueri.
Pengantar Pemodelan Data di Snowflake

View (1)

  • Contoh VIEW yang merangkum pesanan prioritas pelanggan
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;
Pengantar Pemodelan Data di Snowflake

Materialized view

View prahitung

  • MATERIALIZED VIEW:
    • Menyimpan hasil prahitung.
    • Meningkatkan kinerja kueri dengan menyimpan hasil komputasi.
    • Mengurangi waktu pemrosesan kueri.
    • Menjaga snapshot data yang diperbarui untuk diambil kapan saja.
    • Mengemas operasi kompleks untuk pemodelan data yang ringkas.
Pengantar Pemodelan Data di 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;
Pengantar Pemodelan Data di Snowflake

Ikhtisar terminologi

  • Gudang data (tradisional): Sistem terpusat untuk menyimpan dan menganalisis data besar pada satu server.
  • Gudang data virtual (di Snowflake): Sumber daya komputasi cloud yang fleksibel dan skalabel untuk memroses dan menganalisis data.
  • Database: Di Snowflake, wadah utama data yang berisi skema.
  • Skema: Kumpulan struktur logis yang memuat tabel, view, dll.
  • Tabel: Representasi entitas di database; struktur penyimpanan dasar dalam baris dan kolom di dalam skema.
  • View: Kueri tersimpan yang menyajikan data secara virtual tanpa menyimpan data terpisah.
  • Materialized View: Versi view yang menyimpan hasil kueri secara fisik untuk akses lebih cepat.
Pengantar Pemodelan Data di Snowflake

Ikhtisar fungsi

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);
Pengantar Pemodelan Data di Snowflake

Templat view (materialized) contoh

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;
Pengantar Pemodelan Data di Snowflake

Ayo berlatih!

Pengantar Pemodelan Data di Snowflake

Preparing Video For Download...