Запуск Javascript UDF для всего поля в BigQuery - PullRequest
0 голосов
/ 16 июня 2020

Я хотел бы сделать скользящее среднее для поля с окном различной длины в зависимости от других характеристик данных. Это исключает оконную функцию SQL. Я думал, что могу просто написать JavaScript UDF для вычисления скользящего среднего с окном переменного размера. Однако для скользящего окна требуются значения из поля размера окна. Как лучше всего это сделать? Или, может быть, мне вообще не нужен javascript?

Пример: у меня есть таблица someData:

Day Value

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

, и я хочу вычислить скользящее среднее значения Value с окном переменный размер x. Итак, когда 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

Я понимаю, что на вопрос уже дан ответ здесь .

Я мог бы просто сделать следующее:

    (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  
...