在BigQuery的整个字段上运行Javascript UDF

时间:2020-06-16 14:05:37

标签: javascript sql google-bigquery user-defined-functions

我想根据数据的其他特征对窗口长度变化的字段进行滚动平均。这排除了SQL窗口函数。我以为我可以做的就是编写一个JavaScript UDF以计算窗口大小可变的滚动平均值。但是,滚动窗口将需要窗口大小字段中的值。最好的方法是什么?或者也许我根本不需要JavaScript?

示例:我有一张表someData:

Day Value

1   3.5
2   5
3   7
4   10
5   12
.   .
.   .
.   .
100 15

,我想使用x大小可变的窗口来计算Value的滚动平均值。因此,当x = 2时,我的预期结果将是:

    Rolling Average 
    3.5 
    4.25
    6
    8.5
    11
    .
    .
    .

更新

如果我使用固定数字(例如2)而不是变量x,则可以使用窗口函数。问题是我希望数字有所变化,具体取决于例如天。假设我们用

定义x
    (CASE WHEN MAX(day) > 99 THEN 2 ELSE 3 END) AS x

我意识到问题已经here得到了回答。

我可以简单地做的是:

    (CASE WHEN MAX(day) > 99 THEN AVG(value) OVER(ORDER BY day RANGE   BETWEEN 1 PRECEDING AND CURRENT ROW) 
ELSE AVG(value) OVER(ORDER BY day RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) END)
 AS rolling_average  

0 个答案:

没有答案
相关问题