sql/moz-fx-data-shared-prod/telemetry_derived/clients_daily_v6/query.sql (1,675 lines of code) (raw):

/* This query depends on the following fields added to the main_v4 schema on 2019-11-22: environment.addons.active_addons[].foreign_install environment.addons.active_addons[].user_disabled environment.addons.active_addons[].version payload.simple_measurements.active_ticks payload.simple_measurements.first_paint To backfill partitions for 2019-11-22 and earlier, use the last version of this query that read from main_summary_v4: https://github.com/mozilla/bigquery-etl/blob/813a485/sql/moz-fx-data-shared-prod/telemetry_derived/clients_daily_v6/query.sql */ WITH base AS ( SELECT *, -- We batch multiple fields into an array here in order to share a single -- UDF invocation which keeps query complexity down; order of fields here -- is important, as we pull these out by numerical offset later. -- count_histograms are deprecated, going forward use scalar. ARRAY( SELECT AS STRUCT mozfun.map.get_key(mozfun.hist.extract(histogram).values, 0) AS histogram FROM UNNEST( [ payload.histograms.devtools_aboutdebugging_opened_count, -- 0 payload.histograms.devtools_animationinspector_opened_count, -- 1 payload.histograms.devtools_browserconsole_opened_count, -- 2 payload.histograms.devtools_canvasdebugger_opened_count, -- 3 payload.histograms.devtools_computedview_opened_count, -- 4 payload.histograms.devtools_custom_opened_count, -- 5 payload.histograms.devtools_dom_opened_count, -- 6 payload.histograms.devtools_eyedropper_opened_count, -- 7 payload.histograms.devtools_fontinspector_opened_count, -- 8 payload.histograms.devtools_inspector_opened_count, -- 9 payload.histograms.devtools_jsbrowserdebugger_opened_count, -- 10 payload.histograms.devtools_jsdebugger_opened_count, -- 11 payload.histograms.devtools_jsprofiler_opened_count, -- 12 payload.histograms.devtools_layoutview_opened_count, -- 13 payload.histograms.devtools_memory_opened_count, -- 14 payload.histograms.devtools_menu_eyedropper_opened_count, -- 15 payload.histograms.devtools_netmonitor_opened_count, -- 16 payload.histograms.devtools_options_opened_count, -- 17 payload.histograms.devtools_paintflashing_opened_count, -- 18 payload.histograms.devtools_picker_eyedropper_opened_count, -- 19 payload.histograms.devtools_responsive_opened_count, -- 20 payload.histograms.devtools_ruleview_opened_count, -- 21 payload.histograms.devtools_scratchpad_opened_count, -- 22 payload.histograms.devtools_scratchpad_window_opened_count, -- 23 payload.histograms.devtools_shadereditor_opened_count, -- 24 payload.histograms.devtools_storage_opened_count, -- 25 payload.histograms.devtools_styleeditor_opened_count, -- 26 payload.histograms.devtools_webaudioeditor_opened_count, -- 27 payload.histograms.devtools_webconsole_opened_count, -- 28 payload.histograms.devtools_webide_opened_count -- 29 ] ) AS histogram ) AS count_histograms, -- We batch multiple fields into an array here in order to share a single -- UDF invocation which keeps query complexity down; order of fields here -- is important, as we pull these out by numerical offset later. ARRAY( SELECT `moz-fx-data-shared-prod.udf.extract_histogram_sum`(mozfun.map.get_key(histogram, key)) FROM UNNEST( [ STRUCT( payload.keyed_histograms.subprocess_crashes_with_dump AS histogram, 'pluginhang' AS key ), -- 0 STRUCT(payload.keyed_histograms.subprocess_abnormal_abort, 'plugin'), -- 1 STRUCT(payload.keyed_histograms.subprocess_abnormal_abort, 'content'), -- 2 STRUCT(payload.keyed_histograms.subprocess_abnormal_abort, 'gmplugin'), -- 3 STRUCT(payload.keyed_histograms.subprocess_crashes_with_dump, 'plugin'), -- 4 STRUCT(payload.keyed_histograms.subprocess_crashes_with_dump, 'content'), -- 5 STRUCT(payload.keyed_histograms.subprocess_crashes_with_dump, 'gmplugin'), -- 6 STRUCT(payload.keyed_histograms.process_crash_submit_attempt, 'main-crash'), -- 7 STRUCT(payload.keyed_histograms.process_crash_submit_attempt, 'content-crash'), -- 8 STRUCT(payload.keyed_histograms.process_crash_submit_attempt, 'plugin-crash'), -- 9 STRUCT(payload.keyed_histograms.process_crash_submit_success, 'main-crash'), -- 10 STRUCT(payload.keyed_histograms.process_crash_submit_success, 'content-crash'), -- 11 STRUCT(payload.keyed_histograms.process_crash_submit_success, 'plugin-crash'), -- 12 STRUCT(payload.keyed_histograms.subprocess_kill_hard, 'ShutDownKill'), -- 13 STRUCT(payload.keyed_histograms.fx_migration_bookmarks_quantity, "chrome"), -- 14 STRUCT(payload.keyed_histograms.fx_migration_bookmarks_quantity, "chromium-edge"), -- 15 STRUCT(payload.keyed_histograms.fx_migration_bookmarks_quantity, "safari"), -- 16 STRUCT(payload.keyed_histograms.fx_migration_history_quantity, "chrome"), -- 17 STRUCT(payload.keyed_histograms.fx_migration_history_quantity, "chromium-edge"), -- 18 STRUCT(payload.keyed_histograms.fx_migration_history_quantity, "safari"), -- 19 STRUCT(payload.keyed_histograms.fx_migration_logins_quantity, "chrome"), -- 20 STRUCT(payload.keyed_histograms.fx_migration_logins_quantity, "chromium-edge"), -- 21 STRUCT(payload.keyed_histograms.fx_migration_logins_quantity, "safari"), -- 22 STRUCT(payload.keyed_histograms.media_play_time_ms, 'A'), -- 23 STRUCT(payload.keyed_histograms.media_play_time_ms, 'V') -- 24 ] ) ) AS hist_key_sums, -- We batch multiple fields into an array here in order to share a single -- UDF invocation which keeps query complexity down; order of fields here -- is important, as we pull these out by numerical offset later. ARRAY( SELECT `moz-fx-data-shared-prod.udf.extract_histogram_sum`(histogram) FROM UNNEST( [ payload.histograms.devtools_toolbox_opened_count, -- 0 payload.histograms.push_api_notify, -- 1 payload.histograms.web_notification_shown, -- 2 payload.histograms.plugins_infobar_shown, -- 3 payload.histograms.plugins_infobar_block, -- 4 payload.histograms.plugins_infobar_allow, -- 5 payload.histograms.text_recognition_interaction_timing, -- 6 payload.histograms.text_recognition_api_performance, -- 7 payload.histograms.text_recognition_text_length, -- 8 payload.histograms.places_searchbar_cumulative_searches, -- 9 payload.histograms.places_searchbar_cumulative_filter_count, -- 10 payload.histograms.places_library_cumulative_bookmark_searches, -- 11 payload.histograms.places_library_cumulative_history_searches, -- 12 payload.histograms.places_bookmarks_searchbar_cumulative_searches -- 13 ] ) AS histogram ) AS hist_sums, -- We batch multiple fields into an array here in order to share a single -- UDF invocation which keeps query complexity down; order of fields here -- is important, as we pull these out by numerical offset later. ARRAY( SELECT mozfun.hist.count(histogram) FROM UNNEST( [ payload.histograms.text_recognition_interaction_timing, -- 0 payload.histograms.text_recognition_api_performance, -- 1 payload.histograms.text_recognition_text_length -- 2 ] ) AS histogram ) AS hist_counts, -- We batch multiple fields into an array here in order to share a single -- UDF invocation which keeps query complexity down; order of fields here -- is important, as we pull these out by numerical offset later. ARRAY( SELECT mozfun.hist.extract_keyed_hist_sum(value.keyed_histogram) FROM UNNEST( [ -- We add a struct layer here b/c BQ doesn't allow nested arrays STRUCT( payload.keyed_histograms.fx_migration_bookmarks_quantity AS keyed_histogram ), -- 0 STRUCT(payload.keyed_histograms.fx_migration_history_quantity AS keyed_histogram), -- 1 STRUCT(payload.keyed_histograms.fx_migration_logins_quantity AS keyed_histogram) -- 2 ] ) AS value ) AS keyed_hist_sums, FROM `moz-fx-data-shared-prod`.telemetry_stable.main_v5 WHERE DATE(submission_timestamp) = @submission_date AND normalized_app_name = 'Firefox' AND document_id IS NOT NULL ), overactive AS ( -- Find client_ids with over 150 000 pings in a day or over 3 000 000 across all pings, -- which could cause errors in the next step due to aggregation overflows. SELECT client_id FROM base GROUP BY client_id HAVING COUNT(*) > 150000 OR SUM(ARRAY_LENGTH(environment.addons.active_addons)) > 3000000 ), clients_summary AS ( SELECT submission_timestamp, client_id, sample_id, profile_group_id, document_id, metadata.uri.app_update_channel AS channel, normalized_channel, normalized_os_version, metadata.geo.country, metadata.geo.city, metadata.geo.subdivision1 AS geo_subdivision1, metadata.geo.subdivision2 AS geo_subdivision2, metadata.geo.db_version AS geo_db_version, metadata.isp.name AS isp_name, metadata.isp.organization AS isp_organization, environment.system.os.name AS os, environment.system.os.version AS os_version, SAFE_CAST(environment.system.os.service_pack_major AS INT64) AS os_service_pack_major, SAFE_CAST(environment.system.os.service_pack_minor AS INT64) AS os_service_pack_minor, SAFE_CAST(environment.system.os.windows_build_number AS INT64) AS windows_build_number, SAFE_CAST(environment.system.os.windows_ubr AS INT64) AS windows_ubr, SAFE_CAST(environment.system.os.install_year AS INT64) AS install_year, environment.system.is_wow64, environment.system.apple_model_id, SAFE_CAST(environment.system.memory_mb AS INT64) AS memory_mb, environment.system.cpu.count AS cpu_count, environment.system.cpu.cores AS cpu_cores, environment.system.cpu.vendor AS cpu_vendor, environment.system.cpu.family AS cpu_family, environment.system.cpu.model AS cpu_model, environment.system.cpu.stepping AS cpu_stepping, SAFE_CAST(environment.system.cpu.l2cache_kb AS INT64) AS cpu_l2_cache_kb, SAFE_CAST(environment.system.cpu.l3cache_kb AS INT64) AS cpu_l3_cache_kb, SAFE_CAST(environment.system.cpu.speed_m_hz AS INT64) AS cpu_speed_mhz, environment.system.gfx.features.d3d11.status AS gfx_features_d3d11_status, environment.system.gfx.features.d2d.status AS gfx_features_d2d_status, environment.system.gfx.features.gpu_process.status AS gfx_features_gpu_process_status, environment.system.gfx.features.advanced_layers.status AS gfx_features_advanced_layers_status, SAFE_CAST(environment.profile.creation_date AS INT64) AS profile_creation_date, payload.info.previous_build_id, payload.info.subsession_start_date, payload.info.subsession_counter, payload.info.subsession_length, environment.partner.distribution_id, environment.partner.partner_id, environment.partner.distribution_version, environment.partner.distributor, environment.partner.distributor_channel, IFNULL( environment.services.account_enabled, `moz-fx-data-shared-prod.udf.boolean_histogram_to_boolean`(payload.histograms.fxa_configured) ) AS fxa_configured, IFNULL( environment.services.sync_enabled, `moz-fx-data-shared-prod.udf.boolean_histogram_to_boolean`( payload.histograms.weave_configured ) ) AS sync_configured, `moz-fx-data-shared-prod.udf.histogram_max_key_with_nonzero_value`( payload.histograms.weave_device_count_desktop ) AS sync_count_desktop, `moz-fx-data-shared-prod.udf.histogram_max_key_with_nonzero_value`( payload.histograms.weave_device_count_mobile ) AS sync_count_mobile, application.build_id AS app_build_id, application.display_version AS app_display_version, application.name AS app_name, application.version AS app_version, environment.build.build_id AS env_build_id, environment.build.version AS env_build_version, environment.build.architecture AS env_build_arch, environment.build.platform_version AS env_build_platform_version, environment.build.xpcom_abi AS env_build_xpcom_abi, environment.settings.e10s_enabled, environment.settings.locale, environment.settings.update.channel AS update_channel, environment.settings.update.enabled AS update_enabled, environment.settings.update.auto_download AS update_auto_download, environment.settings.update.background AS update_background, IF( environment.settings.attribution IS NOT NULL, STRUCT( environment.settings.attribution.source, environment.settings.attribution.medium, environment.settings.attribution.campaign, environment.settings.attribution.content, environment.settings.attribution.experiment, environment.settings.attribution.variation, environment.settings.attribution.dltoken, environment.settings.attribution.dlsource, environment.settings.attribution.ua ), NULL ) AS attribution, environment.settings.sandbox.effective_content_process_level AS sandbox_effective_content_process_level, payload.info.timezone_offset, -- CAUTION: the order of fields here must match the order defined in -- hist_key_sums above and offsets must increment on each line. hist_key_sums[OFFSET(0)] AS plugin_hangs, hist_key_sums[OFFSET(1)] AS aborts_plugin, hist_key_sums[OFFSET(2)] AS aborts_content, hist_key_sums[OFFSET(3)] AS aborts_gmplugin, hist_key_sums[OFFSET(4)] AS crashes_detected_plugin, hist_key_sums[OFFSET(5)] AS crashes_detected_content, hist_key_sums[OFFSET(6)] AS crashes_detected_gmplugin, hist_key_sums[OFFSET(7)] AS crash_submit_attempt_main, hist_key_sums[OFFSET(8)] AS crash_submit_attempt_content, hist_key_sums[OFFSET(9)] AS crash_submit_attempt_plugin, hist_key_sums[OFFSET(10)] AS crash_submit_success_main, hist_key_sums[OFFSET(11)] AS crash_submit_success_content, hist_key_sums[OFFSET(12)] AS crash_submit_success_plugin, hist_key_sums[OFFSET(13)] AS shutdown_kill, hist_key_sums[OFFSET(14)] AS bookmark_migrations_quantity_chrome, hist_key_sums[OFFSET(15)] AS bookmark_migrations_quantity_edge, hist_key_sums[OFFSET(16)] AS bookmark_migrations_quantity_safari, hist_key_sums[OFFSET(17)] AS history_migrations_quantity_chrome, hist_key_sums[OFFSET(18)] AS history_migrations_quantity_edge, hist_key_sums[OFFSET(19)] AS history_migrations_quantity_safari, hist_key_sums[OFFSET(20)] AS logins_migrations_quantity_chrome, hist_key_sums[OFFSET(21)] AS logins_migrations_quantity_edge, hist_key_sums[OFFSET(22)] AS logins_migrations_quantity_safari, hist_key_sums[OFFSET(23)] AS media_play_time_ms_audio, hist_key_sums[OFFSET(24)] AS media_play_time_ms_video, ( SELECT version FROM UNNEST(environment.addons.active_plugins), UNNEST([STRUCT(SPLIT(version, '.') AS parts)]) WHERE name = 'Shockwave Flash' ORDER BY SAFE_CAST(parts[SAFE_OFFSET(0)] AS INT64) DESC, SAFE_CAST(parts[SAFE_OFFSET(1)] AS INT64) DESC, SAFE_CAST(parts[SAFE_OFFSET(2)] AS INT64) DESC, SAFE_CAST(parts[SAFE_OFFSET(3)] AS INT64) DESC LIMIT 1 ) AS flash_version, application.vendor, environment.settings.is_default_browser, environment.settings.default_search_engine_data.name AS default_search_engine_data_name, environment.settings.default_search_engine_data.load_path AS default_search_engine_data_load_path, environment.settings.default_search_engine_data.origin AS default_search_engine_data_origin, environment.settings.default_search_engine_data.submission_url AS default_search_engine_data_submission_url, environment.settings.default_search_engine, environment.settings.default_private_search_engine_data.name AS default_private_search_engine_data_name, environment.settings.default_private_search_engine_data.load_path AS default_private_search_engine_data_load_path, environment.settings.default_private_search_engine_data.origin AS default_private_search_engine_data_origin, environment.settings.default_private_search_engine_data.submission_url AS default_private_search_engine_data_submission_url, environment.settings.default_private_search_engine, -- CAUTION: the order of fields here must match the order defined in -- hist_sums above and offsets must increment on each line. hist_sums[OFFSET(0)] AS devtools_toolbox_opened_count, hist_sums[OFFSET(1)] AS push_api_notify, hist_sums[OFFSET(2)] AS web_notification_shown, hist_sums[OFFSET(3)] AS plugins_infobar_shown, hist_sums[OFFSET(4)] AS plugins_infobar_block, hist_sums[OFFSET(5)] AS plugins_infobar_allow, hist_sums[OFFSET(6)] AS text_recognition_interaction_timing, hist_sums[OFFSET(7)] AS text_recognition_api_performance, hist_sums[OFFSET(8)] AS text_recognition_text_length, hist_sums[OFFSET(9)] AS places_searchbar_cumulative_searches, hist_sums[OFFSET(10)] AS places_searchbar_cumulative_filter_count, hist_sums[OFFSET(11)] AS places_library_cumulative_bookmark_searches, hist_sums[OFFSET(12)] AS places_library_cumulative_history_searches, hist_sums[OFFSET(13)] AS places_bookmarks_searchbar_cumulative_searches, TIMESTAMP_DIFF( TIMESTAMP_TRUNC(submission_timestamp, SECOND), SAFE.PARSE_TIMESTAMP('%a, %d %b %Y %T %Z', metadata.header.date), SECOND ) AS client_clock_skew, TIMESTAMP_DIFF( TIMESTAMP_TRUNC(submission_timestamp, SECOND), SAFE.PARSE_TIMESTAMP('%FT%R:%E*SZ', creation_date), SECOND ) AS client_submission_latency, mozfun.hist.mean( mozfun.hist.extract(payload.histograms.places_bookmarks_count) ) AS places_bookmarks_count, mozfun.hist.mean( mozfun.hist.extract(payload.histograms.places_pages_count) ) AS places_pages_count, ARRAY( SELECT AS STRUCT CASE WHEN REGEXP_CONTAINS(_key, r'\.') THEN -- Capture everything (greedily) until the last '.' -- but do NOT include the '.' or anything after it in the capture REGEXP_EXTRACT(_key, r'^(.*)\.[^.]+$') ELSE _key END AS engine, CASE -- Everything after the last period WHEN REGEXP_CONTAINS(_key, r'\.') THEN REGEXP_EXTRACT(_key, r'\.([^.]+)$') ELSE NULL END AS source, `moz-fx-data-shared-prod.udf.extract_histogram_sum`(value) AS count FROM UNNEST(payload.keyed_histograms.search_counts) AS hist, UNNEST([REPLACE(hist.key, 'in-content.', 'in-content:')]) AS _key ) AS search_counts, -- A fixed list of fields is selected to maintain compatibility with the udf as fields are added `moz-fx-data-shared-prod.udf_js.main_summary_active_addons`( ARRAY( SELECT AS STRUCT addons.key, STRUCT( addons.value.app_disabled, addons.value.blocklisted, addons.value.description, addons.value.foreign_install, addons.value.has_binary_components, addons.value.install_day, addons.value.is_system, addons.value.is_web_extension, addons.value.multiprocess_compatible, addons.value.name, addons.value.scope, addons.value.signed_state, addons.value.type, addons.value.update_day, addons.value.user_disabled, addons.value.version ) AS value FROM UNNEST(environment.addons.active_addons) AS addons ), NULL ) AS active_addons, ARRAY_LENGTH(environment.addons.active_addons) AS active_addons_count, environment.settings.blocklist_enabled, environment.settings.addon_compatibility_check_enabled, environment.settings.telemetry_enabled, environment.settings.intl.accept_languages AS environment_settings_intl_accept_languages, environment.settings.intl.app_locales AS environment_settings_intl_app_locales, environment.settings.intl.available_locales AS environment_settings_intl_available_locales, environment.settings.intl.regional_prefs_locales AS environment_settings_intl_regional_prefs_locales, environment.settings.intl.requested_locales AS environment_settings_intl_requested_locales, environment.settings.intl.system_locales AS environment_settings_intl_system_locales, SAFE_CAST( JSON_EXTRACT_SCALAR(payload.histograms.ssl_handshake_result, '$.values.0') AS INT64 ) AS ssl_handshake_result_success, ( SELECT IFNULL(SUM(value), 0) FROM UNNEST(mozfun.hist.extract(payload.histograms.ssl_handshake_result).values) WHERE key BETWEEN 1 AND 671 ) AS ssl_handshake_result_failure, COALESCE( payload.processes.parent.scalars.browser_engagement_active_ticks, payload.simple_measurements.active_ticks ) AS active_ticks, COALESCE( payload.processes.parent.scalars.timestamps_first_paint, payload.simple_measurements.first_paint ) AS first_paint, payload.simple_measurements.session_restored, SAFE_CAST( JSON_EXTRACT_SCALAR(payload.histograms.plugins_notification_shown, '$.values.1') AS INT64 ) AS plugins_notification_shown, ARRAY( SELECT AS STRUCT key, value.branch AS value FROM UNNEST(environment.experiments) ) AS experiments, environment.settings.search_cohort, payload.processes.parent.scalars.aushelper_websense_reg_version AS scalar_parent_aushelper_websense_reg_version, payload.processes.parent.scalars.browser_engagement_max_concurrent_tab_count AS scalar_parent_browser_engagement_max_concurrent_tab_count, payload.processes.parent.scalars.browser_engagement_max_concurrent_window_count AS scalar_parent_browser_engagement_max_concurrent_window_count, payload.processes.parent.scalars.browser_engagement_tab_open_event_count AS scalar_parent_browser_engagement_tab_open_event_count, payload.processes.parent.scalars.browser_engagement_total_uri_count AS scalar_parent_browser_engagement_total_uri_count, payload.processes.parent.scalars.browser_engagement_unfiltered_uri_count AS scalar_parent_browser_engagement_unfiltered_uri_count, payload.processes.parent.scalars.browser_engagement_unique_domains_count AS scalar_parent_browser_engagement_unique_domains_count, payload.processes.parent.scalars.browser_engagement_window_open_event_count AS scalar_parent_browser_engagement_window_open_event_count, payload.processes.parent.scalars.browser_engagement_total_uri_count_normal_and_private_mode AS scalar_parent_browser_engagement_total_uri_count_normal_and_private_mode, payload.processes.parent.scalars.contentblocking_trackers_blocked_count AS scalar_parent_contentblocking_trackers_blocked_count, payload.processes.parent.scalars.devtools_accessibility_node_inspected_count AS scalar_parent_devtools_accessibility_node_inspected_count, payload.processes.parent.scalars.devtools_accessibility_opened_count AS scalar_parent_devtools_accessibility_opened_count, payload.processes.parent.scalars.devtools_accessibility_picker_used_count AS scalar_parent_devtools_accessibility_picker_used_count, payload.processes.parent.scalars.devtools_accessibility_service_enabled_count AS scalar_parent_devtools_accessibility_service_enabled_count, payload.processes.parent.scalars.devtools_copy_full_css_selector_opened AS scalar_parent_devtools_copy_full_css_selector_opened, payload.processes.parent.scalars.devtools_copy_unique_css_selector_opened AS scalar_parent_devtools_copy_unique_css_selector_opened, payload.processes.parent.scalars.devtools_toolbar_eyedropper_opened AS scalar_parent_devtools_toolbar_eyedropper_opened, payload.processes.parent.scalars.navigator_storage_estimate_count AS scalar_parent_navigator_storage_estimate_count, payload.processes.parent.scalars.navigator_storage_persist_count AS scalar_parent_navigator_storage_persist_count, payload.processes.parent.scalars.os_environment_is_taskbar_pinned AS scalar_parent_os_environment_is_taskbar_pinned, payload.processes.parent.scalars.os_environment_launch_method AS scalar_parent_os_environment_launch_method, payload.processes.parent.scalars.storage_sync_api_usage_extensions_using AS scalar_parent_storage_sync_api_usage_extensions_using, payload.processes.parent.keyed_scalars.urlbar_searchmode_bookmarkmenu AS scalar_parent_urlbar_searchmode_bookmarkmenu, payload.processes.parent.keyed_scalars.urlbar_searchmode_handoff AS scalar_parent_urlbar_searchmode_handoff, payload.processes.parent.keyed_scalars.urlbar_searchmode_keywordoffer AS scalar_parent_urlbar_searchmode_keywordoffer, payload.processes.parent.keyed_scalars.urlbar_searchmode_oneoff AS scalar_parent_urlbar_searchmode_oneoff, payload.processes.parent.keyed_scalars.urlbar_searchmode_other AS scalar_parent_urlbar_searchmode_other, payload.processes.parent.keyed_scalars.urlbar_searchmode_shortcut AS scalar_parent_urlbar_searchmode_shortcut, payload.processes.parent.keyed_scalars.urlbar_searchmode_tabmenu AS scalar_parent_urlbar_searchmode_tabmenu, payload.processes.parent.keyed_scalars.urlbar_searchmode_tabtosearch AS scalar_parent_urlbar_searchmode_tabtosearch, payload.processes.parent.keyed_scalars.urlbar_searchmode_tabtosearch_onboard AS scalar_parent_urlbar_searchmode_tabtosearch_onboard, payload.processes.parent.keyed_scalars.urlbar_searchmode_topsites_newtab AS scalar_parent_urlbar_searchmode_topsites_newtab, payload.processes.parent.keyed_scalars.urlbar_searchmode_topsites_urlbar AS scalar_parent_urlbar_searchmode_topsites_urlbar, payload.processes.parent.keyed_scalars.urlbar_searchmode_touchbar AS scalar_parent_urlbar_searchmode_touchbar, payload.processes.parent.keyed_scalars.urlbar_searchmode_typed AS scalar_parent_urlbar_searchmode_typed, payload.processes.parent.keyed_scalars.browser_ui_interaction_preferences_pane_home AS scalar_parent_browser_ui_interaction_preferences_pane_home, payload.processes.parent.scalars.urlbar_impression_autofill_about AS scalar_parent_urlbar_impression_autofill_about, payload.processes.parent.scalars.urlbar_impression_autofill_adaptive AS scalar_parent_urlbar_impression_autofill_adaptive, payload.processes.parent.scalars.urlbar_impression_autofill_origin AS scalar_parent_urlbar_impression_autofill_origin, payload.processes.parent.scalars.urlbar_impression_autofill_other AS scalar_parent_urlbar_impression_autofill_other, payload.processes.parent.scalars.urlbar_impression_autofill_preloaded AS scalar_parent_urlbar_impression_autofill_preloaded, payload.processes.parent.scalars.urlbar_impression_autofill_url AS scalar_parent_urlbar_impression_autofill_url, payload.processes.parent.keyed_scalars.urlbar_picked_autofill AS scalar_parent_urlbar_picked_autofill, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_about AS scalar_parent_urlbar_picked_autofill_about, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_adaptive AS scalar_parent_urlbar_picked_autofill_adaptive, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_origin AS scalar_parent_urlbar_picked_autofill_origin, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_other AS scalar_parent_urlbar_picked_autofill_other, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_preloaded AS scalar_parent_urlbar_picked_autofill_preloaded, payload.processes.parent.keyed_scalars.urlbar_picked_autofill_url AS scalar_parent_urlbar_picked_autofill_url, payload.processes.parent.keyed_scalars.urlbar_picked_bookmark AS scalar_parent_urlbar_picked_bookmark, payload.processes.parent.keyed_scalars.urlbar_picked_dynamic AS scalar_parent_urlbar_picked_dynamic, payload.processes.parent.keyed_scalars.urlbar_picked_extension AS scalar_parent_urlbar_picked_extension, payload.processes.parent.keyed_scalars.urlbar_picked_formhistory AS scalar_parent_urlbar_picked_formhistory, payload.processes.parent.keyed_scalars.urlbar_picked_history AS scalar_parent_urlbar_picked_history, payload.processes.parent.keyed_scalars.urlbar_picked_keyword AS scalar_parent_urlbar_picked_keyword, payload.processes.parent.keyed_scalars.urlbar_picked_remotetab AS scalar_parent_urlbar_picked_remotetab, payload.processes.parent.keyed_scalars.urlbar_picked_searchengine AS scalar_parent_urlbar_picked_searchengine, payload.processes.parent.keyed_scalars.urlbar_picked_searchsuggestion AS scalar_parent_urlbar_picked_searchsuggestion, payload.processes.parent.keyed_scalars.urlbar_picked_switchtab AS scalar_parent_urlbar_picked_switchtab, payload.processes.parent.keyed_scalars.urlbar_picked_tabtosearch AS scalar_parent_urlbar_picked_tabtosearch, payload.processes.parent.keyed_scalars.urlbar_picked_tip AS scalar_parent_urlbar_picked_tip, payload.processes.parent.keyed_scalars.urlbar_picked_topsite AS scalar_parent_urlbar_picked_topsite, payload.processes.parent.keyed_scalars.urlbar_picked_unknown AS scalar_parent_urlbar_picked_unknown, payload.processes.parent.keyed_scalars.urlbar_picked_visiturl AS scalar_parent_urlbar_picked_visiturl, payload.processes.parent.scalars.webrtc_nicer_stun_retransmits AS scalar_parent_webrtc_nicer_stun_retransmits, payload.processes.parent.scalars.webrtc_nicer_turn_401s AS scalar_parent_webrtc_nicer_turn_401s, payload.processes.parent.scalars.webrtc_nicer_turn_403s AS scalar_parent_webrtc_nicer_turn_403s, payload.processes.parent.scalars.webrtc_nicer_turn_438s AS scalar_parent_webrtc_nicer_turn_438s, payload.processes.content.scalars.navigator_storage_estimate_count AS scalar_content_navigator_storage_estimate_count, payload.processes.content.scalars.navigator_storage_persist_count AS scalar_content_navigator_storage_persist_count, payload.processes.content.scalars.webrtc_nicer_stun_retransmits AS scalar_content_webrtc_nicer_stun_retransmits, payload.processes.content.scalars.webrtc_nicer_turn_401s AS scalar_content_webrtc_nicer_turn_401s, payload.processes.content.scalars.webrtc_nicer_turn_403s AS scalar_content_webrtc_nicer_turn_403s, payload.processes.content.scalars.webrtc_nicer_turn_438s AS scalar_content_webrtc_nicer_turn_438s, payload.processes.parent.scalars.a11y_hcm_foreground AS scalar_a11y_hcm_foreground, payload.processes.parent.scalars.a11y_hcm_background AS scalar_a11y_hcm_background, payload.processes.parent.keyed_scalars.browser_search_ad_clicks AS scalar_parent_browser_search_ad_clicks, payload.processes.parent.keyed_scalars.browser_search_with_ads AS scalar_parent_browser_search_with_ads, payload.processes.parent.keyed_scalars.devtools_accessibility_select_accessible_for_node AS scalar_parent_devtools_accessibility_select_accessible_for_node, payload.processes.parent.keyed_scalars.telemetry_event_counts AS scalar_parent_telemetry_event_counts, payload.processes.content.keyed_scalars.telemetry_event_counts AS scalar_content_telemetry_event_counts, payload.processes.parent.keyed_scalars.browser_search_content_urlbar, payload.processes.parent.keyed_scalars.browser_search_content_urlbar_searchmode, payload.processes.parent.keyed_scalars.browser_search_content_contextmenu, payload.processes.parent.keyed_scalars.browser_search_content_about_home, payload.processes.parent.keyed_scalars.browser_search_content_about_newtab, payload.processes.parent.keyed_scalars.browser_search_content_searchbar, payload.processes.parent.keyed_scalars.browser_search_content_system, payload.processes.parent.keyed_scalars.browser_search_content_webextension, payload.processes.parent.keyed_scalars.browser_search_content_tabhistory, payload.processes.parent.keyed_scalars.browser_search_content_reload, payload.processes.parent.keyed_scalars.browser_search_content_unknown, payload.processes.parent.keyed_scalars.browser_search_withads_urlbar, payload.processes.parent.keyed_scalars.browser_search_withads_urlbar_searchmode, payload.processes.parent.keyed_scalars.browser_search_withads_contextmenu, payload.processes.parent.keyed_scalars.browser_search_withads_about_home, payload.processes.parent.keyed_scalars.browser_search_withads_about_newtab, payload.processes.parent.keyed_scalars.browser_search_withads_searchbar, payload.processes.parent.keyed_scalars.browser_search_withads_system, payload.processes.parent.keyed_scalars.browser_search_withads_webextension, payload.processes.parent.keyed_scalars.browser_search_withads_tabhistory, payload.processes.parent.keyed_scalars.browser_search_withads_reload, payload.processes.parent.keyed_scalars.browser_search_withads_unknown, payload.processes.parent.keyed_scalars.browser_search_adclicks_urlbar, payload.processes.parent.keyed_scalars.browser_search_adclicks_urlbar_searchmode, payload.processes.parent.keyed_scalars.browser_search_adclicks_contextmenu, payload.processes.parent.keyed_scalars.browser_search_adclicks_about_home, payload.processes.parent.keyed_scalars.browser_search_adclicks_about_newtab, payload.processes.parent.keyed_scalars.browser_search_adclicks_searchbar, payload.processes.parent.keyed_scalars.browser_search_adclicks_system, payload.processes.parent.keyed_scalars.browser_search_adclicks_webextension, payload.processes.parent.keyed_scalars.browser_search_adclicks_tabhistory, payload.processes.parent.keyed_scalars.browser_search_adclicks_reload, payload.processes.parent.keyed_scalars.browser_search_adclicks_unknown, payload.processes.parent.keyed_scalars.browser_search_content_urlbar_handoff, payload.processes.parent.keyed_scalars.browser_search_withads_urlbar_handoff, payload.processes.parent.keyed_scalars.browser_search_adclicks_urlbar_handoff, payload.processes.parent.keyed_scalars.browser_search_content_urlbar_persisted, payload.processes.parent.keyed_scalars.browser_search_withads_urlbar_persisted, payload.processes.parent.keyed_scalars.browser_search_adclicks_urlbar_persisted, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_dynamic_wikipedia, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_nonsponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_nonsponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_sponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_sponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_block_weather, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_dynamic_wikipedia, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_nonsponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_nonsponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_sponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_sponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_click_weather, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_dynamic_wikipedia, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_nonsponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_nonsponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_sponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_sponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_help_weather, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_dynamic_wikipedia, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_nonsponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_nonsponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_sponsored, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_sponsored_bestmatch, payload.processes.parent.keyed_scalars.contextual_services_quicksuggest_impression_weather, payload.processes.parent.keyed_scalars.contextual_services_topsites_click, payload.processes.parent.keyed_scalars.contextual_services_topsites_impression, payload.processes.parent.keyed_scalars.a11y_theme, payload.processes.parent.keyed_scalars.browser_ui_interaction_content_context AS scalar_parent_browser_ui_interaction_content_context, payload.processes.parent.scalars.browser_ui_interaction_textrecognition_error AS scalar_parent_browser_ui_interaction_textrecognition_error, payload.processes.parent.keyed_scalars.sidebar_opened AS scalar_parent_sidebar_opened, payload.processes.parent.keyed_scalars.sidebar_search AS scalar_parent_sidebar_search, payload.processes.parent.keyed_scalars.sidebar_link AS scalar_parent_sidebar_link, payload.processes.parent.keyed_scalars.library_link AS scalar_parent_library_link, payload.processes.parent.keyed_scalars.library_opened AS scalar_parent_library_opened, payload.processes.parent.keyed_scalars.library_search AS scalar_parent_library_search, payload.processes.parent.scalars.places_previousday_visits AS places_previousday_visits, payload.processes.parent.scalars.startup_profile_selection_reason AS startup_profile_selection_reason, -- CAUTION: the order of fields here must match the order defined in -- count_histograms above and offsets must increment on each line. count_histograms[OFFSET(0)].histogram AS histogram_parent_devtools_aboutdebugging_opened_count, count_histograms[ OFFSET(1) ].histogram AS histogram_parent_devtools_animationinspector_opened_count, count_histograms[OFFSET(2)].histogram AS histogram_parent_devtools_browserconsole_opened_count, count_histograms[OFFSET(3)].histogram AS histogram_parent_devtools_canvasdebugger_opened_count, count_histograms[OFFSET(4)].histogram AS histogram_parent_devtools_computedview_opened_count, count_histograms[OFFSET(5)].histogram AS histogram_parent_devtools_custom_opened_count, count_histograms[OFFSET(6)].histogram AS histogram_parent_devtools_dom_opened_count, count_histograms[OFFSET(7)].histogram AS histogram_parent_devtools_eyedropper_opened_count, count_histograms[OFFSET(8)].histogram AS histogram_parent_devtools_fontinspector_opened_count, count_histograms[OFFSET(9)].histogram AS histogram_parent_devtools_inspector_opened_count, count_histograms[ OFFSET(10) ].histogram AS histogram_parent_devtools_jsbrowserdebugger_opened_count, count_histograms[OFFSET(11)].histogram AS histogram_parent_devtools_jsdebugger_opened_count, count_histograms[OFFSET(12)].histogram AS histogram_parent_devtools_jsprofiler_opened_count, count_histograms[OFFSET(13)].histogram AS histogram_parent_devtools_layoutview_opened_count, count_histograms[OFFSET(14)].histogram AS histogram_parent_devtools_memory_opened_count, count_histograms[ OFFSET(15) ].histogram AS histogram_parent_devtools_menu_eyedropper_opened_count, count_histograms[OFFSET(16)].histogram AS histogram_parent_devtools_netmonitor_opened_count, count_histograms[OFFSET(17)].histogram AS histogram_parent_devtools_options_opened_count, count_histograms[OFFSET(18)].histogram AS histogram_parent_devtools_paintflashing_opened_count, count_histograms[ OFFSET(19) ].histogram AS histogram_parent_devtools_picker_eyedropper_opened_count, count_histograms[OFFSET(20)].histogram AS histogram_parent_devtools_responsive_opened_count, count_histograms[OFFSET(21)].histogram AS histogram_parent_devtools_ruleview_opened_count, count_histograms[OFFSET(22)].histogram AS histogram_parent_devtools_scratchpad_opened_count, count_histograms[ OFFSET(23) ].histogram AS histogram_parent_devtools_scratchpad_window_opened_count, count_histograms[OFFSET(24)].histogram AS histogram_parent_devtools_shadereditor_opened_count, count_histograms[OFFSET(25)].histogram AS histogram_parent_devtools_storage_opened_count, count_histograms[OFFSET(26)].histogram AS histogram_parent_devtools_styleeditor_opened_count, count_histograms[OFFSET(27)].histogram AS histogram_parent_devtools_webaudioeditor_opened_count, count_histograms[OFFSET(28)].histogram AS histogram_parent_devtools_webconsole_opened_count, count_histograms[OFFSET(29)].histogram AS histogram_parent_devtools_webide_opened_count, -- CAUTION: the order of fields here must match the order defined in -- hist_counts above and offsets must increment on each line. hist_counts[OFFSET(0)] AS text_recognition_interaction_timing_count, hist_counts[OFFSET(1)] AS text_recognition_api_performance_count, hist_counts[OFFSET(2)] AS text_recognition_text_length_count, -- CAUTION: the order of fields here must match the order defined in -- keyed_hist_sums above and offsets must increment on each line. keyed_hist_sums[OFFSET(0)] AS bookmark_migrations_quantity_all, keyed_hist_sums[OFFSET(1)] AS history_migrations_quantity_all, keyed_hist_sums[OFFSET(2)] AS logins_migrations_quantity_all, COALESCE( payload.processes.parent.scalars.dom_parentprocess_private_window_used, FALSE ) AS scalar_parent_dom_parentprocess_private_window_used, COALESCE( payload.processes.parent.scalars.os_environment_is_taskbar_pinned, FALSE ) AS scalar_parent_os_environment_is_taskbar_pinned_any, COALESCE( payload.processes.parent.scalars.os_environment_is_taskbar_pinned_private, FALSE ) AS scalar_parent_os_environment_is_taskbar_pinned_private, -- Select out some individual userPrefs values; note that prefs are only available in -- the environment based on registration in DEFAULT_ENVIRONMENT_PREFS; see -- https://searchfox.org/mozilla-central/source/toolkit/components/telemetry/app/TelemetryEnvironment.jsm ( SELECT AS STRUCT ARRAY_AGG(IF(key = 'browser.search.region', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_search_region, ARRAY_AGG(IF(key = 'browser.search.suggest.enabled', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_search_suggest_enabled, ARRAY_AGG(IF(key = 'browser.search.widget.inNavBar', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_widget_in_navbar, ARRAY_AGG(IF(key = 'browser.urlbar.suggest.searches', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_urlbar_suggest_searches, ARRAY_AGG(IF(key = 'browser.urlbar.showSearchSuggestionsFirst', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_urlbar_show_search_suggestions_first, ARRAY_AGG(IF(key = 'browser.urlbar.suggest.quicksuggest', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_urlbar_suggest_quicksuggest, -- Rename of browser.urlbar.suggest.quicksuggest.nonsponsored; see bug 1737374 ARRAY_AGG( IF(key = 'browser.urlbar.suggest.quicksuggest.nonsponsored', value, NULL) IGNORE NULLS )[SAFE_OFFSET(0)] AS user_pref_browser_urlbar_suggest_quicksuggest_nonsponsored, ARRAY_AGG( IF(key = 'browser.urlbar.suggest.quicksuggest.sponsored', value, NULL) IGNORE NULLS )[SAFE_OFFSET(0)] AS user_pref_browser_urlbar_suggest_quicksuggest_sponsored, ARRAY_AGG( IF(key = 'browser.urlbar.quicksuggest.onboardingDialogChoice', value, NULL) IGNORE NULLS )[SAFE_OFFSET(0)] AS user_pref_browser_urlbar_quicksuggest_onboarding_dialog_choice, -- New pref for Firefox Suggest introduced in bug 1737374 ARRAY_AGG( IF(key = 'browser.urlbar.quicksuggest.dataCollection.enabled', value, NULL) IGNORE NULLS )[SAFE_OFFSET(0)] AS user_pref_browser_urlbar_quicksuggest_data_collection_enabled, -- New pref for Firefox Suggest introduced in bug 1756917 ARRAY_AGG(IF(key = 'browser.urlbar.suggest.bestmatch', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_urlbar_suggest_bestmatch, ARRAY_AGG(IF(key = 'browser.newtabpage.enabled', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_browser_newtabpage_enabled, ARRAY_AGG(IF(key = 'app.shield.optoutstudies.enabled', value, NULL) IGNORE NULLS)[ SAFE_OFFSET(0) ] AS user_pref_app_shield_optoutstudies_enabled, FROM UNNEST(environment.settings.user_prefs) ).* FROM base LEFT JOIN overactive USING (client_id) WHERE overactive.client_id IS NULL ), aggregates AS ( SELECT DATE(submission_timestamp) AS submission_date, client_id, ARRAY_AGG(document_id ORDER BY submission_timestamp)[OFFSET(0)] AS first_document_id, SUM(aborts_content) AS aborts_content_sum, SUM(aborts_gmplugin) AS aborts_gmplugin_sum, SUM(aborts_plugin) AS aborts_plugin_sum, AVG(active_addons_count) AS active_addons_count_mean, `moz-fx-data-shared-prod.udf.aggregate_active_addons`( ARRAY_CONCAT_AGG(active_addons ORDER BY submission_timestamp) ) AS active_addons, CAST(NULL AS STRING) AS active_experiment_branch, -- deprecated CAST(NULL AS STRING) AS active_experiment_id, -- deprecated SUM(active_ticks / (3600 / 5)) AS active_hours_sum, mozfun.stats.mode_last( ARRAY_AGG(addon_compatibility_check_enabled ORDER BY submission_timestamp) ) AS addon_compatibility_check_enabled, mozfun.stats.mode_last(ARRAY_AGG(app_build_id ORDER BY submission_timestamp)) AS app_build_id, mozfun.stats.mode_last( ARRAY_AGG(app_display_version ORDER BY submission_timestamp) ) AS app_display_version, mozfun.stats.mode_last(ARRAY_AGG(app_name ORDER BY submission_timestamp)) AS app_name, mozfun.stats.mode_last(ARRAY_AGG(app_version ORDER BY submission_timestamp)) AS app_version, mozfun.json.mode_last(ARRAY_AGG(attribution ORDER BY submission_timestamp)) AS attribution, mozfun.stats.mode_last( ARRAY_AGG(blocklist_enabled ORDER BY submission_timestamp) ) AS blocklist_enabled, mozfun.stats.mode_last(ARRAY_AGG(channel ORDER BY submission_timestamp)) AS channel, AVG(client_clock_skew) AS client_clock_skew_mean, AVG(client_submission_latency) AS client_submission_latency_mean, mozfun.stats.mode_last(ARRAY_AGG(cpu_cores ORDER BY submission_timestamp)) AS cpu_cores, mozfun.stats.mode_last(ARRAY_AGG(cpu_count ORDER BY submission_timestamp)) AS cpu_count, mozfun.stats.mode_last(ARRAY_AGG(cpu_family ORDER BY submission_timestamp)) AS cpu_family, mozfun.stats.mode_last( ARRAY_AGG(cpu_l2_cache_kb ORDER BY submission_timestamp) ) AS cpu_l2_cache_kb, mozfun.stats.mode_last( ARRAY_AGG(cpu_l3_cache_kb ORDER BY submission_timestamp) ) AS cpu_l3_cache_kb, mozfun.stats.mode_last(ARRAY_AGG(cpu_model ORDER BY submission_timestamp)) AS cpu_model, mozfun.stats.mode_last(ARRAY_AGG(cpu_speed_mhz ORDER BY submission_timestamp)) AS cpu_speed_mhz, mozfun.stats.mode_last(ARRAY_AGG(cpu_stepping ORDER BY submission_timestamp)) AS cpu_stepping, mozfun.stats.mode_last(ARRAY_AGG(cpu_vendor ORDER BY submission_timestamp)) AS cpu_vendor, SUM(crashes_detected_content) AS crashes_detected_content_sum, SUM(crashes_detected_gmplugin) AS crashes_detected_gmplugin_sum, SUM(crashes_detected_plugin) AS crashes_detected_plugin_sum, SUM(crash_submit_attempt_content) AS crash_submit_attempt_content_sum, SUM(crash_submit_attempt_main) AS crash_submit_attempt_main_sum, SUM(crash_submit_attempt_plugin) AS crash_submit_attempt_plugin_sum, SUM(crash_submit_success_content) AS crash_submit_success_content_sum, SUM(crash_submit_success_main) AS crash_submit_success_main_sum, SUM(crash_submit_success_plugin) AS crash_submit_success_plugin_sum, mozfun.stats.mode_last( ARRAY_AGG(default_search_engine ORDER BY submission_timestamp) ) AS default_search_engine, mozfun.stats.mode_last( ARRAY_AGG(default_search_engine_data_load_path ORDER BY submission_timestamp) ) AS default_search_engine_data_load_path, mozfun.stats.mode_last( ARRAY_AGG(default_search_engine_data_name ORDER BY submission_timestamp) ) AS default_search_engine_data_name, mozfun.stats.mode_last( ARRAY_AGG(default_search_engine_data_origin ORDER BY submission_timestamp) ) AS default_search_engine_data_origin, mozfun.stats.mode_last( ARRAY_AGG(default_search_engine_data_submission_url ORDER BY submission_timestamp) ) AS default_search_engine_data_submission_url, mozfun.stats.mode_last( ARRAY_AGG(default_private_search_engine ORDER BY submission_timestamp) ) AS default_private_search_engine, mozfun.stats.mode_last( ARRAY_AGG(default_private_search_engine_data_load_path ORDER BY submission_timestamp) ) AS default_private_search_engine_data_load_path, mozfun.stats.mode_last( ARRAY_AGG(default_private_search_engine_data_name ORDER BY submission_timestamp) ) AS default_private_search_engine_data_name, mozfun.stats.mode_last( ARRAY_AGG(default_private_search_engine_data_origin ORDER BY submission_timestamp) ) AS default_private_search_engine_data_origin, mozfun.stats.mode_last( ARRAY_AGG(default_private_search_engine_data_submission_url ORDER BY submission_timestamp) ) AS default_private_search_engine_data_submission_url, SUM(devtools_toolbox_opened_count) AS devtools_toolbox_opened_count_sum, mozfun.stats.mode_last( ARRAY_AGG(distribution_id ORDER BY submission_timestamp) ) AS distribution_id, mozfun.stats.mode_last(ARRAY_AGG(partner_id ORDER BY submission_timestamp)) AS partner_id, mozfun.stats.mode_last( ARRAY_AGG(distribution_version ORDER BY submission_timestamp) ) AS distribution_version, mozfun.stats.mode_last(ARRAY_AGG(distributor ORDER BY submission_timestamp)) AS distributor, mozfun.stats.mode_last( ARRAY_AGG(distributor_channel ORDER BY submission_timestamp) ) AS distributor_channel, mozfun.stats.mode_last(ARRAY_AGG(e10s_enabled ORDER BY submission_timestamp)) AS e10s_enabled, mozfun.stats.mode_last( ARRAY_AGG(env_build_arch ORDER BY submission_timestamp) ) AS env_build_arch, mozfun.stats.mode_last( ARRAY_AGG(env_build_platform_version ORDER BY submission_timestamp) ) AS env_build_platform_version, mozfun.stats.mode_last( ARRAY_AGG(env_build_xpcom_abi ORDER BY submission_timestamp) ) AS env_build_xpcom_abi, mozfun.stats.mode_last(ARRAY_AGG(env_build_id ORDER BY submission_timestamp)) AS env_build_id, mozfun.stats.mode_last( ARRAY_AGG(env_build_version ORDER BY submission_timestamp) ) AS env_build_version, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_accept_languages) > 0, STRUCT(environment_settings_intl_accept_languages AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_accept_languages, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_app_locales) > 0, STRUCT(environment_settings_intl_app_locales AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_app_locales, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_available_locales) > 0, STRUCT(environment_settings_intl_available_locales AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_available_locales, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_requested_locales) > 0, STRUCT(environment_settings_intl_requested_locales AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_requested_locales, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_system_locales) > 0, STRUCT(environment_settings_intl_system_locales AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_system_locales, mozfun.json.mode_last( ARRAY_AGG( IF( ARRAY_LENGTH(environment_settings_intl_regional_prefs_locales) > 0, STRUCT(environment_settings_intl_regional_prefs_locales AS list), NULL ) ORDER BY submission_timestamp ) ).list AS environment_settings_intl_regional_prefs_locales, mozfun.map.mode_last( ARRAY_CONCAT_AGG(experiments ORDER BY submission_timestamp) ) AS experiments, AVG(first_paint) AS first_paint_mean, mozfun.stats.mode_last(ARRAY_AGG(flash_version ORDER BY submission_timestamp)) AS flash_version, mozfun.json.mode_last( ARRAY_AGG( `moz-fx-data-shared-prod.udf.geo_struct`(country, city, geo_subdivision1, geo_subdivision2) ORDER BY submission_timestamp ) ).*, mozfun.stats.mode_last( ARRAY_AGG(geo_db_version ORDER BY submission_timestamp) ) AS geo_db_version, mozfun.json.mode_last( ARRAY_AGG( IF( isp_name IS NOT NULL OR isp_organization IS NOT NULL, STRUCT(isp_name, isp_organization), NULL ) ORDER BY submission_timestamp ) ).*, mozfun.stats.mode_last( ARRAY_AGG(gfx_features_advanced_layers_status ORDER BY submission_timestamp) ) AS gfx_features_advanced_layers_status, mozfun.stats.mode_last( ARRAY_AGG(gfx_features_d2d_status ORDER BY submission_timestamp) ) AS gfx_features_d2d_status, mozfun.stats.mode_last( ARRAY_AGG(gfx_features_d3d11_status ORDER BY submission_timestamp) ) AS gfx_features_d3d11_status, mozfun.stats.mode_last( ARRAY_AGG(gfx_features_gpu_process_status ORDER BY submission_timestamp) ) AS gfx_features_gpu_process_status, SUM( histogram_parent_devtools_aboutdebugging_opened_count ) AS histogram_parent_devtools_aboutdebugging_opened_count_sum, SUM( histogram_parent_devtools_animationinspector_opened_count ) AS histogram_parent_devtools_animationinspector_opened_count_sum, SUM( histogram_parent_devtools_browserconsole_opened_count ) AS histogram_parent_devtools_browserconsole_opened_count_sum, SUM( histogram_parent_devtools_canvasdebugger_opened_count ) AS histogram_parent_devtools_canvasdebugger_opened_count_sum, SUM( histogram_parent_devtools_computedview_opened_count ) AS histogram_parent_devtools_computedview_opened_count_sum, SUM( histogram_parent_devtools_custom_opened_count ) AS histogram_parent_devtools_custom_opened_count_sum, NULL AS histogram_parent_devtools_developertoolbar_opened_count_sum, -- deprecated SUM( histogram_parent_devtools_dom_opened_count ) AS histogram_parent_devtools_dom_opened_count_sum, SUM( histogram_parent_devtools_eyedropper_opened_count ) AS histogram_parent_devtools_eyedropper_opened_count_sum, SUM( histogram_parent_devtools_fontinspector_opened_count ) AS histogram_parent_devtools_fontinspector_opened_count_sum, SUM( histogram_parent_devtools_inspector_opened_count ) AS histogram_parent_devtools_inspector_opened_count_sum, SUM( histogram_parent_devtools_jsbrowserdebugger_opened_count ) AS histogram_parent_devtools_jsbrowserdebugger_opened_count_sum, SUM( histogram_parent_devtools_jsdebugger_opened_count ) AS histogram_parent_devtools_jsdebugger_opened_count_sum, SUM( histogram_parent_devtools_jsprofiler_opened_count ) AS histogram_parent_devtools_jsprofiler_opened_count_sum, SUM( histogram_parent_devtools_layoutview_opened_count ) AS histogram_parent_devtools_layoutview_opened_count_sum, SUM( histogram_parent_devtools_memory_opened_count ) AS histogram_parent_devtools_memory_opened_count_sum, SUM( histogram_parent_devtools_menu_eyedropper_opened_count ) AS histogram_parent_devtools_menu_eyedropper_opened_count_sum, SUM( histogram_parent_devtools_netmonitor_opened_count ) AS histogram_parent_devtools_netmonitor_opened_count_sum, SUM( histogram_parent_devtools_options_opened_count ) AS histogram_parent_devtools_options_opened_count_sum, SUM( histogram_parent_devtools_paintflashing_opened_count ) AS histogram_parent_devtools_paintflashing_opened_count_sum, SUM( histogram_parent_devtools_picker_eyedropper_opened_count ) AS histogram_parent_devtools_picker_eyedropper_opened_count_sum, SUM( histogram_parent_devtools_responsive_opened_count ) AS histogram_parent_devtools_responsive_opened_count_sum, SUM( histogram_parent_devtools_ruleview_opened_count ) AS histogram_parent_devtools_ruleview_opened_count_sum, SUM( histogram_parent_devtools_scratchpad_opened_count ) AS histogram_parent_devtools_scratchpad_opened_count_sum, SUM( histogram_parent_devtools_scratchpad_window_opened_count ) AS histogram_parent_devtools_scratchpad_window_opened_count_sum, SUM( histogram_parent_devtools_shadereditor_opened_count ) AS histogram_parent_devtools_shadereditor_opened_count_sum, SUM( histogram_parent_devtools_storage_opened_count ) AS histogram_parent_devtools_storage_opened_count_sum, SUM( histogram_parent_devtools_styleeditor_opened_count ) AS histogram_parent_devtools_styleeditor_opened_count_sum, SUM( histogram_parent_devtools_webaudioeditor_opened_count ) AS histogram_parent_devtools_webaudioeditor_opened_count_sum, SUM( histogram_parent_devtools_webconsole_opened_count ) AS histogram_parent_devtools_webconsole_opened_count_sum, SUM( histogram_parent_devtools_webide_opened_count ) AS histogram_parent_devtools_webide_opened_count_sum, mozfun.stats.mode_last(ARRAY_AGG(install_year ORDER BY submission_timestamp)) AS install_year, mozfun.stats.mode_last( ARRAY_AGG(is_default_browser ORDER BY submission_timestamp) ) AS is_default_browser, mozfun.stats.mode_last(ARRAY_AGG(is_wow64 ORDER BY submission_timestamp)) AS is_wow64, mozfun.stats.mode_last( ARRAY_AGG(apple_model_id ORDER BY submission_timestamp) ) AS apple_model_id, mozfun.stats.mode_last(ARRAY_AGG(locale ORDER BY submission_timestamp)) AS locale, mozfun.stats.mode_last(ARRAY_AGG(memory_mb ORDER BY submission_timestamp)) AS memory_mb, mozfun.stats.mode_last( ARRAY_AGG(normalized_channel ORDER BY submission_timestamp) ) AS normalized_channel, mozfun.stats.mode_last( ARRAY_AGG(normalized_os_version ORDER BY submission_timestamp) ) AS normalized_os_version, mozfun.stats.mode_last(ARRAY_AGG(os ORDER BY submission_timestamp)) AS os, mozfun.stats.mode_last( ARRAY_AGG(os_service_pack_major ORDER BY submission_timestamp) ) AS os_service_pack_major, mozfun.stats.mode_last( ARRAY_AGG(os_service_pack_minor ORDER BY submission_timestamp) ) AS os_service_pack_minor, mozfun.stats.mode_last(ARRAY_AGG(os_version ORDER BY submission_timestamp)) AS os_version, COUNT(*) AS pings_aggregated_by_this_row, AVG(places_bookmarks_count) AS places_bookmarks_count_mean, AVG(places_pages_count) AS places_pages_count_mean, SUM(plugin_hangs) AS plugin_hangs_sum, SUM(plugins_infobar_allow) AS plugins_infobar_allow_sum, SUM(plugins_infobar_block) AS plugins_infobar_block_sum, SUM(plugins_infobar_shown) AS plugins_infobar_shown_sum, SUM(plugins_notification_shown) AS plugins_notification_shown_sum, mozfun.stats.mode_last( ARRAY_AGG(previous_build_id ORDER BY submission_timestamp) ) AS previous_build_id, MAX(UNIX_DATE(DATE(SAFE.TIMESTAMP(subsession_start_date)))) - MAX( profile_creation_date ) AS profile_age_in_days, FORMAT_DATE( "%F 00:00:00", SAFE.DATE_FROM_UNIX_DATE(MAX(profile_creation_date)) ) AS profile_creation_date, SUM(push_api_notify) AS push_api_notify_sum, ANY_VALUE(sample_id) AS sample_id, mozfun.stats.mode_last( ARRAY_AGG(sandbox_effective_content_process_level ORDER BY submission_timestamp) ) AS sandbox_effective_content_process_level, SUM( scalar_parent_webrtc_nicer_stun_retransmits + scalar_content_webrtc_nicer_stun_retransmits ) AS scalar_combined_webrtc_nicer_stun_retransmits_sum, SUM( scalar_parent_webrtc_nicer_turn_401s + scalar_content_webrtc_nicer_turn_401s ) AS scalar_combined_webrtc_nicer_turn_401s_sum, SUM( scalar_parent_webrtc_nicer_turn_403s + scalar_content_webrtc_nicer_turn_403s ) AS scalar_combined_webrtc_nicer_turn_403s_sum, SUM( scalar_parent_webrtc_nicer_turn_438s + scalar_content_webrtc_nicer_turn_438s ) AS scalar_combined_webrtc_nicer_turn_438s_sum, SUM( scalar_content_navigator_storage_estimate_count ) AS scalar_content_navigator_storage_estimate_count_sum, SUM( scalar_content_navigator_storage_persist_count ) AS scalar_content_navigator_storage_persist_count_sum, mozfun.stats.mode_last( ARRAY_AGG(scalar_parent_aushelper_websense_reg_version ORDER BY submission_timestamp) ) AS scalar_parent_aushelper_websense_reg_version, mozfun.stats.mode_last( ARRAY_AGG(scalar_a11y_hcm_foreground ORDER BY submission_timestamp) ) AS scalar_a11y_hcm_foreground, mozfun.stats.mode_last( ARRAY_AGG(scalar_a11y_hcm_background ORDER BY submission_timestamp) ) AS scalar_a11y_hcm_background, mozfun.map.mode_last(ARRAY_CONCAT_AGG(a11y_theme ORDER BY submission_timestamp)) AS a11y_theme, MAX( scalar_parent_browser_engagement_max_concurrent_tab_count ) AS scalar_parent_browser_engagement_max_concurrent_tab_count_max, MAX( scalar_parent_browser_engagement_max_concurrent_window_count ) AS scalar_parent_browser_engagement_max_concurrent_window_count_max, SUM( scalar_parent_browser_engagement_tab_open_event_count ) AS scalar_parent_browser_engagement_tab_open_event_count_sum, SUM( scalar_parent_browser_engagement_total_uri_count ) AS scalar_parent_browser_engagement_total_uri_count_sum, SUM( scalar_parent_browser_engagement_unfiltered_uri_count ) AS scalar_parent_browser_engagement_unfiltered_uri_count_sum, MAX( scalar_parent_browser_engagement_unique_domains_count ) AS scalar_parent_browser_engagement_unique_domains_count_max, AVG( scalar_parent_browser_engagement_unique_domains_count ) AS scalar_parent_browser_engagement_unique_domains_count_mean, SUM( scalar_parent_browser_engagement_window_open_event_count ) AS scalar_parent_browser_engagement_window_open_event_count_sum, SUM( scalar_parent_browser_engagement_total_uri_count_normal_and_private_mode ) AS scalar_parent_browser_engagement_total_uri_count_normal_and_private_mode_sum, SUM( scalar_parent_devtools_accessibility_node_inspected_count ) AS scalar_parent_devtools_accessibility_node_inspected_count_sum, SUM( scalar_parent_devtools_accessibility_opened_count ) AS scalar_parent_devtools_accessibility_opened_count_sum, SUM( scalar_parent_devtools_accessibility_picker_used_count ) AS scalar_parent_devtools_accessibility_picker_used_count_sum, mozfun.map.sum( ARRAY_CONCAT_AGG( scalar_parent_devtools_accessibility_select_accessible_for_node ORDER BY submission_timestamp ) ) AS scalar_parent_devtools_accessibility_select_accessible_for_node_sum, SUM( scalar_parent_devtools_accessibility_service_enabled_count ) AS scalar_parent_devtools_accessibility_service_enabled_count_sum, SUM( scalar_parent_devtools_copy_full_css_selector_opened ) AS scalar_parent_devtools_copy_full_css_selector_opened_sum, SUM( scalar_parent_devtools_copy_unique_css_selector_opened ) AS scalar_parent_devtools_copy_unique_css_selector_opened_sum, SUM( scalar_parent_devtools_toolbar_eyedropper_opened ) AS scalar_parent_devtools_toolbar_eyedropper_opened_sum, NULL AS scalar_parent_dom_contentprocess_troubled_due_to_memory_sum, -- deprecated SUM( scalar_parent_navigator_storage_estimate_count ) AS scalar_parent_navigator_storage_estimate_count_sum, SUM( scalar_parent_navigator_storage_persist_count ) AS scalar_parent_navigator_storage_persist_count_sum, mozfun.stats.mode_last( ARRAY_AGG(scalar_parent_os_environment_is_taskbar_pinned ORDER BY submission_timestamp) ) AS scalar_parent_os_environment_is_taskbar_pinned, COUNTIF( 'Desktop' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_desktop, COUNTIF( 'StartMenu' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_start_menu, COUNTIF( 'Taskbar' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_taskbar, COUNTIF( 'OtherShortcut' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_other_shortcut, COUNTIF( 'Other' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_other, COUNTIF( 'TaskbarPrivate' = scalar_parent_os_environment_launch_method ) > 0 AS scalar_parent_os_environment_launched_via_taskbar_private, SUM( scalar_parent_storage_sync_api_usage_extensions_using ) AS scalar_parent_storage_sync_api_usage_extensions_using_sum, mozfun.stats.mode_last(ARRAY_AGG(search_cohort ORDER BY submission_timestamp)) AS search_cohort, `moz-fx-data-shared-prod.udf.aggregate_search_counts`( ARRAY_CONCAT_AGG(search_counts ORDER BY submission_timestamp) ).*, AVG(session_restored) AS session_restored_mean, COUNTIF(subsession_counter = 1) AS sessions_started_on_this_day, MAX(subsession_counter) AS max_subsession_counter, MIN(subsession_counter) AS min_subsession_counter, SUM(shutdown_kill) AS shutdown_kill_sum, SUM(subsession_length / NUMERIC '3600') AS subsession_hours_sum, SUM(ssl_handshake_result_failure) AS ssl_handshake_result_failure_sum, SUM(ssl_handshake_result_success) AS ssl_handshake_result_success_sum, mozfun.stats.mode_last( ARRAY_AGG(sync_configured ORDER BY submission_timestamp) ) AS sync_configured, AVG(sync_count_desktop) AS sync_count_desktop_mean, AVG(sync_count_mobile) AS sync_count_mobile_mean, SUM(sync_count_desktop) AS sync_count_desktop_sum, SUM(sync_count_mobile) AS sync_count_mobile_sum, mozfun.stats.mode_last( ARRAY_AGG(telemetry_enabled ORDER BY submission_timestamp) ) AS telemetry_enabled, mozfun.stats.mode_last( ARRAY_AGG(timezone_offset ORDER BY submission_timestamp) ) AS timezone_offset, CAST(NULL AS NUMERIC) AS total_hours_sum, mozfun.stats.mode_last( ARRAY_AGG(update_auto_download ORDER BY submission_timestamp) ) AS update_auto_download, mozfun.stats.mode_last( ARRAY_AGG(update_channel ORDER BY submission_timestamp) ) AS update_channel, mozfun.stats.mode_last( ARRAY_AGG(update_enabled ORDER BY submission_timestamp) ) AS update_enabled, mozfun.stats.mode_last( ARRAY_AGG(update_background ORDER BY submission_timestamp) ) AS update_background, mozfun.stats.mode_last(ARRAY_AGG(vendor ORDER BY submission_timestamp)) AS vendor, SUM(web_notification_shown) AS web_notification_shown_sum, mozfun.stats.mode_last( ARRAY_AGG(windows_build_number ORDER BY submission_timestamp) ) AS windows_build_number, mozfun.stats.mode_last(ARRAY_AGG(windows_ubr ORDER BY submission_timestamp)) AS windows_ubr, mozfun.stats.mode_last( ARRAY_AGG(fxa_configured ORDER BY submission_timestamp) ) AS fxa_configured, SUM(scalar_parent_contentblocking_trackers_blocked_count) AS trackers_blocked_sum, MIN(submission_timestamp) AS submission_timestamp_min, -- prioritize access point based probes COALESCE( SUM( ( SELECT SUM(value) FROM UNNEST( ARRAY_CONCAT( browser_search_adclicks_urlbar, -- 0 browser_search_adclicks_urlbar_searchmode, -- 1 browser_search_adclicks_contextmenu, -- 2 browser_search_adclicks_about_home, -- 3 browser_search_adclicks_about_newtab, -- 4 browser_search_adclicks_searchbar, -- 5 browser_search_adclicks_system, -- 6 browser_search_adclicks_webextension, -- 7 browser_search_adclicks_tabhistory, -- 8 browser_search_adclicks_reload, -- 9 browser_search_adclicks_unknown, -- 10 browser_search_adclicks_urlbar_handoff, -- 11 browser_search_adclicks_urlbar_persisted -- 12 ) ) ) ), SUM((SELECT SUM(value) FROM UNNEST(scalar_parent_browser_search_ad_clicks))) ) AS ad_clicks_count_all, COALESCE( SUM( ( SELECT SUM(value) FROM UNNEST( ARRAY_CONCAT( browser_search_withads_urlbar, -- 0 browser_search_withads_urlbar_searchmode, -- 1 browser_search_withads_contextmenu, -- 2 browser_search_withads_about_home, -- 3 browser_search_withads_about_newtab, -- 4 browser_search_withads_searchbar, -- 5 browser_search_withads_system, -- 6 browser_search_withads_webextension, -- 7 browser_search_withads_tabhistory, -- 8 browser_search_withads_reload, -- 9 browser_search_withads_unknown, -- 10 browser_search_withads_urlbar_handoff, -- 11 browser_search_withads_urlbar_persisted -- 12 ) ) ) ), SUM((SELECT SUM(value) FROM UNNEST(scalar_parent_browser_search_with_ads))) ) AS search_with_ads_count_all, SUM( scalar_parent_urlbar_impression_autofill_about ) AS scalar_parent_urlbar_impression_autofill_about_sum, SUM( scalar_parent_urlbar_impression_autofill_adaptive ) AS scalar_parent_urlbar_impression_autofill_adaptive_sum, SUM( scalar_parent_urlbar_impression_autofill_origin ) AS scalar_parent_urlbar_impression_autofill_origin_sum, SUM( scalar_parent_urlbar_impression_autofill_other ) AS scalar_parent_urlbar_impression_autofill_other_sum, SUM( scalar_parent_urlbar_impression_autofill_preloaded ) AS scalar_parent_urlbar_impression_autofill_preloaded_sum, SUM( scalar_parent_urlbar_impression_autofill_url ) AS scalar_parent_urlbar_impression_autofill_url_sum, AVG(places_previousday_visits) AS places_previousday_visits_mean, -- We batch multiple fields into an array here in order to share a single -- UDF invocation in the udf_aggregates CTE below which keeps query -- complexity down; order of fields here is important, as we pull these out -- by numerical offset later. [ STRUCT(ARRAY_CONCAT_AGG(scalar_parent_telemetry_event_counts) AS agg), -- 0 STRUCT(ARRAY_CONCAT_AGG(scalar_content_telemetry_event_counts)), -- 1 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_bookmarkmenu)), -- 2 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_handoff)), -- 3 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_keywordoffer)), -- 4 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_oneoff)), -- 5 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_other)), -- 6 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_shortcut)), -- 7 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_tabmenu)), -- 8 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_tabtosearch)), -- 9 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_tabtosearch_onboard)), -- 10 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_topsites_newtab)), -- 11 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_topsites_urlbar)), -- 12 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_touchbar)), -- 13 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_searchmode_typed)), -- 14 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_browser_ui_interaction_preferences_pane_home)), -- 15 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill)), -- 16 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_about)), -- 17 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_adaptive)), -- 18 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_origin)), -- 19 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_other)), -- 20 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_preloaded)), -- 21 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_autofill_url)), -- 22 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_bookmark)), -- 23 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_dynamic)), -- 24 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_extension)), -- 25 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_formhistory)), -- 26 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_history)), -- 27 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_keyword)), -- 28 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_remotetab)), -- 29 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_searchengine)), -- 30 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_searchsuggestion)), -- 31 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_switchtab)), -- 32 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_tabtosearch)), -- 33 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_tip)), -- 34 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_topsite)), -- 35 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_unknown)), -- 36 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_urlbar_picked_visiturl)), -- 37 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_browser_search_with_ads)), -- 38 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_browser_search_ad_clicks)), -- 39 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_urlbar)), -- 40 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_urlbar_searchmode)), -- 41 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_contextmenu)), -- 42 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_about_home)), -- 43 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_about_newtab)), -- 44 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_searchbar)), -- 45 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_system)), -- 46 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_webextension)), -- 47 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_tabhistory)), -- 48 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_reload)), -- 49 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_unknown)), -- 50 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_urlbar)), -- 51 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_urlbar_searchmode)), -- 52 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_contextmenu)), -- 53 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_about_home)), -- 54 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_about_newtab)), -- 55 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_searchbar)), -- 56 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_system)), -- 57 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_webextension)), -- 58 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_tabhistory)), -- 59 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_reload)), -- 60 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_unknown)), -- 61 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_urlbar)), -- 62 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_urlbar_searchmode)), -- 63 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_contextmenu)), -- 64 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_about_home)), -- 65 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_about_newtab)), -- 66 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_searchbar)), -- 67 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_system)), -- 68 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_webextension)), -- 69 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_tabhistory)), -- 70 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_reload)), -- 71 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_unknown)), -- 72 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_urlbar_handoff)), -- 73 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_urlbar_handoff)), -- 74 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_urlbar_handoff)), -- 75 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_dynamic_wikipedia)), -- 76 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_nonsponsored)), -- 77 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_nonsponsored_bestmatch)), -- 78 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_sponsored)), -- 79 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_sponsored_bestmatch)), -- 80 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_block_weather)), -- 81 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click)), -- 82 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_dynamic_wikipedia)), -- 83 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_nonsponsored)), -- 84 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_nonsponsored_bestmatch)), -- 85 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_sponsored)), -- 86 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_sponsored_bestmatch)), -- 87 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_click_weather)), -- 88 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help)), -- 89 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_dynamic_wikipedia)), -- 90 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_nonsponsored)), -- 91 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_nonsponsored_bestmatch)), -- 92 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_sponsored)), -- 93 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_sponsored_bestmatch)), -- 94 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_help_weather)), -- 95 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression)), -- 96 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_dynamic_wikipedia)), -- 97 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_nonsponsored)), -- 98 STRUCT( ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_nonsponsored_bestmatch) ), -- 99 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_sponsored)), -- 100 STRUCT( ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_sponsored_bestmatch) ), -- 101 STRUCT(ARRAY_CONCAT_AGG(contextual_services_quicksuggest_impression_weather)), -- 102 STRUCT(ARRAY_CONCAT_AGG(contextual_services_topsites_click)), -- 103 STRUCT(ARRAY_CONCAT_AGG(contextual_services_topsites_impression)), -- 104 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_browser_ui_interaction_content_context)), -- 105 STRUCT(ARRAY_CONCAT_AGG(browser_search_content_urlbar_persisted)), -- 106 STRUCT(ARRAY_CONCAT_AGG(browser_search_withads_urlbar_persisted)), -- 107 STRUCT(ARRAY_CONCAT_AGG(browser_search_adclicks_urlbar_persisted)), -- 108 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_sidebar_opened)), -- 109 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_sidebar_search)), -- 110 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_sidebar_link)), -- 111 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_library_link)), -- 112 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_library_opened)), -- 113 STRUCT(ARRAY_CONCAT_AGG(scalar_parent_library_search)) -- 114 ] AS map_sum_aggregates, `moz-fx-data-shared-prod.udf.search_counts_map_sum`( ARRAY_CONCAT_AGG(search_counts) ) AS search_counts, mozfun.stats.mode_last( ARRAY_AGG(user_pref_browser_search_region ORDER BY submission_timestamp) ) AS user_pref_browser_search_region, mozfun.stats.mode_last( ARRAY_AGG(user_pref_browser_search_suggest_enabled ORDER BY submission_timestamp) ) AS user_pref_browser_search_suggest_enabled, mozfun.stats.mode_last( ARRAY_AGG(user_pref_browser_widget_in_navbar ORDER BY submission_timestamp) ) AS user_pref_browser_widget_in_navbar, mozfun.stats.mode_last( ARRAY_AGG(user_pref_browser_urlbar_suggest_searches ORDER BY submission_timestamp) ) AS user_pref_browser_urlbar_suggest_searches, mozfun.stats.mode_last( ARRAY_AGG( user_pref_browser_urlbar_show_search_suggestions_first ORDER BY submission_timestamp ) ) AS user_pref_browser_urlbar_show_search_suggestions_first, mozfun.stats.mode_last( ARRAY_AGG(user_pref_browser_newtabpage_enabled ORDER BY submission_timestamp) ) AS user_pref_browser_newtabpage_enabled, mozfun.stats.mode_last( ARRAY_AGG(user_pref_app_shield_optoutstudies_enabled ORDER BY submission_timestamp) ) AS user_pref_app_shield_optoutstudies_enabled, -- We use last seen value rather than mode_last for all Firefox Suggest-related -- pref values to ensure all values represent the same ping. ARRAY_AGG(user_pref_browser_urlbar_suggest_quicksuggest ORDER BY submission_timestamp DESC)[ OFFSET(0) ] AS user_pref_browser_urlbar_suggest_quicksuggest, ARRAY_AGG( user_pref_browser_urlbar_suggest_quicksuggest_nonsponsored ORDER BY submission_timestamp DESC )[OFFSET(0)] AS user_pref_browser_urlbar_suggest_quicksuggest_nonsponsored, ARRAY_AGG( user_pref_browser_urlbar_suggest_quicksuggest_sponsored ORDER BY submission_timestamp DESC )[OFFSET(0)] AS user_pref_browser_urlbar_suggest_quicksuggest_sponsored, ARRAY_AGG( user_pref_browser_urlbar_quicksuggest_onboarding_dialog_choice ORDER BY submission_timestamp DESC )[OFFSET(0)] AS user_pref_browser_urlbar_quicksuggest_onboarding_dialog_choice, ARRAY_AGG( user_pref_browser_urlbar_quicksuggest_data_collection_enabled ORDER BY submission_timestamp DESC )[OFFSET(0)] AS user_pref_browser_urlbar_quicksuggest_data_collection_enabled, ARRAY_AGG(user_pref_browser_urlbar_suggest_bestmatch ORDER BY submission_timestamp DESC)[ OFFSET(0) ] AS user_pref_browser_urlbar_suggest_bestmatch, ARRAY_AGG(startup_profile_selection_reason ORDER BY submission_timestamp ASC)[ OFFSET(0) ] AS startup_profile_selection_reason_first, mozfun.stats.mode_last( ARRAY_AGG( IF(subsession_counter = 1, startup_profile_selection_reason, NULL) ORDER BY submission_timestamp ASC ) ) AS startup_profile_selection_first_ping_only, mozfun.stats.mode_last( ARRAY_AGG(profile_group_id ORDER BY submission_timestamp) ) AS profile_group_id, SUM( scalar_parent_browser_ui_interaction_textrecognition_error ) AS scalar_parent_browser_ui_interaction_textrecognition_error_sum, SUM(text_recognition_interaction_timing) AS text_recognition_interaction_timing_sum, SUM(text_recognition_interaction_timing_count) AS text_recognition_interaction_timing_count_sum, SUM(text_recognition_api_performance) AS text_recognition_api_performance_sum, SUM(text_recognition_api_performance_count) AS text_recognition_api_performance_count_sum, SUM(text_recognition_text_length) AS text_recognition_text_length_sum, SUM(text_recognition_text_length_count) AS text_recognition_text_length_count_sum, SUM(places_searchbar_cumulative_searches) AS places_searchbar_cumulative_searches_sum, SUM(places_searchbar_cumulative_filter_count) AS places_searchbar_cumulative_filter_count_sum, SUM( places_library_cumulative_bookmark_searches ) AS places_library_cumulative_bookmark_searches_sum, SUM( places_library_cumulative_history_searches ) AS places_library_cumulative_history_searches_sum, SUM( places_bookmarks_searchbar_cumulative_searches ) AS places_bookmarks_searchbar_cumulative_searches_sum, LOGICAL_OR( scalar_parent_dom_parentprocess_private_window_used ) AS dom_parentprocess_private_window_used, LOGICAL_OR( scalar_parent_os_environment_is_taskbar_pinned_any ) AS os_environment_is_taskbar_pinned_any, LOGICAL_OR( scalar_parent_os_environment_is_taskbar_pinned_private ) AS os_environment_is_taskbar_pinned_private_any, mozfun.stats.mode_last( ARRAY_AGG( scalar_parent_os_environment_is_taskbar_pinned_private ORDER BY submission_timestamp ) ) AS os_environment_is_taskbar_pinned_private, SUM(bookmark_migrations_quantity_chrome) AS bookmark_migrations_quantity_chrome, SUM(bookmark_migrations_quantity_edge) AS bookmark_migrations_quantity_edge, SUM(bookmark_migrations_quantity_safari) AS bookmark_migrations_quantity_safari, SUM(bookmark_migrations_quantity_all) AS bookmark_migrations_quantity_all, SUM(history_migrations_quantity_chrome) AS history_migrations_quantity_chrome, SUM(history_migrations_quantity_edge) AS history_migrations_quantity_edge, SUM(history_migrations_quantity_safari) AS history_migrations_quantity_safari, SUM(history_migrations_quantity_all) AS history_migrations_quantity_all, SUM(logins_migrations_quantity_chrome) AS logins_migrations_quantity_chrome, SUM(logins_migrations_quantity_edge) AS logins_migrations_quantity_edge, SUM(logins_migrations_quantity_safari) AS logins_migrations_quantity_safari, SUM(logins_migrations_quantity_all) AS logins_migrations_quantity_all, SUM(media_play_time_ms_audio) AS media_play_time_ms_audio_sum, SUM(media_play_time_ms_video) AS media_play_time_ms_video_sum, FROM clients_summary GROUP BY client_id, submission_date ), udf_aggregates AS ( SELECT * REPLACE ( ARRAY( SELECT AS STRUCT mozfun.map.sum(agg) AS map, FROM UNNEST(map_sum_aggregates) ) AS map_sum_aggregates ) FROM aggregates ) SELECT * EXCEPT (map_sum_aggregates), -- CAUTION: the order of fields here must match the order defined in -- map_sum_aggregates above and offsets must increment on each line. map_sum_aggregates[OFFSET(0)].map AS scalar_parent_telemetry_event_counts_sum, map_sum_aggregates[OFFSET(1)].map AS scalar_content_telemetry_event_counts_sum, map_sum_aggregates[OFFSET(2)].map AS scalar_parent_urlbar_searchmode_bookmarkmenu_sum, map_sum_aggregates[OFFSET(3)].map AS scalar_parent_urlbar_searchmode_handoff_sum, map_sum_aggregates[OFFSET(4)].map AS scalar_parent_urlbar_searchmode_keywordoffer_sum, map_sum_aggregates[OFFSET(5)].map AS scalar_parent_urlbar_searchmode_oneoff_sum, map_sum_aggregates[OFFSET(6)].map AS scalar_parent_urlbar_searchmode_other_sum, map_sum_aggregates[OFFSET(7)].map AS scalar_parent_urlbar_searchmode_shortcut_sum, map_sum_aggregates[OFFSET(8)].map AS scalar_parent_urlbar_searchmode_tabmenu_sum, map_sum_aggregates[OFFSET(9)].map AS scalar_parent_urlbar_searchmode_tabtosearch_sum, map_sum_aggregates[OFFSET(10)].map AS scalar_parent_urlbar_searchmode_tabtosearch_onboard_sum, map_sum_aggregates[OFFSET(11)].map AS scalar_parent_urlbar_searchmode_topsites_newtab_sum, map_sum_aggregates[OFFSET(12)].map AS scalar_parent_urlbar_searchmode_topsites_urlbar_sum, map_sum_aggregates[OFFSET(13)].map AS scalar_parent_urlbar_searchmode_touchbar_sum, map_sum_aggregates[OFFSET(14)].map AS scalar_parent_urlbar_searchmode_typed_sum, map_sum_aggregates[ OFFSET(15) ].map AS scalar_parent_browser_ui_interaction_preferences_pane_home_sum, map_sum_aggregates[OFFSET(16)].map AS scalar_parent_urlbar_picked_autofill_sum, map_sum_aggregates[OFFSET(17)].map AS scalar_parent_urlbar_picked_autofill_about_sum, map_sum_aggregates[OFFSET(18)].map AS scalar_parent_urlbar_picked_autofill_adaptive_sum, map_sum_aggregates[OFFSET(19)].map AS scalar_parent_urlbar_picked_autofill_origin_sum, map_sum_aggregates[OFFSET(20)].map AS scalar_parent_urlbar_picked_autofill_other_sum, map_sum_aggregates[OFFSET(21)].map AS scalar_parent_urlbar_picked_autofill_preloaded_sum, map_sum_aggregates[OFFSET(22)].map AS scalar_parent_urlbar_picked_autofill_url_sum, map_sum_aggregates[OFFSET(23)].map AS scalar_parent_urlbar_picked_bookmark_sum, map_sum_aggregates[OFFSET(24)].map AS scalar_parent_urlbar_picked_dynamic_sum, map_sum_aggregates[OFFSET(25)].map AS scalar_parent_urlbar_picked_extension_sum, map_sum_aggregates[OFFSET(26)].map AS scalar_parent_urlbar_picked_formhistory_sum, map_sum_aggregates[OFFSET(27)].map AS scalar_parent_urlbar_picked_history_sum, map_sum_aggregates[OFFSET(28)].map AS scalar_parent_urlbar_picked_keyword_sum, map_sum_aggregates[OFFSET(29)].map AS scalar_parent_urlbar_picked_remotetab_sum, map_sum_aggregates[OFFSET(30)].map AS scalar_parent_urlbar_picked_searchengine_sum, map_sum_aggregates[OFFSET(31)].map AS scalar_parent_urlbar_picked_searchsuggestion_sum, map_sum_aggregates[OFFSET(32)].map AS scalar_parent_urlbar_picked_switchtab_sum, map_sum_aggregates[OFFSET(33)].map AS scalar_parent_urlbar_picked_tabtosearch_sum, map_sum_aggregates[OFFSET(34)].map AS scalar_parent_urlbar_picked_tip_sum, map_sum_aggregates[OFFSET(35)].map AS scalar_parent_urlbar_picked_topsite_sum, map_sum_aggregates[OFFSET(36)].map AS scalar_parent_urlbar_picked_unknown_sum, map_sum_aggregates[OFFSET(37)].map AS scalar_parent_urlbar_picked_visiturl_sum, map_sum_aggregates[OFFSET(38)].map AS search_with_ads, map_sum_aggregates[OFFSET(39)].map AS ad_clicks, map_sum_aggregates[OFFSET(40)].map AS search_content_urlbar_sum, map_sum_aggregates[OFFSET(41)].map AS search_content_urlbar_searchmode_sum, map_sum_aggregates[OFFSET(42)].map AS search_content_contextmenu_sum, map_sum_aggregates[OFFSET(43)].map AS search_content_about_home_sum, map_sum_aggregates[OFFSET(44)].map AS search_content_about_newtab_sum, map_sum_aggregates[OFFSET(45)].map AS search_content_searchbar_sum, map_sum_aggregates[OFFSET(46)].map AS search_content_system_sum, map_sum_aggregates[OFFSET(47)].map AS search_content_webextension_sum, map_sum_aggregates[OFFSET(48)].map AS search_content_tabhistory_sum, map_sum_aggregates[OFFSET(49)].map AS search_content_reload_sum, map_sum_aggregates[OFFSET(50)].map AS search_content_unknown_sum, map_sum_aggregates[OFFSET(51)].map AS search_withads_urlbar_sum, map_sum_aggregates[OFFSET(52)].map AS search_withads_urlbar_searchmode_sum, map_sum_aggregates[OFFSET(53)].map AS search_withads_contextmenu_sum, map_sum_aggregates[OFFSET(54)].map AS search_withads_about_home_sum, map_sum_aggregates[OFFSET(55)].map AS search_withads_about_newtab_sum, map_sum_aggregates[OFFSET(56)].map AS search_withads_searchbar_sum, map_sum_aggregates[OFFSET(57)].map AS search_withads_system_sum, map_sum_aggregates[OFFSET(58)].map AS search_withads_webextension_sum, map_sum_aggregates[OFFSET(59)].map AS search_withads_tabhistory_sum, map_sum_aggregates[OFFSET(60)].map AS search_withads_reload_sum, map_sum_aggregates[OFFSET(61)].map AS search_withads_unknown_sum, map_sum_aggregates[OFFSET(62)].map AS search_adclicks_urlbar_sum, map_sum_aggregates[OFFSET(63)].map AS search_adclicks_urlbar_searchmode_sum, map_sum_aggregates[OFFSET(64)].map AS search_adclicks_contextmenu_sum, map_sum_aggregates[OFFSET(65)].map AS search_adclicks_about_home_sum, map_sum_aggregates[OFFSET(66)].map AS search_adclicks_about_newtab_sum, map_sum_aggregates[OFFSET(67)].map AS search_adclicks_searchbar_sum, map_sum_aggregates[OFFSET(68)].map AS search_adclicks_system_sum, map_sum_aggregates[OFFSET(69)].map AS search_adclicks_webextension_sum, map_sum_aggregates[OFFSET(70)].map AS search_adclicks_tabhistory_sum, map_sum_aggregates[OFFSET(71)].map AS search_adclicks_reload_sum, map_sum_aggregates[OFFSET(72)].map AS search_adclicks_unknown_sum, map_sum_aggregates[OFFSET(73)].map AS search_content_urlbar_handoff_sum, map_sum_aggregates[OFFSET(74)].map AS search_withads_urlbar_handoff_sum, map_sum_aggregates[OFFSET(75)].map AS search_adclicks_urlbar_handoff_sum, map_sum_aggregates[ OFFSET(76) ].map AS contextual_services_quicksuggest_block_dynamic_wikipedia_sum, map_sum_aggregates[OFFSET(77)].map AS contextual_services_quicksuggest_block_nonsponsored_sum, map_sum_aggregates[ OFFSET(78) ].map AS contextual_services_quicksuggest_block_nonsponsored_bestmatch_sum, map_sum_aggregates[OFFSET(79)].map AS contextual_services_quicksuggest_block_sponsored_sum, map_sum_aggregates[ OFFSET(80) ].map AS contextual_services_quicksuggest_block_sponsored_bestmatch_sum, map_sum_aggregates[OFFSET(81)].map AS contextual_services_quicksuggest_block_weather_sum, map_sum_aggregates[OFFSET(82)].map AS contextual_services_quicksuggest_click_sum, map_sum_aggregates[ OFFSET(83) ].map AS contextual_services_quicksuggest_click_dynamic_wikipedia_sum, map_sum_aggregates[OFFSET(84)].map AS contextual_services_quicksuggest_click_nonsponsored_sum, map_sum_aggregates[ OFFSET(85) ].map AS contextual_services_quicksuggest_click_nonsponsored_bestmatch_sum, map_sum_aggregates[OFFSET(86)].map AS contextual_services_quicksuggest_click_sponsored_sum, map_sum_aggregates[ OFFSET(87) ].map AS contextual_services_quicksuggest_click_sponsored_bestmatch_sum, map_sum_aggregates[OFFSET(88)].map AS contextual_services_quicksuggest_click_weather_sum, map_sum_aggregates[OFFSET(89)].map AS contextual_services_quicksuggest_help_sum, map_sum_aggregates[OFFSET(90)].map AS contextual_services_quicksuggest_help_dynamic_wikipedia_sum, map_sum_aggregates[OFFSET(91)].map AS contextual_services_quicksuggest_help_nonsponsored_sum, map_sum_aggregates[ OFFSET(92) ].map AS contextual_services_quicksuggest_help_nonsponsored_bestmatch_sum, map_sum_aggregates[OFFSET(93)].map AS contextual_services_quicksuggest_help_sponsored_sum, map_sum_aggregates[ OFFSET(94) ].map AS contextual_services_quicksuggest_help_sponsored_bestmatch_sum, map_sum_aggregates[OFFSET(95)].map AS contextual_services_quicksuggest_help_weather_sum, map_sum_aggregates[OFFSET(96)].map AS contextual_services_quicksuggest_impression_sum, map_sum_aggregates[ OFFSET(97) ].map AS contextual_services_quicksuggest_impression_dynamic_wikipedia_sum, map_sum_aggregates[ OFFSET(98) ].map AS contextual_services_quicksuggest_impression_nonsponsored_sum, map_sum_aggregates[ OFFSET(99) ].map AS contextual_services_quicksuggest_impression_nonsponsored_bestmatch_sum, map_sum_aggregates[OFFSET(100)].map AS contextual_services_quicksuggest_impression_sponsored_sum, map_sum_aggregates[ OFFSET(101) ].map AS contextual_services_quicksuggest_impression_sponsored_bestmatch_sum, map_sum_aggregates[OFFSET(102)].map AS contextual_services_quicksuggest_impression_weather_sum, map_sum_aggregates[OFFSET(103)].map AS contextual_services_topsites_click_sum, map_sum_aggregates[OFFSET(104)].map AS contextual_services_topsites_impression_sum, map_sum_aggregates[OFFSET(105)].map AS scalar_parent_browser_ui_interaction_content_context_sum, map_sum_aggregates[OFFSET(106)].map AS search_content_urlbar_persisted_sum, map_sum_aggregates[OFFSET(107)].map AS search_withads_urlbar_persisted_sum, map_sum_aggregates[OFFSET(108)].map AS search_adclicks_urlbar_persisted_sum, map_sum_aggregates[OFFSET(109)].map AS scalar_parent_sidebar_opened_sum, map_sum_aggregates[OFFSET(110)].map AS scalar_parent_sidebar_search_sum, map_sum_aggregates[OFFSET(111)].map AS scalar_parent_sidebar_link_sum, map_sum_aggregates[OFFSET(112)].map AS scalar_parent_library_link_sum, map_sum_aggregates[OFFSET(113)].map AS scalar_parent_library_opened_sum, map_sum_aggregates[OFFSET(114)].map AS scalar_parent_library_search_sum, FROM udf_aggregates