【发布时间】:2014-04-09 21:25:23
【问题描述】:
我知道 Big Query 中有一个 AVG 函数,并且有窗口函数可以将上一个或下一个值向上或向下移动,但是是否有任何函数可以让您在指定的时间间隔内进行平均?例如,我想这样做如下:
SELECT
city
AVG(temperature) OVER(PARTITION BY city, INTERVAL day,14, ORDER BY day) as rolling_avg_14_days,
AVG(temperature) OVER(PARTITION BY city, INTERVAL day,30, ORDER BY day) as rolling_avg_30_days,
WHERE
city IN ("Los Angeles","Chicago","Sun Prairie","Sunnyvale")
AND year BETWEEN 1900 AND 2013
我想做一个滚动平均计算,允许我指定一个值范围来执行聚合函数,以及按什么值排序。平均函数将采用当天温度和前 13 天(或前 29 天)来计算和平均。今天这可能吗?我知道如果我在 SELECT 语句中放入 13 个 LAG/OVER 字段,然后对所有这些字段的结果进行平均,我可以做这样的事情,但这是很多开销。
【问题讨论】:
-
我确实找到了来自 Jordan 的 previous post,关于使用 JOIN 生成滚动平均值。我尝试使用该逻辑并且效果很好,但是我想知道是否有开发中的窗口函数可以使逻辑更简单。
标签: google-bigquery