【发布时间】:2016-02-23 03:00:09
【问题描述】:
考虑一下 BigQuery 上的这个表架构:
Table User
{
user_id: STRING (REQUIRED)
user_name: STRING (REQUIRED)
actions: RECORD (REPEATED)
{
action_id: STRING (REQUIRED)
action_type: INTEGER (REQUIRED)
action_date: TIMESTAMP (REQUIRED)
}
}
我想查找多次创建某种类型操作的所有用户(user_id 和 user_name),并且这些操作之间的最短时间少于 X 天。
未定义每个用户存储的操作数(可以是 1、2 或 n)。这些操作没有按任何标准排序(但我认为这可以通过使用ORDER BY 来解决)。
例如,与用户:
{
user_id: "u1",
user_name: "User 1",
actions:
{action_id: "a1", action_type: 1, action_date: "2016-02-22"},
{action_id: "a2", action_type: 1, action_date: "2016-01-22"},
{action_id: "a3", action_type: 1, action_date: "2015-12-22"}
},
{
user_id: "u2",
user_name: "User 2",
actions:
{action_id: "a4", action_type: 1, action_date: "2016-02-22"},
{action_id: "a5", action_type: 2, action_date: "2016-01-22"},
{action_id: "a6", action_type: 1, action_date: "2015-12-22"}
},
{
user_id: "u3",
user_name: "User 3",
actions:
{action_id: "a7", action_type: 1, action_date: "2016-02-22"}
},
{
user_id: "u4",
user_name: "User 4",
actions:
{action_id: "a8", action_type: 1, action_date: "2016-02-22"},
{action_id: "a9", action_type: 1, action_date: "2015-02-22"},
{action_id: "a10", action_type: 1, action_date: "2015-01-22"}
},
查询“选择多次执行1类型操作的用户,且每次执行之间的最小时间小于45天”应该返回User 1和User 4。
关于如何在 BigQuery 上执行此操作的任何想法?
【问题讨论】:
-
@MikhailBerlyant 我还没有标记为已接受,因为我没有时间测试它,所以请耐心等待。
标签: google-bigquery