bigquery-etl/sql_generators/feature_usage/templating.yaml

1181 строка
34 KiB
YAML

# This config file defines the feature usage metrics that will be used to
# generate the SQL query for telemetry_derived.feature_usage_v2.
#
# The general structure of this config file is as follows:
# sources:
# - name: <source_name>
# ref: <dataset>.<table> # corresponds to BQ table identifier
# filters: # optional, SQL filter statements
# - sql: <SQL snippet>
# group_by: # optional, names of fields to GROUP BY
# - <field_name>
# measures: # metric definitions
# - name: <metric_name>
# sql: <SQL expression>
# vetted: <true|false>
# min_version: <number> # optional, FF min version
# type: <BOOL|INT64|...> # optional, BQ type of the metric result
# - ...
# - name: <another_source>
# ...
#
# `sources` define which tables need to be queried from to compute specific
# metrics. Each source has a set of `measures` which define the feature usage
# metrics. For each measure the `sql` expression needs to be defined, and
# optionally a `min_version` (= browser version which introduces feature), a
# `type` and whether the metric is `vetted`.
#
# After adding new metrics, run `./bqetl feature_usage generate` to re-generate
# the SQL query for `telemetry_derived.feature_usage_v2`.
# Run `./bqetl query schema deploy telemetry_derived.feature_usage_v2` to
# update the schema of the BigQuery destination table. This requires GCP
# credentials.
#
# New metrics will not be automatically backfilled for previous dates. For
# performing a backfill, after changes have been approved and merged, run:
# ./bqetl query backfill telemetry_derived.feature_usage_v2 \
# --start_date=<YYYY-MM-DD> \ # replace with date range
# --end_date=<YYYY-MM-DD>
sources:
### User Type ###
- name: user_type
ref: telemetry.clients_last_seen
filters:
- sql: submission_date = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
- sql: days_since_seen = 0
measures:
- name: client_id
sql: client_id
- name: submission_date
sql: submission_date
- name: profile_group_id
sql: profile_group_id
- name: activity_segments_v1
sql: activity_segments_v1
vetted: true
- name: is_allweek_regular_v1
sql: is_allweek_regular_v1
vetted: true
- name: is_weekday_regular_v1
sql: is_weekday_regular_v1
vetted: true
- name: is_core_active_v1
sql: is_core_active_v1
vetted: true
- name: days_since_first_seen
sql: days_since_first_seen
vetted: true
- name: days_since_seen
sql: days_since_seen
vetted: true
- name: new_profile_7_day_activated_v1
sql: new_profile_7_day_activated_v1
vetted: true
- name: new_profile_14_day_activated_v1
sql: new_profile_14_day_activated_v1
vetted: true
- name: new_profile_21_day_activated_v1
sql: new_profile_21_day_activated_v1
vetted: true
- name: first_seen_date
sql: first_seen_date
vetted: true
- name: days_since_created_profile
sql: days_since_created_profile
vetted: true
- name: profile_creation_date
sql: profile_creation_date
vetted: true
- name: country
sql: country
vetted: true
- name: scalar_parent_os_environment_is_taskbar_pinned
sql: scalar_parent_os_environment_is_taskbar_pinned
vetted: true
min_version: 88
type: BOOL
- name: scalar_parent_os_environment_launched_via_desktop
sql: scalar_parent_os_environment_launched_via_desktop
vetted: true
min_version: 88
type: BOOL
- name: scalar_parent_os_environment_launched_via_other
sql: scalar_parent_os_environment_launched_via_other
vetted: true
min_version: 88
type: BOOL
- name: scalar_parent_os_environment_launched_via_taskbar
sql: scalar_parent_os_environment_launched_via_taskbar
vetted: true
min_version: 88
type: BOOL
- name: scalar_parent_os_environment_launched_via_start_menu
sql: scalar_parent_os_environment_launched_via_start_menu
vetted: true
min_version: 88
type: BOOL
- name: scalar_parent_os_environment_launched_via_other_shortcut
sql: scalar_parent_os_environment_launched_via_other_shortcut
vetted: true
min_version: 88
type: BOOL
- name: os
sql: os
vetted: true
min_version: 42
type: STRING
- name: normalized_os_version
sql: normalized_os_version
vetted: true
min_version: 42
type: STRING
- name: app_version
sql: app_version
vetted: true
min_version: 42
type: STRING
- name: attributed
sql: >
(attribution.campaign IS NOT NULL) OR
(attribution.source IS NOT NULL)
vetted: true
- name: is_default_browser
sql: is_default_browser
vetted: true
min_version: 44
type: BOOL
- name: sync_count_desktop_mean
sql: sync_count_desktop_mean
vetted: true
min_version: 46
type: FLOAT64
- name: sync_count_mobile_mean
sql: sync_count_mobile_mean
vetted: true
min_version: 46
type: FLOAT64
- name: active_hours_sum
sql: active_hours_sum
vetted: true
min_version: 56
type: FLOAT64
- name: scalar_parent_browser_engagement_total_uri_count_sum
sql: subsession_hours_sum
vetted: true
min_version: 50
type: NUMERIC
- name: ad_clicks_count_all
sql: ad_clicks_count_all
vetted: true
min_version: 65
type: INT64
- name: scalar_parent_browser_engagement_tab_open_event_count_sum
sql: scalar_parent_browser_engagement_tab_open_event_count_sum
vetted: true
min_version: 50
type: INT64
- name: scalar_parent_browser_engagement_window_open_event_count_sum
sql: scalar_parent_browser_engagement_window_open_event_count_sum
vetted: true
min_version: 50
type: INT64
- name: scalar_parent_browser_engagement_unique_domains_count_max
sql: scalar_parent_browser_engagement_unique_domains_count_max
vetted: true
min_version: 50
type: INT64
- name: scalar_parent_browser_engagement_unique_domains_count_mean
sql: scalar_parent_browser_engagement_unique_domains_count_mean
vetted: true
min_version: 50
type: INT64
- name: scalar_parent_browser_engagement_max_concurrent_tab_count_max
sql: scalar_parent_browser_engagement_max_concurrent_tab_count_max
vetted: true
min_version: 50
type: INT64
- name: scalar_parent_browser_engagement_max_concurrent_window_count_max
sql: scalar_parent_browser_engagement_max_concurrent_window_count_max
vetted: true
min_version: 50
type: INT64
- name: search_count_abouthome
sql: search_count_abouthome
vetted: true
min_version: 86
type: INT64
- name: search_count_all
sql: search_count_all
vetted: true
min_version: 43
type: INT64
- name: search_count_contextmenu
sql: search_count_contextmenu
vetted: true
min_version: 86
type: INT64
- name: search_count_newtab
sql: search_count_newtab
vetted: true
min_version: 86
type: INT64
- name: search_count_organic
sql: search_count_organic
vetted: true
min_version: 86
type: INT64
- name: search_count_searchbar
sql: search_count_searchbar
vetted: true
min_version: 86
type: INT64
- name: search_count_system
sql: search_count_system
vetted: true
min_version: 86
type: INT64
- name: search_count_tagged_follow_on
sql: search_count_tagged_follow_on
vetted: true
min_version: 86
type: INT64
- name: search_count_tagged_sap
sql: search_count_tagged_sap
vetted: true
min_version: 86
type: INT64
- name: search_count_urlbar
sql: search_count_urlbar
vetted: true
min_version: 86
type: INT64
- name: search_count_urlbar_handoff
sql: search_count_urlbar_handoff
vetted: true
min_version: 94
type: INT64
- name: search_with_ads_count_all
sql: search_with_ads_count_all
vetted: true
min_version: 64
type: INT64
- name: newtabpage_disabled
sql: SAFE_CAST(user_pref_browser_newtabpage_enabled AS BOOL)
type: BOOL
- name: num_topsites_new_tab_impressions_sponsored
sql: >
(
SELECT
SUM(
IF(SPLIT(key, '_')[SAFE_OFFSET(0)] = 'newtab', value, 0)
)
FROM
UNNEST(contextual_services_topsites_impression_sum)
)
min_version: 87
type: INT64
- name: num_new_tab_topsites_clicks_sponsored
sql: >
(
SELECT
SUM(
IF(SPLIT(key, '_')[SAFE_OFFSET(0)] = 'newtab', value, 0)
)
FROM
UNNEST(contextual_services_topsites_click_sum)
)
min_version: 87
type: INT64
### Main ###
- name: main
ref: telemetry.main_remainder_1pct
group_by: ["submission_date", "client_id"]
filters:
- sql: DATE(submission_timestamp) = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
measures:
- name: client_id
sql: client_id
- name: subsample_id
sql: MOD(ABS(FARM_FINGERPRINT(client_id)), 100)
- name: submission_date
sql: DATE(submission_timestamp)
- name: is_headless
sql: LOGICAL_OR(COALESCE(environment.system.gfx.headless, FALSE))
vetted: true
min_version: 72
type: BOOL
- name: video_play_time_ms
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.processes.content.histograms.video_play_time_ms,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 70
type: INT64
- name: video_encrypted_play_time_ms
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.processes.content.histograms.video_encrypted_play_time_ms,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 82
type: INT64
- name: pdf_viewer_time_to_view_ms_content
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.processes.content.histograms.pdf_viewer_time_to_view_ms,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 38
type: INT64
- name: pip_window_open_duration
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.histograms.fx_picture_in_picture_window_open_duration,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 69
type: INT64
- name: video_play_time_ms_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
mozfun.hist.extract(payload.processes.content.histograms.video_play_time_ms).values
)
)
)
vetted: true
min_version: 72
type: INT64
- name: video_encrypted_play_time_ms_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
mozfun.hist.extract(
payload.processes.content.histograms.video_encrypted_play_time_ms
).values
)
)
)
vetted: true
min_version: 70
type: INT64
- name: pdf_viewer_time_to_view_ms_content_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
mozfun.hist.extract(
payload.processes.content.histograms.pdf_viewer_time_to_view_ms
).values
)
)
)
vetted: true
min_version: 38
type: INT64
- name: pip_window_open_duration_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
mozfun.hist.extract(
payload.histograms.fx_picture_in_picture_window_open_duration
).values
)
)
)
vetted: true
min_version: 69
type: INT64
- name: pdf_viewer_doc_size_kb
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.histograms.pdf_viewer_document_size_kb,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 38
type: INT64
- name: pdf_viewer_doc_size_kb_content
sql: >
SUM(
CAST(
JSON_EXTRACT_SCALAR(
payload.processes.content.histograms.pdf_viewer_document_size_kb,
'$.sum'
) AS int64
)
)
vetted: true
min_version: 38
type: INT64
- name: pdf_viewer_doc_size_kb_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(mozfun.hist.extract(payload.histograms.pdf_viewer_document_size_kb).values)
)
)
vetted: true
min_version: 38
type: INT64
- name: pdf_viewer_doc_size_kb_content_count
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
mozfun.hist.extract(
payload.processes.content.histograms.pdf_viewer_document_size_kb
).values
)
)
)
vetted: true
min_version: 38
type: INT64
- name: sync_signed_in
sql: COUNTIF(environment.services.account_enabled) > 0
vetted: true
min_version: 44
type: BOOL
- name: ccards_saved
sql: >
COUNTIF(
payload.processes.parent.scalars.formautofill_credit_cards_autofill_profiles_count
IS NOT NULL
) > 0
vetted: true
min_version: 81
type: BOOL
- name: pbm_used
sql: >
COUNTIF(
payload.processes.parent.scalars.dom_parentprocess_private_window_used
) > 0
vetted: true
min_version: 64
type: BOOL
- name: unique_sidebars_accessed_count
sql: >
SUM(
ARRAY_LENGTH(payload.processes.parent.keyed_scalars.sidebar_opened)
)
vetted: true
min_version: 81
type: INT64
- name: sidebars_accessed_total
sql: >
SUM(
(SELECT SUM(value)
FROM UNNEST(payload.processes.parent.keyed_scalars.sidebar_opened))
)
vetted: true
min_version: 81
type: INT64
- name: unique_history_urlbar_indices_picked_count
sql: >
SUM(
ARRAY_LENGTH(payload.processes.parent.keyed_scalars.urlbar_picked_history)
)
vetted: true
min_version: 84
type: INT64
- name: history_urlbar_picked_total
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.urlbar_picked_history)
)
)
vetted: true
min_version: 84
type: INT64
- name: unique_remotetab_indices_picked_count
sql: >
SUM(
ARRAY_LENGTH(payload.processes.parent.keyed_scalars.urlbar_picked_remotetab)
)
vetted: true
min_version: 84
type: INT64
- name: remotetab_picked_total
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.urlbar_picked_remotetab)
)
)
vetted: true
min_version: 84
type: INT64
- name: uris_from_newtab
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
payload.processes.parent.keyed_scalars.browser_engagement_navigation_about_newtab
)
)
)
vetted: true
min_version: 52
type: INT64
- name: uris_from_searchbar
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.browser_engagement_navigation_searchbar)
)
)
vetted: true
min_version: 52
type: INT64
- name: uris_from_urlbar
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.browser_engagement_navigation_urlbar)
)
)
vetted: true
min_version: 52
type: INT64
- name: nav_history_urlbar
sql: >
SUM(
mozfun.map.get_key(
mozfun.hist.extract(payload.histograms.fx_urlbar_selected_result_type_2).values,
2
)
)
vetted: true
min_version: 78
type: INT64
- name: nav_autocomplete_urlbar
sql: >
SUM(
mozfun.map.get_key(
mozfun.hist.extract(payload.histograms.fx_urlbar_selected_result_type_2).values,
0
)
)
vetted: true
min_version: 78
type: INT64
- name: nav_visiturl_urlbar
sql: >
SUM(
mozfun.map.get_key(
mozfun.hist.extract(payload.histograms.fx_urlbar_selected_result_type_2).values,
8
)
)
vetted: true
min_version: 78
type: INT64
- name: nav_searchsuggestion_urlbar
sql: >
SUM(
mozfun.map.get_key(
mozfun.hist.extract(payload.histograms.fx_urlbar_selected_result_type_2).values,
5
)
)
vetted: true
min_version: 78
type: INT64
- name: nav_topsite_urlbar
sql: >
SUM(
mozfun.map.get_key(
mozfun.hist.extract(payload.histograms.fx_urlbar_selected_result_type_2).values,
13
)
)
vetted: true
min_version: 78
type: INT64
- name: num_passwords_saved
sql: >
MAX(
CAST(
JSON_EXTRACT_SCALAR(
payload.histograms.pwmgr_num_saved_passwords,
'$.sum'
)
AS int64
)
)
vetted: true
min_version: 38
type: INT64
- name: unique_preferences_accessed_count
sql: >
SUM(
ARRAY_LENGTH(
payload.processes.parent.keyed_scalars.browser_ui_interaction_preferences_pane_general
)
)
vetted: false
min_version: 79
type: INT64
- name: preferences_accessed_total
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(
payload.processes.parent.keyed_scalars.browser_ui_interaction_preferences_pane_general
)
)
)
vetted: false
min_version: 79
type: INT64
- name: unique_bookmarks_bar_accessed_count
sql: >
SUM(
ARRAY_LENGTH(payload.processes.parent.keyed_scalars.browser_ui_interaction_bookmarks_bar)
)
vetted: false
min_version: 79
type: INT64
- name: bookmarks_bar_accessed_total
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.browser_ui_interaction_bookmarks_bar)
)
)
vetted: false
min_version: 79
type: INT64
- name: unique_keyboard_shortcut_count
sql: >
SUM(
ARRAY_LENGTH(payload.processes.parent.keyed_scalars.browser_ui_interaction_keyboard)
)
vetted: false
min_version: 79
type: INT64
- name: keyboard_shortcut_total
sql: >
SUM(
(
SELECT
SUM(value)
FROM
UNNEST(payload.processes.parent.keyed_scalars.browser_ui_interaction_keyboard)
)
)
vetted: false
min_version: 79
type: INT64
### Events ###
- name: events
ref: telemetry.events
group_by: ["submission_date", "client_id"]
filters:
- sql: submission_date = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
measures:
- name: client_id
sql: client_id
- name: submission_date
sql: submission_date
- name: pip_count
sql: >
COUNTIF(
event_category = 'pictureinpicture' AND event_method = 'create'
)
vetted: true
min_version: 70
type: INT64
- name: viewed_protection_report_count
sql: >
COUNTIF(
event_category = 'security.ui.protections'
AND event_object = 'protection_report'
)
vetted: true
min_version: 70
type: INT64
- name: etp_toggle_off
sql: >
COUNTIF(
event_category = 'security.ui.protectionspopup'
AND event_object = 'etp_toggle_off'
)
vetted: true
min_version: 70
type: INT64
- name: etp_toggle_on
sql: >
COUNTIF(
event_category = 'security.ui.protectionspopup'
AND event_object = 'etp_toggle_on'
)
vetted: true
min_version: 70
type: INT64
- name: protections_popup
sql: >
COUNTIF(
event_category = 'security.ui.protectionspopup'
AND event_object = 'protections_popup'
)
vetted: true
min_version: 70
type: INT64
- name: ccard_filled
sql: >
COUNTIF(
event_category = 'creditcard'
AND event_object = 'cc_form'
AND event_method = 'filled'
)
vetted: true
min_version: 81
type: INT64
- name: ccard_saved
sql: >
COUNTIF(
event_category = 'creditcard'
AND event_object = 'capture_doorhanger'
AND event_method = 'save'
)
vetted: true
min_version: 81
type: INT64
- name: installed_extension
sql: >
COUNTIF(
event_method = 'install'
AND event_category = 'addonsManager'
AND event_object = 'extension'
)
vetted: true
min_version: 67
type: INT64
- name: installed_theme
sql: >
COUNTIF(
event_method = 'install'
AND event_category = 'addonsManager'
AND event_object = 'theme'
)
vetted: true
min_version: 67
type: INT64
- name: installed_l10n
sql: >
COUNTIF(
event_method = 'install'
AND event_category = 'addonsManager'
AND event_object IN ('dictionary', 'locale')
)
vetted: true
min_version: 67
type: INT64
- name: used_stored_pw
sql: >
COUNTIF(event_method = 'saved_login_used')
vetted: true
min_version: 78
type: INT64
- name: password_filled
sql: >
COUNTIF(
event_category = 'pwmgr'
AND event_object IN
('form_login', 'form_password', 'auth_login', 'prompt_login')
)
vetted: true
min_version: 78
type: INT64
- name: password_saved
sql: >
COUNTIF(
event_category = 'pwmgr'
AND event_method = 'doorhanger_submitted'
AND event_object = 'save'
)
vetted: true
min_version: 80
type: INT64
- name: pwmgr_opened
sql: >
COUNTIF(event_category = 'pwmgr' AND event_method = 'open_management')
vetted: true
min_version: 68
type: INT64
- name: pwmgr_copy_or_show_info
sql: >
COUNTIF(
event_category = 'pwmgr'
AND event_method IN ('copy', 'show')
)
vetted: true
min_version: 78
type: INT64
- name: pwmgr_interacted_breach
sql: >
COUNTIF(
event_category = 'pwmgr'
AND event_method IN ('dismiss_breach_alert', 'learn_more_breach')
)
vetted: true
min_version: 71
type: INT64
- name: generated_password
sql: >
COUNTIF(
event_object = 'generatedpassword'
AND event_method = 'autocomplete_field'
)
vetted: true
min_version: 69
type: INT64
- name: fxa_connect
sql: COUNTIF(event_category = 'fxa' AND event_method = 'connect')
vetted: true
min_version: 72
type: INT64
- name: normandy_enrolled
sql: >
COUNTIF(
event_category = 'normandy'
AND event_object IN (
"preference_study",
"addon_study",
"preference_rollout",
"addon_rollout"
)
)
vetted: true
min_version: 67
type: INT64
- name: downloads
sql: COUNTIF(event_category = 'downloads')
vetted: true
min_version: 79
type: INT64
- name: pdf_downloads
sql: >
COUNTIF(event_category = 'downloads' AND event_string_value = 'pdf')
vetted: true
min_version: 79
type: INT64
- name: image_downloads
sql: >
COUNTIF(
event_category = 'downloads'
AND event_string_value IN ('jpg', 'jpeg', 'png', 'gif')
)
vetted: true
min_version: 79
type: INT64
- name: media_downloads
sql: >
COUNTIF(
event_category = 'downloads'
AND event_string_value IN ('mp4', 'mp3', 'wav', 'mov')
)
vetted: true
min_version: 79
type: INT64
- name: msoffice_downloads
sql: >
COUNTIF(
event_category = 'downloads'
AND event_string_value IN
('xlsx', 'docx', 'pptx', 'xls', 'ppt', 'doc')
)
vetted: true
min_version: 79
type: INT64
- name: newtab_click
sql: >
COUNTIF(
event_category = 'activity_stream' AND event_object IN ('CLICK')
)
vetted: false
min_version: 60
type: INT64
- name: bookmark_added_from_newtab
sql: >
COUNTIF(
event_category = 'activity_stream'
AND event_object IN ('BOOKMARK_ADD')
)
vetted: false
min_version: 60
type: INT64
- name: saved_to_pocket_from_newtab
sql: >
COUNTIF(
event_category = 'activity_stream'
AND event_object IN ('SAVE_TO_POCKET')
)
vetted: false
min_version: 60
type: INT64
- name: newtab_prefs_opened
sql: >
COUNTIF(
event_category = 'activity_stream'
AND event_object IN ('OPEN_NEWTAB_PREFS')
)
vetted: false
min_version: 60
type: INT64
### Activity Stream Events ###
- name: activity_stream_events
ref: activity_stream.events
group_by: ["submission_date", "client_id"]
filters:
- sql: DATE(submission_timestamp) = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
measures:
- name: client_id
sql: client_id
- name: submission_date
sql: DATE(submission_timestamp)
- name: activitystream_reported_3rdparty_abouthome
sql: >
LOGICAL_OR(
CASE
WHEN event = 'PAGE_TAKEOVER_DATA'
AND page = 'about:home'
THEN TRUE
ELSE FALSE
END
)
vetted: false
- name: activitystream_reported_3rdparty_aboutnewtab
sql: >
LOGICAL_OR(
CASE
WHEN event = 'PAGE_TAKEOVER_DATA'
AND page = 'about:newtab'
THEN TRUE
ELSE FALSE
END
)
vetted: false
- name: activitystream_reported_3rdparty_both
sql: >
LOGICAL_OR(
CASE
WHEN event = 'PAGE_TAKEOVER_DATA'
AND page = 'both'
THEN TRUE
ELSE FALSE
END
)
vetted: false
- name: activitystream_topsite_clicks
sql: COUNTIF(event = 'CLICK' AND source = 'TOP_SITES')
vetted: false
- name: activitystream_highlight_clicks
sql: COUNTIF(event = 'CLICK' AND source = 'HIGHLIGHTS')
vetted: false
- name: activitystream_pocket_clicks
sql: COUNTIF(event = 'CLICK' AND source = 'CARDGRID')
vetted: false
- name: activitystream_sponsored_pocket_clicks
sql: >
COUNTIF(
event = 'CLICK'
AND source = 'CARDGRID'
AND JSON_EXTRACT_SCALAR(value, '$.card_type') = 'spoc'
)
vetted: false
- name: activitystream_sponsored_topsite_clicks
sql: >
COUNTIF(
event = 'CLICK'
AND source = 'TOP_SITES'
AND JSON_EXTRACT_SCALAR(value, '$.card_type') = 'spoc'
)
vetted: false
- name: activitystream_organic_pocket_clicks
sql: >
COUNTIF(
event = 'CLICK'
AND source = 'CARDGRID'
AND JSON_EXTRACT_SCALAR(value, '$.card_type') = 'organic'
)
vetted: false
- name: activitystream_organic_topsite_clicks
sql: >
COUNTIF(
event = 'CLICK'
AND source = 'TOP_SITES'
AND JSON_EXTRACT_SCALAR(value, '$.card_type') = 'organic'
)
vetted: false
### Activity Stream Sessions ###
- name: activity_stream_sessions
ref: activity_stream.sessions
group_by: ["submission_date", "client_id"]
filters:
- sql: DATE(submission_timestamp) = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
measures:
- name: client_id
sql: client_id
- name: submission_date
sql: DATE(submission_timestamp)
- name: activitystream_reported_newtab_search_off
sql: MAX(user_prefs & 1 = 0)
vetted: false
- name: activitystream_reported_topsites_off
sql: MAX(user_prefs & 2 = 0)
vetted: false
- name: activitystream_reported_pocket_off
sql: MAX(user_prefs & 4 = 0)
vetted: false
- name: activitystream_reported_highlights_off
sql: MAX(user_prefs & 8 = 0)
vetted: false
- name: activitystream_reported_sponsored_topstories_off
sql: MAX(user_prefs & 32 = 0)
vetted: false
- name: activitystream_reported_sponsored_topsites_off
sql: MAX(user_prefs & 256 = 0)
vetted: false
- name: activitystream_sessions_abouthome
sql: COUNTIF(page = 'about:home')
vetted: false
- name: activitystream_sessions_newtab
sql: COUNTIF(page = 'about:newtab')
vetted: false
- name: activitystream_sessions_both
sql: COUNTIF(page IN ('about:newtab', 'about:home'))
vetted: false
### Addons ###
- name: addons
ref: telemetry.addons
group_by: ["submission_date", "client_id"]
filters:
- sql: submission_date = @submission_date
- sql: sample_id = 0
- sql: normalized_channel = 'release'
measures:
- name: client_id
sql: client_id
- name: submission_date
sql: submission_date
- name: num_addblockers
sql: >
SUM(
CASE
WHEN addon_id IN (
'uBlock0@raymondhill.net', /* uBlock Origin */
'{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}', /* Adblock Plus */
'jid1-NIfFY2CA8fy1tg@jetpack', /* Adblock */
'{73a6fe31-595d-460b-a920-fcc0f8843232}', /* NoScript */
'firefox@ghostery.com', /* Ghostery */
'adblockultimate@adblockultimate.net', /* AdBlocker Ultimate */
'jid1-MnnxcxisBPnSXQ@jetpack' /* Privacy Badger */
)
THEN 1
ELSE 0
END
)
vetted: true
- name: has_notes_extension
sql: LOGICAL_OR(COALESCE(addon_id = 'notes@mozilla.com', FALSE))
vetted: true
- name: has_facebook_container_extension
sql: >
LOGICAL_OR(
COALESCE(addon_id = '@contain-facebook', FALSE)
)
vetted: true
- name: has_multiaccount_container_extension
sql: >
LOGICAL_OR(
COALESCE(addon_id = '@testpilot-containers', FALSE)
)
vetted: true
- name: has_private_relay_extension
sql: >
LOGICAL_OR(
COALESCE(addon_id = 'private-relay@firefox.com', FALSE)
)
vetted: true