BigQuery: 分析関数を使って移動平均を算出する

BigQuery: 分析関数を使って移動平均を算出する

February 20, 2021
BigQuery
BigQuery, SQL

移動平均とは? #

移動平均 - Wikipedia

BigQueryの分析関数 #

行をグルーピングして、そのグループに対して値を計算する。グループを指定するのが OVER 句。

WITH dates AS (
    SELECT date, (MOD(offset, 3) + 1) * (MOD(offset, 5) + 1) + (MOD(offset, 7) + 1) AS num
    FROM UNNEST(GENERATE_DATE_ARRAY('2021-02-01', '2021-02-28')) AS date WITH OFFSET
)
SELECT
    date,
    num,
    AVG(num) OVER (ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS num_sma
FROM dates
ORDER BY date

現在の行 + 前2行(3行分)の移動平均が num_sma で出力される。

See Also #

標準SQLの分析関数のコンセプト | BigQuery | Google Cloud