backfill/2023-08-03-firefox_desktop_active_users_aggregates_v1/query.sql (123 lines of code) (raw):
WITH baseline_attribution_data AS (
SELECT
activity_segment AS segment,
normalized_app_name AS app_name,
app_version,
normalized_channel AS channel,
country,
city,
EXTRACT(YEAR FROM first_seen_date) AS first_seen_year,
first_seen_date,
normalized_os AS os,
normalized_os_version AS os_version,
COALESCE(
CAST(NULLIF(SPLIT(normalized_os_version, ".")[SAFE_OFFSET(0)], "") AS INTEGER),
0
) AS os_version_major,
COALESCE(
CAST(NULLIF(SPLIT(normalized_os_version, ".")[SAFE_OFFSET(1)], "") AS INTEGER),
0
) AS os_version_minor,
submission_date,
is_default_browser,
distribution_id,
attribution_source,
attribution_medium,
attribution_medium IS NOT NULL
OR attribution_source IS NOT NULL AS attributed,
attribution_campaign,
attribution_content,
attribution_experiment,
attribution_variation,
days_since_seen,
ad_click,
organic_search_count,
search_count,
search_with_ads,
uri_count,
active_hours_sum,
um.client_id,
locale
FROM
`moz-fx-data-shared-prod.telemetry.unified_metrics` AS um
WHERE
um.submission_date BETWEEN '2021-01-01' AND '2023-08-02' and normalized_app_name = 'Firefox Desktop'
),
enriched_with_language AS
(
SELECT
baseline_attribution_data.* EXCEPT (locale),
CASE
WHEN locale IS NOT NULL
AND languages.language_name IS NULL
THEN 'Other'
ELSE languages.language_name
END AS language_name,
FROM
baseline_attribution_data
LEFT JOIN
`mozdata.static.csa_gblmkt_languages` AS languages
ON
baseline_attribution_data.locale = languages.code
),
final_attribution_data AS (SELECT
segment,
app_name,
app_version,
channel,
country,
city,
first_seen_year,
os,
os_version,
os_version_major,
os_version_minor,
submission_date,
is_default_browser,
distribution_id,
attribution_medium,
attribution_source,
attributed,
attribution_campaign,
attribution_content,
attribution_experiment,
attribution_variation,
language_name,
COUNT(DISTINCT IF(days_since_seen = 0, client_id, NULL)) AS dau,
COUNT(DISTINCT IF(days_since_seen < 7, client_id, NULL)) AS wau,
COUNT(DISTINCT client_id) AS mau,
COUNT(DISTINCT IF(submission_date = first_seen_date, client_id, NULL)) AS new_profiles,
SUM(ad_click) AS ad_clicks,
SUM(organic_search_count) AS organic_search_count,
SUM(search_count) AS search_count,
SUM(search_with_ads) AS search_with_ads,
SUM(uri_count) AS uri_count,
SUM(active_hours_sum) AS active_hours
FROM
enriched_with_language
GROUP BY
segment,
distribution_id,
channel,
os_version,
os_version_major,
os_version_minor,
language_name,
app_name,
app_version,
attributed,
attribution_medium,
attribution_source,
city,
country,
first_seen_year,
is_default_browser,
app_name,
os,
submission_date,
attribution_campaign,
attribution_content,
attribution_experiment,
attribution_variation
)
select * from final_attribution_data