如何获得用户会话?

时间:2018-09-21 04:24:06

标签: sql amazon-redshift redash

我正在使用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 :(得分:1)

请尝试这个。您甚至可以选择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 )

顺便说一句,redshift具有datediff。不知道为什么Redash不支持它。