sql/moz-fx-data-shared-prod/telemetry_derived/urlbar_clients_daily_v1/query.sql (174 lines of code) (raw):

CREATE TEMP FUNCTION one_index(x ANY TYPE) AS ( IF(SAFE_CAST(x AS INT64) < 0, SAFE_CAST(x AS INT64), SAFE_CAST(x AS INT64) + 1) ); CREATE TEMP FUNCTION one_index_struct(record STRUCT<k STRING, v INT64>) AS ( STRUCT(one_index(record.k) AS key, record.v AS value) ); CREATE TEMP FUNCTION one_index_array(map ARRAY<STRUCT<k STRING, v INT64>>) AS ( ARRAY(SELECT one_index_struct(record) FROM UNNEST(map) AS record) ); CREATE TEMP FUNCTION filter_probe_counts_with_outlier_values( map ARRAY<STRUCT<k STRING, v INT64>> ) AS ( -- Similar to search probes/metrics, count values over 10000 are considered too high ARRAY( SELECT STRUCT(record.k AS key, record.v AS value) FROM UNNEST(map) AS record WHERE record.v <= 10000 ) ); CREATE TEMP FUNCTION transform_scalar_metric_sum_columns(map ARRAY<STRUCT<k STRING, v INT64>>) AS ( -- Transforms the sums of probe counts columns from clients_daily by: -- Applying 1-indexing to reflex index -> position (of urlbar choice) -- Replacing outlier sum values above a certain threshold with 0 one_index_array(filter_probe_counts_with_outlier_values(map)) ); WITH combined_urlbar_picked AS ( SELECT submission_date, client_id, profile_group_id, default_search_engine, experiments, app_version, normalized_channel, IFNULL(country, '??') AS country, locale, user_pref_browser_search_region AS search_region, SAFE_CAST(user_pref_browser_search_suggest_enabled AS BOOL) AS suggest_enabled, SAFE_CAST(user_pref_browser_widget_in_navbar AS BOOL) AS in_navbar, SAFE_CAST(user_pref_browser_urlbar_suggest_searches AS BOOL) AS suggest_searches, SAFE_CAST( user_pref_browser_urlbar_show_search_suggestions_first AS BOOL ) AS show_search_suggestions_first, SAFE_CAST(user_pref_browser_urlbar_suggest_quicksuggest AS BOOL) AS suggest_quicksuggest, SAFE_CAST( user_pref_browser_urlbar_suggest_quicksuggest_nonsponsored AS BOOL ) AS suggest_quicksuggest_nonsponsored, SAFE_CAST( user_pref_browser_urlbar_suggest_quicksuggest_sponsored AS BOOL ) AS suggest_quicksuggest_sponsored, user_pref_browser_urlbar_quicksuggest_onboarding_dialog_choice AS quicksuggest_onboarding_dialog_choice, user_pref_browser_urlbar_quicksuggest_data_collection_enabled AS quicksuggest_data_collection_enabled, [ STRUCT( "autofill" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_autofill_sum) AS position ), STRUCT( "bookmark" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_bookmark_sum) AS position ), STRUCT( "dynamic" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_dynamic_sum) AS position ), STRUCT( "extension" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_extension_sum) AS position ), STRUCT( "formhistory" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_formhistory_sum) AS position ), STRUCT( "history" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_history_sum) AS position ), STRUCT( "keyword" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_keyword_sum) AS position ), STRUCT( "remotetab" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_remotetab_sum) AS position ), STRUCT( "searchengine" AS type, transform_scalar_metric_sum_columns( scalar_parent_urlbar_picked_searchengine_sum ) AS position ), STRUCT( "searchsuggestion" AS type, transform_scalar_metric_sum_columns( scalar_parent_urlbar_picked_searchsuggestion_sum ) AS position ), STRUCT( "switchtab" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_switchtab_sum) AS position ), STRUCT( "tabtosearch" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_tabtosearch_sum) AS position ), STRUCT( "tip" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_tip_sum) AS position ), STRUCT( "topsite" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_topsite_sum) AS position ), STRUCT( "unknown" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_unknown_sum) AS position ), STRUCT( "visiturl" AS type, transform_scalar_metric_sum_columns(scalar_parent_urlbar_picked_visiturl_sum) AS position ) ] AS urlbar_picked_by_type_by_position FROM `moz-fx-data-shared-prod.telemetry_derived.clients_daily_joined_v1` WHERE submission_date = @submission_date ), count_picked AS ( SELECT submission_date, client_id, COALESCE(SUM(position.value), 0) AS count_picked_total, mozfun.map.sum(ARRAY_AGG(STRUCT(type AS key, position.value AS value))) AS count_picked_by_type, mozfun.map.sum( ARRAY_AGG(STRUCT(position.key AS key, position.value AS value)) ) AS count_picked_by_position FROM combined_urlbar_picked CROSS JOIN UNNEST(urlbar_picked_by_type_by_position) AS urlbar_picked CROSS JOIN UNNEST(position) AS position GROUP BY submission_date, client_id ) SELECT submission_date, client_id, default_search_engine, experiments, app_version, normalized_channel, country, locale, search_region, suggest_enabled, in_navbar, suggest_searches, show_search_suggestions_first, suggest_quicksuggest, suggest_quicksuggest_nonsponsored, suggest_quicksuggest_sponsored, quicksuggest_onboarding_dialog_choice, quicksuggest_data_collection_enabled, count_picked_total, count_picked_by_type, count_picked_by_position, urlbar_picked_by_type_by_position, combined_urlbar_picked.profile_group_id FROM combined_urlbar_picked FULL OUTER JOIN count_picked USING (submission_date, client_id)