Próbuję obliczyć 28-dniową sumę ruchomą w BigQuery za pomocą funkcji LAG.BigQuery SQL dla 28-dniowego agregatora okien przesuwnych (bez pisania 28 wierszy kodu SQL)
Górny odpowiedź na to pytanie
Bigquery SQL for sliding window aggregate
od Felipe Hoffa oznacza, że można użyć funkcji opóźnienia. Przykładem może być:
SELECT
spend + spend_lagged_1day + spend_lagged_2day + spend_lagged_3day + ... + spend_lagged_27day as spend_28_day_sum,
user,
date
FROM (
SELECT spend,
LAG(spend, 1) OVER (PARTITION BY user ORDER BY date) spend_lagged_1day,
LAG(spend, 2) OVER (PARTITION BY user ORDER BY date) spend_lagged_2day,
LAG(spend, 3) OVER (PARTITION BY user ORDER BY date) spend_lagged_3day,
...
LAG(spend, 28) OVER (PARTITION BY user ORDER BY date) spend_lagged_day,
user,
date
FROM user_spend
)
Czy można to zrobić bez konieczności wypisywania 28 wierszy kodu SQL!