Skip to content

Instantly share code, notes, and snippets.

@peacing
Last active September 29, 2021 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peacing/c3bc6d83fca8ae6a117a98c05647e850 to your computer and use it in GitHub Desktop.
Save peacing/c3bc6d83fca8ae6a117a98c05647e850 to your computer and use it in GitHub Desktop.
create table user_sessions
USING DELTA AS
( select user_id, event_date, event_action,
SUM(is_new_session) OVER (ORDER BY user_id, event_date) AS global_session_id,
SUM(is_new_session) OVER (PARTITION BY user_id ORDER BY event_date) AS user_session_id
FROM
( select *,
CASE WHEN unix_timestamp(event_date) - unix_timestamp(last_event) >= (24*60*60) OR
last_event is NULL THEN 1 ELSE 0 END AS is_new_session
from (
select *, lag(event_date,1) OVER (PARTITION BY user_id ORDER BY event_date) as last_event from events
) last
) final
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment