Pencere Fonksiyonları

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

Emily Melhuish

Technical Curriculum Developer, Snowflake

Pencere Fonksiyonu nedir?

Satırları birleştirmeden satırlar arasında hesaplayın

  • Sonucu, çevresindeki küme üzerinde her satır için hesaplar — onun penceresi
  • GROUP BY'dan farklıdır: her satır girer, her satır çıkar
  • OVER ifadesiyle tanımlanır

3 ana kategori:

  • Sıralama: ROW_NUMBER(), RANK(), DENSE_RANK()
  • Toplama: SUM(), AVG(), COUNT() with OVER()
  • Gezinme: LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE()

Daha fazlası DataCamp'in Snowflake'te Pencere Fonksiyonları kursunda

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

OVER() İfadesi

SELECT shipment_id
, region
, delivery_days
, AVG(delivery_days) 
    OVER ( PARTITION BY region ORDER BY dispatched_at ) AS avg_days_in_region 
FROM shipments;
SHIPMENT_ID REGION DELIVERY_DAYS RUNNING_AVG_DAYS_IN_REGION
SHP-001 EMEA 3 3.00
SHP-002 EMEA 5 4.00
SHP-003 EMEA 4 4.00
SHP-004 APAC 6 6.00
Snowflake'te Veri Pipeline'larını Otomatikleştirme

ROW_NUMBER, RANK ve DENSE_RANK

SELECT
    shipment_id AS shipment, delivery_days AS days,
    ROW_NUMBER() OVER (ORDER BY delivery_days) AS row_number,
    RANK()       OVER (ORDER BY delivery_days) AS rank,
    DENSE_RANK() OVER (ORDER BY delivery_days) AS dense_rank
FROM shipments ORDER BY delivery_days;
SHIPMENT DELIVERY_DAYS ROW_NUMBER RANK DENSE_RANK
SHP-001 3 1 1 1
SHP-002 5 2 2 2
SHP-003 5 3 2 2
SHP-004 7 4 4 3
Snowflake'te Veri Pipeline'larını Otomatikleştirme

LAG ve LEAD

Girdi

SQL Lag ve Lead Girdisi

Çıktı

Lag ve Lead Çıktısı

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

Kümülatif Toplamlar ve Yuvarlanan Ortalamalar

pencere_çerçeveleri.png

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

ROWS ve RANGE çerçeveleri

  • ROWS BETWEEN: fiziksel satır konumlarını sayar — değerden bağımsız, tam ofsetler
-- ROWS: daima tam olarak N önceki fiziksel satırı seçer
SUM(credits) OVER (ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
-- Geçerli satır ve iki önceki dahil
  • RANGE BETWEEN: değerleri kullanır, ORDER BY değerleri eşit olan satırları birlikte gruplar
-- RANGE: sınır değerine eşit tüm satırları içerir
SUM(credits) OVER (ORDER BY month RANGE BETWEEN 2 PRECEDING AND CURRENT ROW)

Mantığınız değer sınırlarıyla ilgiliyse yalnızca RANGE kullanın

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

Hadi pratik yapalım!

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

Preparing Video For Download...