Přiřazení čísel řádků

Window Functions ve Snowflake

Jake Roach

Field Data Engineer

Okenní funkce

Slouží k výpočtu přes „okno" řádků a vrátí hodnotu pro každý řádek

$$

$$

Pořadí

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

Agregace

  • COUNT, SUM, AVG
Window Functions ve Snowflake

Okenní funkce

Okenní funkce pomáhají odpovídat na nové typy otázek!

$$

  • Který koncert je na každém místě třetí nejpopulárnější?
  • Jak se prodeje položky měnily den za dnem?
  • Roste nebo klesá můj klouzavý průměr sledovanosti?
Window Functions ve Snowflake

Tradiční funkce

Tradiční agregační funkce vyžadují klauzuli GROUP BY.

Vizuální znázornění agregační funkce.

Window Functions ve Snowflake

Okenní funkce

Vizuální znázornění výstupu okenní funkce.

                                                 Nevyžadují GROUP BY!

Window Functions ve Snowflake

Přiřazení čísel řádků

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

Funkce ROW_NUMBER() přiřadí číslo řádku každému záznamu v sadě výsledků

$$

  • OVER() definuje okno
  • Přejmenujte výsledný sloupec
  • Žádné GROUP BY!
Window Functions ve Snowflake

Návštěvnost koncertů

SELECT
    customer_id,
    event_name,

    -- Assign a row number to each 
    -- record in the result set

    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

$$

$$

Nezapomeňte na syntaxi: ROW_NUMBER() OVER( ORDER BY ...)!

Window Functions ve Snowflake

Pojďme si procvičit!

Window Functions ve Snowflake

Preparing Video For Download...