Created
November 24, 2022 15:27
-
-
Save mshakhomirov/05fd7d79d8acf3b173181a5d950ab6e7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with d as ( | |
select * from unnest([ | |
struct('0003f' as user_pseudo_id, 12322175 as user_id, timestamp '2020-10-10 16:46:59.878 UTC' as event_timestamp, 'join_group' as event_name), | |
('0003',12,timestamp '2022-10-10 16:50:03.394 UTC','set_avatar'), | |
('0003',12,timestamp '2022-10-10 17:02:38.632 UTC','set_avatar'), | |
('0003',12,timestamp '2022-10-10 17:09:38.645 UTC','set_avatar'), | |
('0003',12,timestamp '2022-10-10 17:10:38.645 UTC','join_group'), | |
('0003',12,timestamp '2022-10-10 17:15:38.645 UTC','create_group'), | |
('0003',12,timestamp '2022-10-10 17:17:38.645 UTC','create_group'), | |
('0003',12,timestamp '2022-10-10 17:18:38.645 UTC','in_app_purchase'), | |
('0003',12,timestamp '2022-10-10 17:19:38.645 UTC','spend_virtual_currency'), | |
('0003',12,timestamp '2022-10-10 17:19:45.645 UTC','create_group'), | |
('0003',12,timestamp '2022-10-10 17:20:38.645 UTC','set_avatar') | |
] | |
) as t) | |
, event_data as ( | |
SELECT | |
user_pseudo_id | |
, user_id | |
, event_timestamp | |
, event_name | |
, ARRAY_AGG( | |
STRUCT( | |
event_name AS event_name | |
, event_timestamp AS event_timestamp | |
) | |
) | |
OVER(PARTITION BY user_pseudo_id ORDER BY event_timestamp ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING ) as next_events | |
FROM d | |
WHERE | |
DATE(event_timestamp) = "2022-10-10" | |
) | |
select | |
user_pseudo_id | |
, user_id | |
, event_timestamp | |
, event_name | |
, (SELECT | |
event_name FROM UNNEST(next_events) next_event | |
WHERE t.event_name != event_name | |
ORDER BY event_timestamp LIMIT 1 | |
-- change to ORDER BY event_timestamp desc if prev event needed | |
) next_event | |
, (SELECT | |
event_timestamp FROM UNNEST(next_events) next_event | |
WHERE t.event_name != event_name | |
ORDER BY event_timestamp LIMIT 1 | |
-- change to ORDER BY event_timestamp desc if prev event needed | |
) next_event_ts | |
from event_data t | |
; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment