Вставка SQL в сеансы только тогда, когда действия имеют несколько условий RedshiftSQL - PullRequest
0 голосов
/ 25 ноября 2018

Используя 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 часа.Это означает:

  1. Пользователь 232 может делать много вещей раньше в одном сеансе (даже в течение нескольких дней, если они никогда не прекращают выполнять действия каждый час)
  2. Пользователь 232 может делать несколько покупок вВ том же сеансе мне нужна только одна запись в таблице сеансов, если они находятся в одном и том же периоде.
  3. В таблице сеансов один и тот же пользователь может несколько раз совершать покупку, если сеансы были перезапущены (> 1 ч втаймфрейм)
  4. Сессии должны отслеживать только тех, кто приобрел , и весь таймфрейм сеанса с момента их начала .

В этомДля пользователя 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.

Заранее спасибо

...