Przypisywanie numerów wierszy

Funkcje okna w Snowflake

Jake Roach

Field Data Engineer

Funkcje okna

Służy do wykonywania obliczeń na „oknie" wierszy i zwracania wartości dla każdego wiersza

$$

$$

Rankingowe

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

Agregujące

  • COUNT, SUM, AVG
Funkcje okna w Snowflake

Funkcje okna

Funkcje okna pozwalają odpowiadać na nowe typy pytań!

$$

  • Który koncert jest trzecim najpopularniejszym w danym miejscu?
  • Jak zmieniała się sprzedaż artykułu z dnia na dzień?
  • Czy średnia krocząca oglądalności rośnie, czy spada?
Funkcje okna w Snowflake

Tradycyjne funkcje

Tradycyjna funkcja agregująca wymaga klauzuli GROUP BY.

Wizualna reprezentacja funkcji agregującej.

Funkcje okna w Snowflake

Funkcje okna

Wizualna reprezentacja wyniku działania funkcji okna.

                                                 Nie wymagają GROUP BY!

Funkcje okna w Snowflake

Przypisywanie numerów wierszy

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

Funkcja ROW_NUMBER() przypisuje numer wiersza każdemu rekordowi w zbiorze wyników

$$

  • OVER() definiuje okno
  • Należy nadać alias kolumnie wynikowej
  • Brak GROUP BY!
Funkcje okna w Snowflake

Frekwencja na koncertach

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

$$

$$

Pamiętaj o składni: ROW_NUMBER() OVER( ORDER BY ...)!

Funkcje okna w Snowflake

Czas na ćwiczenia!

Funkcje okna w Snowflake

Preparing Video For Download...