Snowflake Veri Nesneleri

Snowflake ile Veri Modellemesine Giriş

Nuno Rocha

Director of Engineering

Veri ambarı

Veri ambarı temsili

Snowflake ile Veri Modellemesine Giriş

Geleneksel vs. sanal ambar

Snowflake sanal veri ambarı

Snowflake ile Veri Modellemesine Giriş

Geleneksel vs. sanal ambar (1)

Snowflake sanal veri ambarı vs. geleneksel veri ambarı

Snowflake ile Veri Modellemesine Giriş

Geleneksel vs. sanal ambar (2)

  • CREATE WAREHOUSE: Veri işleme için sanal bir hesaplama kaynağı oluşturur.
  • USE WAREHOUSE: Geçerli oturum için etkin veri ambarını belirtir.

Snowflake sanal veri ambarı vs. geleneksel veri ambarı

Snowflake ile Veri Modellemesine Giriş

Şemalar ve tablolar

Veritabanı, Şemalar, Tablolar

Snowflake ile Veri Modellemesine Giriş

Şemalar ve tablolar (1)

Snowflake Arayüzü

Snowflake ile Veri Modellemesine Giriş

Şemalar ve tablolar (2)

  • CREATE DATABASE: Veri nesnelerini düzenlemek için yeni bir veritabanı oluşturur.
  • CREATE SCHEMA: Tabloları ve görünümleri gruplamak için bir kapsayıcı tanımlar.
  • CREATE TABLE: Belirli bir şemada yeni tablo yapısı ve sütunlar oluşturur.

Snowflake Arayüzü, Öğeler oluşturma

Snowflake ile Veri Modellemesine Giriş

Görünümler

Görünüm görselleştirmesi

  • VIEWS (Görünümler):
    • Sanal varlık gibi davranır.
    • Veri kopyalarını önler.
    • Depolama alanı tasarrufu ve tutarlılık sağlar.
    • Sorgu mantığına göre veriyi dinamik sunar.
Snowflake ile Veri Modellemesine Giriş

Görünümler (1)

  • Müşterilerin acil siparişlerini özetleyen örnek 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;
Snowflake ile Veri Modellemesine Giriş

Maddileştirilmiş görünümler

Ön-hesaplanmış görünüm

  • MATERIALIZED VIEWS (Maddileştirilmiş görünümler):
    • Önceden hesaplanmış sonuçları saklar.
    • Hesaplanmış işlemleri depolayarak sorgu performansını artırır.
    • Sorgu süresini azaltır.
    • Her an erişim için yenilenen bir anlık görüntü tutar.
    • Karmaşık işlemleri kapsülleyerek modellemeyi sadeleştirir.
Snowflake ile Veri Modellemesine Giriş

Maddileştirilmiş görünümler (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 ile Veri Modellemesine Giriş

Terimler özeti

  • Veri ambarı (geleneksel): Tek sunuculu kurulumla büyük veriyi depolayan ve analiz eden merkezi sistem.
  • Sanal veri ambarı (Snowflake): İşleme ve analiz için ölçeklenebilir bulut bilişim kaynakları kümesi.
  • Veritabanı: Snowflake'te şemaları barındıran birincil kapsayıcı.
  • Şema: Tablolar, görünümler vb. içeren mantıksal yapılar topluluğu.
  • Tablo: Veritabanındaki bir varlığın temsili; satır-sütun yapısında temel depolama.
  • Görünüm: Veriyi ayrı saklamadan sunan, kaydedilmiş sorgu.
  • Maddileştirilmiş Görünüm: Daha hızlı erişim için sorgu sonucunu fiziksel olarak saklayan görünüm.
Snowflake ile Veri Modellemesine Giriş

Fonksiyon özeti

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 ile Veri Modellemesine Giriş

Örnek (maddileştirilmiş) görünüm şablonu

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 ile Veri Modellemesine Giriş

Hadi pratik yapalım!

Snowflake ile Veri Modellemesine Giriş

Preparing Video For Download...