We're Moving!

The Vertica Forum is moving to a new OpenText Analytics Database (Vertica) Community.

Join us there to post discussion topics, learn about

product releases, share tips, access the blog, and much more.

Create My New Community Account Now


Sessionization with Event-Based Windows — Vertica Forum

Sessionization with Event-Based Windows

edited May 2018 in General Discussion

Hi,

I am interested in adapting the event sessionization example here.

This is the example I would like to adapt.

=> SELECT userId, timestamp,
CONDITIONAL_TRUE_EVENT(timestamp - LAG(timestamp) > '30 seconds')
OVER(PARTITION BY userId ORDER BY timestamp) AS session FROM WebClicks;
userId | timestamp | session
--------+---------------------+---------
1 | 2009-12-08 15:00:00 | 0
1 | 2009-12-08 15:00:25 | 0
1 | 2009-12-08 15:00:45 | 0
1 | 2009-12-08 15:01:45 | 1
2 | 2009-12-08 15:02:45 | 0
2 | 2009-12-08 15:02:55 | 0
2 | 2009-12-08 15:03:55 | 1

Instead of triggering new sessions based on the previous record I would like to trigger a new session based on the starting time of the last session. The current query triggers a new session if the current timestamp is 30 seconds after the previous timestamp. I would like a query that will trigger a new session if the current timestamp is 30 seconds after the start of the previous session. It seems like I would want FIRST_VALUE to do accomplish this.

This is my desired query and result. Unfortunately this query fails because analytic functions cannot be nested.

=> SELECT userId, timestamp,
CONDITIONAL_TRUE_EVENT(timestamp - FIRST_VALUE(timestamp) > '30 seconds')
OVER(PARTITION BY userId ORDER BY timestamp) AS session FROM WebClicks;
userId | timestamp | session
--------+---------------------+---------
1 | 2009-12-08 15:00:00 | 0
1 | 2009-12-08 15:00:25 | 0
1 | 2009-12-08 15:00:45 | 1 (timestamp is > 30 seconds after 2009-12-08 15:00:00)
1 | 2009-12-08 15:01:45 | 2 (timestamp is > 30 seconds after 2009-12-08 15:00:45)
2 | 2009-12-08 15:02:45 | 0
2 | 2009-12-08 15:02:55 | 0
2 | 2009-12-08 15:03:55 | 1 (timestamp is > 30 seconds after 2009-12-08 15:02:45)

Is it possible to get my desired result with Vertica's analytic functions?
Thanks!

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file