Rijnummers toekennen

Vensterfuncties in Snowflake

Jake Roach

Field Data Engineer

Vensterfuncties

Gebruikt om een berekening te doen over een "venster" van rijen en een waarde te geven voor elke rij

$$

$$

Rangschikking

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

Aggregatie

  • COUNT, SUM, AVG
Vensterfuncties in Snowflake

Vensterfuncties

Vensterfuncties helpen ons nieuwe soorten vragen te beantwoorden!

$$

  • Wat is het derde populairste concert per locatie?
  • Hoe varieerden de verkopen van dag tot dag?
  • Gaat mijn rollend gemiddelde van kijkcijfers omhoog of omlaag?
Vensterfuncties in Snowflake

Traditionele functies

Traditionele aggregatiefuncties vereisen een GROUP BY-clausule.

Een visuele weergave van een aggregatiefunctie.

Vensterfuncties in Snowflake

Vensterfuncties

Een visuele weergave van de output van een vensterfunctie.

                                                 Vereisen geen GROUP BY!

Vensterfuncties in Snowflake

Rijnummers toekennen

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

De functie ROW_NUMBER() kent elk record in een result set een rijnummer toe

$$

  • OVER() bepaalt het venster
  • Geef de kolom een alias
  • Geen GROUP BY!
Vensterfuncties in Snowflake

Concertbezoek

SELECT
    customer_id,
    event_name,

    -- Geef elk record
    -- een rijnummer

    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

$$

$$

Onthoud de syntax: ROW_NUMBER() OVER( ORDER BY ...)!

Vensterfuncties in Snowflake

Laten we oefenen!

Vensterfuncties in Snowflake

Preparing Video For Download...