sql/moz-fx-data-shared-prod/firefox_desktop/baseline_active_users/view.sql (124 lines of code) (raw):
CREATE OR REPLACE VIEW
`moz-fx-data-shared-prod.firefox_desktop.baseline_active_users`
AS
SELECT
last_seen.* EXCEPT (
app_display_version,
normalized_channel,
normalized_os,
normalized_os_version,
distribution_id,
attribution,
`distribution`
) REPLACE(
IFNULL(country, '??') AS country,
IFNULL(city, '??') AS city,
COALESCE(REGEXP_EXTRACT(locale, r'^(.+?)-'), locale, NULL) AS locale
),
CASE
WHEN LOWER(IFNULL(isp, '')) = 'browserstack'
THEN CONCAT('Firefox Desktop', ' ', isp)
WHEN LOWER(
IFNULL(COALESCE(last_seen.distribution_id, distribution_mapping.distribution_id), '')
) = 'mozillaonline'
THEN CONCAT(
'Firefox Desktop',
' ',
COALESCE(last_seen.distribution_id, distribution_mapping.distribution_id)
)
ELSE 'Firefox Desktop'
END AS app_name,
app_display_version AS app_version,
`mozfun.norm.browser_version_info`(app_display_version).major_version AS app_version_major,
`mozfun.norm.browser_version_info`(app_display_version).minor_version AS app_version_minor,
`mozfun.norm.browser_version_info`(
app_display_version
).patch_revision AS app_version_patch_revision,
`mozfun.norm.browser_version_info`(
app_display_version
).is_major_release AS app_version_is_major_release,
normalized_channel AS channel,
COALESCE(last_seen.distribution_id, distribution_mapping.distribution_id) AS distribution_id,
CASE
WHEN last_seen.distribution_id IS NOT NULL
THEN "glean"
WHEN distribution_mapping.distribution_id IS NOT NULL
THEN "legacy"
ELSE CAST(NULL AS STRING)
END AS distribution_id_source,
normalized_os AS os,
normalized_os_version AS os_version,
COALESCE(
`mozfun.norm.windows_version_info`(normalized_os, normalized_os_version, windows_build_number),
normalized_os_version
) AS os_version_build,
CAST(
`mozfun.norm.extract_version`(
COALESCE(
`mozfun.norm.windows_version_info`(
normalized_os,
normalized_os_version,
windows_build_number
),
normalized_os_version
),
"major"
) AS INTEGER
) AS os_version_major,
CAST(
`mozfun.norm.extract_version`(
COALESCE(
`mozfun.norm.windows_version_info`(
normalized_os,
normalized_os_version,
windows_build_number
),
normalized_os_version
),
"minor"
) AS INTEGER
) AS os_version_minor,
CASE
WHEN BIT_COUNT(days_desktop_active_bits)
BETWEEN 1
AND 6
THEN 'infrequent_user'
WHEN BIT_COUNT(days_desktop_active_bits)
BETWEEN 7
AND 13
THEN 'casual_user'
WHEN BIT_COUNT(days_desktop_active_bits)
BETWEEN 14
AND 20
THEN 'regular_user'
WHEN BIT_COUNT(days_desktop_active_bits) >= 21
THEN 'core_user'
ELSE 'other'
END AS activity_segment,
EXTRACT(YEAR FROM last_seen.first_seen_date) AS first_seen_year,
COALESCE(mozfun.bits28.days_since_seen(days_seen_bits) = 0, FALSE) AS is_daily_user,
COALESCE(mozfun.bits28.days_since_seen(days_seen_bits) < 7, FALSE) AS is_weekly_user,
COALESCE(mozfun.bits28.days_since_seen(days_seen_bits) < 28, FALSE) AS is_monthly_user,
COALESCE(mozfun.bits28.days_since_seen(days_desktop_active_bits) = 0, FALSE) AS is_dau,
COALESCE(mozfun.bits28.days_since_seen(days_desktop_active_bits) < 7, FALSE) AS is_wau,
COALESCE(mozfun.bits28.days_since_seen(days_desktop_active_bits) < 28, FALSE) AS is_mau,
last_seen.attribution.campaign AS attribution_campaign,
last_seen.attribution.content AS attribution_content,
last_seen.attribution.medium AS attribution_medium,
last_seen.attribution.source AS attribution_source,
last_seen.attribution.term AS attribution_term,
last_seen.distribution.name AS distribution_name,
first_seen.attribution.campaign AS first_seen_attribution_campaign,
first_seen.attribution.content AS first_seen_attribution_content,
first_seen.attribution.medium AS first_seen_attribution_medium,
first_seen.attribution.source AS first_seen_attribution_source,
first_seen.attribution.term AS first_seen_attribution_term,
first_seen.distribution.name AS first_seen_distribution_name
FROM
`moz-fx-data-shared-prod.firefox_desktop.baseline_clients_last_seen` AS last_seen
LEFT JOIN
`moz-fx-data-shared-prod.firefox_desktop_derived.desktop_dau_distribution_id_history_v1` AS distribution_mapping
USING (submission_date, client_id)
LEFT JOIN
`moz-fx-data-shared-prod.firefox_desktop_derived.baseline_clients_first_seen_v1` AS first_seen
ON last_seen.client_id = first_seen.client_id