sql/moz-fx-data-shared-prod/search_derived/search_dau_aggregates_v1/query.sql (574 lines of code) (raw):
##### PULL SEARCH BEHAVIOR & ENGINES BY CLIENT
WITH desktop_search_data AS (
SELECT
submission_date,
country,
client_id,
distribution_id,
CASE
WHEN default_search_engine LIKE '%google%'
THEN "Google"
WHEN default_search_engine LIKE '%bing%'
THEN "Bing"
WHEN default_search_engine LIKE '%ddg%'
OR default_search_engine LIKE '%duckduckgo%'
THEN "DuckDuckGo"
ELSE NULL
END AS normalized_default_search_engine,
normalized_engine,
SUM(sap) AS search_count,
SUM(ad_click) AS ad_click
FROM
`moz-fx-data-shared-prod.search.search_clients_engines_sources_daily`
WHERE
submission_date = @submission_date
GROUP BY
submission_date,
country,
client_id,
distribution_id,
normalized_default_search_engine,
normalized_engine
),
## have to pull mobile search data from baseline ping so dates match DAU
mobile_baseline_engine AS (
SELECT DISTINCT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine_code AS default_search_engine
FROM
`moz-fx-data-shared-prod.fenix.baseline`
WHERE
DATE(submission_timestamp) = @submission_date
UNION ALL
SELECT DISTINCT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine
FROM
`moz-fx-data-shared-prod.firefox_ios.baseline`
WHERE
DATE(submission_timestamp) = @submission_date
UNION ALL
SELECT DISTINCT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.browser_default_search_engine AS default_search_engine
FROM
`moz-fx-data-shared-prod.focus_android.baseline`
WHERE
DATE(submission_timestamp) = @submission_date
UNION ALL
SELECT DISTINCT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine
FROM
`moz-fx-data-shared-prod.focus_ios.baseline`
WHERE
DATE(submission_timestamp) = @submission_date
),
mobile_baseline_search AS (
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine_code AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS search_count
FROM
`moz-fx-data-shared-prod.fenix.baseline`,
UNNEST(metrics.labeled_counter.metrics_search_count) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS search_count
FROM
`moz-fx-data-shared-prod.firefox_ios.baseline`,
UNNEST(metrics.labeled_counter.search_counts) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.browser_default_search_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS search_count
FROM
`moz-fx-data-shared-prod.focus_android.baseline`,
UNNEST(metrics.labeled_counter.browser_search_search_count) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS search_count
FROM
`moz-fx-data-shared-prod.focus_ios.baseline`,
UNNEST(metrics.labeled_counter.browser_search_search_count) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
),
mobile_baseline_search_ad_clicks AS (
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine_code AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS ad_click
FROM
`moz-fx-data-shared-prod.fenix.baseline`,
UNNEST(metrics.labeled_counter.browser_search_ad_clicks) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS ad_click
FROM
`moz-fx-data-shared-prod.firefox_ios.baseline`,
UNNEST(metrics.labeled_counter.browser_search_ad_clicks) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.browser_default_search_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS ad_click
FROM
`moz-fx-data-shared-prod.focus_android.baseline`,
UNNEST(metrics.labeled_counter.browser_search_ad_clicks) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
UNION ALL
SELECT
DATE(submission_timestamp) AS submission_date,
client_info.client_id,
metrics.string.search_default_engine AS default_search_engine,
key_value.key AS engine,
SUM(key_value.value) AS ad_click
FROM
`moz-fx-data-shared-prod.focus_ios.baseline`,
UNNEST(metrics.labeled_counter.browser_search_ad_clicks) AS key_value
WHERE
DATE(submission_timestamp) = @submission_date
AND key_value.value <= 10000
GROUP BY
1,
2,
3,
4
),
mobile_baseline_full AS (
SELECT
submission_date,
client_id,
CASE
WHEN default_search_engine LIKE '%google%'
THEN "Google"
WHEN default_search_engine LIKE '%bing%'
THEN "Bing"
WHEN default_search_engine LIKE '%ddg%'
OR default_search_engine LIKE '%duckduckgo%'
THEN "DuckDuckGo"
ELSE NULL
END AS normalized_default_search_engine,
`moz-fx-data-shared-prod.udf.normalize_search_engine`(engine) AS normalized_engine,
SUM(search_count) AS search_count,
SUM(ad_click) AS ad_click
FROM
mobile_baseline_engine
LEFT JOIN
mobile_baseline_search
USING (submission_date, client_id, default_search_engine)
LEFT JOIN
mobile_baseline_search_ad_clicks
USING (submission_date, client_id, default_search_engine, engine)
GROUP BY
submission_date,
client_id,
normalized_default_search_engine,
normalized_engine
),
### PULL CLIENTS WHO QUALIFY FOR KPI ACTIVITY STANDARDS
desktop_dau_data AS (
SELECT DISTINCT
"desktop" AS device,
submission_date,
country,
client_id,
normalized_channel
FROM
`mozdata.telemetry.desktop_active_users`
WHERE
submission_date = @submission_date
AND is_dau
# not including Mozilla Online
AND app_name = "Firefox Desktop"
),
mobile_dau_data AS (
SELECT DISTINCT
"mobile" AS device,
submission_date,
country,
client_id,
normalized_channel
FROM
`mozdata.telemetry.mobile_active_users`
WHERE
submission_date = @submission_date
AND is_dau
# not including Fenix MozillaOnline, BrowserStack, Klar
AND app_name IN ("Focus iOS", "Firefox iOS", "Fenix", "Focus Android")
),
### FINAL CLIENT-LEVEL TABLES
desktop_by_client_id AS (
SELECT DISTINCT
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
client_id,
CASE
WHEN search_count > 0
THEN 1
ELSE 0
END AS sap_category,
CASE
WHEN ad_click > 0
THEN 1
ELSE 0
END AS ad_click_category
FROM
desktop_dau_data
LEFT JOIN
desktop_search_data
USING (submission_date, country, client_id)
),
mobile_by_client_id AS (
SELECT DISTINCT
submission_date,
device,
normalized_channel,
country,
"NULL" AS distribution_id,
normalized_default_search_engine,
normalized_engine,
client_id,
CASE
WHEN search_count > 0
THEN 1
ELSE 0
END AS sap_category,
CASE
WHEN ad_click > 0
THEN 1
ELSE 0
END AS ad_click_category
FROM
mobile_dau_data
LEFT JOIN
mobile_baseline_full
USING (submission_date, client_id)
)
### COUNT DAU BY SEARCH BEHAVIOR
SELECT
"Google" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
COUNT(
DISTINCT IF(
normalized_default_search_engine = "Google"
AND (
(submission_date < "2023-12-01" AND country NOT IN ('RU', 'UA', 'TR', 'BY', 'KZ', 'CN'))
OR (submission_date >= "2023-12-01" AND country NOT IN ('RU', 'UA', 'BY', 'CN'))
),
client_id,
NULL
)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(
sap_category > 0
AND normalized_engine = 'Google'
AND (
(submission_date < "2023-12-01" AND country NOT IN ('RU', 'UA', 'TR', 'BY', 'KZ', 'CN'))
OR (submission_date >= "2023-12-01" AND country NOT IN ('RU', 'UA', 'BY', 'CN'))
),
client_id,
NULL
)
) AS dau_engaged_w_sap,
FROM
desktop_by_client_id
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category
UNION ALL
SELECT
"Bing" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
COUNT(
DISTINCT IF(normalized_default_search_engine = "Bing", client_id, NULL)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(sap_category > 0 AND normalized_engine = 'Bing', client_id, NULL)
) AS dau_engaged_w_sap,
FROM
desktop_by_client_id
WHERE
(distribution_id IS NULL OR distribution_id NOT LIKE '%acer%')
AND client_id NOT IN (SELECT client_id FROM `moz-fx-data-shared-prod.search.acer_cohort`)
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category
UNION ALL
SELECT
"DuckDuckGo" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
COUNT(
DISTINCT IF(normalized_default_search_engine = "DuckDuckGo", client_id, NULL)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(sap_category > 0 AND normalized_engine = "DuckDuckGo", client_id, NULL)
) AS dau_engaged_w_sap
FROM
desktop_by_client_id
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category
UNION ALL
SELECT
"Google" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
# custom engine bug merged in v121
# null engine bug merged in v126
# remove default engine data prior to June 2024
COUNT(
DISTINCT IF(
submission_date >= "2024-06-01"
AND normalized_default_search_engine = "Google"
AND (
(submission_date < "2023-12-01" AND country NOT IN ('RU', 'UA', 'TR', 'BY', 'KZ', 'CN'))
OR (submission_date >= "2023-12-01" AND country NOT IN ('RU', 'UA', 'BY', 'CN'))
),
client_id,
NULL
)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(
sap_category > 0
AND normalized_engine = 'Google'
AND (
(submission_date < "2023-12-01" AND country NOT IN ('RU', 'UA', 'TR', 'BY', 'KZ', 'CN'))
OR (submission_date >= "2023-12-01" AND country NOT IN ('RU', 'UA', 'BY', 'CN'))
),
client_id,
NULL
)
) AS dau_engaged_w_sap
FROM
mobile_by_client_id
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category
UNION ALL
SELECT
"Bing" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
# custom engine bug merged in v121
# null engine bug merged in v126
# remove default engine data prior to June 2024
COUNT(
DISTINCT IF(
submission_date >= "2024-06-01"
AND normalized_default_search_engine = "Bing",
client_id,
NULL
)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(sap_category > 0 AND normalized_engine = 'Bing', client_id, NULL)
) AS dau_engaged_w_sap
FROM
mobile_by_client_id
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category
UNION ALL
SELECT
"DuckDuckGo" AS partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category,
# custom engine bug merged in v121
# null engine bug merged in v126
# remove default engine data prior to June 2024
COUNT(
DISTINCT IF(
submission_date >= "2024-06-01"
AND normalized_default_search_engine = "DuckDuckGo",
client_id,
NULL
)
) AS dau_w_engine_as_default,
COUNT(
DISTINCT IF(sap_category > 0 AND normalized_engine = "DuckDuckGo", client_id, NULL)
) AS dau_engaged_w_sap
FROM
mobile_by_client_id
GROUP BY
partner,
submission_date,
device,
normalized_channel,
country,
distribution_id,
normalized_default_search_engine,
normalized_engine,
sap_category,
ad_click_category