From 2c449e553b7d1658798b0854f6d58e5be5a6c64b Mon Sep 17 00:00:00 2001 From: Generated LookML Creator Date: Wed, 18 May 2022 19:37:13 +0000 Subject: [PATCH] Auto-push from LookML generation --- .../views/active_users_aggregates.view.lkml | 20 +- .../explores/fog_validation.explore.lkml | 57 ++ focus_android/views/fog_validation.view.lkml | 840 +++++++++++++++++ .../views/fog_validation_table.view.lkml | 570 ++++++++++++ focus_android/views/metrics.view.lkml | 850 ++++++++++++++++++ focus_android/views/metrics_table.view.lkml | 676 ++++++++++++++ .../explores/fog_validation.explore.lkml | 56 ++ klar_android/views/fog_validation.view.lkml | 820 +++++++++++++++++ .../views/fog_validation_table.view.lkml | 550 ++++++++++++ klar_android/views/metrics.view.lkml | 850 ++++++++++++++++++ klar_android/views/metrics_table.view.lkml | 676 ++++++++++++++ .../structured_distinct_docids.view.lkml | 12 + .../views/telemetry_distinct_docids.view.lkml | 17 + namespaces.yaml | 43 +- 14 files changed, 6014 insertions(+), 23 deletions(-) create mode 100644 focus_android/explores/fog_validation.explore.lkml create mode 100644 focus_android/views/fog_validation.view.lkml create mode 100644 focus_android/views/fog_validation_table.view.lkml create mode 100644 klar_android/explores/fog_validation.explore.lkml create mode 100644 klar_android/views/fog_validation.view.lkml create mode 100644 klar_android/views/fog_validation_table.view.lkml diff --git a/combined_browser_metrics/views/active_users_aggregates.view.lkml b/combined_browser_metrics/views/active_users_aggregates.view.lkml index c472fdefa..41f90c181 100644 --- a/combined_browser_metrics/views/active_users_aggregates.view.lkml +++ b/combined_browser_metrics/views/active_users_aggregates.view.lkml @@ -86,6 +86,11 @@ view: active_users_aggregates { type: string } + dimension: first_seen_year { + sql: ${TABLE}.first_seen_year ;; + type: number + } + dimension: is_default_browser { sql: ${TABLE}.is_default_browser ;; type: yesno @@ -156,21 +161,6 @@ view: active_users_aggregates { type: number } - dimension_group: first_seen { - sql: ${TABLE}.first_seen_date ;; - type: time - timeframes: [ - raw, - date, - week, - month, - quarter, - year, - ] - convert_tz: no - datatype: date - } - dimension_group: submission { sql: ${TABLE}.submission_date ;; type: time diff --git a/focus_android/explores/fog_validation.explore.lkml b/focus_android/explores/fog_validation.explore.lkml new file mode 100644 index 000000000..57be67b6d --- /dev/null +++ b/focus_android/explores/fog_validation.explore.lkml @@ -0,0 +1,57 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +include: "/looker-hub/focus_android/views/fog_validation.view.lkml" + +explore: fog_validation { + sql_always_where: ${fog_validation.submission_date} >= '2010-01-01' ;; + view_label: " Fog_Validation" + description: "Explore for the fog_validation ping. This ping is intended to evaluate the behaviour of FOG before it ships beyond Nightly. This is a temporary ping. It is sent one hour after FOG is initialized, and every hour thereafter." + view_name: fog_validation + + always_filter: { + filters: [ + channel: "mozdata.focus^_android.fog^_validation", + submission_date: "28 days", + ] + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_label { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_label}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_label ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_label.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_overflow}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_overflow ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_overflow.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_state { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_state}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_state ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_state.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_value { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_value}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_value ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_value.document_id} ;; + } +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value { + hidden: yes +} \ No newline at end of file diff --git a/focus_android/views/fog_validation.view.lkml b/focus_android/views/fog_validation.view.lkml new file mode 100644 index 000000000..8760d29e1 --- /dev/null +++ b/focus_android/views/fog_validation.view.lkml @@ -0,0 +1,840 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +view: fog_validation { + dimension: metrics__uuid__fog_validation_legacy_telemetry_client_id { + label: "Fog Validation Legacy Telemetry Client Id" + hidden: yes + sql: ${TABLE}.metrics.uuid.fog_validation_legacy_telemetry_client_id ;; + type: string + group_label: "Fog Validation" + group_item_label: "Legacy Telemetry Client Id" + + link: { + label: "Glean Dictionary reference for Fog Validation Legacy Telemetry Client Id" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_validation_legacy_telemetry_client_id" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The Telemetry client_id. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__string__fog_validation_os_version { + label: "Fog Validation Os Version" + hidden: yes + sql: ${TABLE}.metrics.string.fog_validation_os_version ;; + type: string + group_label: "Fog Validation" + group_item_label: "Os Version" + + link: { + label: "Glean Dictionary reference for Fog Validation Os Version" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_validation_os_version" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The version of the OS running Firefox, as detected by Gecko. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__boolean__fog_validation_profile_disk_is_ssd { + label: "Fog Validation Profile Disk Is Ssd" + hidden: yes + sql: ${TABLE}.metrics.boolean.fog_validation_profile_disk_is_ssd ;; + type: yesno + group_label: "Fog Validation" + group_item_label: "Profile Disk Is Ssd" + + link: { + label: "Glean Dictionary reference for Fog Validation Profile Disk Is Ssd" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_validation_profile_disk_is_ssd" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True iff the type of the disk the current Firefox profile is stored on is an SSD. (Windows only)." + } + + dimension: metrics__labeled_counter__glean_error_invalid_label { + label: "Glean Error Invalid Label" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_label ;; + group_label: "Glean Error" + group_item_label: "Invalid Label" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Label" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/glean_error_invalid_label" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set with an invalid label. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_overflow { + label: "Glean Error Invalid Overflow" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_overflow ;; + group_label: "Glean Error" + group_item_label: "Invalid Overflow" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Overflow" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/glean_error_invalid_overflow" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set a value that overflowed. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_state { + label: "Glean Error Invalid State" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_state ;; + group_label: "Glean Error" + group_item_label: "Invalid State" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid State" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/glean_error_invalid_state" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a timing metric was used incorrectly. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_value { + label: "Glean Error Invalid Value" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_value ;; + group_label: "Glean Error" + group_item_label: "Invalid Value" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Value" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/glean_error_invalid_value" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set to an invalid value. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: additional_properties { + sql: ${TABLE}.additional_properties ;; + hidden: yes + description: "A JSON string containing any payload properties not present in the schema" + } + + dimension: client_info__android_sdk_version { + sql: ${TABLE}.client_info.android_sdk_version ;; + type: string + group_label: "Client Info" + group_item_label: "Android Sdk Version" + description: "The optional Android specific SDK version of the software running on this hardware device." + } + + dimension: client_info__app_build { + sql: ${TABLE}.client_info.app_build ;; + type: string + group_label: "Client Info" + group_item_label: "App Build" + description: "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`." + } + + dimension: client_info__app_channel { + sql: ${TABLE}.client_info.app_channel ;; + type: string + group_label: "Client Info" + group_item_label: "App Channel" + description: "The channel the application is being distributed on." + } + + dimension: client_info__app_display_version { + sql: ${TABLE}.client_info.app_display_version ;; + type: string + group_label: "Client Info" + group_item_label: "App Display Version" + description: "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\"." + } + + dimension: client_info__architecture { + sql: ${TABLE}.client_info.architecture ;; + type: string + group_label: "Client Info" + group_item_label: "Architecture" + description: "The architecture of the device, (e.g. \"arm\", \"x86\")." + } + + dimension: client_info__build_date { + sql: ${TABLE}.client_info.build_date ;; + type: string + group_label: "Client Info" + group_item_label: "Build Date" + description: "The date & time the application was built" + } + + dimension: client_info__client_id { + sql: ${TABLE}.client_info.client_id ;; + hidden: yes + description: "A UUID uniquely identifying the client." + } + + dimension: client_info__device_manufacturer { + sql: ${TABLE}.client_info.device_manufacturer ;; + type: string + group_label: "Client Info" + group_item_label: "Device Manufacturer" + description: "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop)." + } + + dimension: client_info__device_model { + sql: ${TABLE}.client_info.device_model ;; + type: string + group_label: "Client Info" + group_item_label: "Device Model" + description: "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop)." + } + + dimension: client_info__first_run_date { + sql: ${TABLE}.client_info.first_run_date ;; + type: string + group_label: "Client Info" + group_item_label: "First Run Date" + description: "The date of the first run of the application." + } + + dimension: client_info__locale { + sql: ${TABLE}.client_info.locale ;; + type: string + group_label: "Client Info" + group_item_label: "Locale" + description: "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\"." + } + + dimension: client_info__os { + sql: ${TABLE}.client_info.os ;; + type: string + group_label: "Client Info" + group_item_label: "Os" + description: "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown" + } + + dimension: client_info__os_version { + sql: ${TABLE}.client_info.os_version ;; + type: string + group_label: "Client Info" + group_item_label: "Os Version" + description: "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`." + } + + dimension: client_info__telemetry_sdk_build { + sql: ${TABLE}.client_info.telemetry_sdk_build ;; + type: string + group_label: "Client Info" + group_item_label: "Telemetry Sdk Build" + description: "The version of the Glean SDK" + } + + dimension: document_id { + sql: ${TABLE}.document_id ;; + hidden: yes + description: "The document ID specified in the URI when the client sent this message" + primary_key: yes + } + + dimension: events { + sql: ${TABLE}.events ;; + hidden: yes + } + + dimension: metadata__geo__city { + sql: ${TABLE}.metadata.geo.city ;; + type: string + group_label: "Metadata Geo" + group_item_label: "City" + } + + dimension: metadata__geo__country { + sql: ${TABLE}.metadata.geo.country ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Country" + map_layer_name: countries + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: metadata__geo__db_version { + sql: ${TABLE}.metadata.geo.db_version ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Db Version" + description: "The specific geo database version used for this lookup" + } + + dimension: metadata__geo__subdivision1 { + sql: ${TABLE}.metadata.geo.subdivision1 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision1" + description: "First major country subdivision, typically a state, province, or county" + } + + dimension: metadata__geo__subdivision2 { + sql: ${TABLE}.metadata.geo.subdivision2 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision2" + description: "Second major country subdivision; not applicable for most countries" + } + + dimension: metadata__header__date { + sql: ${TABLE}.metadata.header.date ;; + type: string + group_label: "Metadata Header" + group_item_label: "Date" + description: "Date HTTP header" + } + + dimension: metadata__header__dnt { + sql: ${TABLE}.metadata.header.dnt ;; + type: string + group_label: "Metadata Header" + group_item_label: "Dnt" + description: "DNT (Do Not Track) HTTP header" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_cipher_hex { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_cipher_hex ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Cipher Hex" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_version { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_version ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Version" + } + + dimension: metadata__header__parsed_x_source_tags { + sql: ${TABLE}.metadata.header.parsed_x_source_tags ;; + hidden: yes + } + + dimension: metadata__header__x_debug_id { + sql: ${TABLE}.metadata.header.x_debug_id ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Debug Id" + description: "X-Debug-Id HTTP header" + } + + dimension: metadata__header__x_foxsec_ip_reputation { + sql: ${TABLE}.metadata.header.x_foxsec_ip_reputation ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Foxsec Ip Reputation" + description: "X-Foxsec-IP-Reputation header" + } + + dimension: metadata__header__x_lb_tags { + sql: ${TABLE}.metadata.header.x_lb_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Lb Tags" + description: "X-LB-Tags HTTP header" + } + + dimension: metadata__header__x_pingsender_version { + sql: ${TABLE}.metadata.header.x_pingsender_version ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Pingsender Version" + description: "X-PingSender-Version HTTP header" + } + + dimension: metadata__header__x_source_tags { + sql: ${TABLE}.metadata.header.x_source_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Source Tags" + description: "X-Source-Tags HTTP header" + } + + dimension: metadata__header__x_telemetry_agent { + sql: ${TABLE}.metadata.header.x_telemetry_agent ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Telemetry Agent" + description: "X-Telemetry-Agent HTTP header" + } + + dimension: metadata__isp__db_version { + sql: ${TABLE}.metadata.isp.db_version ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Db Version" + description: "The specific geo ISP database version used for this lookup" + } + + dimension: metadata__isp__name { + sql: ${TABLE}.metadata.isp.name ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Name" + description: "The name of the ISP associated with the client's IP address" + } + + dimension: metadata__isp__organization { + sql: ${TABLE}.metadata.isp.organization ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Organization" + description: "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name" + } + + dimension: metadata__user_agent__browser { + sql: ${TABLE}.metadata.user_agent.browser ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Browser" + } + + dimension: metadata__user_agent__os { + sql: ${TABLE}.metadata.user_agent.os ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Os" + } + + dimension: metadata__user_agent__version { + sql: ${TABLE}.metadata.user_agent.version ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Version" + } + + dimension: normalized_app_name { + sql: ${TABLE}.normalized_app_name ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized app name" + } + + dimension: normalized_channel { + sql: ${TABLE}.normalized_channel ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized channel name" + } + + dimension: normalized_country_code { + sql: ${TABLE}.normalized_country_code ;; + type: string + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: normalized_os { + sql: ${TABLE}.normalized_os ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized OS name" + } + + dimension: normalized_os_version { + sql: ${TABLE}.normalized_os_version ;; + type: string + } + + dimension: ping_info__end_time { + sql: ${TABLE}.ping_info.end_time ;; + type: string + group_label: "Ping Info" + group_item_label: "End Time" + } + + dimension: ping_info__experiments { + sql: ${TABLE}.ping_info.experiments ;; + hidden: yes + } + + dimension: ping_info__ping_type { + sql: ${TABLE}.ping_info.ping_type ;; + type: string + group_label: "Ping Info" + group_item_label: "Ping Type" + } + + dimension: ping_info__reason { + sql: ${TABLE}.ping_info.reason ;; + type: string + group_label: "Ping Info" + group_item_label: "Reason" + } + + dimension: ping_info__seq { + sql: ${TABLE}.ping_info.seq ;; + type: number + group_label: "Ping Info" + group_item_label: "Seq" + } + + dimension: ping_info__start_time { + sql: ${TABLE}.ping_info.start_time ;; + type: string + group_label: "Ping Info" + group_item_label: "Start Time" + } + + dimension: sample_id { + sql: ${TABLE}.sample_id ;; + type: number + description: "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99" + } + + dimension_group: metadata__header__parsed { + sql: ${TABLE}.metadata.header.parsed_date ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Metadata Header: Parsed Date" + } + + dimension_group: ping_info__parsed_end { + sql: ${TABLE}.ping_info.parsed_end_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed End Time" + } + + dimension_group: ping_info__parsed_start { + sql: ${TABLE}.ping_info.parsed_start_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed Start Time" + } + + dimension_group: submission { + sql: ${TABLE}.submission_timestamp ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + description: "Time when the ingestion edge server accepted this message" + } + + measure: clients { + type: count_distinct + sql: ${client_info__client_id} ;; + } + + measure: ping_count { + type: count + } + + parameter: channel { + type: unquoted + default_value: "mozdata.focus_android.fog_validation" + + allowed_value: { + label: "Release" + value: "mozdata.focus_android.fog_validation" + } + + allowed_value: { + label: "Beta" + value: "mozdata.org_mozilla_focus_beta.fog_validation" + } + + allowed_value: { + label: "Nightly" + value: "mozdata.org_mozilla_focus_nightly.fog_validation" + } + } + + sql_table_name: `{% parameter channel %}` ;; +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_label { + label: "Glean Error - Invalid Label" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + label: "Glean Error - Invalid Overflow" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_state { + label: "Glean Error - Invalid State" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_value { + label: "Glean Error - Invalid Value" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.focus_android.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_label) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.focus_android.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_overflow) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.focus_android.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_state) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.focus_android.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_value) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} \ No newline at end of file diff --git a/focus_android/views/fog_validation_table.view.lkml b/focus_android/views/fog_validation_table.view.lkml new file mode 100644 index 000000000..cad08ddcd --- /dev/null +++ b/focus_android/views/fog_validation_table.view.lkml @@ -0,0 +1,570 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +view: fog_validation_table { + dimension: additional_properties { + sql: ${TABLE}.additional_properties ;; + hidden: yes + description: "A JSON string containing any payload properties not present in the schema" + } + + dimension: client_info__android_sdk_version { + sql: ${TABLE}.client_info.android_sdk_version ;; + type: string + group_label: "Client Info" + group_item_label: "Android Sdk Version" + description: "The optional Android specific SDK version of the software running on this hardware device." + } + + dimension: client_info__app_build { + sql: ${TABLE}.client_info.app_build ;; + type: string + group_label: "Client Info" + group_item_label: "App Build" + description: "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`." + } + + dimension: client_info__app_channel { + sql: ${TABLE}.client_info.app_channel ;; + type: string + group_label: "Client Info" + group_item_label: "App Channel" + description: "The channel the application is being distributed on." + } + + dimension: client_info__app_display_version { + sql: ${TABLE}.client_info.app_display_version ;; + type: string + group_label: "Client Info" + group_item_label: "App Display Version" + description: "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\"." + } + + dimension: client_info__architecture { + sql: ${TABLE}.client_info.architecture ;; + type: string + group_label: "Client Info" + group_item_label: "Architecture" + description: "The architecture of the device, (e.g. \"arm\", \"x86\")." + } + + dimension: client_info__build_date { + sql: ${TABLE}.client_info.build_date ;; + type: string + group_label: "Client Info" + group_item_label: "Build Date" + description: "The date & time the application was built" + } + + dimension: client_info__client_id { + sql: ${TABLE}.client_info.client_id ;; + hidden: yes + description: "A UUID uniquely identifying the client." + } + + dimension: client_info__device_manufacturer { + sql: ${TABLE}.client_info.device_manufacturer ;; + type: string + group_label: "Client Info" + group_item_label: "Device Manufacturer" + description: "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop)." + } + + dimension: client_info__device_model { + sql: ${TABLE}.client_info.device_model ;; + type: string + group_label: "Client Info" + group_item_label: "Device Model" + description: "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop)." + } + + dimension: client_info__first_run_date { + sql: ${TABLE}.client_info.first_run_date ;; + type: string + group_label: "Client Info" + group_item_label: "First Run Date" + description: "The date of the first run of the application." + } + + dimension: client_info__locale { + sql: ${TABLE}.client_info.locale ;; + type: string + group_label: "Client Info" + group_item_label: "Locale" + description: "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\"." + } + + dimension: client_info__os { + sql: ${TABLE}.client_info.os ;; + type: string + group_label: "Client Info" + group_item_label: "Os" + description: "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown" + } + + dimension: client_info__os_version { + sql: ${TABLE}.client_info.os_version ;; + type: string + group_label: "Client Info" + group_item_label: "Os Version" + description: "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`." + } + + dimension: client_info__telemetry_sdk_build { + sql: ${TABLE}.client_info.telemetry_sdk_build ;; + type: string + group_label: "Client Info" + group_item_label: "Telemetry Sdk Build" + description: "The version of the Glean SDK" + } + + dimension: document_id { + sql: ${TABLE}.document_id ;; + hidden: yes + description: "The document ID specified in the URI when the client sent this message" + } + + dimension: events { + sql: ${TABLE}.events ;; + hidden: yes + } + + dimension: metadata__geo__city { + sql: ${TABLE}.metadata.geo.city ;; + type: string + group_label: "Metadata Geo" + group_item_label: "City" + } + + dimension: metadata__geo__country { + sql: ${TABLE}.metadata.geo.country ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Country" + map_layer_name: countries + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: metadata__geo__db_version { + sql: ${TABLE}.metadata.geo.db_version ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Db Version" + description: "The specific geo database version used for this lookup" + } + + dimension: metadata__geo__subdivision1 { + sql: ${TABLE}.metadata.geo.subdivision1 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision1" + description: "First major country subdivision, typically a state, province, or county" + } + + dimension: metadata__geo__subdivision2 { + sql: ${TABLE}.metadata.geo.subdivision2 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision2" + description: "Second major country subdivision; not applicable for most countries" + } + + dimension: metadata__header__date { + sql: ${TABLE}.metadata.header.date ;; + type: string + group_label: "Metadata Header" + group_item_label: "Date" + description: "Date HTTP header" + } + + dimension: metadata__header__dnt { + sql: ${TABLE}.metadata.header.dnt ;; + type: string + group_label: "Metadata Header" + group_item_label: "Dnt" + description: "DNT (Do Not Track) HTTP header" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_cipher_hex { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_cipher_hex ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Cipher Hex" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_version { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_version ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Version" + } + + dimension: metadata__header__parsed_x_source_tags { + sql: ${TABLE}.metadata.header.parsed_x_source_tags ;; + hidden: yes + } + + dimension: metadata__header__x_debug_id { + sql: ${TABLE}.metadata.header.x_debug_id ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Debug Id" + description: "X-Debug-Id HTTP header" + } + + dimension: metadata__header__x_foxsec_ip_reputation { + sql: ${TABLE}.metadata.header.x_foxsec_ip_reputation ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Foxsec Ip Reputation" + description: "X-Foxsec-IP-Reputation header" + } + + dimension: metadata__header__x_lb_tags { + sql: ${TABLE}.metadata.header.x_lb_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Lb Tags" + description: "X-LB-Tags HTTP header" + } + + dimension: metadata__header__x_pingsender_version { + sql: ${TABLE}.metadata.header.x_pingsender_version ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Pingsender Version" + description: "X-PingSender-Version HTTP header" + } + + dimension: metadata__header__x_source_tags { + sql: ${TABLE}.metadata.header.x_source_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Source Tags" + description: "X-Source-Tags HTTP header" + } + + dimension: metadata__header__x_telemetry_agent { + sql: ${TABLE}.metadata.header.x_telemetry_agent ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Telemetry Agent" + description: "X-Telemetry-Agent HTTP header" + } + + dimension: metadata__isp__db_version { + sql: ${TABLE}.metadata.isp.db_version ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Db Version" + description: "The specific geo ISP database version used for this lookup" + } + + dimension: metadata__isp__name { + sql: ${TABLE}.metadata.isp.name ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Name" + description: "The name of the ISP associated with the client's IP address" + } + + dimension: metadata__isp__organization { + sql: ${TABLE}.metadata.isp.organization ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Organization" + description: "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name" + } + + dimension: metadata__user_agent__browser { + sql: ${TABLE}.metadata.user_agent.browser ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Browser" + } + + dimension: metadata__user_agent__os { + sql: ${TABLE}.metadata.user_agent.os ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Os" + } + + dimension: metadata__user_agent__version { + sql: ${TABLE}.metadata.user_agent.version ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Version" + } + + dimension: metrics__boolean__fog_validation_profile_disk_is_ssd { + sql: ${TABLE}.metrics.boolean.fog_validation_profile_disk_is_ssd ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Fog Validation Profile Disk Is Ssd" + description: "True iff the type of the disk the current Firefox profile is stored on is an SSD. (Windows only)." + } + + dimension: metrics__labeled_counter__glean_error_invalid_label { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_label ;; + hidden: yes + description: "Counts the number of times a metric was set with an invalid label. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_overflow { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_overflow ;; + hidden: yes + description: "Counts the number of times a metric was set a value that overflowed. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_state { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_state ;; + hidden: yes + description: "Counts the number of times a timing metric was used incorrectly. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_value { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_value ;; + hidden: yes + description: "Counts the number of times a metric was set to an invalid value. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__string__fog_validation_os_version { + sql: ${TABLE}.metrics.string.fog_validation_os_version ;; + type: string + group_label: "Metrics String" + group_item_label: "Fog Validation Os Version" + description: "The version of the OS running Firefox, as detected by Gecko. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__uuid__fog_validation_legacy_telemetry_client_id { + sql: ${TABLE}.metrics.uuid.fog_validation_legacy_telemetry_client_id ;; + type: string + group_label: "Metrics Uuid" + group_item_label: "Fog Validation Legacy Telemetry Client Id" + description: "The Telemetry client_id. To be sent only in the \"fog-validation\" ping." + } + + dimension: normalized_app_name { + sql: ${TABLE}.normalized_app_name ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized app name" + } + + dimension: normalized_channel { + sql: ${TABLE}.normalized_channel ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized channel name" + } + + dimension: normalized_country_code { + sql: ${TABLE}.normalized_country_code ;; + type: string + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: normalized_os { + sql: ${TABLE}.normalized_os ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized OS name" + } + + dimension: normalized_os_version { + sql: ${TABLE}.normalized_os_version ;; + type: string + } + + dimension: ping_info__end_time { + sql: ${TABLE}.ping_info.end_time ;; + type: string + group_label: "Ping Info" + group_item_label: "End Time" + } + + dimension: ping_info__experiments { + sql: ${TABLE}.ping_info.experiments ;; + hidden: yes + } + + dimension: ping_info__ping_type { + sql: ${TABLE}.ping_info.ping_type ;; + type: string + group_label: "Ping Info" + group_item_label: "Ping Type" + } + + dimension: ping_info__reason { + sql: ${TABLE}.ping_info.reason ;; + type: string + group_label: "Ping Info" + group_item_label: "Reason" + } + + dimension: ping_info__seq { + sql: ${TABLE}.ping_info.seq ;; + type: number + group_label: "Ping Info" + group_item_label: "Seq" + } + + dimension: ping_info__start_time { + sql: ${TABLE}.ping_info.start_time ;; + type: string + group_label: "Ping Info" + group_item_label: "Start Time" + } + + dimension: sample_id { + sql: ${TABLE}.sample_id ;; + type: number + description: "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99" + } + + dimension_group: metadata__header__parsed { + sql: ${TABLE}.metadata.header.parsed_date ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Metadata Header: Parsed Date" + } + + dimension_group: ping_info__parsed_end { + sql: ${TABLE}.ping_info.parsed_end_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed End Time" + } + + dimension_group: ping_info__parsed_start { + sql: ${TABLE}.ping_info.parsed_start_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed Start Time" + } + + dimension_group: submission { + sql: ${TABLE}.submission_timestamp ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + description: "Time when the ingestion edge server accepted this message" + } + + parameter: channel { + type: unquoted + default_value: "mozdata.focus_android.fog_validation" + + allowed_value: { + label: "Release" + value: "mozdata.focus_android.fog_validation" + } + + allowed_value: { + label: "Beta" + value: "mozdata.org_mozilla_focus_beta.fog_validation" + } + + allowed_value: { + label: "Nightly" + value: "mozdata.org_mozilla_focus_nightly.fog_validation" + } + } + + sql_table_name: `{% parameter channel %}` ;; +} + +view: fog_validation_table__events { + dimension: category { + sql: ${TABLE}.category ;; + type: string + } + + dimension: extra { + sql: ${TABLE}.extra ;; + hidden: yes + } + + dimension: name { + sql: ${TABLE}.name ;; + type: string + } + + dimension: timestamp { + sql: ${TABLE}.timestamp ;; + type: number + } +} + +view: fog_validation_table__events__extra { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: string + } +} + +view: fog_validation_table__ping_info__experiments { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value__branch { + sql: ${TABLE}.value.branch ;; + type: string + group_label: "Value" + group_item_label: "Branch" + } + + dimension: value__extra__type { + sql: ${TABLE}.value.extra.type ;; + type: string + group_label: "Value Extra" + group_item_label: "Type" + } +} \ No newline at end of file diff --git a/focus_android/views/metrics.view.lkml b/focus_android/views/metrics.view.lkml index 7a60e831c..3ed9621ef 100644 --- a/focus_android/views/metrics.view.lkml +++ b/focus_android/views/metrics.view.lkml @@ -570,6 +570,656 @@ the tracking protection settings panel from the toolbar. " } + dimension: metrics__boolean__browser_ui_proton_enabled { + label: "Browser Ui Proton Enabled" + hidden: yes + sql: ${TABLE}.metrics.boolean.browser_ui_proton_enabled ;; + type: yesno + group_label: "Browser Ui" + group_item_label: "Proton Enabled" + + link: { + label: "Glean Dictionary reference for Browser Ui Proton Enabled" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/browser_ui_proton_enabled" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True if the Proton default theme is enabled. +" + } + + dimension: metrics__boolean__fog_failed_idle_registration { + label: "Fog Failed Idle Registration" + hidden: no + sql: ${TABLE}.metrics.boolean.fog_failed_idle_registration ;; + type: yesno + group_label: "Fog" + group_item_label: "Failed Idle Registration" + + link: { + label: "Glean Dictionary reference for Fog Failed Idle Registration" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_failed_idle_registration" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True if we failed to register with the idle service. Absent otherwise. +Means IPC probably isn't working well. +Child-process data will likely be absent, or incomplete. +" + } + + dimension: metrics__timespan__fog_initialization__value { + label: "Fog Initialization Value" + hidden: no + sql: ${TABLE}.metrics.timespan.fog_initialization.value ;; + type: number + group_label: "Fog" + group_item_label: "Initialization Value" + + link: { + label: "Glean Dictionary reference for Fog Initialization Value" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_initialization" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Time the FOG initialization takes. +" + } + + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__sum { + label: "Fog Ipc Buffer Sizes Sum" + hidden: no + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.sum ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Buffer Sizes Sum" + + link: { + label: "Glean Dictionary reference for Fog Ipc Buffer Sizes Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_buffer_sizes" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number and size of the IPC buffers being received over FOG IPC. +" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__sum { + label: "Fog Ipc Flush Durations Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.sum ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Flush Durations Sum" + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Durations Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_flush_durations" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The length of time between asking the child processes for their +IPC buffers and all of them being received by the parent. +" + } + + dimension: metrics__counter__fog_ipc_flush_failures { + label: "Fog Ipc Flush Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_flush_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Flush Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times we failed to flush all non-parent-process data, +throwing even partial results into the trash. +If this number is high, we might consider writing custom `MozPromise`- +handling code instead of using `MozPromise::All`. +" + } + + dimension: metrics__counter__fog_ipc_replay_failures { + label: "Fog Ipc Replay Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_replay_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Replay Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times the ipc buffer failed to be replayed in the +parent process. +" + } + + dimension: metrics__counter__fog_ipc_shutdown_registration_failures { + label: "Fog Ipc Shutdown Registration Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_shutdown_registration_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Shutdown Registration Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times we tried to register shutdown flush routines for +content child processes, and failed (probably because there was no main +thread). +As a result there may be data loss from content child processes. +Large or rising number of clients experiencing this indicates we should +perhaps refactor content child shutdown in FOG to try harder to register +flush operations. +Will likely be obsoleted by bug 1641989. +" + } + + dimension: metrics__string__geckoview_validation_build_id { + label: "Geckoview Validation Build Id" + hidden: yes + sql: ${TABLE}.metrics.string.geckoview_validation_build_id ;; + type: string + group_label: "Geckoview Validation" + group_item_label: "Build Id" + + link: { + label: "Glean Dictionary reference for Geckoview Validation Build Id" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/geckoview_validation_build_id" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The Buildid of the Gecko engine, example: 20200205124310 Mirror of `geckoview.build_id` for validation of migrated data. +" + } + + dimension: metrics__string__geckoview_validation_version { + label: "Geckoview Validation Version" + hidden: yes + sql: ${TABLE}.metrics.string.geckoview_validation_version ;; + type: string + group_label: "Geckoview Validation" + group_item_label: "Version" + + link: { + label: "Glean Dictionary reference for Geckoview Validation Version" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/geckoview_validation_version" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The version of the Gecko engine, example: 74.0a1 Mirror of `geckoview.version` for validation of migrated data. +" + } + + dimension: metrics__boolean__gifft_validation_main_ping_assembling { + label: "Gifft Validation Main Ping Assembling" + hidden: yes + sql: ${TABLE}.metrics.boolean.gifft_validation_main_ping_assembling ;; + type: yesno + group_label: "Gifft Validation" + group_item_label: "Main Ping Assembling" + + link: { + label: "Glean Dictionary reference for Gifft Validation Main Ping Assembling" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/gifft_validation_main_ping_assembling" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The value `true`, recorded when a Firefox Telemetry \"main\" ping is about +to be assembled. +To be used to validate GIFFT. +" + } + + dimension: metrics__labeled_counter__gmp_update_xml_fetch_result { + label: "Gmp Update Xml Fetch Result" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.gmp_update_xml_fetch_result ;; + group_label: "Gmp" + group_item_label: "Update Xml Fetch Result" + + link: { + label: "Glean Dictionary reference for Gmp Update Xml Fetch Result" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/gmp_update_xml_fetch_result" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed. +" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__sum { + label: "Paint Build Displaylist Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.sum ;; + type: number + group_label: "Paint" + group_item_label: "Build Displaylist Time Sum" + + link: { + label: "Glean Dictionary reference for Paint Build Displaylist Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/paint_build_displaylist_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to build a Gecko display list. +" + } + + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__sum { + label: "Power Battery Percentage When User Active Sum" + hidden: no + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.sum ;; + type: number + group_label: "Power Battery" + group_item_label: "Percentage When User Active Sum" + + link: { + label: "Glean Dictionary reference for Power Battery Percentage When User Active Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_battery_percentage_when_user_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Records how many percent of battery was available for each period of user activity. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_background { + label: "Power Cpu Ms Per Thread Content Background" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_background ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Content Background" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Content Background" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_ms_per_thread_content_background" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_foreground { + label: "Power Cpu Ms Per Thread Content Foreground" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_foreground ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Content Foreground" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Content Foreground" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_ms_per_thread_content_foreground" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_gpu_process { + label: "Power Cpu Ms Per Thread Gpu Process" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_gpu_process ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Gpu Process" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Gpu Process" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_ms_per_thread_gpu_process" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_active { + label: "Power Cpu Ms Per Thread Parent Active" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_active ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Parent Active" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Parent Active" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_ms_per_thread_parent_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_inactive { + label: "Power Cpu Ms Per Thread Parent Inactive" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_inactive ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Parent Inactive" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Parent Inactive" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_ms_per_thread_parent_inactive" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__counter__power_cpu_time_bogus_values { + label: "Power Cpu Time Bogus Values" + hidden: no + sql: ${TABLE}.metrics.counter.power_cpu_time_bogus_values ;; + type: number + group_label: "Power" + group_item_label: "Cpu Time Bogus Values" + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Impossibly large CPU time values that were discarded. +" + } + + dimension: metrics__labeled_counter__power_cpu_time_per_process_type_ms { + label: "Power Cpu Time Per Process Type Ms" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_time_per_process_type_ms ;; + group_label: "Power" + group_item_label: "Cpu Time Per Process Type Ms" + + link: { + label: "Glean Dictionary reference for Power Cpu Time Per Process Type Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_time_per_process_type_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "CPU time used by each process type in ms. +" + } + + dimension: metrics__counter__power_gpu_time_bogus_values { + label: "Power Gpu Time Bogus Values" + hidden: no + sql: ${TABLE}.metrics.counter.power_gpu_time_bogus_values ;; + type: number + group_label: "Power" + group_item_label: "Gpu Time Bogus Values" + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Impossibly large GPU time values that were discarded. +" + } + + dimension: metrics__labeled_counter__power_gpu_time_per_process_type_ms { + label: "Power Gpu Time Per Process Type Ms" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_gpu_time_per_process_type_ms ;; + group_label: "Power" + group_item_label: "Gpu Time Per Process Type Ms" + + link: { + label: "Glean Dictionary reference for Power Gpu Time Per Process Type Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_gpu_time_per_process_type_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "GPU time used by each process type in ms. +" + } + + dimension: metrics__counter__power_total_cpu_time_ms { + label: "Power Total Cpu Time Ms" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_cpu_time_ms ;; + type: number + group_label: "Power" + group_item_label: "Total Cpu Time Ms" + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Total CPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_gpu_time_ms { + label: "Power Total Gpu Time Ms" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_gpu_time_ms ;; + type: number + group_label: "Power" + group_item_label: "Total Gpu Time Ms" + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Total GPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_thread_wakeups { + label: "Power Total Thread Wakeups" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_thread_wakeups ;; + type: number + group_label: "Power" + group_item_label: "Total Thread Wakeups" + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_process_type { + label: "Power Wakeups Per Process Type" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_process_type ;; + group_label: "Power" + group_item_label: "Wakeups Per Process Type" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Process Type" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_process_type" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_background { + label: "Power Wakeups Per Thread Content Background" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_background ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Content Background" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Content Background" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_thread_content_background" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_foreground { + label: "Power Wakeups Per Thread Content Foreground" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_foreground ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Content Foreground" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Content Foreground" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_thread_content_foreground" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_gpu_process { + label: "Power Wakeups Per Thread Gpu Process" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_gpu_process ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Gpu Process" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Gpu Process" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_thread_gpu_process" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_active { + label: "Power Wakeups Per Thread Parent Active" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_active ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Parent Active" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Parent Active" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_thread_parent_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_inactive { + label: "Power Wakeups Per Thread Parent Inactive" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_inactive ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Parent Inactive" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Parent Inactive" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_wakeups_per_thread_parent_inactive" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__sum { + label: "Wr Framebuild Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Framebuild Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Framebuild Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/wr_framebuild_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to rasterize glyphs for consumption by WebRender. +" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__sum { + label: "Wr Rasterize Glyphs Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Rasterize Glyphs Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Rasterize Glyphs Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/wr_rasterize_glyphs_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to rasterize glyphs for consumption by WebRender. +" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__sum { + label: "Wr Scenebuild Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Scenebuild Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Scenebuild Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/wr_scenebuild_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "WebRender scene build time. +" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__sum { + label: "Wr Sceneswap Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Sceneswap Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Sceneswap Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/wr_sceneswap_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "WebRender scene swap time. +" + } + dimension: metrics__memory_distribution__glean_database_size__sum { label: "Glean Database Size Sum" hidden: no @@ -1674,6 +2324,206 @@ Deprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_ } } + measure: fog_ipc_flush_failures { + type: sum + sql: ${metrics__counter__fog_ipc_flush_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_flush_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_flush_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_replay_failures { + type: sum + sql: ${metrics__counter__fog_ipc_replay_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_replay_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_replay_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_shutdown_registration_failures { + type: sum + sql: ${metrics__counter__fog_ipc_shutdown_registration_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_shutdown_registration_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_shutdown_registration_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_cpu_time_bogus_values { + type: sum + sql: ${metrics__counter__power_cpu_time_bogus_values} ;; + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_cpu_time_bogus_values_client_count { + type: count_distinct + filters: [ + metrics__counter__power_cpu_time_bogus_values: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_gpu_time_bogus_values { + type: sum + sql: ${metrics__counter__power_gpu_time_bogus_values} ;; + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_gpu_time_bogus_values_client_count { + type: count_distinct + filters: [ + metrics__counter__power_gpu_time_bogus_values: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_cpu_time_ms { + type: sum + sql: ${metrics__counter__power_total_cpu_time_ms} ;; + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_cpu_time_ms_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_cpu_time_ms: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_gpu_time_ms { + type: sum + sql: ${metrics__counter__power_total_gpu_time_ms} ;; + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_gpu_time_ms_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_gpu_time_ms: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_thread_wakeups { + type: sum + sql: ${metrics__counter__power_total_thread_wakeups} ;; + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_thread_wakeups_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_thread_wakeups: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/focus_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + measure: glean_error_io { type: sum sql: ${metrics__counter__glean_error_io} ;; diff --git a/focus_android/views/metrics_table.view.lkml b/focus_android/views/metrics_table.view.lkml index 45f140fd8..d6b196cee 100644 --- a/focus_android/views/metrics_table.view.lkml +++ b/focus_android/views/metrics_table.view.lkml @@ -310,6 +310,37 @@ changes the default browser through the app settings. " } + dimension: metrics__boolean__browser_ui_proton_enabled { + sql: ${TABLE}.metrics.boolean.browser_ui_proton_enabled ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Browser Ui Proton Enabled" + description: "True if the Proton default theme is enabled. +" + } + + dimension: metrics__boolean__fog_failed_idle_registration { + sql: ${TABLE}.metrics.boolean.fog_failed_idle_registration ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Fog Failed Idle Registration" + description: "True if we failed to register with the idle service. Absent otherwise. +Means IPC probably isn't working well. +Child-process data will likely be absent, or incomplete. +" + } + + dimension: metrics__boolean__gifft_validation_main_ping_assembling { + sql: ${TABLE}.metrics.boolean.gifft_validation_main_ping_assembling ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Gifft Validation Main Ping Assembling" + description: "The value `true`, recorded when a Firefox Telemetry \"main\" ping is about +to be assembled. +To be used to validate GIFFT. +" + } + dimension: metrics__boolean__glean_core_migration_successful { sql: ${TABLE}.metrics.boolean.glean_core_migration_successful ;; type: yesno @@ -447,6 +478,44 @@ that programmatically redirect to a new location. " } + dimension: metrics__counter__fog_ipc_flush_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_flush_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Flush Failures" + description: "The number of times we failed to flush all non-parent-process data, +throwing even partial results into the trash. +If this number is high, we might consider writing custom `MozPromise`- +handling code instead of using `MozPromise::All`. +" + } + + dimension: metrics__counter__fog_ipc_replay_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_replay_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Replay Failures" + description: "The number of times the ipc buffer failed to be replayed in the +parent process. +" + } + + dimension: metrics__counter__fog_ipc_shutdown_registration_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_shutdown_registration_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Shutdown Registration Failures" + description: "The number of times we tried to register shutdown flush routines for +content child processes, and failed (probably because there was no main +thread). +As a result there may be data loss from content child processes. +Large or rising number of clients experiencing this indicates we should +perhaps refactor content child shutdown in FOG to try harder to register +flush operations. +Will likely be obsoleted by bug 1641989. +" + } + dimension: metrics__counter__glean_error_io { sql: ${TABLE}.metrics.counter.glean_error_io ;; type: number @@ -529,6 +598,51 @@ This does not include deletion-request pings. " } + dimension: metrics__counter__power_cpu_time_bogus_values { + sql: ${TABLE}.metrics.counter.power_cpu_time_bogus_values ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Cpu Time Bogus Values" + description: "Impossibly large CPU time values that were discarded. +" + } + + dimension: metrics__counter__power_gpu_time_bogus_values { + sql: ${TABLE}.metrics.counter.power_gpu_time_bogus_values ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Gpu Time Bogus Values" + description: "Impossibly large GPU time values that were discarded. +" + } + + dimension: metrics__counter__power_total_cpu_time_ms { + sql: ${TABLE}.metrics.counter.power_total_cpu_time_ms ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Cpu Time Ms" + description: "Total CPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_gpu_time_ms { + sql: ${TABLE}.metrics.counter.power_total_gpu_time_ms ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Gpu Time Ms" + description: "Total GPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_thread_wakeups { + sql: ${TABLE}.metrics.counter.power_total_thread_wakeups ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Thread Wakeups" + description: "How many times threads woke up and could have woken up a CPU core. +" + } + dimension: metrics__counter__settings_screen_autocomplete_domain_added { sql: ${TABLE}.metrics.counter.settings_screen_autocomplete_domain_added ;; type: number @@ -579,6 +693,18 @@ the tracking protection settings panel from the toolbar. " } + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__sum { + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.sum ;; + type: number + group_label: "Metrics Custom Distribution Power Battery Percentage When User Active" + group_item_label: "Sum" + } + + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__values { + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.values ;; + hidden: yes + } + dimension: metrics__custom_distribution__tab_count_app_backgrounded__sum { sql: ${TABLE}.metrics.custom_distribution.tab_count_app_backgrounded.sum ;; type: number @@ -705,6 +831,104 @@ This metric appears in both the metrics and baseline pings. " } + dimension: metrics__labeled_counter__gmp_update_xml_fetch_result { + sql: ${TABLE}.metrics.labeled_counter.gmp_update_xml_fetch_result ;; + hidden: yes + description: "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_background { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_background ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_foreground { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_foreground ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_gpu_process { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_gpu_process ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_active { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_active ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_inactive { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_inactive ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_time_per_process_type_ms { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_time_per_process_type_ms ;; + hidden: yes + description: "CPU time used by each process type in ms. +" + } + + dimension: metrics__labeled_counter__power_gpu_time_per_process_type_ms { + sql: ${TABLE}.metrics.labeled_counter.power_gpu_time_per_process_type_ms ;; + hidden: yes + description: "GPU time used by each process type in ms. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_process_type { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_process_type ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_background { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_background ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_foreground { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_foreground ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_gpu_process { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_gpu_process ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_active { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_active ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_inactive { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_inactive ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + dimension: metrics__labeled_counter__shortcuts_shortcut_removed_counter { sql: ${TABLE}.metrics.labeled_counter.shortcuts_shortcut_removed_counter ;; hidden: yes @@ -719,6 +943,18 @@ It also indicates the screen it was removed from, home or browser. hidden: yes } + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__sum { + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.sum ;; + type: number + group_label: "Metrics Memory Distribution Fog Ipc Buffer Sizes" + group_item_label: "Sum" + } + + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__values { + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.values ;; + hidden: yes + } + dimension: metrics__memory_distribution__glean_database_size__sum { sql: ${TABLE}.metrics.memory_distribution.glean_database_size.sum ;; type: number @@ -792,6 +1028,24 @@ specifically overrides it for the app. " } + dimension: metrics__string__geckoview_validation_build_id { + sql: ${TABLE}.metrics.string.geckoview_validation_build_id ;; + type: string + group_label: "Metrics String" + group_item_label: "Geckoview Validation Build Id" + description: "The Buildid of the Gecko engine, example: 20200205124310 Mirror of `geckoview.build_id` for validation of migrated data. +" + } + + dimension: metrics__string__geckoview_validation_version { + sql: ${TABLE}.metrics.string.geckoview_validation_version ;; + type: string + group_label: "Metrics String" + group_item_label: "Geckoview Validation Version" + description: "The version of the Gecko engine, example: 74.0a1 Mirror of `geckoview.version` for validation of migrated data. +" + } + dimension: metrics__string__ping_reason { sql: ${TABLE}.metrics.string.ping_reason ;; type: string @@ -817,6 +1071,20 @@ documented in the ping's pings.yaml file. hidden: yes } + dimension: metrics__timespan__fog_initialization__time_unit { + sql: ${TABLE}.metrics.timespan.fog_initialization.time_unit ;; + type: string + group_label: "Metrics Timespan Fog Initialization" + group_item_label: "Time Unit" + } + + dimension: metrics__timespan__fog_initialization__value { + sql: ${TABLE}.metrics.timespan.fog_initialization.value ;; + type: number + group_label: "Metrics Timespan Fog Initialization" + group_item_label: "Value" + } + dimension: metrics__timespan__nimbus_experiments_nimbus_initial_fetch__time_unit { sql: ${TABLE}.metrics.timespan.nimbus_experiments_nimbus_initial_fetch.time_unit ;; type: string @@ -831,6 +1099,318 @@ documented in the ping's pings.yaml file. group_item_label: "Value" } + dimension: metrics__timing_distribution__fog_ipc_flush_durations__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__overflow { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.overflow ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__range { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__sum { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.sum ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__time_unit { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__underflow { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.underflow ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__values { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__range { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__sum { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__values { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_framebuild_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_framebuild_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.values ;; + hidden: yes + } + dimension: metrics__url { sql: ${TABLE}.metrics.url ;; hidden: yes @@ -1028,6 +1608,18 @@ view: metrics_table__events__extra { } } +view: metrics_table__metrics__custom_distribution__power_battery_percentage_when_user_active__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__custom_distribution__tab_count_app_backgrounded__values { dimension: key { sql: ${TABLE}.key ;; @@ -1085,6 +1677,18 @@ view: metrics_table__metrics__labeled_rate__value { } } +view: metrics_table__metrics__memory_distribution__fog_ipc_buffer_sizes__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__memory_distribution__glean_database_size__values { dimension: key { sql: ${TABLE}.key ;; @@ -1133,6 +1737,78 @@ view: metrics_table__metrics__text { } } +view: metrics_table__metrics__timing_distribution__fog_ipc_flush_durations__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__paint_build_displaylist_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_framebuild_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_rasterize_glyphs_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_scenebuild_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_sceneswap_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__url { dimension: key { sql: ${TABLE}.key ;; diff --git a/klar_android/explores/fog_validation.explore.lkml b/klar_android/explores/fog_validation.explore.lkml new file mode 100644 index 000000000..58e94df10 --- /dev/null +++ b/klar_android/explores/fog_validation.explore.lkml @@ -0,0 +1,56 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +include: "/looker-hub/klar_android/views/fog_validation.view.lkml" + +explore: fog_validation { + sql_always_where: ${fog_validation.submission_date} >= '2010-01-01' ;; + view_label: " Fog_Validation" + description: "Explore for the fog_validation ping. This ping is intended to evaluate the behaviour of FOG before it ships beyond Nightly. This is a temporary ping. It is sent one hour after FOG is initialized, and every hour thereafter." + view_name: fog_validation + + always_filter: { + filters: [ + submission_date: "28 days", + ] + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_label { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_label}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_label ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_label.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_overflow}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_overflow ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_overflow.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_state { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_state}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_state ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_state.document_id} ;; + } + + join: fog_validation__metrics__labeled_counter__glean_error_invalid_value { + relationship: one_to_many + sql: LEFT JOIN UNNEST(${fog_validation.metrics__labeled_counter__glean_error_invalid_value}) AS fog_validation__metrics__labeled_counter__glean_error_invalid_value ON ${fog_validation.document_id} = ${fog_validation__metrics__labeled_counter__glean_error_invalid_value.document_id} ;; + } +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state { + hidden: yes +} + +explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value { + hidden: yes +} \ No newline at end of file diff --git a/klar_android/views/fog_validation.view.lkml b/klar_android/views/fog_validation.view.lkml new file mode 100644 index 000000000..af009c897 --- /dev/null +++ b/klar_android/views/fog_validation.view.lkml @@ -0,0 +1,820 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +view: fog_validation { + dimension: metrics__uuid__fog_validation_legacy_telemetry_client_id { + label: "Fog Validation Legacy Telemetry Client Id" + hidden: yes + sql: ${TABLE}.metrics.uuid.fog_validation_legacy_telemetry_client_id ;; + type: string + group_label: "Fog Validation" + group_item_label: "Legacy Telemetry Client Id" + + link: { + label: "Glean Dictionary reference for Fog Validation Legacy Telemetry Client Id" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_validation_legacy_telemetry_client_id" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The Telemetry client_id. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__string__fog_validation_os_version { + label: "Fog Validation Os Version" + hidden: yes + sql: ${TABLE}.metrics.string.fog_validation_os_version ;; + type: string + group_label: "Fog Validation" + group_item_label: "Os Version" + + link: { + label: "Glean Dictionary reference for Fog Validation Os Version" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_validation_os_version" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The version of the OS running Firefox, as detected by Gecko. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__boolean__fog_validation_profile_disk_is_ssd { + label: "Fog Validation Profile Disk Is Ssd" + hidden: yes + sql: ${TABLE}.metrics.boolean.fog_validation_profile_disk_is_ssd ;; + type: yesno + group_label: "Fog Validation" + group_item_label: "Profile Disk Is Ssd" + + link: { + label: "Glean Dictionary reference for Fog Validation Profile Disk Is Ssd" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_validation_profile_disk_is_ssd" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True iff the type of the disk the current Firefox profile is stored on is an SSD. (Windows only)." + } + + dimension: metrics__labeled_counter__glean_error_invalid_label { + label: "Glean Error Invalid Label" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_label ;; + group_label: "Glean Error" + group_item_label: "Invalid Label" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Label" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/glean_error_invalid_label" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set with an invalid label. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_overflow { + label: "Glean Error Invalid Overflow" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_overflow ;; + group_label: "Glean Error" + group_item_label: "Invalid Overflow" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Overflow" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/glean_error_invalid_overflow" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set a value that overflowed. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_state { + label: "Glean Error Invalid State" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_state ;; + group_label: "Glean Error" + group_item_label: "Invalid State" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid State" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/glean_error_invalid_state" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a timing metric was used incorrectly. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_value { + label: "Glean Error Invalid Value" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_value ;; + group_label: "Glean Error" + group_item_label: "Invalid Value" + + link: { + label: "Glean Dictionary reference for Glean Error Invalid Value" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/glean_error_invalid_value" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Counts the number of times a metric was set to an invalid value. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: additional_properties { + sql: ${TABLE}.additional_properties ;; + hidden: yes + description: "A JSON string containing any payload properties not present in the schema" + } + + dimension: client_info__android_sdk_version { + sql: ${TABLE}.client_info.android_sdk_version ;; + type: string + group_label: "Client Info" + group_item_label: "Android Sdk Version" + description: "The optional Android specific SDK version of the software running on this hardware device." + } + + dimension: client_info__app_build { + sql: ${TABLE}.client_info.app_build ;; + type: string + group_label: "Client Info" + group_item_label: "App Build" + description: "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`." + } + + dimension: client_info__app_channel { + sql: ${TABLE}.client_info.app_channel ;; + type: string + group_label: "Client Info" + group_item_label: "App Channel" + description: "The channel the application is being distributed on." + } + + dimension: client_info__app_display_version { + sql: ${TABLE}.client_info.app_display_version ;; + type: string + group_label: "Client Info" + group_item_label: "App Display Version" + description: "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\"." + } + + dimension: client_info__architecture { + sql: ${TABLE}.client_info.architecture ;; + type: string + group_label: "Client Info" + group_item_label: "Architecture" + description: "The architecture of the device, (e.g. \"arm\", \"x86\")." + } + + dimension: client_info__build_date { + sql: ${TABLE}.client_info.build_date ;; + type: string + group_label: "Client Info" + group_item_label: "Build Date" + description: "The date & time the application was built" + } + + dimension: client_info__client_id { + sql: ${TABLE}.client_info.client_id ;; + hidden: yes + description: "A UUID uniquely identifying the client." + } + + dimension: client_info__device_manufacturer { + sql: ${TABLE}.client_info.device_manufacturer ;; + type: string + group_label: "Client Info" + group_item_label: "Device Manufacturer" + description: "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop)." + } + + dimension: client_info__device_model { + sql: ${TABLE}.client_info.device_model ;; + type: string + group_label: "Client Info" + group_item_label: "Device Model" + description: "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop)." + } + + dimension: client_info__first_run_date { + sql: ${TABLE}.client_info.first_run_date ;; + type: string + group_label: "Client Info" + group_item_label: "First Run Date" + description: "The date of the first run of the application." + } + + dimension: client_info__locale { + sql: ${TABLE}.client_info.locale ;; + type: string + group_label: "Client Info" + group_item_label: "Locale" + description: "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\"." + } + + dimension: client_info__os { + sql: ${TABLE}.client_info.os ;; + type: string + group_label: "Client Info" + group_item_label: "Os" + description: "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown" + } + + dimension: client_info__os_version { + sql: ${TABLE}.client_info.os_version ;; + type: string + group_label: "Client Info" + group_item_label: "Os Version" + description: "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`." + } + + dimension: client_info__telemetry_sdk_build { + sql: ${TABLE}.client_info.telemetry_sdk_build ;; + type: string + group_label: "Client Info" + group_item_label: "Telemetry Sdk Build" + description: "The version of the Glean SDK" + } + + dimension: document_id { + sql: ${TABLE}.document_id ;; + hidden: yes + description: "The document ID specified in the URI when the client sent this message" + primary_key: yes + } + + dimension: events { + sql: ${TABLE}.events ;; + hidden: yes + } + + dimension: metadata__geo__city { + sql: ${TABLE}.metadata.geo.city ;; + type: string + group_label: "Metadata Geo" + group_item_label: "City" + } + + dimension: metadata__geo__country { + sql: ${TABLE}.metadata.geo.country ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Country" + map_layer_name: countries + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: metadata__geo__db_version { + sql: ${TABLE}.metadata.geo.db_version ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Db Version" + description: "The specific geo database version used for this lookup" + } + + dimension: metadata__geo__subdivision1 { + sql: ${TABLE}.metadata.geo.subdivision1 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision1" + description: "First major country subdivision, typically a state, province, or county" + } + + dimension: metadata__geo__subdivision2 { + sql: ${TABLE}.metadata.geo.subdivision2 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision2" + description: "Second major country subdivision; not applicable for most countries" + } + + dimension: metadata__header__date { + sql: ${TABLE}.metadata.header.date ;; + type: string + group_label: "Metadata Header" + group_item_label: "Date" + description: "Date HTTP header" + } + + dimension: metadata__header__dnt { + sql: ${TABLE}.metadata.header.dnt ;; + type: string + group_label: "Metadata Header" + group_item_label: "Dnt" + description: "DNT (Do Not Track) HTTP header" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_cipher_hex { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_cipher_hex ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Cipher Hex" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_version { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_version ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Version" + } + + dimension: metadata__header__parsed_x_source_tags { + sql: ${TABLE}.metadata.header.parsed_x_source_tags ;; + hidden: yes + } + + dimension: metadata__header__x_debug_id { + sql: ${TABLE}.metadata.header.x_debug_id ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Debug Id" + description: "X-Debug-Id HTTP header" + } + + dimension: metadata__header__x_foxsec_ip_reputation { + sql: ${TABLE}.metadata.header.x_foxsec_ip_reputation ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Foxsec Ip Reputation" + description: "X-Foxsec-IP-Reputation header" + } + + dimension: metadata__header__x_lb_tags { + sql: ${TABLE}.metadata.header.x_lb_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Lb Tags" + description: "X-LB-Tags HTTP header" + } + + dimension: metadata__header__x_pingsender_version { + sql: ${TABLE}.metadata.header.x_pingsender_version ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Pingsender Version" + description: "X-PingSender-Version HTTP header" + } + + dimension: metadata__header__x_source_tags { + sql: ${TABLE}.metadata.header.x_source_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Source Tags" + description: "X-Source-Tags HTTP header" + } + + dimension: metadata__header__x_telemetry_agent { + sql: ${TABLE}.metadata.header.x_telemetry_agent ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Telemetry Agent" + description: "X-Telemetry-Agent HTTP header" + } + + dimension: metadata__isp__db_version { + sql: ${TABLE}.metadata.isp.db_version ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Db Version" + description: "The specific geo ISP database version used for this lookup" + } + + dimension: metadata__isp__name { + sql: ${TABLE}.metadata.isp.name ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Name" + description: "The name of the ISP associated with the client's IP address" + } + + dimension: metadata__isp__organization { + sql: ${TABLE}.metadata.isp.organization ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Organization" + description: "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name" + } + + dimension: metadata__user_agent__browser { + sql: ${TABLE}.metadata.user_agent.browser ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Browser" + } + + dimension: metadata__user_agent__os { + sql: ${TABLE}.metadata.user_agent.os ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Os" + } + + dimension: metadata__user_agent__version { + sql: ${TABLE}.metadata.user_agent.version ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Version" + } + + dimension: normalized_app_name { + sql: ${TABLE}.normalized_app_name ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized app name" + } + + dimension: normalized_channel { + sql: ${TABLE}.normalized_channel ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized channel name" + } + + dimension: normalized_country_code { + sql: ${TABLE}.normalized_country_code ;; + type: string + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: normalized_os { + sql: ${TABLE}.normalized_os ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized OS name" + } + + dimension: normalized_os_version { + sql: ${TABLE}.normalized_os_version ;; + type: string + } + + dimension: ping_info__end_time { + sql: ${TABLE}.ping_info.end_time ;; + type: string + group_label: "Ping Info" + group_item_label: "End Time" + } + + dimension: ping_info__experiments { + sql: ${TABLE}.ping_info.experiments ;; + hidden: yes + } + + dimension: ping_info__ping_type { + sql: ${TABLE}.ping_info.ping_type ;; + type: string + group_label: "Ping Info" + group_item_label: "Ping Type" + } + + dimension: ping_info__reason { + sql: ${TABLE}.ping_info.reason ;; + type: string + group_label: "Ping Info" + group_item_label: "Reason" + } + + dimension: ping_info__seq { + sql: ${TABLE}.ping_info.seq ;; + type: number + group_label: "Ping Info" + group_item_label: "Seq" + } + + dimension: ping_info__start_time { + sql: ${TABLE}.ping_info.start_time ;; + type: string + group_label: "Ping Info" + group_item_label: "Start Time" + } + + dimension: sample_id { + sql: ${TABLE}.sample_id ;; + type: number + description: "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99" + } + + dimension_group: metadata__header__parsed { + sql: ${TABLE}.metadata.header.parsed_date ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Metadata Header: Parsed Date" + } + + dimension_group: ping_info__parsed_end { + sql: ${TABLE}.ping_info.parsed_end_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed End Time" + } + + dimension_group: ping_info__parsed_start { + sql: ${TABLE}.ping_info.parsed_start_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed Start Time" + } + + dimension_group: submission { + sql: ${TABLE}.submission_timestamp ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + description: "Time when the ingestion edge server accepted this message" + } + + measure: clients { + type: count_distinct + sql: ${client_info__client_id} ;; + } + + measure: ping_count { + type: count + } + + sql_table_name: `mozdata.org_mozilla_klar.fog_validation` ;; +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_label { + label: "Glean Error - Invalid Label" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + label: "Glean Error - Invalid Overflow" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_state { + label: "Glean Error - Invalid State" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: fog_validation__metrics__labeled_counter__glean_error_invalid_value { + label: "Glean Error - Invalid Value" + + dimension: document_id { + type: string + sql: ${fog_validation.document_id} ;; + hidden: yes + } + + dimension: document_label_id { + type: string + sql: ${fog_validation.document_id}-${label} ;; + primary_key: yes + hidden: yes + } + + dimension: label { + type: string + sql: ${TABLE}.key ;; + suggest_explore: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value + suggest_dimension: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value.key + hidden: no + } + + dimension: value { + type: number + sql: ${TABLE}.value ;; + hidden: yes + } + + measure: count { + type: sum + sql: ${value} ;; + hidden: no + } + + measure: client_count { + type: count_distinct + sql: case when ${value} > 0 then ${fog_validation.client_info__client_id} end ;; + hidden: no + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_label { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.org_mozilla_klar.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_label) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_overflow { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.org_mozilla_klar.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_overflow) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_state { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.org_mozilla_klar.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_state) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} + +view: suggest__fog_validation__metrics__labeled_counter__glean_error_invalid_value { + derived_table: { + sql: select + m.key, + count(*) as n +from mozdata.org_mozilla_klar.fog_validation as t, +unnest(metrics.labeled_counter.glean_error_invalid_value) as m +where date(submission_timestamp) > date_sub(current_date, interval 30 day) + and sample_id = 0 +group by key +order by n desc ;; + } + + dimension: key { + type: string + sql: ${TABLE}.key ;; + } +} \ No newline at end of file diff --git a/klar_android/views/fog_validation_table.view.lkml b/klar_android/views/fog_validation_table.view.lkml new file mode 100644 index 000000000..0bccba49c --- /dev/null +++ b/klar_android/views/fog_validation_table.view.lkml @@ -0,0 +1,550 @@ + +# *Do not manually modify this file* +# +# This file has been generated via https://github.com/mozilla/lookml-generator +# You can extend this view in the looker-spoke-default project (https://github.com/mozilla/looker-spoke-default) + +view: fog_validation_table { + dimension: additional_properties { + sql: ${TABLE}.additional_properties ;; + hidden: yes + description: "A JSON string containing any payload properties not present in the schema" + } + + dimension: client_info__android_sdk_version { + sql: ${TABLE}.client_info.android_sdk_version ;; + type: string + group_label: "Client Info" + group_item_label: "Android Sdk Version" + description: "The optional Android specific SDK version of the software running on this hardware device." + } + + dimension: client_info__app_build { + sql: ${TABLE}.client_info.app_build ;; + type: string + group_label: "Client Info" + group_item_label: "App Build" + description: "The build identifier generated by the CI system (e.g. \"1234/A\"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to \"inaccessible\". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`." + } + + dimension: client_info__app_channel { + sql: ${TABLE}.client_info.app_channel ;; + type: string + group_label: "Client Info" + group_item_label: "App Channel" + description: "The channel the application is being distributed on." + } + + dimension: client_info__app_display_version { + sql: ${TABLE}.client_info.app_display_version ;; + type: string + group_label: "Client Info" + group_item_label: "App Display Version" + description: "The user visible version string (e.g. \"1.0.3\"). In the unlikely event that the display version can not be retrieved, it is set to \"inaccessible\"." + } + + dimension: client_info__architecture { + sql: ${TABLE}.client_info.architecture ;; + type: string + group_label: "Client Info" + group_item_label: "Architecture" + description: "The architecture of the device, (e.g. \"arm\", \"x86\")." + } + + dimension: client_info__build_date { + sql: ${TABLE}.client_info.build_date ;; + type: string + group_label: "Client Info" + group_item_label: "Build Date" + description: "The date & time the application was built" + } + + dimension: client_info__client_id { + sql: ${TABLE}.client_info.client_id ;; + hidden: yes + description: "A UUID uniquely identifying the client." + } + + dimension: client_info__device_manufacturer { + sql: ${TABLE}.client_info.device_manufacturer ;; + type: string + group_label: "Client Info" + group_item_label: "Device Manufacturer" + description: "The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop)." + } + + dimension: client_info__device_model { + sql: ${TABLE}.client_info.device_model ;; + type: string + group_label: "Client Info" + group_item_label: "Device Model" + description: "The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like \"Pixel 2 XL\". Not set if the device model can't be determined (e.g. on Desktop)." + } + + dimension: client_info__first_run_date { + sql: ${TABLE}.client_info.first_run_date ;; + type: string + group_label: "Client Info" + group_item_label: "First Run Date" + description: "The date of the first run of the application." + } + + dimension: client_info__locale { + sql: ${TABLE}.client_info.locale ;; + type: string + group_label: "Client Info" + group_item_label: "Locale" + description: "The locale of the application during initialization (e.g. \"es-ES\"). If the locale can't be determined on the system, the value is [\"und\"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate \"undetermined\"." + } + + dimension: client_info__os { + sql: ${TABLE}.client_info.os ;; + type: string + group_label: "Client Info" + group_item_label: "Os" + description: "The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown" + } + + dimension: client_info__os_version { + sql: ${TABLE}.client_info.os_version ;; + type: string + group_label: "Client Info" + group_item_label: "Os Version" + description: "The user-visible version of the operating system (e.g. \"1.2.3\"). If the version detection fails, this metric gets set to `Unknown`." + } + + dimension: client_info__telemetry_sdk_build { + sql: ${TABLE}.client_info.telemetry_sdk_build ;; + type: string + group_label: "Client Info" + group_item_label: "Telemetry Sdk Build" + description: "The version of the Glean SDK" + } + + dimension: document_id { + sql: ${TABLE}.document_id ;; + hidden: yes + description: "The document ID specified in the URI when the client sent this message" + } + + dimension: events { + sql: ${TABLE}.events ;; + hidden: yes + } + + dimension: metadata__geo__city { + sql: ${TABLE}.metadata.geo.city ;; + type: string + group_label: "Metadata Geo" + group_item_label: "City" + } + + dimension: metadata__geo__country { + sql: ${TABLE}.metadata.geo.country ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Country" + map_layer_name: countries + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: metadata__geo__db_version { + sql: ${TABLE}.metadata.geo.db_version ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Db Version" + description: "The specific geo database version used for this lookup" + } + + dimension: metadata__geo__subdivision1 { + sql: ${TABLE}.metadata.geo.subdivision1 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision1" + description: "First major country subdivision, typically a state, province, or county" + } + + dimension: metadata__geo__subdivision2 { + sql: ${TABLE}.metadata.geo.subdivision2 ;; + type: string + group_label: "Metadata Geo" + group_item_label: "Subdivision2" + description: "Second major country subdivision; not applicable for most countries" + } + + dimension: metadata__header__date { + sql: ${TABLE}.metadata.header.date ;; + type: string + group_label: "Metadata Header" + group_item_label: "Date" + description: "Date HTTP header" + } + + dimension: metadata__header__dnt { + sql: ${TABLE}.metadata.header.dnt ;; + type: string + group_label: "Metadata Header" + group_item_label: "Dnt" + description: "DNT (Do Not Track) HTTP header" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_cipher_hex { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_cipher_hex ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Cipher Hex" + } + + dimension: metadata__header__parsed_x_lb_tags__tls_version { + sql: ${TABLE}.metadata.header.parsed_x_lb_tags.tls_version ;; + type: string + group_label: "Metadata Header Parsed X Lb Tags" + group_item_label: "Tls Version" + } + + dimension: metadata__header__parsed_x_source_tags { + sql: ${TABLE}.metadata.header.parsed_x_source_tags ;; + hidden: yes + } + + dimension: metadata__header__x_debug_id { + sql: ${TABLE}.metadata.header.x_debug_id ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Debug Id" + description: "X-Debug-Id HTTP header" + } + + dimension: metadata__header__x_foxsec_ip_reputation { + sql: ${TABLE}.metadata.header.x_foxsec_ip_reputation ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Foxsec Ip Reputation" + description: "X-Foxsec-IP-Reputation header" + } + + dimension: metadata__header__x_lb_tags { + sql: ${TABLE}.metadata.header.x_lb_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Lb Tags" + description: "X-LB-Tags HTTP header" + } + + dimension: metadata__header__x_pingsender_version { + sql: ${TABLE}.metadata.header.x_pingsender_version ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Pingsender Version" + description: "X-PingSender-Version HTTP header" + } + + dimension: metadata__header__x_source_tags { + sql: ${TABLE}.metadata.header.x_source_tags ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Source Tags" + description: "X-Source-Tags HTTP header" + } + + dimension: metadata__header__x_telemetry_agent { + sql: ${TABLE}.metadata.header.x_telemetry_agent ;; + type: string + group_label: "Metadata Header" + group_item_label: "X Telemetry Agent" + description: "X-Telemetry-Agent HTTP header" + } + + dimension: metadata__isp__db_version { + sql: ${TABLE}.metadata.isp.db_version ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Db Version" + description: "The specific geo ISP database version used for this lookup" + } + + dimension: metadata__isp__name { + sql: ${TABLE}.metadata.isp.name ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Name" + description: "The name of the ISP associated with the client's IP address" + } + + dimension: metadata__isp__organization { + sql: ${TABLE}.metadata.isp.organization ;; + type: string + group_label: "Metadata Isp" + group_item_label: "Organization" + description: "The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name" + } + + dimension: metadata__user_agent__browser { + sql: ${TABLE}.metadata.user_agent.browser ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Browser" + } + + dimension: metadata__user_agent__os { + sql: ${TABLE}.metadata.user_agent.os ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Os" + } + + dimension: metadata__user_agent__version { + sql: ${TABLE}.metadata.user_agent.version ;; + type: string + group_label: "Metadata User Agent" + group_item_label: "Version" + } + + dimension: metrics__boolean__fog_validation_profile_disk_is_ssd { + sql: ${TABLE}.metrics.boolean.fog_validation_profile_disk_is_ssd ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Fog Validation Profile Disk Is Ssd" + description: "True iff the type of the disk the current Firefox profile is stored on is an SSD. (Windows only)." + } + + dimension: metrics__labeled_counter__glean_error_invalid_label { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_label ;; + hidden: yes + description: "Counts the number of times a metric was set with an invalid label. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_overflow { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_overflow ;; + hidden: yes + description: "Counts the number of times a metric was set a value that overflowed. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_state { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_state ;; + hidden: yes + description: "Counts the number of times a timing metric was used incorrectly. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__labeled_counter__glean_error_invalid_value { + sql: ${TABLE}.metrics.labeled_counter.glean_error_invalid_value ;; + hidden: yes + description: "Counts the number of times a metric was set to an invalid value. +The labels are the `category.name` identifier of the metric. +" + } + + dimension: metrics__string__fog_validation_os_version { + sql: ${TABLE}.metrics.string.fog_validation_os_version ;; + type: string + group_label: "Metrics String" + group_item_label: "Fog Validation Os Version" + description: "The version of the OS running Firefox, as detected by Gecko. To be sent only in the \"fog-validation\" ping." + } + + dimension: metrics__uuid__fog_validation_legacy_telemetry_client_id { + sql: ${TABLE}.metrics.uuid.fog_validation_legacy_telemetry_client_id ;; + type: string + group_label: "Metrics Uuid" + group_item_label: "Fog Validation Legacy Telemetry Client Id" + description: "The Telemetry client_id. To be sent only in the \"fog-validation\" ping." + } + + dimension: normalized_app_name { + sql: ${TABLE}.normalized_app_name ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized app name" + } + + dimension: normalized_channel { + sql: ${TABLE}.normalized_channel ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized channel name" + } + + dimension: normalized_country_code { + sql: ${TABLE}.normalized_country_code ;; + type: string + description: "An ISO 3166-1 alpha-2 country code" + } + + dimension: normalized_os { + sql: ${TABLE}.normalized_os ;; + type: string + description: "Set to \"Other\" if this message contained an unrecognized OS name" + } + + dimension: normalized_os_version { + sql: ${TABLE}.normalized_os_version ;; + type: string + } + + dimension: ping_info__end_time { + sql: ${TABLE}.ping_info.end_time ;; + type: string + group_label: "Ping Info" + group_item_label: "End Time" + } + + dimension: ping_info__experiments { + sql: ${TABLE}.ping_info.experiments ;; + hidden: yes + } + + dimension: ping_info__ping_type { + sql: ${TABLE}.ping_info.ping_type ;; + type: string + group_label: "Ping Info" + group_item_label: "Ping Type" + } + + dimension: ping_info__reason { + sql: ${TABLE}.ping_info.reason ;; + type: string + group_label: "Ping Info" + group_item_label: "Reason" + } + + dimension: ping_info__seq { + sql: ${TABLE}.ping_info.seq ;; + type: number + group_label: "Ping Info" + group_item_label: "Seq" + } + + dimension: ping_info__start_time { + sql: ${TABLE}.ping_info.start_time ;; + type: string + group_label: "Ping Info" + group_item_label: "Start Time" + } + + dimension: sample_id { + sql: ${TABLE}.sample_id ;; + type: number + description: "Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99" + } + + dimension_group: metadata__header__parsed { + sql: ${TABLE}.metadata.header.parsed_date ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Metadata Header: Parsed Date" + } + + dimension_group: ping_info__parsed_end { + sql: ${TABLE}.ping_info.parsed_end_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed End Time" + } + + dimension_group: ping_info__parsed_start { + sql: ${TABLE}.ping_info.parsed_start_time ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + label: "Ping Info: Parsed Start Time" + } + + dimension_group: submission { + sql: ${TABLE}.submission_timestamp ;; + type: time + timeframes: [ + raw, + time, + date, + week, + month, + quarter, + year, + ] + description: "Time when the ingestion edge server accepted this message" + } + + sql_table_name: `mozdata.org_mozilla_klar.fog_validation` ;; +} + +view: fog_validation_table__events { + dimension: category { + sql: ${TABLE}.category ;; + type: string + } + + dimension: extra { + sql: ${TABLE}.extra ;; + hidden: yes + } + + dimension: name { + sql: ${TABLE}.name ;; + type: string + } + + dimension: timestamp { + sql: ${TABLE}.timestamp ;; + type: number + } +} + +view: fog_validation_table__events__extra { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: string + } +} + +view: fog_validation_table__ping_info__experiments { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value__branch { + sql: ${TABLE}.value.branch ;; + type: string + group_label: "Value" + group_item_label: "Branch" + } + + dimension: value__extra__type { + sql: ${TABLE}.value.extra.type ;; + type: string + group_label: "Value Extra" + group_item_label: "Type" + } +} \ No newline at end of file diff --git a/klar_android/views/metrics.view.lkml b/klar_android/views/metrics.view.lkml index b0cdd0979..a6572790b 100644 --- a/klar_android/views/metrics.view.lkml +++ b/klar_android/views/metrics.view.lkml @@ -570,6 +570,656 @@ the tracking protection settings panel from the toolbar. " } + dimension: metrics__boolean__browser_ui_proton_enabled { + label: "Browser Ui Proton Enabled" + hidden: yes + sql: ${TABLE}.metrics.boolean.browser_ui_proton_enabled ;; + type: yesno + group_label: "Browser Ui" + group_item_label: "Proton Enabled" + + link: { + label: "Glean Dictionary reference for Browser Ui Proton Enabled" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/browser_ui_proton_enabled" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True if the Proton default theme is enabled. +" + } + + dimension: metrics__boolean__fog_failed_idle_registration { + label: "Fog Failed Idle Registration" + hidden: no + sql: ${TABLE}.metrics.boolean.fog_failed_idle_registration ;; + type: yesno + group_label: "Fog" + group_item_label: "Failed Idle Registration" + + link: { + label: "Glean Dictionary reference for Fog Failed Idle Registration" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_failed_idle_registration" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "True if we failed to register with the idle service. Absent otherwise. +Means IPC probably isn't working well. +Child-process data will likely be absent, or incomplete. +" + } + + dimension: metrics__timespan__fog_initialization__value { + label: "Fog Initialization Value" + hidden: no + sql: ${TABLE}.metrics.timespan.fog_initialization.value ;; + type: number + group_label: "Fog" + group_item_label: "Initialization Value" + + link: { + label: "Glean Dictionary reference for Fog Initialization Value" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_initialization" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Time the FOG initialization takes. +" + } + + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__sum { + label: "Fog Ipc Buffer Sizes Sum" + hidden: no + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.sum ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Buffer Sizes Sum" + + link: { + label: "Glean Dictionary reference for Fog Ipc Buffer Sizes Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_buffer_sizes" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number and size of the IPC buffers being received over FOG IPC. +" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__sum { + label: "Fog Ipc Flush Durations Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.sum ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Flush Durations Sum" + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Durations Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_flush_durations" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The length of time between asking the child processes for their +IPC buffers and all of them being received by the parent. +" + } + + dimension: metrics__counter__fog_ipc_flush_failures { + label: "Fog Ipc Flush Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_flush_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Flush Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times we failed to flush all non-parent-process data, +throwing even partial results into the trash. +If this number is high, we might consider writing custom `MozPromise`- +handling code instead of using `MozPromise::All`. +" + } + + dimension: metrics__counter__fog_ipc_replay_failures { + label: "Fog Ipc Replay Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_replay_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Replay Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times the ipc buffer failed to be replayed in the +parent process. +" + } + + dimension: metrics__counter__fog_ipc_shutdown_registration_failures { + label: "Fog Ipc Shutdown Registration Failures" + hidden: no + sql: ${TABLE}.metrics.counter.fog_ipc_shutdown_registration_failures ;; + type: number + group_label: "Fog Ipc" + group_item_label: "Shutdown Registration Failures" + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The number of times we tried to register shutdown flush routines for +content child processes, and failed (probably because there was no main +thread). +As a result there may be data loss from content child processes. +Large or rising number of clients experiencing this indicates we should +perhaps refactor content child shutdown in FOG to try harder to register +flush operations. +Will likely be obsoleted by bug 1641989. +" + } + + dimension: metrics__string__geckoview_validation_build_id { + label: "Geckoview Validation Build Id" + hidden: yes + sql: ${TABLE}.metrics.string.geckoview_validation_build_id ;; + type: string + group_label: "Geckoview Validation" + group_item_label: "Build Id" + + link: { + label: "Glean Dictionary reference for Geckoview Validation Build Id" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/geckoview_validation_build_id" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The Buildid of the Gecko engine, example: 20200205124310 Mirror of `geckoview.build_id` for validation of migrated data. +" + } + + dimension: metrics__string__geckoview_validation_version { + label: "Geckoview Validation Version" + hidden: yes + sql: ${TABLE}.metrics.string.geckoview_validation_version ;; + type: string + group_label: "Geckoview Validation" + group_item_label: "Version" + + link: { + label: "Glean Dictionary reference for Geckoview Validation Version" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/geckoview_validation_version" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The version of the Gecko engine, example: 74.0a1 Mirror of `geckoview.version` for validation of migrated data. +" + } + + dimension: metrics__boolean__gifft_validation_main_ping_assembling { + label: "Gifft Validation Main Ping Assembling" + hidden: yes + sql: ${TABLE}.metrics.boolean.gifft_validation_main_ping_assembling ;; + type: yesno + group_label: "Gifft Validation" + group_item_label: "Main Ping Assembling" + + link: { + label: "Glean Dictionary reference for Gifft Validation Main Ping Assembling" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/gifft_validation_main_ping_assembling" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The value `true`, recorded when a Firefox Telemetry \"main\" ping is about +to be assembled. +To be used to validate GIFFT. +" + } + + dimension: metrics__labeled_counter__gmp_update_xml_fetch_result { + label: "Gmp Update Xml Fetch Result" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.gmp_update_xml_fetch_result ;; + group_label: "Gmp" + group_item_label: "Update Xml Fetch Result" + + link: { + label: "Glean Dictionary reference for Gmp Update Xml Fetch Result" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/gmp_update_xml_fetch_result" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed. +" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__sum { + label: "Paint Build Displaylist Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.sum ;; + type: number + group_label: "Paint" + group_item_label: "Build Displaylist Time Sum" + + link: { + label: "Glean Dictionary reference for Paint Build Displaylist Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/paint_build_displaylist_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to build a Gecko display list. +" + } + + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__sum { + label: "Power Battery Percentage When User Active Sum" + hidden: no + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.sum ;; + type: number + group_label: "Power Battery" + group_item_label: "Percentage When User Active Sum" + + link: { + label: "Glean Dictionary reference for Power Battery Percentage When User Active Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_battery_percentage_when_user_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Records how many percent of battery was available for each period of user activity. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_background { + label: "Power Cpu Ms Per Thread Content Background" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_background ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Content Background" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Content Background" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_ms_per_thread_content_background" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_foreground { + label: "Power Cpu Ms Per Thread Content Foreground" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_foreground ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Content Foreground" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Content Foreground" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_ms_per_thread_content_foreground" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_gpu_process { + label: "Power Cpu Ms Per Thread Gpu Process" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_gpu_process ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Gpu Process" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Gpu Process" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_ms_per_thread_gpu_process" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_active { + label: "Power Cpu Ms Per Thread Parent Active" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_active ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Parent Active" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Parent Active" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_ms_per_thread_parent_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_inactive { + label: "Power Cpu Ms Per Thread Parent Inactive" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_inactive ;; + group_label: "Power Cpu Ms Per Thread" + group_item_label: "Parent Inactive" + + link: { + label: "Glean Dictionary reference for Power Cpu Ms Per Thread Parent Inactive" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_ms_per_thread_parent_inactive" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__counter__power_cpu_time_bogus_values { + label: "Power Cpu Time Bogus Values" + hidden: no + sql: ${TABLE}.metrics.counter.power_cpu_time_bogus_values ;; + type: number + group_label: "Power" + group_item_label: "Cpu Time Bogus Values" + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Impossibly large CPU time values that were discarded. +" + } + + dimension: metrics__labeled_counter__power_cpu_time_per_process_type_ms { + label: "Power Cpu Time Per Process Type Ms" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_cpu_time_per_process_type_ms ;; + group_label: "Power" + group_item_label: "Cpu Time Per Process Type Ms" + + link: { + label: "Glean Dictionary reference for Power Cpu Time Per Process Type Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_time_per_process_type_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "CPU time used by each process type in ms. +" + } + + dimension: metrics__counter__power_gpu_time_bogus_values { + label: "Power Gpu Time Bogus Values" + hidden: no + sql: ${TABLE}.metrics.counter.power_gpu_time_bogus_values ;; + type: number + group_label: "Power" + group_item_label: "Gpu Time Bogus Values" + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Impossibly large GPU time values that were discarded. +" + } + + dimension: metrics__labeled_counter__power_gpu_time_per_process_type_ms { + label: "Power Gpu Time Per Process Type Ms" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_gpu_time_per_process_type_ms ;; + group_label: "Power" + group_item_label: "Gpu Time Per Process Type Ms" + + link: { + label: "Glean Dictionary reference for Power Gpu Time Per Process Type Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_gpu_time_per_process_type_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "GPU time used by each process type in ms. +" + } + + dimension: metrics__counter__power_total_cpu_time_ms { + label: "Power Total Cpu Time Ms" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_cpu_time_ms ;; + type: number + group_label: "Power" + group_item_label: "Total Cpu Time Ms" + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Total CPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_gpu_time_ms { + label: "Power Total Gpu Time Ms" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_gpu_time_ms ;; + type: number + group_label: "Power" + group_item_label: "Total Gpu Time Ms" + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "Total GPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_thread_wakeups { + label: "Power Total Thread Wakeups" + hidden: no + sql: ${TABLE}.metrics.counter.power_total_thread_wakeups ;; + type: number + group_label: "Power" + group_item_label: "Total Thread Wakeups" + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_process_type { + label: "Power Wakeups Per Process Type" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_process_type ;; + group_label: "Power" + group_item_label: "Wakeups Per Process Type" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Process Type" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_process_type" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_background { + label: "Power Wakeups Per Thread Content Background" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_background ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Content Background" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Content Background" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_thread_content_background" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_foreground { + label: "Power Wakeups Per Thread Content Foreground" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_foreground ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Content Foreground" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Content Foreground" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_thread_content_foreground" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_gpu_process { + label: "Power Wakeups Per Thread Gpu Process" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_gpu_process ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Gpu Process" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Gpu Process" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_thread_gpu_process" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_active { + label: "Power Wakeups Per Thread Parent Active" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_active ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Parent Active" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Parent Active" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_thread_parent_active" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_inactive { + label: "Power Wakeups Per Thread Parent Inactive" + hidden: yes + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_inactive ;; + group_label: "Power Wakeups Per Thread" + group_item_label: "Parent Inactive" + + link: { + label: "Glean Dictionary reference for Power Wakeups Per Thread Parent Inactive" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_wakeups_per_thread_parent_inactive" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__sum { + label: "Wr Framebuild Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Framebuild Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Framebuild Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/wr_framebuild_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to rasterize glyphs for consumption by WebRender. +" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__sum { + label: "Wr Rasterize Glyphs Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Rasterize Glyphs Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Rasterize Glyphs Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/wr_rasterize_glyphs_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "The time to rasterize glyphs for consumption by WebRender. +" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__sum { + label: "Wr Scenebuild Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Scenebuild Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Scenebuild Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/wr_scenebuild_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "WebRender scene build time. +" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__sum { + label: "Wr Sceneswap Time Sum" + hidden: no + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.sum ;; + type: number + group_label: "Wr" + group_item_label: "Sceneswap Time Sum" + + link: { + label: "Glean Dictionary reference for Wr Sceneswap Time Sum" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/wr_sceneswap_time" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + + description: "WebRender scene swap time. +" + } + dimension: metrics__memory_distribution__glean_database_size__sum { label: "Glean Database Size Sum" hidden: no @@ -1674,6 +2324,206 @@ Deprecated: `native_code_crash`, `fatal_native_code_crash` and `nonfatal_native_ } } + measure: fog_ipc_flush_failures { + type: sum + sql: ${metrics__counter__fog_ipc_flush_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_flush_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_flush_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Flush Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_flush_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_replay_failures { + type: sum + sql: ${metrics__counter__fog_ipc_replay_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_replay_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_replay_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Replay Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_replay_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_shutdown_registration_failures { + type: sum + sql: ${metrics__counter__fog_ipc_shutdown_registration_failures} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: fog_ipc_shutdown_registration_failures_client_count { + type: count_distinct + filters: [ + metrics__counter__fog_ipc_shutdown_registration_failures: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Fog Ipc Shutdown Registration Failures" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/fog_ipc_shutdown_registration_failures" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_cpu_time_bogus_values { + type: sum + sql: ${metrics__counter__power_cpu_time_bogus_values} ;; + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_cpu_time_bogus_values_client_count { + type: count_distinct + filters: [ + metrics__counter__power_cpu_time_bogus_values: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Cpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_cpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_gpu_time_bogus_values { + type: sum + sql: ${metrics__counter__power_gpu_time_bogus_values} ;; + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_gpu_time_bogus_values_client_count { + type: count_distinct + filters: [ + metrics__counter__power_gpu_time_bogus_values: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Gpu Time Bogus Values" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_gpu_time_bogus_values" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_cpu_time_ms { + type: sum + sql: ${metrics__counter__power_total_cpu_time_ms} ;; + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_cpu_time_ms_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_cpu_time_ms: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Cpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_cpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_gpu_time_ms { + type: sum + sql: ${metrics__counter__power_total_gpu_time_ms} ;; + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_gpu_time_ms_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_gpu_time_ms: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Gpu Time Ms" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_gpu_time_ms" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_thread_wakeups { + type: sum + sql: ${metrics__counter__power_total_thread_wakeups} ;; + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + + measure: power_total_thread_wakeups_client_count { + type: count_distinct + filters: [ + metrics__counter__power_total_thread_wakeups: ">0", + ] + sql: ${client_info__client_id} ;; + + link: { + label: "Glean Dictionary reference for Power Total Thread Wakeups" + url: "https://dictionary.telemetry.mozilla.org/apps/klar_android/metrics/power_total_thread_wakeups" + icon_url: "https://dictionary.telemetry.mozilla.org/favicon.png" + } + } + measure: glean_error_io { type: sum sql: ${metrics__counter__glean_error_io} ;; diff --git a/klar_android/views/metrics_table.view.lkml b/klar_android/views/metrics_table.view.lkml index c3cdf9d92..67eb01997 100644 --- a/klar_android/views/metrics_table.view.lkml +++ b/klar_android/views/metrics_table.view.lkml @@ -310,6 +310,37 @@ changes the default browser through the app settings. " } + dimension: metrics__boolean__browser_ui_proton_enabled { + sql: ${TABLE}.metrics.boolean.browser_ui_proton_enabled ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Browser Ui Proton Enabled" + description: "True if the Proton default theme is enabled. +" + } + + dimension: metrics__boolean__fog_failed_idle_registration { + sql: ${TABLE}.metrics.boolean.fog_failed_idle_registration ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Fog Failed Idle Registration" + description: "True if we failed to register with the idle service. Absent otherwise. +Means IPC probably isn't working well. +Child-process data will likely be absent, or incomplete. +" + } + + dimension: metrics__boolean__gifft_validation_main_ping_assembling { + sql: ${TABLE}.metrics.boolean.gifft_validation_main_ping_assembling ;; + type: yesno + group_label: "Metrics Boolean" + group_item_label: "Gifft Validation Main Ping Assembling" + description: "The value `true`, recorded when a Firefox Telemetry \"main\" ping is about +to be assembled. +To be used to validate GIFFT. +" + } + dimension: metrics__boolean__glean_core_migration_successful { sql: ${TABLE}.metrics.boolean.glean_core_migration_successful ;; type: yesno @@ -447,6 +478,44 @@ that programmatically redirect to a new location. " } + dimension: metrics__counter__fog_ipc_flush_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_flush_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Flush Failures" + description: "The number of times we failed to flush all non-parent-process data, +throwing even partial results into the trash. +If this number is high, we might consider writing custom `MozPromise`- +handling code instead of using `MozPromise::All`. +" + } + + dimension: metrics__counter__fog_ipc_replay_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_replay_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Replay Failures" + description: "The number of times the ipc buffer failed to be replayed in the +parent process. +" + } + + dimension: metrics__counter__fog_ipc_shutdown_registration_failures { + sql: ${TABLE}.metrics.counter.fog_ipc_shutdown_registration_failures ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Fog Ipc Shutdown Registration Failures" + description: "The number of times we tried to register shutdown flush routines for +content child processes, and failed (probably because there was no main +thread). +As a result there may be data loss from content child processes. +Large or rising number of clients experiencing this indicates we should +perhaps refactor content child shutdown in FOG to try harder to register +flush operations. +Will likely be obsoleted by bug 1641989. +" + } + dimension: metrics__counter__glean_error_io { sql: ${TABLE}.metrics.counter.glean_error_io ;; type: number @@ -529,6 +598,51 @@ This does not include deletion-request pings. " } + dimension: metrics__counter__power_cpu_time_bogus_values { + sql: ${TABLE}.metrics.counter.power_cpu_time_bogus_values ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Cpu Time Bogus Values" + description: "Impossibly large CPU time values that were discarded. +" + } + + dimension: metrics__counter__power_gpu_time_bogus_values { + sql: ${TABLE}.metrics.counter.power_gpu_time_bogus_values ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Gpu Time Bogus Values" + description: "Impossibly large GPU time values that were discarded. +" + } + + dimension: metrics__counter__power_total_cpu_time_ms { + sql: ${TABLE}.metrics.counter.power_total_cpu_time_ms ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Cpu Time Ms" + description: "Total CPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_gpu_time_ms { + sql: ${TABLE}.metrics.counter.power_total_gpu_time_ms ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Gpu Time Ms" + description: "Total GPU time used by all processes in ms. +" + } + + dimension: metrics__counter__power_total_thread_wakeups { + sql: ${TABLE}.metrics.counter.power_total_thread_wakeups ;; + type: number + group_label: "Metrics Counter" + group_item_label: "Power Total Thread Wakeups" + description: "How many times threads woke up and could have woken up a CPU core. +" + } + dimension: metrics__counter__settings_screen_autocomplete_domain_added { sql: ${TABLE}.metrics.counter.settings_screen_autocomplete_domain_added ;; type: number @@ -579,6 +693,18 @@ the tracking protection settings panel from the toolbar. " } + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__sum { + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.sum ;; + type: number + group_label: "Metrics Custom Distribution Power Battery Percentage When User Active" + group_item_label: "Sum" + } + + dimension: metrics__custom_distribution__power_battery_percentage_when_user_active__values { + sql: ${TABLE}.metrics.custom_distribution.power_battery_percentage_when_user_active.values ;; + hidden: yes + } + dimension: metrics__custom_distribution__tab_count_app_backgrounded__sum { sql: ${TABLE}.metrics.custom_distribution.tab_count_app_backgrounded.sum ;; type: number @@ -705,6 +831,104 @@ This metric appears in both the metrics and baseline pings. " } + dimension: metrics__labeled_counter__gmp_update_xml_fetch_result { + sql: ${TABLE}.metrics.labeled_counter.gmp_update_xml_fetch_result ;; + hidden: yes + description: "The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_background { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_background ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_content_foreground { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_content_foreground ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_gpu_process { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_gpu_process ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_active { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_active ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_ms_per_thread_parent_inactive { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_ms_per_thread_parent_inactive ;; + hidden: yes + description: "How many miliseconds of CPU time were used. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_cpu_time_per_process_type_ms { + sql: ${TABLE}.metrics.labeled_counter.power_cpu_time_per_process_type_ms ;; + hidden: yes + description: "CPU time used by each process type in ms. +" + } + + dimension: metrics__labeled_counter__power_gpu_time_per_process_type_ms { + sql: ${TABLE}.metrics.labeled_counter.power_gpu_time_per_process_type_ms ;; + hidden: yes + description: "GPU time used by each process type in ms. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_process_type { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_process_type ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_background { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_background ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_content_foreground { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_content_foreground ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_gpu_process { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_gpu_process ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_active { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_active ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + + dimension: metrics__labeled_counter__power_wakeups_per_thread_parent_inactive { + sql: ${TABLE}.metrics.labeled_counter.power_wakeups_per_thread_parent_inactive ;; + hidden: yes + description: "How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. +" + } + dimension: metrics__labeled_counter__shortcuts_shortcut_removed_counter { sql: ${TABLE}.metrics.labeled_counter.shortcuts_shortcut_removed_counter ;; hidden: yes @@ -719,6 +943,18 @@ It also indicates the screen it was removed from, home or browser. hidden: yes } + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__sum { + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.sum ;; + type: number + group_label: "Metrics Memory Distribution Fog Ipc Buffer Sizes" + group_item_label: "Sum" + } + + dimension: metrics__memory_distribution__fog_ipc_buffer_sizes__values { + sql: ${TABLE}.metrics.memory_distribution.fog_ipc_buffer_sizes.values ;; + hidden: yes + } + dimension: metrics__memory_distribution__glean_database_size__sum { sql: ${TABLE}.metrics.memory_distribution.glean_database_size.sum ;; type: number @@ -792,6 +1028,24 @@ specifically overrides it for the app. " } + dimension: metrics__string__geckoview_validation_build_id { + sql: ${TABLE}.metrics.string.geckoview_validation_build_id ;; + type: string + group_label: "Metrics String" + group_item_label: "Geckoview Validation Build Id" + description: "The Buildid of the Gecko engine, example: 20200205124310 Mirror of `geckoview.build_id` for validation of migrated data. +" + } + + dimension: metrics__string__geckoview_validation_version { + sql: ${TABLE}.metrics.string.geckoview_validation_version ;; + type: string + group_label: "Metrics String" + group_item_label: "Geckoview Validation Version" + description: "The version of the Gecko engine, example: 74.0a1 Mirror of `geckoview.version` for validation of migrated data. +" + } + dimension: metrics__string__ping_reason { sql: ${TABLE}.metrics.string.ping_reason ;; type: string @@ -817,6 +1071,20 @@ documented in the ping's pings.yaml file. hidden: yes } + dimension: metrics__timespan__fog_initialization__time_unit { + sql: ${TABLE}.metrics.timespan.fog_initialization.time_unit ;; + type: string + group_label: "Metrics Timespan Fog Initialization" + group_item_label: "Time Unit" + } + + dimension: metrics__timespan__fog_initialization__value { + sql: ${TABLE}.metrics.timespan.fog_initialization.value ;; + type: number + group_label: "Metrics Timespan Fog Initialization" + group_item_label: "Value" + } + dimension: metrics__timespan__nimbus_experiments_nimbus_initial_fetch__time_unit { sql: ${TABLE}.metrics.timespan.nimbus_experiments_nimbus_initial_fetch.time_unit ;; type: string @@ -831,6 +1099,318 @@ documented in the ping's pings.yaml file. group_item_label: "Value" } + dimension: metrics__timing_distribution__fog_ipc_flush_durations__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__overflow { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.overflow ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__range { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__sum { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.sum ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__time_unit { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__underflow { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.underflow ;; + type: number + group_label: "Metrics Timing Distribution Fog Ipc Flush Durations" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__fog_ipc_flush_durations__values { + sql: ${TABLE}.metrics.timing_distribution.fog_ipc_flush_durations.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__range { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__sum { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Paint Build Displaylist Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__paint_build_displaylist_time__values { + sql: ${TABLE}.metrics.timing_distribution.paint_build_displaylist_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_framebuild_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_framebuild_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Framebuild Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_framebuild_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_framebuild_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Rasterize Glyphs Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_rasterize_glyphs_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_rasterize_glyphs_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Scenebuild Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_scenebuild_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_scenebuild_time.values ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__bucket_count { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.bucket_count ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Bucket Count" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__histogram_type { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.histogram_type ;; + type: string + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Histogram Type" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__overflow { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.overflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Overflow" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__range { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.range ;; + hidden: yes + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__sum { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.sum ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Sum" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__time_unit { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.time_unit ;; + type: string + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Time Unit" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__underflow { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.underflow ;; + type: number + group_label: "Metrics Timing Distribution Wr Sceneswap Time" + group_item_label: "Underflow" + } + + dimension: metrics__timing_distribution__wr_sceneswap_time__values { + sql: ${TABLE}.metrics.timing_distribution.wr_sceneswap_time.values ;; + hidden: yes + } + dimension: metrics__url { sql: ${TABLE}.metrics.url ;; hidden: yes @@ -1008,6 +1588,18 @@ view: metrics_table__events__extra { } } +view: metrics_table__metrics__custom_distribution__power_battery_percentage_when_user_active__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__custom_distribution__tab_count_app_backgrounded__values { dimension: key { sql: ${TABLE}.key ;; @@ -1065,6 +1657,18 @@ view: metrics_table__metrics__labeled_rate__value { } } +view: metrics_table__metrics__memory_distribution__fog_ipc_buffer_sizes__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__memory_distribution__glean_database_size__values { dimension: key { sql: ${TABLE}.key ;; @@ -1113,6 +1717,78 @@ view: metrics_table__metrics__text { } } +view: metrics_table__metrics__timing_distribution__fog_ipc_flush_durations__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__paint_build_displaylist_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_framebuild_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_rasterize_glyphs_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_scenebuild_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + +view: metrics_table__metrics__timing_distribution__wr_sceneswap_time__values { + dimension: key { + sql: ${TABLE}.key ;; + type: string + } + + dimension: value { + sql: ${TABLE}.value ;; + type: number + } +} + view: metrics_table__metrics__url { dimension: key { sql: ${TABLE}.key ;; diff --git a/monitoring/views/structured_distinct_docids.view.lkml b/monitoring/views/structured_distinct_docids.view.lkml index af568824f..ad23fb6da 100644 --- a/monitoring/views/structured_distinct_docids.view.lkml +++ b/monitoring/views/structured_distinct_docids.view.lkml @@ -10,6 +10,12 @@ view: structured_distinct_docids { type: number } + dimension: decoded_nondistinct { + sql: ${TABLE}.decoded_nondistinct ;; + type: number + description: "Non-distinct count of submissions in the decoded table" + } + dimension: doc_type { sql: ${TABLE}.doc_type ;; type: string @@ -20,6 +26,12 @@ view: structured_distinct_docids { type: number } + dimension: live_nondistinct { + sql: ${TABLE}.live_nondistinct ;; + type: number + description: "Non-distinct count of submissions in the live table" + } + dimension: namespace { sql: ${TABLE}.namespace ;; type: string diff --git a/monitoring/views/telemetry_distinct_docids.view.lkml b/monitoring/views/telemetry_distinct_docids.view.lkml index f0c23989b..e913507a4 100644 --- a/monitoring/views/telemetry_distinct_docids.view.lkml +++ b/monitoring/views/telemetry_distinct_docids.view.lkml @@ -10,6 +10,12 @@ view: telemetry_distinct_docids { type: number } + dimension: decoded_nondistinct { + sql: ${TABLE}.decoded_nondistinct ;; + type: number + description: "Non-distinct count of submissions in the decoded table" + } + dimension: doc_type { sql: ${TABLE}.doc_type ;; type: string @@ -20,6 +26,17 @@ view: telemetry_distinct_docids { type: number } + dimension: live_nondistinct { + sql: ${TABLE}.live_nondistinct ;; + type: number + description: "Non-distinct count of submissions in the live table" + } + + dimension: namespace { + sql: ${TABLE}.namespace ;; + type: string + } + dimension: stable { sql: ${TABLE}.stable ;; type: number diff --git a/namespaces.yaml b/namespaces.yaml index 32f581448..ae4b9b0ae 100644 --- a/namespaces.yaml +++ b/namespaces.yaml @@ -1485,6 +1485,10 @@ focus_android: views: base_view: events extended_view: events_unnested_table + fog_validation: + type: glean_ping_explore + views: + base_view: fog_validation metrics: type: glean_ping_explore views: @@ -1570,6 +1574,24 @@ focus_android: - channel: release table: mozdata.focus_android.events_unnested type: table_view + fog_validation: + tables: + - channel: release + table: mozdata.focus_android.fog_validation + - channel: beta + table: mozdata.org_mozilla_focus_beta.fog_validation + - channel: nightly + table: mozdata.org_mozilla_focus_nightly.fog_validation + type: glean_ping_view + fog_validation_table: + tables: + - channel: release + table: mozdata.focus_android.fog_validation + - channel: beta + table: mozdata.org_mozilla_focus_beta.fog_validation + - channel: nightly + table: mozdata.org_mozilla_focus_nightly.fog_validation + type: table_view metrics: tables: - channel: release @@ -1762,6 +1784,10 @@ klar_android: type: glean_ping_explore views: base_view: deletion_request + fog_validation: + type: glean_ping_explore + views: + base_view: fog_validation metrics: type: glean_ping_explore views: @@ -1805,6 +1831,15 @@ klar_android: - channel: null table: mozdata.org_mozilla_klar.events type: table_view + fog_validation: + tables: + - table: mozdata.org_mozilla_klar.fog_validation + type: glean_ping_view + fog_validation_table: + tables: + - channel: null + table: mozdata.org_mozilla_klar.fog_validation + type: table_view metrics: tables: - table: mozdata.org_mozilla_klar.metrics @@ -4901,14 +4936,6 @@ operational_monitoring: table: moz-fx-data-shared-prod.operational_monitoring.tcp_rollout_scalar xaxis: submission_date type: operational_monitoring_scalar_view -pine: - explores: {} - glean_app: true - owners: - - chutten@mozilla.com - pretty_name: Pinebuild - spoke: looker-spoke-default - views: {} pocket: glean_app: false owners: