Kullanıcı Tanımlı Fonksiyonlar ve Saklı Yordamlar

Snowflake'te Veri Pipeline'larını Otomatikleştirme

Emily Melhuish

Technical Curriculum Developer, Snowflake

UDF Nedir?

nanobanana: half: Yan yana iki soyut asma kilit simgesi, biri açık biri kapalı, düz minimalist tasarım, DataCamp lacivert ve yeşil renkleri, beyaz arka plan, yazı yok

Kullanıcı Tanımlı Fonksiyonlar (UDF)

  • Yerleşik SQL fonksiyonlarının ötesinde özel işlemler
  • SQL, Python, Java, Scala veya JavaScript ile yazılır
  • DDL/DML yok — yalnızca değer döndürür
  • Standart veya SECURE (mantığı çağıranlardan gizler)
  • Satır başına skaler değer veya tablo döndürür
Snowflake'te Veri Pipeline'larını Otomatikleştirme

SQL UDF’leri

Önerilen başlangıç noktası

CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
  CASE WHEN days <= 2 THEN 'Express'
       WHEN days <= 5 THEN 'Standard'
       ELSE 'Delayed' END $$;
Snowflake'te Veri Pipeline'larını Otomatikleştirme

Python ve Diğer Programlama Dili UDF’leri

SQL yetersiz kaldığında

CREATE FUNCTION parse_weight(label STRING)
RETURNS FLOAT LANGUAGE PYTHON
RUNTIME_VERSION = '3.9' HANDLER = 'parse'
AS $$ def parse(s): return float(s.split('kg')[0]) $$;
Snowflake'te Veri Pipeline'larını Otomatikleştirme

Boru Hattında UDF’ler

 

 

mermaid: UDF dönüşüm katmanı boru hattı

UDF’ler dönüşüm katmanında yer alır: ham depolama ile raporlama arasında

  • SELECT içinde çağrılır; satır başına bir değer döndürür
  • Birden çok sorguda kullanılan iş mantığını merkezileştirir
  • Tanımı diğer kullanıcılardan gizlemek için SECURE ekleyin
Snowflake'te Veri Pipeline'larını Otomatikleştirme

Saklı Yordam Nedir?

  • Değişken tanımla, sonuçlarda döngü kur, hataları yönet
  • Birden çok tabloda Veri İşleme Dili (DML) çalıştır
  • CALL ile tek başına çağrılır

mermaid: datacamp-purple: saklı yordam orkestrasyon akışı

Snowflake'te Veri Pipeline'larını Otomatikleştirme

Saklı Yordam: Snowflake Scripting

CREATE OR REPLACE PROCEDURE archive_old_shipments(cutoff INT)
RETURNS STRING LANGUAGE SQL AS $$
DECLARE                                    -- 1. Declare variables
    rows_moved INT DEFAULT 0;
BEGIN                                      -- 2. Begin the procedure
    INSERT INTO shipments_archive          -- 3. Execute SQL commands
        SELECT * FROM shipments WHERE delivery_days > :cutoff;
    rows_moved := SQLROWCOUNT;
    DELETE FROM shipments WHERE delivery_days > :cutoff;
    RETURN 'Archived ' || rows_moved       -- 4. Return the result
        || ' shipments.';
END;                                       -- 5. End the procedure
$$;
Snowflake'te Veri Pipeline'larını Otomatikleştirme

UDF’ler vs Saklı Yordamlar

UDF Saklı Yordam
Nerede çağrılır SELECT CALL
Döndürür Satır başına bir değer Tek değer
DML çalıştırabilir Hayır Evet
Diller SQL, Python, Java, JS SQL (Snowflake Scripting), Python, Java, JS, Scala
Boru hattında kullanım Veriyi dönüştür Mantığı orkestre et
Snowflake'te Veri Pipeline'larını Otomatikleştirme

Hadi pratik yapalım!

Snowflake'te Veri Pipeline'larını Otomatikleştirme

Preparing Video For Download...