【发布时间】:2015-12-26 17:41:58
【问题描述】:
给定 Google BigQuery 中的一个表:
User Timestamp
A TIMESTAMP(12/05/2015 12:05:01.8023)
B TIMESTAMP(9/29/2015 12:15:01.0323)
B TIMESTAMP(9/29/2015 13:05:01.0233)
A TIMESTAMP(9/29/2015 14:05:01.0432)
C TIMESTAMP(8/15/2015 5:05:01.0000)
B TIMESTAMP(9/29/2015 14:06:01.0233)
A TIMESTAMP(9/29/2015 14:06:01.0432)
有没有简单的计算方法:
User Maximum_Number_of_Events_this_User_Had_in_One_Hour
A 2
B 3
C 1
一小时的时间窗口在哪里是一个参数?
我尝试自己使用 LAG 和分区函数的组合来解决这两个问题:
BigQuery SQL for 28-day sliding window aggregate (without writing 28 lines of SQL)
Bigquery SQL for sliding window aggregate
但是发现这些帖子太不相似了,因为我不是在查找每个时间窗口的人数,而是在一个时间窗口内查找每个人的最大事件数。
【问题讨论】:
-
顺便说一句:用户 B 的预期值“3”是错误的 - 应该是 2!因为 1:05、1:06 和 12:15 之间的距离远远超过 1 小时。除非以某种方式涉及地点
-
谢谢!修正了这个例子:)
标签: sql aggregate-functions google-bigquery window-functions