From ce9526f7c1d650f1d9d07d4ab5e7c39e8148dd9f Mon Sep 17 00:00:00 2001 From: Erin Ogilvy Date: Wed, 14 Nov 2018 10:04:50 -0500 Subject: [PATCH 1/4] parsing device out of context agent --- .../base/segment_web_page_views.sql | 16 ++++++++++++++-- .../segment_web_page_views__sessionized.sql | 9 ++++++++- .../segment_web_sessions__initial.sql | 4 +++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/macros/cross-adapter-modeling/base/segment_web_page_views.sql b/macros/cross-adapter-modeling/base/segment_web_page_views.sql index 3b74f18..e79a489 100644 --- a/macros/cross-adapter-modeling/base/segment_web_page_views.sql +++ b/macros/cross-adapter-modeling/base/segment_web_page_views.sql @@ -45,7 +45,13 @@ renamed as ( as gclid, context_ip as ip, - context_user_agent as user_agent + context_user_agent as user_agent, + case + when context_user_agent ilike '%Android%' then 'Android' + else replace( + split_part(split_part(context_user_agent,'(', 2), ' ', 1), + ';','') + end as device_raw from source @@ -93,7 +99,13 @@ renamed as ( nullif(parse_url(url)['parameters']['gclid']::varchar, '') as gclid, context_ip as ip, - context_user_agent as user_agent + context_user_agent as user_agent, + case + when context_user_agent ilike '%Android%' then 'Android' + else replace( + split_part(split_part(context_user_agent,'(', 2), ' ', 1), + ';','') + end as device_raw from source diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql index 3fc0ff0..dd2a999 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql @@ -133,7 +133,14 @@ session_ids as ( {{segment.star(ref('segment_web_page_views'))}}, page_view_number, - {{segment.surrogate_key('anonymous_id', 'session_number')}} as session_id + {{segment.surrogate_key('anonymous_id', 'session_number')}} as session_id, + case + when device_raw = 'iPhone' then 'iPhone' + when device_raw = 'Android' then 'Android' + when device_raw in ('iPad', 'iPod') then 'Tablet' + when device_raw in ('Windows', 'Macintosh', 'X11') then 'Desktop' + else 'uncategorized' + end as device from session_numbers diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql b/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql index b805729..b6b7016 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql @@ -35,7 +35,9 @@ 'page_url_path' : 'first_page_url_path', 'page_url_query' : 'first_page_url_query', 'referrer' : 'referrer', - 'referrer_host' : 'referrer_host' + 'referrer_host' : 'referrer_host', + 'device_raw' : 'device_raw', + 'device' : 'device' } %} {% set last_values = { From aec67193ef99fc7897ce7e977b1b0aa14c60ea4b Mon Sep 17 00:00:00 2001 From: Erin Ogilvy Date: Thu, 24 Jan 2019 09:35:13 -0500 Subject: [PATCH 2/4] rename device fields --- .../base/segment_web_page_views.sql | 4 ++-- .../segment_web_page_views__sessionized.sql | 10 +++++----- .../sessionization/segment_web_sessions__initial.sql | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/macros/cross-adapter-modeling/base/segment_web_page_views.sql b/macros/cross-adapter-modeling/base/segment_web_page_views.sql index e79a489..e8459ea 100644 --- a/macros/cross-adapter-modeling/base/segment_web_page_views.sql +++ b/macros/cross-adapter-modeling/base/segment_web_page_views.sql @@ -51,7 +51,7 @@ renamed as ( else replace( split_part(split_part(context_user_agent,'(', 2), ' ', 1), ';','') - end as device_raw + end as device from source @@ -105,7 +105,7 @@ renamed as ( else replace( split_part(split_part(context_user_agent,'(', 2), ' ', 1), ';','') - end as device_raw + end as device from source diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql index dd2a999..a888b2a 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql @@ -135,12 +135,12 @@ session_ids as ( page_view_number, {{segment.surrogate_key('anonymous_id', 'session_number')}} as session_id, case - when device_raw = 'iPhone' then 'iPhone' - when device_raw = 'Android' then 'Android' - when device_raw in ('iPad', 'iPod') then 'Tablet' - when device_raw in ('Windows', 'Macintosh', 'X11') then 'Desktop' + when device = 'iPhone' then 'iPhone' + when device = 'Android' then 'Android' + when device in ('iPad', 'iPod') then 'Tablet' + when device in ('Windows', 'Macintosh', 'X11') then 'Desktop' else 'uncategorized' - end as device + end as device_category from session_numbers diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql b/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql index b6b7016..a7768f1 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_sessions__initial.sql @@ -36,8 +36,8 @@ 'page_url_query' : 'first_page_url_query', 'referrer' : 'referrer', 'referrer_host' : 'referrer_host', - 'device_raw' : 'device_raw', - 'device' : 'device' + 'device' : 'device', + 'device_category' : 'device_category' } %} {% set last_values = { From de41478c7da28e8c38ac140f54a903227d74b068 Mon Sep 17 00:00:00 2001 From: Erin Ogilvy Date: Thu, 24 Jan 2019 09:55:29 -0500 Subject: [PATCH 3/4] fix macro ref --- .../sessionization/segment_web_page_views__sessionized.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql index 07bc2a0..53ec520 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql @@ -133,7 +133,7 @@ session_ids as ( {{dbt_utils.star(ref('segment_web_page_views'))}}, page_view_number, - {{segment.surrogate_key('anonymous_id', 'session_number')}} as session_id, + {{dbt_utils.surrogate_key('anonymous_id', 'session_number')}} as session_id, case when device = 'iPhone' then 'iPhone' when device = 'Android' then 'Android' From 2b42273a59d90b028f9ecc22184a62bdc878c6c7 Mon Sep 17 00:00:00 2001 From: Erin Ogilvy Date: Fri, 25 Jan 2019 09:29:41 -0500 Subject: [PATCH 4/4] alter location of device category --- .../base/segment_web_page_views.sql | 17 ++++++++++++++++- .../segment_web_page_views__sessionized.sql | 9 +-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/macros/cross-adapter-modeling/base/segment_web_page_views.sql b/macros/cross-adapter-modeling/base/segment_web_page_views.sql index 290bb25..239e4d4 100644 --- a/macros/cross-adapter-modeling/base/segment_web_page_views.sql +++ b/macros/cross-adapter-modeling/base/segment_web_page_views.sql @@ -52,8 +52,23 @@ renamed as ( from source +), + +final as ( + + select + *, + case + when device = 'iPhone' then 'iPhone' + when device = 'Android' then 'Android' + when device in ('iPad', 'iPod') then 'Tablet' + when device in ('Windows', 'Macintosh', 'X11') then 'Desktop' + else 'uncategorized' + end as device_category + from renamed + ) -select * from renamed +select * from final {% endmacro %} \ No newline at end of file diff --git a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql index 53ec520..2b1ff18 100644 --- a/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql +++ b/macros/cross-adapter-modeling/sessionization/segment_web_page_views__sessionized.sql @@ -133,14 +133,7 @@ session_ids as ( {{dbt_utils.star(ref('segment_web_page_views'))}}, page_view_number, - {{dbt_utils.surrogate_key('anonymous_id', 'session_number')}} as session_id, - case - when device = 'iPhone' then 'iPhone' - when device = 'Android' then 'Android' - when device in ('iPad', 'iPod') then 'Tablet' - when device in ('Windows', 'Macintosh', 'X11') then 'Desktop' - else 'uncategorized' - end as device_category + {{dbt_utils.surrogate_key('anonymous_id', 'session_number')}} as session_id from session_numbers