Attribuer des numéros de ligne

Fonctions de fenêtre dans Snowflake

Jake Roach

Field Data Engineer

Fonctions de fenêtre

Utilisé pour effectuer un calcul sur une "fenêtre" de lignes et retourner une valeur pour chaque ligne

$$

$$

Classement

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

Agrégation

  • COUNT, SUM, AVG
Fonctions de fenêtre dans Snowflake

Fonctions de fenêtre

Les fonctions de fenêtre nous aident à répondre à de nouvelles questions !

$$

  • Quel est le troisième concert le plus populaire à chaque lieu ?
  • Comment les ventes d'un article ont-elles varié jour après jour ?
  • Ma moyenne mobile de l'audience est-elle en hausse ou en baisse ?
Fonctions de fenêtre dans Snowflake

Fonctions traditionnelles

Une fonction d'agrégation traditionnelle doit avoir une clause GROUP BY.

Une représentation visuelle d'une fonction d'agrégation.

Fonctions de fenêtre dans Snowflake

Fonctions de fenêtre

Une représentation visuelle de la sortie d'une fonction de fenêtre.

                                                 Ne nécessitent pas de GROUP BY !

Fonctions de fenêtre dans Snowflake

Attribuer des numéros de ligne

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

La fonction ROW_NUMBER() attribue un numéro de ligne à chaque enregistrement dans un ensemble de résultats

$$

  • OVER() définit la fenêtre
  • Alias pour la colonne résultante
  • Pas de GROUP BY !
Fonctions de fenêtre dans Snowflake

Participation aux concerts

SELECT
    customer_id,
    event_name,

    -- Attribuer un numéro de ligne à chaque 
    -- enregistrement dans l'ensemble de résultats

    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

$$

$$

Rappelez-vous la syntaxe : ROW_NUMBER() OVER( ORDER BY ...) !

Fonctions de fenêtre dans Snowflake

Passons à la pratique !

Fonctions de fenêtre dans Snowflake

Preparing Video For Download...