Skip to content

Add Mach telemetry configuration to disallowlist#1326

Open
travis79 wants to merge 1 commit intomainfrom
travis79-patch-1
Open

Add Mach telemetry configuration to disallowlist#1326
travis79 wants to merge 1 commit intomainfrom
travis79-patch-1

Conversation

@travis79
Copy link
Member

Added configuration for Mozilla Mach telemetry views and explores.

Added configuration for Mozilla Mach telemetry views and explores.
@travis79 travis79 requested a review from kwindau October 23, 2025 18:11
@dataops-ci-bot
Copy link

Integration report for "Add Mach telemetry configuration to disallowlist"

lookml.diff

Click to expand!
Only in /tmp/workspace/looker-hub/firefox_ios: dashboards
Only in /tmp/workspace/generated-lookml/: mach
Only in /tmp/workspace/looker-hub/marketing: datagroups
Only in /tmp/workspace/looker-hub/search_private/datagroups: search_term_data_validation_reports_last_updated.datagroup.lkml
Only in /tmp/workspace/looker-hub/search_private/datagroups: search_term_sanitization_job_metadata_daily_last_updated.datagroup.lkml
Only in /tmp/workspace/looker-hub/: user_journey
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/firefox_desktop/views/clients_first_seen_v2.view.lkml /tmp/workspace/generated-lookml/firefox_desktop/views/clients_first_seen_v2.view.lkml
--- /tmp/workspace/looker-hub/firefox_desktop/views/clients_first_seen_v2.view.lkml	2025-10-23 19:06:51.041936428 +0000
+++ /tmp/workspace/generated-lookml/firefox_desktop/views/clients_first_seen_v2.view.lkml	2025-10-23 19:02:41.000000000 +0000
@@ -9,89 +9,104 @@
     sql: ${TABLE}.app_build_id ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The application build reported by the client."
   }
 
   dimension: app_name {
     sql: ${TABLE}.app_name ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The name of the installed app/browser."
   }
 
   dimension: app_version {
     sql: ${TABLE}.app_version ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The application version."
   }
 
   dimension: apple_model_id {
     sql: ${TABLE}.apple_model_id ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The model IDs for Apple desktop devices. Applies to Mac only."
   }
 
   dimension: architecture {
     sql: ${TABLE}.architecture ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The application architecture reported by the client."
   }
 
   dimension: attribution_campaign {
     sql: ${TABLE}.attribution_campaign ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Identifier of the particular campaign that led to the download of the product."
   }
 
   dimension: attribution_content {
     sql: ${TABLE}.attribution_content ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Identifier to indicate the particular link within a campaign."
   }
 
   dimension: attribution_dlsource {
     sql: ${TABLE}.attribution_dlsource ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Identifier that indicates where installations of Firefox originated."
   }
 
   dimension: attribution_dltoken {
     sql: ${TABLE}.attribution_dltoken ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Unique token created at Firefox download time."
   }
 
   dimension: attribution_experiment {
     sql: ${TABLE}.attribution_experiment ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Funnel experiment parameters."
   }
 
   dimension: attribution_medium {
     sql: ${TABLE}.attribution_medium ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Category of the source, such as 'organic' for a search engine."
   }
 
   dimension: attribution_source {
     sql: ${TABLE}.attribution_source ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Referring partner domain, when install happens via a known partner."
   }
 
   dimension: attribution_ua {
     sql: ${TABLE}.attribution_ua ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "Client's user agent, which corresponds to the web browser used to download the Firefox installer."
   }
 
   dimension: city {
     sql: ${TABLE}.city ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "City retrieved as a result of a geographic lookup based on the client's IP address."
   }
 
   dimension: client_id {
     sql: ${TABLE}.client_id ;;
     hidden: yes
+    description: "Unique ID for the client installation."
   }
 
   dimension: country {
@@ -99,53 +114,62 @@
     type: string
     suggest_persist_for: "24 hours"
     map_layer_name: countries
+    description: "The ISO 3166-1 alpha-2 country code."
   }
 
   dimension: db_version {
     sql: ${TABLE}.db_version ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The specific geo database version used."
   }
 
   dimension: distribution_id {
     sql: ${TABLE}.distribution_id ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The value of the `distribution.id` preference that identifies the Firefox distribution."
   }
 
   dimension: document_id {
     sql: ${TABLE}.document_id ;;
     hidden: yes
+    description: "The document ID specified in the URI when the client sent this message."
   }
 
   dimension: engine_data_load_path {
     sql: ${TABLE}.engine_data_load_path ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The anonymized path of the engine xml file. For details on the components refer to the metadata for telemetry.new_profile."
   }
 
   dimension: engine_data_name {
     sql: ${TABLE}.engine_data_name ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The name of the default search engine."
   }
 
   dimension: engine_data_origin {
     sql: ${TABLE}.engine_data_origin ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The origin of the search engine. The value will be default for engines that are built-in or from distribution partners, verified for user-installed engines with valid verification hashes, unverified for non-default engines without verification hash, and invalid for engines with broken verification hashes."
   }
 
   dimension: engine_data_submission_url {
     sql: ${TABLE}.engine_data_submission_url ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The HTTP url we would use to search. For privacy, we don’t record this for user-installed engines."
   }
 
   dimension: locale {
     sql: ${TABLE}.locale ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The best locale that the application should be localized to."
   }
 
   dimension: metadata__first_seen_date_source_ping {
@@ -154,6 +178,7 @@
     suggest_persist_for: "24 hours"
     group_label: "Metadata"
     group_item_label: "First Seen Date Source Ping"
+    description: "Ping that reported the first seen date (main, first_shutdown or new_profile)."
   }
 
   dimension: metadata__reported_main_ping {
@@ -162,6 +187,7 @@
     suggest_persist_for: "24 hours"
     group_label: "Metadata"
     group_item_label: "Reported Main Ping"
+    description: "Indicates wether the client ever reported a main ping."
   }
 
   dimension: metadata__reported_new_profile_ping {
@@ -170,6 +196,7 @@
     suggest_persist_for: "24 hours"
     group_label: "Metadata"
     group_item_label: "Reported New Profile Ping"
+    description: "Indicates wether the client ever reported a new profile ping."
   }
 
   dimension: metadata__reported_shutdown_ping {
@@ -178,90 +205,105 @@
     suggest_persist_for: "24 hours"
     group_label: "Metadata"
     group_item_label: "Reported Shutdown Ping"
+    description: "Indicates wether the client ever reported a first shutdown ping."
   }
 
   dimension: normalized_channel {
     sql: ${TABLE}.normalized_channel ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The Firefox channel, set to Other for unrecognized channel names."
   }
 
   dimension: normalized_os {
     sql: ${TABLE}.normalized_os ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The OS name, set to Other for unrecognized OS names."
   }
 
   dimension: normalized_os_version {
     sql: ${TABLE}.normalized_os_version ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The OS version."
   }
 
   dimension: partner_distribution_version {
     sql: ${TABLE}.partner_distribution_version ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The value selected for the `distribution.version` preference in the Partner Distribution Configuration File."
   }
 
   dimension: partner_distributor {
     sql: ${TABLE}.partner_distributor ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The value of the `app.distributor` preference in the Partner Distribution Configuration File."
   }
 
   dimension: partner_distributor_channel {
     sql: ${TABLE}.partner_distributor_channel ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The value of the `app.distributor.channel` preference in the Partner Distribution Configuration File."
   }
 
   dimension: partner_id {
     sql: ${TABLE}.partner_id ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The value of the `mozilla.partner.id` preference in the Partner Distribution Configuration File."
   }
 
   dimension: platform_version {
     sql: ${TABLE}.platform_version ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The appliction platform version reported by the client."
   }
 
   dimension: profile_group_id {
     sql: ${TABLE}.profile_group_id ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "A UUID identifying the profile's group on a single device and allowing user-oriented correlation of data"
   }
 
   dimension: sample_id {
     sql: ${TABLE}.sample_id ;;
     type: number
     suggest_persist_for: "24 hours"
+    description: "Sample ID to limit query results during an analysis."
   }
 
   dimension: startup_profile_selection_reason {
     sql: ${TABLE}.startup_profile_selection_reason ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "How the profile was selected during startup. Possible reasons are: unknown: Generally should not happen, set as a default in case no other reason occurred. profile-manager: The profile was selected by the profile manager. profile-reset: The profile was selected for reset, normally this would mean a restart. restart: The user restarted the application, the same profile as previous will be used. argument-profile: The profile was selected by the --profile command line argument. argument-p: The profile was selected by the -p command line argument. firstrun-claimed-default: A first run of a dedicated profiles build chose the old default profile to be the default for this install. firstrun-skipped-default: A first run of a dedicated profiles build skipped over the old default profile and created a new profile. restart-claimed-default: A first run of a dedicated profiles build after a restart chose the old default."
   }
 
   dimension: subdivision1 {
     sql: ${TABLE}.subdivision1 ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "First major country subdivision, typically a state, province, or county."
   }
 
   dimension: vendor {
     sql: ${TABLE}.vendor ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "The application vendor."
   }
 
   dimension: xpcom_abi {
     sql: ${TABLE}.xpcom_abi ;;
     type: string
     suggest_persist_for: "24 hours"
+    description: "A string tag identifying the binary ABI of the current processor and compiler vtable, as taken from the TARGET_XPCOM_ABI configure variable. It may not be available on all platforms, especially unusual processor or compiler combinations. The result takes the form <processor>-<compilerABI>, eg. x86-msvc, ppc-gcc3. This value should almost always be used in combination with the OS."
   }
 
   dimension_group: first_seen {
@@ -278,6 +320,7 @@
     ]
     convert_tz: no
     datatype: date
