在bigquery中使用PARTITION BY缺少分析功能

时间:2016-05-02 16:06:41

标签: google-bigquery

我正在尝试将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

但这似乎有点hacky,其他SQL变种没有查询问题。

有人有任何建议吗?

谢谢, 布拉德

1 个答案:

答案 0 :(得分:3)

这应该在BigQuery的标准SQL方言中修复 - https://cloud.google.com/bigquery/sql-reference/enabling-standard-sql

请注意,遗留SQL中的TIMESTAMP_TO_MSEC函数不是UNIX_MILLIS,而是需要使用等效的cordova prepare函数。