Я работаю с информацией из журнала сервера и выстраиваю путешествие пользователя по дням следующим образом:
SELECT
[IP_Address], [Date_Time], CONVERT(date, Date_Time) AS Date
*ROW_NUMBER() OVER (PARTITION BY IP_Address, CONVERT(date, Date_Time)ORDER BY IP_Address, Date_Time) AS Journey_Path*
Возвращенный результат выглядит примерно так:
![Result Output Sample](https://i.stack.imgur.com/mgJe2.png)
Я хотел бы указать столбец page_type
для каждой строки с Landing_Page
, Journey_Page
и Exit_Page
. Посадка - первая страница, выход - последняя, а путешествие - средние страницы. Это изменится, поскольку некоторые поездки пользователей могут привести только к одному или двум посещениям страницы. В случае длины поездки 1 это будет Landing_Page
, а в случае длины поездки 2 - Landing_Page, за которой следует Exit_Page. В идеале я также хотел бы взять разницу во времени в секундах между временными метками каждой траектории путешествия (когда это применимо) для расчета времени на странице.
Я смотрел на оконные функции lead
и lag
но я не уверен, как структурировать это таким образом, чтобы вычисления сбрасывались при каждом разделении пути пользователя. В настоящее время он не распознает каждое новое путешествие и просто бежит по каждому ряду.