Assegnare numeri di riga

Window Functions in Snowflake

Jake Roach

Field Data Engineer

Funzioni finestra

Usato per eseguire un calcolo su una "finestra" di righe e restituire un valore per ogni riga

$$

$$

Classifica

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

Aggregazione

  • COUNT, SUM, AVG
Window Functions in Snowflake

Funzioni finestra

Le funzioni finestra ci aiutano a rispondere a nuovi tipi di domande!

$$

  • Qual è il terzo concerto più popolare in ogni sede?
  • Come sono variate le vendite di un articolo giorno per giorno?
  • La mia media mobile di spettatori è in aumento o in calo?
Window Functions in Snowflake

Funzioni tradizionali

Le funzioni di aggregazione tradizionali devono avere una clausola GROUP BY.

Una rappresentazione visiva di una funzione di aggregazione.

Window Functions in Snowflake

Funzioni finestra

Una rappresentazione visiva dell'output di una funzione finestra.

                                                 Non richiedono un GROUP BY!

Window Functions in Snowflake

Assegnare numeri di riga

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

La funzione ROW_NUMBER() assegna un numero di riga a ogni record nel set di risultati

$$

  • OVER() definisce la finestra
  • Assegna un alias alla colonna risultante
  • Niente GROUP BY!
Window Functions in Snowflake

Partecipazione ai concerti

SELECT
    customer_id,
    event_name,

    -- Assegna un numero di riga a ogni 
    -- record nel set di risultati

    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

$$

$$

Ricorda la sintassi: ROW_NUMBER() OVER( ORDER BY ...)!

Window Functions in Snowflake

Ayo berlatih!

Window Functions in Snowflake

Preparing Video For Download...