【发布时间】:2020-12-20 01:17:41
【问题描述】:
我正在尝试从下表开始
| user_id | touch | Date | Purchase Amount
| 1 | Impression| 2020-09-12 |0
| 1 | Impression| 2020-10-12 |0
| 1 | Purchase | 2020-10-13 |125$
| 1 | Email | 2020-10-14 |0
| 1 | Impression| 2020-10-15 |0
| 1 | Purchase | 2020-10-30 |122
| 2 | Impression| 2020-10-15 |0
| 2 | Impression| 2020-10-16 |0
| 2 | Email | 2020-10-17 |0
到
| user_id | path | Number of days between First Touch and Purchase | Purchase Amount
| 1 | Impression,Impression,Purchase | 2020-10-13(Purchase) - 2020-09-12 (Impression) |125$
| 1 | Email,Impression, Purchase | 2020-10-30(Purchase) - 2020-10-14(Email) | 122$
| 2 | Impression, Impression, Email | 2020-12-31 (Fixed date) - 2020-10-15(Impression) | 0$
本质上,每次在逗号分隔的字符串中遇到“购买”时,我都会尝试为表中的每个唯一用户创建一个新行。
另外,计算每个唯一用户的首次接触和首次购买之间的差异。当创建新行时,我们对同一用户执行相同操作,如上例所示。
从我收集的少量数据来看,我需要混合使用交叉连接和字符串 agg,但我尝试在字符串 agg 中使用 case 语句,但无法获得所需的结果。
在 SQL (Bigquery) 中是否有更好的方法。
谢谢
【问题讨论】:
标签: sql google-bigquery gaps-and-islands date-arithmetic