Как получить пользовательские сессии? - PullRequest
0 голосов
/ 21 сентября 2018

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

Более подробно: мне нужен сеанс, пользовательская активность, где он имеет некоторые действия, где конец сеанса определяется последним действием + 1 час.

строка пользователя: <id, action, date>

user_id     page    happened_at     
179,233 rooms.view.step.content  2017-03-01 09:24
179,233 rooms.view.step.content  2017-03-01 09:01
179,233 rooms.student-showcase   2017-03-01 12:02

datediff должна помочь, но она недоступна на redash - redshift.

Я ищу альтернативы.У кого-нибудь есть мысли там?

1 Ответ

0 голосов
/ 21 сентября 2018

Пожалуйста, попробуйте это.Вы можете даже выбрать dateadd вместо этого.

select id, action, date 
from users u1 
where exists 
      ( select 1 from users u2 
        where u1.id = u2.id 
        and u2.happened_at < (u1.happened_at + interval '1 hour') 
        and u2.happened_at > u1.happened_at )
union  
select id, action, date 
from users u1 
where exists 
      ( select 1 from users u2 
        where u1.id = u2.id 
        and u2.happened_at > (u1.happened_at + interval '1 hour') 
        and u2.happened_at < u1.happened_at )

Кстати, красное смещение имеет датировку.Не уверен, почему он не поддерживается в Redash.

...