+    description: "Date when the server first received either of the 3 pings from this client."
   }
 
   dimension_group: second_seen {
@@ -294,6 +337,7 @@
     ]
     convert_tz: no
     datatype: date
+    description: "Second date when the server received either of the 3 pings from this client."
   }
 
   sql_table_name: `moz-fx-data-shared-prod.telemetry_derived.clients_first_seen_v2` ;;
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/baseline_clients_daily_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/baseline_clients_daily_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/baseline_clients_daily_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/baseline_clients_daily_table_last_updated.datagroup.lkml	2025-10-23 19:04:44.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: baseline_clients_daily_table_last_updated {
+  label: "baseline_clients_daily_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_derived' AND table_name = 'baseline_clients_daily_v1')
+
+    ) ;;
+  description: "Updates for baseline_clients_daily_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/baseline_clients_last_seen_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/baseline_clients_last_seen_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/baseline_clients_last_seen_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/baseline_clients_last_seen_table_last_updated.datagroup.lkml	2025-10-23 19:04:44.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: baseline_clients_last_seen_table_last_updated {
+  label: "baseline_clients_last_seen_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_derived' AND table_name = 'baseline_clients_last_seen_v1')
+
+    ) ;;
+  description: "Updates for baseline_clients_last_seen_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/baseline_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/baseline_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/baseline_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/baseline_table_last_updated.datagroup.lkml	2025-10-23 19:04:45.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: baseline_table_last_updated {
+  label: "baseline_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'baseline_v1')
+
+    ) ;;
+  description: "Updates for baseline_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/client_counts_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/client_counts_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/client_counts_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/client_counts_last_updated.datagroup.lkml	2025-10-23 19:04:45.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: client_counts_last_updated {
+  label: "client_counts Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_derived' AND table_name = 'baseline_clients_daily_v1')
+
+    ) ;;
+  description: "Updates for client_counts when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/deletion_request_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/deletion_request_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/deletion_request_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/deletion_request_table_last_updated.datagroup.lkml	2025-10-23 19:04:46.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: deletion_request_table_last_updated {
+  label: "deletion_request_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'deletion_request_v1')
+
+    ) ;;
+  description: "Updates for deletion_request_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/events_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/events_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/events_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/events_table_last_updated.datagroup.lkml	2025-10-23 19:04:46.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: events_table_last_updated {
+  label: "events_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'events_v1')
+
+    ) ;;
+  description: "Updates for events_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/growth_accounting_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/growth_accounting_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/growth_accounting_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/growth_accounting_last_updated.datagroup.lkml	2025-10-23 19:04:46.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: growth_accounting_last_updated {
+  label: "growth_accounting Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_derived' AND table_name = 'baseline_clients_last_seen_v1')
+
+    ) ;;
+  description: "Updates for growth_accounting when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/health_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/health_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/health_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/health_last_updated.datagroup.lkml	2025-10-23 19:04:47.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: health_last_updated {
+  label: "health Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'health_v1')
+
+    ) ;;
+  description: "Updates for health when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/health_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/health_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/health_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/health_table_last_updated.datagroup.lkml	2025-10-23 19:04:47.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: health_table_last_updated {
+  label: "health_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'health_v1')
+
+    ) ;;
+  description: "Updates for health_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/metrics_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/metrics_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/metrics_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/metrics_table_last_updated.datagroup.lkml	2025-10-23 19:04:48.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: metrics_table_last_updated {
+  label: "metrics_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'metrics_v1')
+
+    ) ;;
+  description: "Updates for metrics_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/usage_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/usage_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/usage_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/usage_last_updated.datagroup.lkml	2025-10-23 19:04:48.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: usage_last_updated {
+  label: "usage Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'usage_v1')
+
+    ) ;;
+  description: "Updates for usage when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/datagroups/usage_table_last_updated.datagroup.lkml /tmp/workspace/generated-lookml/mach/datagroups/usage_table_last_updated.datagroup.lkml
--- /tmp/workspace/looker-hub/mach/datagroups/usage_table_last_updated.datagroup.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/datagroups/usage_table_last_updated.datagroup.lkml	2025-10-23 19:04:49.000000000 +0000
@@ -0,0 +1,20 @@
+# *Do not manually modify this file*
+
+# This file has been generated via https://github.com/mozilla/lookml-generator
+
+# Using a datagroup in an Explore: https://cloud.google.com/looker/docs/reference/param-explore-persist-with
+# Using a datagroup in a derived table: https://cloud.google.com/looker/docs/reference/param-view-datagroup-trigger
+
+datagroup: usage_table_last_updated {
+  label: "usage_table Last Updated"
+  sql_trigger: SELECT MAX(storage_last_modified_time)
+    FROM (
+        
+    SELECT MAX(storage_last_modified_time) AS storage_last_modified_time
+    FROM `moz-fx-data-shared-prod`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE
+    WHERE (table_schema = 'mozilla_mach_stable' AND table_name = 'usage_v1')
+
+    ) ;;
+  description: "Updates for usage_table when referenced tables are modified."
+  max_cache_age: "24 hours"
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/explores/client_counts.explore.lkml /tmp/workspace/generated-lookml/mach/explores/client_counts.explore.lkml
--- /tmp/workspace/looker-hub/mach/explores/client_counts.explore.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/explores/client_counts.explore.lkml	2025-10-23 19:05:53.000000000 +0000
@@ -0,0 +1,53 @@
+
+# *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/mach/views/client_counts.view.lkml"
+include: "/looker-hub/mach/datagroups/client_counts_last_updated.datagroup.lkml"
+
+explore: client_counts {
+  sql_always_where: ${client_counts.submission_date} >= '2010-01-01' ;;
+  view_name: client_counts
+  description: "Client counts across dimensions and cohorts."
+
+  always_filter: {
+    filters: [
+      submission_date: "28 days",
+    ]
+  }
+
+  query: cohort_analysis {
+    description: "Client Counts of weekly cohorts over the past N days."
+    dimensions: [days_since_first_seen, first_seen_week]
+    measures: [client_count]
+    pivots: [first_seen_week]
+    filters: [
+      submission_date: "8 weeks",
+      first_seen_date: "8 weeks",
+      have_completed_period: "yes",
+    ]
+    sorts: [
+      days_since_first_seen: asc,
+    ]
+  }
+
+  query: build_breakdown {
+    description: "Number of clients per build."
+    dimensions: [submission_date, app_build]
+    measures: [client_count]
+    pivots: [app_build]
+    sorts: [
+      submission_date: asc,
+    ]
+  }
+
+  join: baseline_clients_daily_table__experiments {
+    view_label: "Client Counts  Experiments"
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${client_counts.experiments}) AS baseline_clients_daily_table__experiments ;;
+  }
+
+  persist_with: client_counts_last_updated
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/explores/growth_accounting.explore.lkml /tmp/workspace/generated-lookml/mach/explores/growth_accounting.explore.lkml
--- /tmp/workspace/looker-hub/mach/explores/growth_accounting.explore.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/explores/growth_accounting.explore.lkml	2025-10-23 19:05:53.000000000 +0000
@@ -0,0 +1,14 @@
+
+# *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/mach/views/growth_accounting.view.lkml"
+include: "/looker-hub/mach/datagroups/growth_accounting_last_updated.datagroup.lkml"
+
+explore: growth_accounting {
+  sql_always_where: ${growth_accounting.submission_date} >= '2010-01-01' ;;
+  view_name: growth_accounting
+  persist_with: growth_accounting_last_updated
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/explores/health.explore.lkml /tmp/workspace/generated-lookml/mach/explores/health.explore.lkml
--- /tmp/workspace/looker-hub/mach/explores/health.explore.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/explores/health.explore.lkml	2025-10-23 19:05:54.000000000 +0000
@@ -0,0 +1,68 @@
+
+# *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/mach/views/health.view.lkml"
+include: "/looker-hub/mach/datagroups/health_last_updated.datagroup.lkml"
+
+explore: health {
+  sql_always_where: ${health.submission_date} >= '2010-01-01' ;;
+  view_label: " Health"
+  description: "Explore for the health ping. The purpose of the health ping is to transport all of the health metric information. The `health` ping is automatically sent when the application calls Glean initialize before any operations are done on the data path with a reason of `pre_init`, and once after Glean initialization with a reason of `post_init`."
+  view_name: health
+
+  join: health__metrics__labeled_counter__glean_error_invalid_label {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_error_invalid_label}) AS health__metrics__labeled_counter__glean_error_invalid_label ON ${health.document_id} = ${health__metrics__labeled_counter__glean_error_invalid_label.document_id} ;;
+  }
+
+  join: health__metrics__labeled_counter__glean_error_invalid_overflow {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_error_invalid_overflow}) AS health__metrics__labeled_counter__glean_error_invalid_overflow ON ${health.document_id} = ${health__metrics__labeled_counter__glean_error_invalid_overflow.document_id} ;;
+  }
+
+  join: health__metrics__labeled_counter__glean_error_invalid_state {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_error_invalid_state}) AS health__metrics__labeled_counter__glean_error_invalid_state ON ${health.document_id} = ${health__metrics__labeled_counter__glean_error_invalid_state.document_id} ;;
+  }
+
+  join: health__metrics__labeled_counter__glean_error_invalid_value {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_error_invalid_value}) AS health__metrics__labeled_counter__glean_error_invalid_value ON ${health.document_id} = ${health__metrics__labeled_counter__glean_error_invalid_value.document_id} ;;
+  }
+
+  join: health__metrics__labeled_counter__glean_upload_ping_upload_failure {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_upload_ping_upload_failure}) AS health__metrics__labeled_counter__glean_upload_ping_upload_failure ON ${health.document_id} = ${health__metrics__labeled_counter__glean_upload_ping_upload_failure.document_id} ;;
+  }
+
+  join: health__metrics__labeled_counter__glean_validation_pings_submitted {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.metrics__labeled_counter__glean_validation_pings_submitted}) AS health__metrics__labeled_counter__glean_validation_pings_submitted ON ${health.document_id} = ${health__metrics__labeled_counter__glean_validation_pings_submitted.document_id} ;;
+  }
+
+  join: health__events {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.events}) AS health__events ;;
+  }
+
+  join: health__events__extra {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health__events.extra}) AS health__events__extra ;;
+  }
+
+  join: health__ping_info__experiments {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${health.ping_info__experiments}) AS health__ping_info__experiments ;;
+  }
+
+  persist_with: health_last_updated
+
+  always_filter: {
+    filters: [
+      submission_date: "28 days",
+    ]
+  }
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/explores/usage.explore.lkml /tmp/workspace/generated-lookml/mach/explores/usage.explore.lkml
--- /tmp/workspace/looker-hub/mach/explores/usage.explore.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/explores/usage.explore.lkml	2025-10-23 19:05:55.000000000 +0000
@@ -0,0 +1,58 @@
+
+# *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/mach/views/usage.view.lkml"
+include: "/looker-hub/mach/datagroups/usage_last_updated.datagroup.lkml"
+
+explore: usage {
+  sql_always_where: ${usage.submission_date} >= '2010-01-01' ;;
+  view_label: " Usage"
+  description: "Explore for the usage ping. Sent when the mach invocation is completed (regardless of result). Contains information about the mach invocation that was made, its result, and some details about the current environment and hardware."
+  view_name: usage
+
+  join: usage__metrics__labeled_counter__glean_error_invalid_label {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.metrics__labeled_counter__glean_error_invalid_label}) AS usage__metrics__labeled_counter__glean_error_invalid_label ON ${usage.document_id} = ${usage__metrics__labeled_counter__glean_error_invalid_label.document_id} ;;
+  }
+
+  join: usage__metrics__labeled_counter__glean_error_invalid_overflow {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.metrics__labeled_counter__glean_error_invalid_overflow}) AS usage__metrics__labeled_counter__glean_error_invalid_overflow ON ${usage.document_id} = ${usage__metrics__labeled_counter__glean_error_invalid_overflow.document_id} ;;
+  }
+
+  join: usage__metrics__labeled_counter__glean_error_invalid_state {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.metrics__labeled_counter__glean_error_invalid_state}) AS usage__metrics__labeled_counter__glean_error_invalid_state ON ${usage.document_id} = ${usage__metrics__labeled_counter__glean_error_invalid_state.document_id} ;;
+  }
+
+  join: usage__metrics__labeled_counter__glean_error_invalid_value {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.metrics__labeled_counter__glean_error_invalid_value}) AS usage__metrics__labeled_counter__glean_error_invalid_value ON ${usage.document_id} = ${usage__metrics__labeled_counter__glean_error_invalid_value.document_id} ;;
+  }
+
+  join: usage__events {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.events}) AS usage__events ;;
+  }
+
+  join: usage__events__extra {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage__events.extra}) AS usage__events__extra ;;
+  }
+
+  join: usage__ping_info__experiments {
+    relationship: one_to_many
+    sql: LEFT JOIN UNNEST(${usage.ping_info__experiments}) AS usage__ping_info__experiments ;;
+  }
+
+  persist_with: usage_last_updated
+
+  always_filter: {
+    filters: [
+      submission_date: "28 days",
+    ]
+  }
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/views/baseline_clients_daily_table.view.lkml /tmp/workspace/generated-lookml/mach/views/baseline_clients_daily_table.view.lkml
--- /tmp/workspace/looker-hub/mach/views/baseline_clients_daily_table.view.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/views/baseline_clients_daily_table.view.lkml	2025-10-23 19:04:10.000000000 +0000
@@ -0,0 +1,400 @@
+
+# *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: baseline_clients_daily_table {
+  dimension: active_hours_sum {
+    sql: ${TABLE}.active_hours_sum ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "Sum of Active Hours - calculated by taking the total active ticks (the # of 5 second intervals a user was active)
+and converting this to active hours"
+  }
+
+  dimension: android_sdk_version {
+    sql: ${TABLE}.android_sdk_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The optional Android specific SDK version of the software running on this hardware device."
+  }
+
+  dimension: app_build {
+    sql: ${TABLE}.app_build ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: app_channel {
+    sql: ${TABLE}.app_channel ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: app_display_version {
+    sql: ${TABLE}.app_display_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: architecture {
+    sql: ${TABLE}.architecture ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The architecture of the device, (e.g. \"arm\", \"x86\")."
+  }
+
+  dimension: attribution__campaign {
+    sql: ${TABLE}.attribution.campaign ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Campaign"
+    description: "The attribution campaign (e.g. 'mozilla-org')."
+  }
+
+  dimension: attribution__content {
+    sql: ${TABLE}.attribution.content ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Content"
+    description: "The attribution content (e.g. 'firefoxview')."
+  }
+
+  dimension: attribution__medium {
+    sql: ${TABLE}.attribution.medium ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Medium"
+    description: "The attribution medium (e.g. 'organic' for a search engine)."
+  }
+
+  dimension: attribution__source {
+    sql: ${TABLE}.attribution.source ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Source"
+    description: "The attribution source (e.g. 'google-play')."
+  }
+
+  dimension: attribution__term {
+    sql: ${TABLE}.attribution.term ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Term"
+    description: "The attribution term (e.g. 'browser with developer tools for android')."
+  }
+
+  dimension: attribution_dlsource {
+    sql: ${TABLE}.attribution_dlsource ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Identifier that indicates where installations of Firefox originate."
+  }
+
+  dimension: attribution_dltoken {
+    sql: ${TABLE}.attribution_dltoken ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Unique token created at Firefox download time."
+  }
+
+  dimension: attribution_experiment {
+    sql: ${TABLE}.attribution_experiment ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Name/id of the enrolled funnel experiment."
+  }
+
+  dimension: attribution_ua {
+    sql: ${TABLE}.attribution_ua ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Identifier derived from the user agent downloading the installer."
+  }
+
+  dimension: attribution_variation {
+    sql: ${TABLE}.attribution_variation ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Name/id of the variation cohort used in the enrolled funnel experiment."
+  }
+
+  dimension: browser_engagement_active_ticks {
+    sql: ${TABLE}.browser_engagement_active_ticks ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "The number of five-second intervals ('ticks') the user was considered 'active'.
+'active' means keyboard or mouse interaction with the application.
+It doesn't take into account whether or not the window has focus or is in the foreground,
+only if it is receiving these interaction events.
+Migrated from Telemetry's `browser.engagement.active_ticks`."
+  }
+
+  dimension: browser_engagement_uri_count {
+    sql: ${TABLE}.browser_engagement_uri_count ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "The number of total non-unique http(s) URIs visited, including page reloads, after the session has been restored.
+URIs on minimized or background tabs may also be counted. Private browsing uris are included.
+Migrated from Telemetry's `browser.engagement.total_uri_count_normal_and_private_mode`. "
+  }
+
+  dimension: city {
+    sql: ${TABLE}.city ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: client_id {
+    sql: ${TABLE}.client_id ;;
+    hidden: yes
+    description: "A unique identifier (UUID) for the client."
+  }
+
+  dimension: country {
+    sql: ${TABLE}.country ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    map_layer_name: countries
+  }
+
+  dimension: days_seen_session_end_bits {
+    sql: ${TABLE}.days_seen_session_end_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_seen_session_start_bits {
+    sql: ${TABLE}.days_seen_session_start_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: device_manufacturer {
+    sql: ${TABLE}.device_manufacturer ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    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: device_model {
+    sql: ${TABLE}.device_model ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    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: distribution__name {
+    sql: ${TABLE}.distribution.name ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Distribution"
+    group_item_label: "Name"
+    description: "The distribution name (e.g. 'MozillaOnline')."
+  }
+
+  dimension: distribution_id {
+    sql: ${TABLE}.distribution_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The distribution id associated with the install of Firefox."
+  }
+
+  dimension: durations {
+    sql: ${TABLE}.durations ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: experiments {
+    sql: ${TABLE}.experiments ;;
+    hidden: yes
+    description: "A dictionary of active experiments."
+  }
+
+  dimension: geo_subdivision {
+    sql: ${TABLE}.geo_subdivision ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: install_source {
+    sql: ${TABLE}.install_source ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: is_default_browser {
+    sql: ${TABLE}.is_default_browser ;;
+    type: yesno
+    suggest_persist_for: "24 hours"
+    description: "A flag indicating whether the browser is set as the default browser on the client side."
+  }
+
+  dimension: is_new_profile {
+    sql: ${TABLE}.is_new_profile ;;
+    type: yesno
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: isp {
+    sql: ${TABLE}.isp ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The name of the internet service provider associated with the client's IP address."
+  }
+
+  dimension: legacy_telemetry_client_id {
+    sql: ${TABLE}.legacy_telemetry_client_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "A unique identifier (UUID) for the client, based on legacy telemetry data."
+  }
+
+  dimension: locale {
+    sql: ${TABLE}.locale ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Set of language- and/or country-based preferences for a user interface."
+  }
+
+  dimension: normalized_channel {
+    sql: ${TABLE}.normalized_channel ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The normalized channel the application is being distributed on."
+  }
+
+  dimension: normalized_os {
+    sql: ${TABLE}.normalized_os ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The normalized name of the operating system running at the client."
+  }
+
+  dimension: normalized_os_version {
+    sql: ${TABLE}.normalized_os_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: profile_group_id {
+    sql: ${TABLE}.profile_group_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "A UUID uniquely identifying the profile group, not shared with other telemetry data."
+  }
+
+  dimension: sample_id {
+    sql: ${TABLE}.sample_id ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "A number, 0-99, that samples by client_id and allows filtering data for analysis. It is a pipeline-generated artifact that should match between pings."
+  }
+
+  dimension: telemetry_sdk_build {
+    sql: ${TABLE}.telemetry_sdk_build ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The version of the Glean SDK at the time the ping was collected (e.g. 25.0.0)."
+  }
+
+  dimension: windows_build_number {
+    sql: ${TABLE}.windows_build_number ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension_group: first_run {
+    sql: ${TABLE}.first_run_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+  }
+
+  dimension_group: first_seen {
+    sql: ${TABLE}.first_seen_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+  }
+
+  dimension_group: submission {
+    sql: ${TABLE}.submission_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+    description: "The date when the telemetry ping is received on the server side."
+  }
+
+  sql_table_name: `mozdata.mozilla_mach.baseline_clients_daily` ;;
+}
+
+view: baseline_clients_daily_table__experiments {
+  dimension: key {
+    sql: ${TABLE}.key ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Experiment Key"
+  }
+
+  dimension: value__branch {
+    sql: ${TABLE}.value.branch ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value"
+    group_item_label: "Branch"
+    description: "Experiment Branch"
+  }
+
+  dimension: value__extra__enrollment_id {
+    sql: ${TABLE}.value.extra.enrollment_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value Extra"
+    group_item_label: "Enrollment ID"
+    description: "Experiment Enrollment ID"
+  }
+
+  dimension: value__extra__type {
+    sql: ${TABLE}.value.extra.type ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value Extra"
+    group_item_label: "Type"
+    description: "Experiment Type"
+  }
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/views/baseline_clients_last_seen_table.view.lkml /tmp/workspace/generated-lookml/mach/views/baseline_clients_last_seen_table.view.lkml
--- /tmp/workspace/looker-hub/mach/views/baseline_clients_last_seen_table.view.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/views/baseline_clients_last_seen_table.view.lkml	2025-10-23 19:04:10.000000000 +0000
@@ -0,0 +1,449 @@
+
+# *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: baseline_clients_last_seen_table {
+  dimension: active_hours_sum {
+    sql: ${TABLE}.active_hours_sum ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "Sum of the client's active hours on the most recent date the client was last seen in the last 28 days"
+  }
+
+  dimension: android_sdk_version {
+    sql: ${TABLE}.android_sdk_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The optional Android specific SDK version of the software running on this hardware device."
+  }
+
+  dimension: app_build {
+    sql: ${TABLE}.app_build ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: app_channel {
+    sql: ${TABLE}.app_channel ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: app_display_version {
+    sql: ${TABLE}.app_display_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: architecture {
+    sql: ${TABLE}.architecture ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The architecture of the device, (e.g. \"arm\", \"x86\")."
+  }
+
+  dimension: attribution__campaign {
+    sql: ${TABLE}.attribution.campaign ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Campaign"
+    description: "The attribution campaign (e.g. 'mozilla-org')."
+  }
+
+  dimension: attribution__content {
+    sql: ${TABLE}.attribution.content ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Content"
+    description: "The attribution content (e.g. 'firefoxview')."
+  }
+
+  dimension: attribution__medium {
+    sql: ${TABLE}.attribution.medium ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Medium"
+    description: "The attribution medium (e.g. 'organic' for a search engine)."
+  }
+
+  dimension: attribution__source {
+    sql: ${TABLE}.attribution.source ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Source"
+    description: "The attribution source (e.g. 'google-play')."
+  }
+
+  dimension: attribution__term {
+    sql: ${TABLE}.attribution.term ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Attribution"
+    group_item_label: "Term"
+    description: "The attribution term (e.g. 'browser with developer tools for android')."
+  }
+
+  dimension: attribution_dlsource {
+    sql: ${TABLE}.attribution_dlsource ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Identifier that indicates where installations of Firefox originate."
+  }
+
+  dimension: attribution_dltoken {
+    sql: ${TABLE}.attribution_dltoken ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Unique token created at Firefox download time."
+  }
+
+  dimension: attribution_experiment {
+    sql: ${TABLE}.attribution_experiment ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Name/id of the enrolled funnel experiment."
+  }
+
+  dimension: attribution_ua {
+    sql: ${TABLE}.attribution_ua ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Identifier derived from the user agent downloading the installer."
+  }
+
+  dimension: attribution_variation {
+    sql: ${TABLE}.attribution_variation ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Name/id of the variation cohort used in the enrolled funnel experiment."
+  }
+
+  dimension: browser_engagement_active_ticks {
+    sql: ${TABLE}.browser_engagement_active_ticks ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: browser_engagement_uri_count {
+    sql: ${TABLE}.browser_engagement_uri_count ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: city {
+    sql: ${TABLE}.city ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: client_id {
+    sql: ${TABLE}.client_id ;;
+    hidden: yes
+    description: "A unique identifier (UUID) for the client."
+  }
+
+  dimension: country {
+    sql: ${TABLE}.country ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    map_layer_name: countries
+  }
+
+  dimension: days_active_bits {
+    sql: ${TABLE}.days_active_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_created_profile_bits {
+    sql: ${TABLE}.days_created_profile_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_seen_bits {
+    sql: ${TABLE}.days_seen_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_seen_session_end_bits {
+    sql: ${TABLE}.days_seen_session_end_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_seen_session_start_bits {
+    sql: ${TABLE}.days_seen_session_start_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_active {
+    sql: ${TABLE}.days_since_active ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_created_profile {
+    sql: ${TABLE}.days_since_created_profile ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_seen {
+    sql: ${TABLE}.days_since_seen ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_seen_session_end {
+    sql: ${TABLE}.days_since_seen_session_end ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_seen_session_start {
+    sql: ${TABLE}.days_since_seen_session_start ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_since_visited_1_uri {
+    sql: ${TABLE}.days_since_visited_1_uri ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: days_visited_1_uri_bits {
+    sql: ${TABLE}.days_visited_1_uri_bits ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "Days Visited 1 URI Bits"
+  }
+
+  dimension: device_manufacturer {
+    sql: ${TABLE}.device_manufacturer ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    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: device_model {
+    sql: ${TABLE}.device_model ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    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: distribution__name {
+    sql: ${TABLE}.distribution.name ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Distribution"
+    group_item_label: "Name"
+    description: "The distribution name (e.g. 'MozillaOnline')."
+  }
+
+  dimension: distribution_id {
+    sql: ${TABLE}.distribution_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The distribution id associated with the install of Firefox."
+  }
+
+  dimension: durations {
+    sql: ${TABLE}.durations ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: experiments {
+    sql: ${TABLE}.experiments ;;
+    hidden: yes
+    description: "A dictionary of active experiments."
+  }
+
+  dimension: geo_subdivision {
+    sql: ${TABLE}.geo_subdivision ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: install_source {
+    sql: ${TABLE}.install_source ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: is_default_browser {
+    sql: ${TABLE}.is_default_browser ;;
+    type: yesno
+    suggest_persist_for: "24 hours"
+    description: "A flag indicating whether the browser is set as the default browser on the client side."
+  }
+
+  dimension: is_new_profile {
+    sql: ${TABLE}.is_new_profile ;;
+    type: yesno
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: isp {
+    sql: ${TABLE}.isp ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The name of the internet service provider associated with the client's IP address."
+  }
+
+  dimension: legacy_telemetry_client_id {
+    sql: ${TABLE}.legacy_telemetry_client_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: locale {
+    sql: ${TABLE}.locale ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Set of language- and/or country-based preferences for a user interface."
+  }
+
+  dimension: normalized_channel {
+    sql: ${TABLE}.normalized_channel ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "The normalized channel the application is being distributed on."
+  }
+
+  dimension: normalized_os {
+    sql: ${TABLE}.normalized_os ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: normalized_os_version {
+    sql: ${TABLE}.normalized_os_version ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: profile_group_id {
+    sql: ${TABLE}.profile_group_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "A UUID uniquely identifying the profile group, not shared with other telemetry data."
+  }
+
+  dimension: sample_id {
+    sql: ${TABLE}.sample_id ;;
+    type: number
+    suggest_persist_for: "24 hours"
+    description: "A number, 0-99, that samples by client_id and allows filtering data for analysis. It is a pipeline-generated artifact that should match between pings."
+  }
+
+  dimension: telemetry_sdk_build {
+    sql: ${TABLE}.telemetry_sdk_build ;;
+    type: string
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension: windows_build_number {
+    sql: ${TABLE}.windows_build_number ;;
+    type: number
+    suggest_persist_for: "24 hours"
+  }
+
+  dimension_group: first_run {
+    sql: ${TABLE}.first_run_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+  }
+
+  dimension_group: first_seen {
+    sql: ${TABLE}.first_seen_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+  }
+
+  dimension_group: submission {
+    sql: ${TABLE}.submission_date ;;
+    type: time
+    suggest_persist_for: "24 hours"
+    timeframes: [
+      raw,
+      date,
+      week,
+      month,
+      quarter,
+      year,
+    ]
+    convert_tz: no
+    datatype: date
+    description: "The date when the telemetry ping is received on the server side."
+  }
+
+  sql_table_name: `mozdata.mozilla_mach.baseline_clients_last_seen` ;;
+}
+
+view: baseline_clients_last_seen_table__experiments {
+  dimension: key {
+    sql: ${TABLE}.key ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    description: "Experiment Key"
+  }
+
+  dimension: value__branch {
+    sql: ${TABLE}.value.branch ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value"
+    group_item_label: "Branch"
+    description: "Experiment Branch"
+  }
+
+  dimension: value__extra__enrollment_id {
+    sql: ${TABLE}.value.extra.enrollment_id ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value Extra"
+    group_item_label: "Enrollment ID"
+    description: "Experiment Enrollment ID"
+  }
+
+  dimension: value__extra__type {
+    sql: ${TABLE}.value.extra.type ;;
+    type: string
+    suggest_persist_for: "24 hours"
+    group_label: "Value Extra"
+    group_item_label: "Type"
+    description: "Experiment Type"
+  }
+}
\ No newline at end of file
diff -x '.*' -bur --no-dereference --new-file /tmp/workspace/looker-hub/mach/views/baseline_table.view.lkml /tmp/workspace/generated-lookml/mach/views/baseline_table.view.lkml
--- /tmp/workspace/looker-hub/mach/views/baseline_table.view.lkml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-lookml/mach/views/baseline_table.view.lkml	2025-10-23 19:04:11.000000000 +0000
@@ -0,0 +1,803 @@
+
+# *Do not manually modify this file*
+#
+# This file has been generated via https://github.com/mozilla/lookml-generator
+# You can extend this

⚠️ Only part of the diff is displayed.

Link to full diff

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants