【发布时间】:2018-07-18 21:39:24
【问题描述】:
我有一个文件,其中记录了我们产品的所有使用情况,其中包括用户 ID、拨打电话的次数和拨打电话的日期(按用户 ID 汇总到日期)。
user_id |电话号码 |日期
123 | 32 | 2018-04-17
435 | 21 | 2018-04-17
123 | 35 | 2018-04-18
435 | 10 | 2018-04-18
123 | 20 | 2018-04-19
435 | 90 | 2018-04-20
我想制作一个图表,显示过去和以后每一天的用户,在该日期之前(包括该日期)的 30 天内活跃的用户,以及他们在该 30 天内拨打的电话次数。最终,我将使用它在给定的 30 天内为“高使用率”设置各种阈值。它看起来像这样:
user_id | num_calls_in_previous_30_days |日期
123 | 32 | 2018-04-17
435 | 21 | 2018-04-17
123 | 67 | 2018-04-18
435 | 31 | 2018-04-18
123 | 87 | 2018-04-19
435 | 31 | 2018-04-19
123 | 87 | 2018-04-20
435 | 121 | 2018-04-20
我遇到的问题是当我尝试使用窗口功能时
sum(num_calls) over (partition by id ORDER BY UNIX_SECONDS(timestamp(date)) range BETWEEN 2505600 PRECEDING AND CURRENT ROW)
我只获取在每个特定日期活跃的用户在过去 30 天内的通话总数,而不是包括在该日期之前 30 天内活跃的所有用户及其在该时间范围内的使用情况。使用上面的相同数据,它看起来像这样:
user_id | num_calls_in_previous_30_days |日期
123 | 32 | 2018-04-17
435 | 21 | 2018-04-17
123 | 67 | 2018-04-18
435 | 31 | 2018-04-18
123 | 87 | 2018-04-19
435 | 121 | 2018-04-20
我尝试了另一条路线,该路线从每个日期开始获取前 30 天的所有唯一 user_id,但我不知道如何将其与我现有的使用数据相结合以获得我想要的结果。
我确信这里有一个简单的解决方案,但我已经花了几个小时来解决这个问题。
提前致谢!
【问题讨论】:
标签: sql google-bigquery