【发布时间】:2016-08-27 11:24:53
【问题描述】:
我正在尝试将 LAG 函数与 PARTITION BY 结合使用来计算时间戳的差异。
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
但这似乎有点老套,其他 SQL 变体的查询没有问题。
有人有什么建议吗?
谢谢, 布拉德
【问题讨论】:
标签: google-bigquery