sql/moz-fx-data-shared-prod/mozilla_vpn_derived/site_metrics_summary_v2/query.sql (311 lines of code) (raw):
WITH sessions_stg AS (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS `date`,
device.category AS device_category,
device.operating_system AS operating_system,
device.web_info.browser AS browser,
device.language AS `language`,
geo.country AS country,
collected_traffic_source.manual_source AS source,
collected_traffic_source.manual_medium AS medium,
collected_traffic_source.manual_campaign_name AS campaign,
collected_traffic_source.manual_content AS content,
'mozilla.org' AS `site`,
COUNT(
DISTINCT(
user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
)
) AS sessions,
IF(
NOT `moz-fx-data-shared-prod.udf.ga_is_mozilla_browser`(device.web_info.browser),
COUNT(
DISTINCT(
user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
)
),
0
) AS non_fx_sessions
FROM
`moz-fx-data-marketing-prod.analytics_313696158.events_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', @submission_date)
--filter to only pages relative to VPN
AND (
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'page_location'
LIMIT
1
).string_value LIKE "%/products/vpn/%"
GROUP BY
PARSE_DATE('%Y%m%d', event_date),
device.category,
device.operating_system,
device.web_info.browser,
device.language,
geo.country,
collected_traffic_source.manual_source,
collected_traffic_source.manual_medium,
collected_traffic_source.manual_campaign_name,
collected_traffic_source.manual_content,
`site`
),
vpn_subscribe_goals_stg AS (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS `date`,
device.category AS device_category,
device.operating_system AS operating_system,
device.web_info.browser AS browser,
device.language AS `language`,
geo.country AS country,
collected_traffic_source.manual_source AS source,
collected_traffic_source.manual_medium AS medium,
collected_traffic_source.manual_campaign_name AS campaign,
collected_traffic_source.manual_content AS content,
'mozilla.org' AS `site`,
COUNT(
DISTINCT(
user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
)
) AS subscribe_intent_goal,
IF(
NOT `moz-fx-data-shared-prod.udf.ga_is_mozilla_browser`(device.web_info.browser),
COUNT(
DISTINCT(
user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
)
),
0
) AS non_fx_subscribe_intent_goal
FROM
`moz-fx-data-marketing-prod.analytics_313696158.events_*`
LEFT JOIN
UNNEST(items) i
WHERE
_TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', @submission_date)
AND event_name = 'begin_checkout'
AND i.item_name = 'vpn'
GROUP BY
PARSE_DATE('%Y%m%d', event_date),
device.category,
device.operating_system,
device.web_info.browser,
device.language,
geo.country,
collected_traffic_source.manual_source,
collected_traffic_source.manual_medium,
collected_traffic_source.manual_campaign_name,
collected_traffic_source.manual_content,
`site`
),
vpn_dl_goals AS (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS `date`,
device.category AS device_category,
device.operating_system AS operating_system,
device.web_info.browser AS browser,
device.language AS `language`,
geo.country AS country,
collected_traffic_source.manual_source AS source,
collected_traffic_source.manual_medium AS medium,
collected_traffic_source.manual_campaign_name AS campaign,
collected_traffic_source.manual_content AS content,
'mozilla.org' AS `site`,
COUNT(
DISTINCT(
user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
)
) AS download_intent_goal,
COUNT(
DISTINCT(
CASE
WHEN (
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'page_location'
LIMIT
1
).string_value LIKE "%/products/vpn/download/windows/thanks%"
THEN user_pseudo_id || '-' || CAST(
(
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'ga_session_id'
LIMIT
1
).int_value AS STRING
)
ELSE NULL
END
)
) AS download_installer_intent_goal
FROM
`moz-fx-data-marketing-prod.analytics_313696158.events_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', @submission_date)
--page is the VPN download page
AND (
SELECT
`value`
FROM
UNNEST(event_params)
WHERE
key = 'page_location'
LIMIT
1
).string_value LIKE "%/products/vpn/download/%"
GROUP BY
PARSE_DATE('%Y%m%d', event_date),
device.category,
device.operating_system,
device.web_info.browser,
device.language,
geo.country,
collected_traffic_source.manual_source,
collected_traffic_source.manual_medium,
collected_traffic_source.manual_campaign_name,
collected_traffic_source.manual_content,
`site`
)
SELECT
COALESCE(COALESCE(ssns.`date`, vpn_sub_gls.`date`), vpn_dl_gls.`date`) AS `date`,
COALESCE(
COALESCE(ssns.device_category, vpn_sub_gls.device_category),
vpn_dl_gls.device_category
) AS device_category,
COALESCE(
COALESCE(ssns.operating_system, vpn_sub_gls.operating_system),
vpn_dl_gls.operating_system
) AS operating_system,
COALESCE(COALESCE(ssns.browser, vpn_sub_gls.browser), vpn_dl_gls.browser) AS browser,
COALESCE(COALESCE(ssns.`language`, vpn_sub_gls.`language`), vpn_dl_gls.`language`) AS `language`,
COALESCE(COALESCE(ssns.country, vpn_sub_gls.country), vpn_dl_gls.country) AS country,
COALESCE(COALESCE(ssns.source, vpn_sub_gls.source), vpn_dl_gls.source) AS source,
COALESCE(COALESCE(ssns.medium, vpn_sub_gls.medium), vpn_dl_gls.medium) AS medium,
COALESCE(COALESCE(ssns.campaign, vpn_sub_gls.campaign), vpn_dl_gls.campaign) AS campaign,
COALESCE(COALESCE(ssns.content, vpn_sub_gls.content), vpn_dl_gls.content) AS content,
COALESCE(COALESCE(ssns.`site`, vpn_sub_gls.`site`), vpn_dl_gls.`site`) AS `site`,
ssns.sessions,
ssns.non_fx_sessions,
vpn_sub_gls.subscribe_intent_goal,
vpn_sub_gls.non_fx_subscribe_intent_goal,
NULL AS join_waitlist_intent_goal, --don't see any waitlist option in GA4 for VPN
NULL AS join_waitlist_success_goal, --don't see any waitlist option in GA4 for VPN
NULL AS sign_in_intent_goal, --not sure how to add this yet
vpn_dl_gls.download_intent_goal,
vpn_dl_gls.download_installer_intent_goal,
std_cntry.standardized_country AS standardized_country_name
FROM
sessions_stg AS ssns
FULL OUTER JOIN
vpn_subscribe_goals_stg AS vpn_sub_gls
ON ssns.`date` = vpn_sub_gls.`date`
AND COALESCE(ssns.device_category, 'Unknown') = COALESCE(vpn_sub_gls.device_category, 'Unknown')
AND COALESCE(ssns.operating_system, 'Unknown') = COALESCE(vpn_sub_gls.operating_system, 'Unknown')
AND COALESCE(ssns.browser, 'Unknown') = COALESCE(vpn_sub_gls.browser, 'Unknown')
AND COALESCE(ssns.`language`, 'Unknown') = COALESCE(vpn_sub_gls.`language`, 'Unknown')
AND COALESCE(ssns.country, 'Unknown') = COALESCE(vpn_sub_gls.country, 'Unknown')
AND COALESCE(ssns.source, '') = COALESCE(vpn_sub_gls.source, '')
AND COALESCE(ssns.medium, '') = COALESCE(vpn_sub_gls.medium, '')
AND COALESCE(ssns.campaign, '') = COALESCE(vpn_sub_gls.campaign, '')
AND COALESCE(ssns.content, '') = COALESCE(vpn_sub_gls.content, '')
AND COALESCE(ssns.`site`, '') = COALESCE(vpn_sub_gls.`site`, '')
FULL OUTER JOIN
vpn_dl_goals AS vpn_dl_gls
ON COALESCE(ssns.`date`, vpn_sub_gls.`date`) = vpn_dl_gls.`date`
AND COALESCE(COALESCE(ssns.device_category, vpn_sub_gls.device_category), 'Unknown') = COALESCE(
vpn_dl_gls.device_category,
'Unknown'
)
AND COALESCE(COALESCE(ssns.operating_system, vpn_sub_gls.operating_system), 'Unknown') = COALESCE(
vpn_dl_gls.operating_system,
'Unknown'
)
AND COALESCE(COALESCE(ssns.browser, vpn_sub_gls.browser), 'Unknown') = COALESCE(
vpn_dl_gls.browser,
'Unknown'
)
AND COALESCE(COALESCE(ssns.`language`, vpn_sub_gls.`language`), 'Unknown') = COALESCE(
vpn_dl_gls.`language`,
'Unknown'
)
AND COALESCE(COALESCE(ssns.country, vpn_sub_gls.country), 'Unknown') = COALESCE(
vpn_dl_gls.country,
'Unknown'
)
AND COALESCE(COALESCE(ssns.source, vpn_sub_gls.source), '') = COALESCE(vpn_dl_gls.source, '')
AND COALESCE(COALESCE(ssns.medium, vpn_sub_gls.medium), '') = COALESCE(vpn_dl_gls.medium, '')
AND COALESCE(COALESCE(ssns.campaign, vpn_sub_gls.campaign), '') = COALESCE(
vpn_dl_gls.campaign,
''
)
AND COALESCE(COALESCE(ssns.content, vpn_sub_gls.content), '') = COALESCE(vpn_dl_gls.content, '')
AND COALESCE(COALESCE(ssns.`site`, vpn_sub_gls.`site`), '') = COALESCE(vpn_dl_gls.`site`, '')
LEFT OUTER JOIN
`moz-fx-data-shared-prod.static.third_party_standardized_country_names` AS std_cntry
ON COALESCE(
COALESCE(ssns.country, vpn_sub_gls.country),
vpn_dl_gls.country
) = std_cntry.raw_country