【发布时间】:2017-11-29 10:20:09
【问题描述】:
如果我有每个订阅处于活动状态的时间段,是否有办法获取有关活动订阅的每周数据? 我在 BigQuery 中有一个包含订阅列表的表:
+-----------------+---------+---------------+--------------+
| subscription_id | user_id | subscribed_at | cancelled_at |
+-----------------+---------+---------------+--------------+
| 1 | 2 | 2017-01-05 | 2017-06-03 |
| 2 | 3 | 2017-01-07 | 2017-09-15 |
| 3 | 4 | 2017-01-09 | NULL |
| 4 | 1 | 2017-01-11 | 2017-05-27 |
| 5 | 3 | 2017-01-15 | NULL |
+-----------------+---------+---------------+--------------+
我需要为每个唯一的 subscription_id + active_week 组合获取记录。像这样的:
+-----------------+---------+---------------+--------------+-------------+
| subscription_id | user_id | subscribed_at | cancelled_at | active_week |
+-----------------+---------+---------------+--------------+-------------+
| 1 | 2 | 2017-01-05 | 2017-06-03 | 201701 |
| 2 | 3 | 2017-01-07 | 2017-09-15 | 201701 |
| 1 | 2 | 2017-01-05 | 2017-06-03 | 201702 |
| 2 | 3 | 2017-01-07 | 2017-09-15 | 201702 |
| 3 | 4 | 2017-01-09 | NULL | 201702 |
| 4 | 1 | 2017-01-11 | 2017-05-27 | 201702 |
| 1 | 2 | 2017-01-05 | 2017-06-03 | 201703 |
| 2 | 3 | 2017-01-07 | 2017-09-15 | 201703 |
| 3 | 4 | 2017-01-09 | NULL | 201703 |
| 4 | 1 | 2017-01-11 | 2017-05-27 | 201703 |
| 5 | 3 | 2017-01-15 | NULL | 201703 |
| ... | ...| ... |... | ... |
+-----------------+---------+---------------+--------------+-------------+
我尝试从this 出发,但没有成功。
SELECT
SPLIT(RPAD('', 1 + DATEDIFF(sub.ended_date, sub.started_date), '.'),'') AS weeks,
sub.subscription_Id,
sub.customer_id
FROM (
SELECT
subscribed_at AS started_date,
CASE
WHEN cancelled_at IS NULL THEN TIMESTAMP(CURRENT_DATE())
ELSE TIMESTAMP(cancelled_at)
END AS ended_date,
subscription_id,
customer_id
FROM
[subscriptions]) AS sub
非常感谢您的帮助!
最好, 拒绝
【问题讨论】:
-
欢迎来到 Stack Overflow!纯粹的代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定的编程问题相关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
-
只显示您尝试过的内容和遇到的问题,以便我们从中挑选:o)
-
@MikhailBerlyant 我尝试使用来自here 的查询并对其进行修改以从我的表中获取数据,但没有运气。
-
那么就展示一下吧!
标签: sql google-bigquery