【发布时间】:2018-08-14 15:27:40
【问题描述】:
我有一些用 BigQuery 编写的 SQL 代码,它对三天前的当前日期的值进行滚动求和。
with weekly_agg AS
(
select
* ,
UNIX_SECONDS(TIMESTAMP(event_date)) as timestamps
from
test.window_test
order by event_date
)
select
country,
event_date
sum(value) over (partition by country order by timestamps range between 259200 PRECEDING AND CURRENT ROW) as rolling
from
weekly_agg
这似乎是一个冗长的解决问题的方法,有没有更好的方法来完成同样的事情?第一个限制是您需要硬编码值 259200(3 天),您无法输入诸如 ((3600 * 24) * 3) 之类的计算。如果我能在分区部分做一个日期范围会更好。
【问题讨论】:
-
data type和event_date到底是什么? -
它是日期类型,最大的问题是在分区内,有没有办法使用日期而不是数字之间的范围?
标签: google-bigquery