Сессионизация на основе событий, а не временных меток с MySQL

0

У меня есть таблица, для которой мне нужно создавать сеансы. В этой таблице пользователь регистрируется и событие, которое произошло в приложении. Эти сеансы необходимо разделить, когда запись события является логином. Любая запись с тем же пользователем, которая появляется после входа в систему, является частью того же сеанса, пока не появится новая запись в журнале событий.

Таким образом, к результату должны добавляться два пользователя и события Cols, а также разделение сеанса, сгруппированное по User и когда Event = 'app:login'.

Я создал это очень основное визуальное представление моей цели. Не уверен, что это поможет исправить пробелы в моих объяснениях.

Я думал что-то вроде использования GROUP BY, а затем присоединяюсь к этому результату, чтобы затем конкатрировать его в каждой строке.

Теги:
session

1 ответ

0

Я нашел свой ответ, объединив некоторые случайные sql, пока не получил свой результат.

SELECT *
  , "userid" || '_' || SUM(new_session)
  OVER (PARTITION BY "userid" ORDER BY "datetime") AS session_id
FROM (
  SELECT
    *,
    CASE WHEN "eventname" = 'login:bo:success'  THEN 1 ELSE 0 END as new_session
  FROM
    "TEST_events_prepared_2"
) s1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню