行番号の割り当て

Snowflake のウィンドウ関数

Jake Roach

Field Data Engineer

ウィンドウ関数

行の「ウィンドウ」にわたって計算を行い、各行に値を返すために使用されます

$$

$$

ランキング

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

集計

  • COUNT、SUM、AVG
Snowflake のウィンドウ関数

ウィンドウ関数

ウィンドウ関数で新しい種類の問いに答えられます!

$$

  • 各会場で3番目に人気のコンサートは何か?
  • ある商品の売上は日々どのように変化したか?
  • 視聴数の移動平均は上昇傾向か下降傾向か?
Snowflake のウィンドウ関数

従来の関数

従来の集計関数には GROUP BY 句が必要です。

集計関数の視覚的な表現。

Snowflake のウィンドウ関数

ウィンドウ関数

ウィンドウ関数の出力の視覚的な表現。

                                                 GROUP BY は不要です!

Snowflake のウィンドウ関数

行番号の割り当て

SELECT
    <other-fields>,

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

FROM SCHEMA.table

...;

ROW_NUMBER() 関数は結果セットの各レコードに行番号を割り当てます

$$

  • OVER() でウィンドウを定義します
  • 結果列に別名を付けます
  • GROUP BY は不要です!
Snowflake のウィンドウ関数

コンサートの出席状況

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

$$

$$

構文を確認しましょう:ROW_NUMBER() OVER( ORDER BY ...)!

Snowflake のウィンドウ関数

練習しましょう!

Snowflake のウィンドウ関数

Preparing Video For Download...