【发布时间】:2022-11-18 20:18:44
【问题描述】:
假设我们有下表
| user_id | event_name | event_time |
|---|---|---|
| Adam | subscribe | 1 |
| Adam | renewal | 4 |
| Adam | renewal | 5 |
| Adam | irrelevant event name | 6 |
| Adam | churn | 7 |
| Adam | subscribe | 10 |
| Adam | renewal | 20 |
注意:event_time 实际上以毫秒为单位,但我只是简化了事情。
我想为每一行添加数字,以便最终表格如下所示:
| user | event_name | event_time | subscription_id |
|---|---|---|---|
| Adam | subscribe | 1 | 1 |
| Adam | renewal | 4 | 1 |
| Adam | renewal | 5 | 1 |
| Adam | irrelevant event name | 6 | null |
| Adam | churn | 7 | 1 |
| Adam | subscribe | 10 | 2 |
| Adam | renewal | 20 | 2 |
| Adam | renewal | 30 | 2 |
| Adam | churn | 40 | 2 |
最终表的意思是第一行是 Adam 的第一个订阅,因此订阅 ID 为 1。第二行表示 Adam 续订了 ID 1 的订阅,因此续订事件是针对订阅 ID 1。在 n 个续订事件之后,他的第一个订阅结束(流失)。因此,流失事件行的订阅 ID 应为 1。一段时间后,Adam 重新订阅,因此该订阅的 ID 应为 2,并且此订阅后的每个续订事件和流失事件的 ID 也应为 2。
基本上每当 event_name 订阅增量 subscription_id 1 并将其分配给所有相关事件,如果 event_name 无关紧要,只需将 null 分配给 subscription_id
希望我能很好地解释我的问题。 感谢您付出的努力和时间。
【问题讨论】:
标签: sql google-bigquery