microscopic-ocean-92851
02/27/2025, 11:47 PMExit %
Does anyone have advice? I would love to use fact tables, but I think this may be easier to implement as sqlfresh-football-47124
microscopic-ocean-92851
02/27/2025, 11:49 PMWITH session_events AS (
SELECT
TIMESTAMP_MICROS(event_timestamp) AS timestamp,
user_id,
user_pseudo_id AS anonymous_id,
event_name,
geo.country,
CASE device.category
WHEN 'tablet' THEN 'mobile'
WHEN 'smart-tv' THEN 'desktop'
ELSE device.category
END AS device_category,
traffic_source.source,
traffic_source.medium,
traffic_source.name AS campaign,
REGEXP_EXTRACT(
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
r'http[s]?:\/\/?[^\/\s]+\/([^?]*)'
) AS page_path,
CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING) AS session_id,
event_value_in_usd,
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') / 1000 AS engagement_time,
(SELECT value.string_value FROM UNNEST(user_properties) WHERE key = 'customer_type') AS customer_type,
ROW_NUMBER() OVER (
PARTITION BY user_pseudo_id, session_id
ORDER BY event_timestamp DESC
) AS session_rank,
MAX(event_timestamp) OVER (PARTITION BY user_pseudo_id) AS last_event_timestamp -- Get user's latest event
FROM
`ga4-explorations.analytics_383872824.events_*`
WHERE
((_TABLE_SUFFIX BETWEEN '{{date startDateISO "yyyyMMdd"}}' AND '{{date endDateISO "yyyyMMdd"}}') OR
(_TABLE_SUFFIX BETWEEN 'intraday_{{date startDateISO "yyyyMMdd"}}' AND 'intraday_{{date endDateISO "yyyyMMdd"}}'))
)
SELECT
*,
CASE
WHEN session_rank = 1
AND event_name = 'page_view'
AND TIMESTAMP_MICROS(last_event_timestamp) < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 MINUTE)
THEN TRUE
ELSE FALSE
END AS is_exit
FROM session_events
ORDER BY timestamp DESC;
fresh-football-47124
microscopic-ocean-92851
02/27/2025, 11:51 PMfresh-football-47124
fresh-football-47124
microscopic-ocean-92851
02/27/2025, 11:54 PMfresh-football-47124
helpful-application-7107
02/28/2025, 12:15 AMmicroscopic-ocean-92851
02/28/2025, 12:18 AMhelpful-application-7107
02/28/2025, 12:19 AMhelpful-application-7107
02/28/2025, 12:21 AMhelpful-application-7107
02/28/2025, 12:22 AMmicroscopic-ocean-92851
02/28/2025, 12:22 AMhelpful-application-7107
02/28/2025, 12:22 AMmicroscopic-ocean-92851
02/28/2025, 12:23 AMhelpful-application-7107
02/28/2025, 12:23 AMhelpful-application-7107
02/28/2025, 12:24 AMmicroscopic-ocean-92851
02/28/2025, 12:25 AMhelpful-application-7107
02/28/2025, 12:26 AMmicroscopic-ocean-92851
02/28/2025, 12:26 AMfresh-football-47124