Satır numaraları atama

Snowflake'ta Pencere Fonksiyonları

Jake Roach

Field Data Engineer

Pencere fonksiyonları

Her satır için bir değer döndürmek üzere bir "satır penceresi" üzerinde hesaplama yapmak için kullanılır

$$

$$

Sıralama

  • RANK, DENSE_RANK
  • FIRST_VALUE, LAST_VALUE, NTH_VALUE
  • LAG, LEAD

Toplama

  • COUNT, SUM, AVG
Snowflake'ta Pencere Fonksiyonları

Pencere fonksiyonları

Pencere fonksiyonları, yeni türde sorular sormamıza yardımcı olur!

$$

  • Her mekandaki üçüncü en popüler konser nedir?
  • Bir ürünün satışları günden güne nasıl değişti?
  • İzleyici sayımın hareketli ortalaması artıyor mu yoksa azalıyor mu?
Snowflake'ta Pencere Fonksiyonları

Geleneksel fonksiyonlar

Geleneksel toplama fonksiyonları GROUP BY ifadesine sahip olmalıdır.

Bir toplama fonksiyonunun görsel temsili.

Snowflake'ta Pencere Fonksiyonları

Pencere fonksiyonları

Bir pencere fonksiyonunun çıktısının görsel temsili.

                                                 GROUP BY gerektirmez!

Snowflake'ta Pencere Fonksiyonları

Satır numaraları atama

SELECT
    <other-fields>,

    ROW_NUMBER() OVER(
        ORDER BY <field>
    ) AS <alias>

FROM SCHEMA.table

...;

ROW_NUMBER() fonksiyonu, sonuç kümesindeki her kayda bir satır numarası atar

$$

  • OVER() pencereyi tanımlar
  • Sonuç sütununa takma ad verin
  • GROUP BY yok!
Snowflake'ta Pencere Fonksiyonları

Konser katılımı

SELECT
    customer_id,
    event_name,

    -- Sonuç kümesindeki her kayda bir 
    -- satır numarası atayın

    ROW_NUMBER() OVER(
        ORDER BY time_spent_minutes
    ) AS row_num

FROM concerts.attendance;
  customer_id  |  event_name  |  row_num  
 ------------- | ------------ | ---------
     1931292   |  Music Fest  |    1    
     5462384   |  Elton John  |    2    
     7732891   |  Coachella   |    3    
     3124888   |  Porch Fest  |    4

$$

$$

Sözdizimini hatırlayın: ROW_NUMBER() OVER( ORDER BY ...)!

Snowflake'ta Pencere Fonksiyonları

Hadi pratik yapalım!

Snowflake'ta Pencere Fonksiyonları

Preparing Video For Download...