Я пытаюсь использовать функцию LAG в сочетании с PARTITION BY, чтобы вычислить разницу во временных марках.Отсутствует функция аналитики с использованием PARTITION BY в bigquery
SELECT
uuid,
event_info,
TIMESTAMP_TO_MSEC(event_time) - LAG(TIMESTAMP_TO_MSEC(event_time),1) OVER (PARTITION BY userId ORDER BY event_time ASC)
FROM
[DataSet.TableName]
ORDER BY
uuid,
event_time
Но выдает ошибку из BigQuery говорит «Ошибка: Отсутствует функцию в аналитическом выражении в: 4,95 - 4,153»
Однако, если я разделить линию 4-ю строку на две части
TIMESTAMP_TO_MSEC(event_time) as time,
LAG(TIMESTAMP_TO_MSEC(event_time),1) OVER (PARTITION BY userId ORDER BY event_time ASC) as previousTime,
Тогда он работает просто отлично. Обходной бы использовать «исправить» выше, а затем обернуть весь запрос в другой запрос, чтобы я мог выполнить расчет, как
previousTime - time as difference
Но это кажется немного Hacky и другие варианты SQL не возникают проблемы с запросом.
Есть ли у кого-нибудь предложения?
Спасибо, Брэда
Спасибо Моша. Если я выберу эту опцию, а затем сохраню ее как представление, могу ли я предположить, что опция будет сохранена с просмотром? –
К сожалению, пока нет поддержки стандартного SQL-запроса, но он скоро появится. –
Хорошо, спасибо. Любая идея, когда это произойдет? –