Используя Redshift SQL.
Учитывая таблицу действий, подобную этой:
user.id | action | time
232 | view_website | 2018/10/25 13:00:00
365 | view_product | 2018/10/25 13:20:00 //This is another user (could be infinite users)
232 | view_product | 2018/10/25 13:22:00
...
232 | purchase_pro | 2018/10/25 14:10:00
...
Я хочу создать таблицу сессий и вставить только сеансы user.id, которые достиглиСтраница «purchase_pro», отслеживая время начала и окончания сеанса, зная, что сеанс работает только в течение 1 часа.Это означает:
- Пользователь 232 может делать много вещей раньше в одном сеансе (даже в течение нескольких дней, если они никогда не прекращают выполнять действия каждый час)
- Пользователь 232 может делать несколько покупок вВ том же сеансе мне нужна только одна запись в таблице сеансов, если они находятся в одном и том же периоде.
- В таблице сеансов один и тот же пользователь может несколько раз совершать покупку, если сеансы были перезапущены (> 1 ч втаймфрейм)
- Сессии должны отслеживать только тех, кто приобрел , и весь таймфрейм сеанса с момента их начала .
В этомДля пользователя 232 сеанс должен выглядеть следующим образом:
user.id | Start | Finish
232 | 2018/10/25 13:00:00 | 2018/10/25 15:10:00 // Notice 1h extra since last action in session.
Я подходил к этому с помощью , создавая сеансы для всех и , затем удаляя тех, кто никогда не достигал покупки , ноЯ думаю, что это не правильный подход только в одной строке SQL.
Заранее спасибо