Skip to content

Conversation

BenWu
Copy link
Contributor

@BenWu BenWu commented Sep 22, 2025

Description

This filters the high volume uptake.remotecontent.result events from legacy and glean event tables. This might fix the event_monitoring_aggregates_v1 failures but I'm still waiting for the queries to finish.

I also rearranged the event_monitoring_aggregates_v1 query a bit to aggregate events per ping before aggregating per app since I found that it uses slightly less slot time and shuffle

Related Tickets & Documents

Reviewer, please follow this checklist

@BenWu BenWu requested a review from a team as a code owner September 22, 2025 22:31
@dataops-ci-bot

This comment has been minimized.

AND 87
)
AND
) IS FALSE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: Using IS FALSE means that the event will be excluded if one or more of the fields being checked is null (including event extras being checked not being present) while the rest of the non-null field conditions match.

If that isn't the intended behavior then I'd recommend using IS NOT TRUE instead (same goes for the other usages of IS FALSE).

Comment on lines 12 to 20
TIMESTAMP_ADD(
TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-- Aggregates event counts over 60-minute intervals
INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
) AS window_start,
TIMESTAMP_ADD(
TIMESTAMP_TRUNC(submission_timestamp, HOUR),
INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
) AS window_end,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (non-blocking): I see this was existing code just being moved into this CTE, but this logic doesn't make sense to me since the extracted minute will always be less than 60, in which case DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) would always evaluate to zero, and this could be simplified:

Suggested change
TIMESTAMP_ADD(
TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-- Aggregates event counts over 60-minute intervals
INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
) AS window_start,
TIMESTAMP_ADD(
TIMESTAMP_TRUNC(submission_timestamp, HOUR),
INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
) AS window_end,
TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
TIMESTAMP_ADD(
TIMESTAMP_TRUNC(submission_timestamp, HOUR),
INTERVAL 1 HOUR
) AS window_end,

Or am I missing something?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it's equivalent. I'll change it

event_name,
event_extra_key,
country,
normalized_app_name,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (blocking): I presume trying to group by normalized_app_name would fail given you removed that column from this CTE above.

Suggested change
normalized_app_name,

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The query works because normalized_app_name is in the source table but yes this should be removed

Comment on lines 63 to 64
experiment,
experiment_branch
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: Indentation.

Suggested change
experiment,
experiment_branch
experiment,
experiment_branch

Comment on lines 69 to 70
"{{ dataset['canonical_app_name'] }}" AS normalized_app_name,
* REPLACE (SUM(total_events) AS total_events),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: This is changing the order of the columns being returned, which seems like something we should avoid if we can.

Suggested change
"{{ dataset['canonical_app_name'] }}" AS normalized_app_name,
* REPLACE (SUM(total_events) AS total_events),
submission_date,
window_start,
window_end,
event_category,
event_name,
event_extra_key,
country,
"{{ dataset['canonical_app_name'] }}" AS normalized_app_name,
channel,
version,
experiment,
experiment_branch,
SUM(total_events) AS total_events,

AND (
event.category = "uptake.remotecontent.result"
AND event.name IN ("uptake_remotesettings", "uptake_normandy")
AND mozfun.norm.extract_version(client_info.app_display_version, 'major') >= 143
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (non-blocking): Here we have an app_version_major column readily available.

Suggested change
AND mozfun.norm.extract_version(client_info.app_display_version, 'major') >= 143
AND app_version_major >= 143

@BenWu BenWu force-pushed the benwu/filter-remotecontent-143 branch from 8b81bbf to a8a3b0a Compare September 23, 2025 21:14
@dataops-ci-bot
Copy link

Integration report for "Clean up + only filter release channel"

sql.diff

Click to expand!
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/metrics: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix/metrics: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox/metrics: schema.yaml
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:33.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -39,7 +39,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -49,7 +49,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -48,7 +48,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:33.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/metrics_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/metrics_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -34,7 +34,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:33.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/bedrock_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bedrock_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/bedrock_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:19.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bedrock_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:33.000000000 +0000
@@ -112,15 +112,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -39,7 +39,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_first_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_first_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -49,7 +49,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_last_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_last_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -48,7 +48,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:33.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -34,7 +34,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_last_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_last_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_last_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham_derived/metrics_clients_last_seen_v1/metadata.yaml	2025-09-23 21:34:02.000000000 +0000
@@ -47,7 +47,7 @@
   enabled: false
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml	2025-09-23 21:24:54.000000000 +0000
@@ -1,49 +1,49 @@
 fields:
-- mode: NULLABLE
-  name: submission_date
+- name: submission_date
   type: DATE
-- mode: NULLABLE
-  name: source
+  mode: NULLABLE
+- name: source
   type: STRING
-- mode: NULLABLE
-  name: event_type
+  mode: NULLABLE
+- name: event_type
   type: STRING
-- mode: NULLABLE
-  name: form_factor
+  mode: NULLABLE
+- name: form_factor
   type: STRING
-- mode: NULLABLE
-  name: country
+  mode: NULLABLE
+- name: country
   type: STRING
-- mode: NULLABLE
-  name: subdivision1
+  mode: NULLABLE
+- name: subdivision1
   type: STRING
-- mode: NULLABLE
-  name: advertiser
+  mode: NULLABLE
+- name: advertiser
   type: STRING
-- mode: NULLABLE
-  name: release_channel
+  mode: NULLABLE
+- name: release_channel
   type: STRING
-- mode: NULLABLE
-  name: position
+  mode: NULLABLE
+- name: position
   type: INTEGER
-- mode: NULLABLE
-  name: provider
+  mode: NULLABLE
+- name: provider
   type: STRING
-- mode: NULLABLE
-  name: match_type
+  mode: NULLABLE
+- name: match_type
   type: STRING
-- mode: NULLABLE
-  name: normalized_os
+  mode: NULLABLE
+- name: normalized_os
   type: STRING
-- mode: NULLABLE
-  name: suggest_data_sharing_enabled
+  mode: NULLABLE
+- name: suggest_data_sharing_enabled
   type: BOOLEAN
-- mode: NULLABLE
-  name: event_count
+  mode: NULLABLE
+- name: event_count
   type: INTEGER
-- mode: NULLABLE
-  name: user_count
+  mode: NULLABLE
+- name: user_count
   type: INTEGER
-- mode: NULLABLE
-  name: query_type
+  mode: NULLABLE
+- name: query_type
   type: STRING
+  mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml	2025-09-23 21:24:43.000000000 +0000
@@ -1,40 +1,40 @@
 fields:
-- mode: NULLABLE
-  name: submission_date
+- name: submission_date
   type: DATE
-- mode: NULLABLE
-  name: form_factor
+  mode: NULLABLE
+- name: form_factor
   type: STRING
-- mode: NULLABLE
-  name: country
+  mode: NULLABLE
+- name: country
   type: STRING
-- mode: NULLABLE
-  name: advertiser
+  mode: NULLABLE
+- name: advertiser
   type: STRING
-- mode: NULLABLE
-  name: normalized_os
+  mode: NULLABLE
+- name: normalized_os
   type: STRING
-- mode: NULLABLE
-  name: release_channel
+  mode: NULLABLE
+- name: release_channel
   type: STRING
-- mode: NULLABLE
-  name: position
+  mode: NULLABLE
+- name: position
   type: INTEGER
-- mode: NULLABLE
-  name: provider
+  mode: NULLABLE
+- name: provider
   type: STRING
-- mode: NULLABLE
-  name: match_type
+  mode: NULLABLE
+- name: match_type
   type: STRING
-- mode: NULLABLE
-  name: suggest_data_sharing_enabled
+  mode: NULLABLE
+- name: suggest_data_sharing_enabled
   type: BOOLEAN
-- mode: NULLABLE
-  name: impression_count
+  mode: NULLABLE
+- name: impression_count
   type: INTEGER
-- mode: NULLABLE
-  name: click_count
+  mode: NULLABLE
+- name: click_count
   type: INTEGER
-- mode: NULLABLE
-  name: query_type
+  mode: NULLABLE
+- name: query_type
   type: STRING
+  mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/debug_ping_view_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/debug_ping_view_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/debug_ping_view_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/debug_ping_view_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:34.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_daily_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -39,7 +39,7 @@
   enabled: true
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_first_seen_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -49,7 +49,7 @@
   enabled: true
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/baseline_clients_last_seen_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -51,7 +51,7 @@
   enabled: true
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/event_monitoring_live_v1/materialized_view.sql	2025-09-23 21:22:34.000000000 +0000
@@ -46,15 +46,8 @@
 SELECT
       -- used for partitioning, only allows TIMESTAMP columns
   TIMESTAMP_TRUNC(submission_timestamp, DAY) AS submission_date,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-        -- Aggregates event counts over 60-minute intervals
-    INTERVAL(DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) * 60) MINUTE
-  ) AS window_start,
-  TIMESTAMP_ADD(
-    TIMESTAMP_TRUNC(submission_timestamp, HOUR),
-    INTERVAL((DIV(EXTRACT(MINUTE FROM submission_timestamp), 60) + 1) * 60) MINUTE
-  ) AS window_end,
+  TIMESTAMP_TRUNC(submission_timestamp, HOUR) AS window_start,
+  TIMESTAMP_ADD(TIMESTAMP_TRUNC(submission_timestamp, HOUR), INTERVAL 1 HOUR) AS window_end,
   * EXCEPT (submission_timestamp),
   COUNT(*) AS total_events,
 FROM
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/metrics_clients_daily_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/metrics_clients_daily_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/experimenter_cirrus_derived/metrics_clients_daily_v1/metadata.yaml	2025-09-23 21:34:01.000000000 +0000
@@ -34,7 +34,7 @@
   enabled: true
   collection: null
   partition_column: null
-  partition_column_set: true
+  partition_column_set: false
   freshness:
     blocking: false
   volume:
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/broken_site_report/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/broken_site_report/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/broken_site_report/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/broken_site_report/metadata.yaml	2025-09-23 21:34:00.000000000 +0000
@@ -1,6 +1,10 @@
-friendly_name: Broken Site Report
+friendly_name: App-specific view for Glean ping "broken-site-report"
 description: |-
-  Please provide a description for the query
+  This a view that UNIONs the stable ping tables
+  across all channels of the Glean application "Firefox for Android"
+  (org_mozilla_firefox.broken_site_report, org_mozilla_firefox_beta.broken_site_report, org_mozilla_fenix.broken_site_report, org_mozilla_fenix_nightly.broken_site_report, org_mozilla_fennec_aurora.broken_site_report).
+
+  It is used by Looker.
 owners: []
 labels: {}
 bigquery: null
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/crash/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/crash/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/crash/metadata.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/crash/metadata.yaml	2025-09-23 21:34:00.000000000 +0000
@@ -1,6 +1,10 @@
-friendly_name: Crash
+friendly_name: App-specific view for Glean ping "crash"
 description: |-
-  Please provide a description for the query
+  This a view that UNIONs the stable ping tables
+  across all channels of the Glean application "Firefox for Android"
+  (org_mozilla_firefox.crash, org_mozilla_firefox_beta.crash, org_mozilla_fenix.crash, org_mozilla_fenix_nightly.crash, org_mozilla_fennec_aurora.crash).
+
+  It is used by Looker.
 owners: []
 labels: {}
 bigquery: null
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml	2025-09-23 21:24:24.000000000 +0000
@@ -26,6 +26,9 @@
 - name: adjust_network
   type: STRING
   mode: NULLABLE
+- name: install_source
+  type: STRING
+  mode: NULLABLE
 - name: retained_week_2
   type: BOOLEAN
   mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml	2025-09-23 21:23:55.000000000 +0000
@@ -48,6 +48,9 @@
   description: 'The type of source of a client installation.
 
     '
+- name: install_source
+  type: STRING
+  mode: NULLABLE
 - name: new_profiles
   type: INTEGER
   mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql	2025-09-23 21:20:20.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql	2025-09-23 21:23:09.000000000 +0000
@@ -9,60 +9,10 @@
     client_info.app_build
   ).channel AS normalized_channel,
   additional_properties,
-  STRUCT(
-    client_info.android_sdk_version,
-    client_info.app_build,
-    client_info.app_channel,
-    client_info.app_display_version,
-    client_info.architecture,
-    client_info.client_id,
-    client_info.device_manufacturer,
-    client_info.device_model,
-    client_info.first_run_date,
-    client_info.locale,
-    client_info.os,
-    client_info.os_version,
-    client_info.telemetry_sdk_build,
-    client_info.build_date,
-    client_info.windows_build_number,
-    client_info.session_count,
-    client_info.session_id,
-    STRUCT(
-      client_info.attribution.campaign,
-      client_info.attribution.content,
-      client_info.attribution.medium,
-      client_info.attribution.source,
-      client_info.attribution.term,
-      client_info.attribution.ext
-    ) AS `attribution`,
-    STRUCT(client_info.distribution.name, client_info.distribution.ext) AS `distribution`
-  ) AS `client_info`,
+  client_info,
   document_id,
   events,
-  STRUCT(
-    STRUCT(
-      metadata.geo.city,
-      metadata.geo.country,
-      metadata.geo.db_version,
-      metadata.geo.subdivision1,
-      metadata.geo.subdivision2
-    ) AS `geo`,
-    STRUCT(
-      metadata.header.date,
-      metadata.header.dnt,
-      metadata.header.x_debug_id,
-      metadata.header.x_pingsender_version,
-      metadata.header.x_source_tags,
-      metadata.header.x_telemetry_agent,
-      metadata.header.x_foxsec_ip_reputation,
-      metadata.header.x_lb_tags,
-      metadata.header.parsed_date,
-      metadata.header.parsed_x_source_tags,
-      metadata.header.parsed_x_lb_tags
-    ) AS `header`,
-    metadata.user_agent,
-    STRUCT(metadata.isp.db_version, metadata.isp.name, metadata.isp.organization) AS `isp`
-  ) AS `metadata`,
+  metadata,
   STRUCT(
     STRUCT(
       metrics.boolean.gfx_status_headless,
@@ -418,1636 +368,332 @@
       metrics.counter.media_mkv_content_count
     ) AS `counter`,
     STRUCT(
-      STRUCT(
-        metrics.custom_distribution.geckoview_document_site_origins.sum,
-        metrics.custom_distribution.geckoview_document_site_origins.values,
-        metrics.custom_distribution.geckoview_document_site_origins.count
-      ) AS `geckoview_document_site_origins`,
-      STRUCT(
-        metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.sum,
-        metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.values,
-        metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.count
-      ) AS `gfx_checkerboard_peak_pixel_count`,
-      STRUCT(
-        metrics.custom_distribution.gfx_checkerboard_severity.sum,
-        metrics.custom_distribution.gfx_checkerboard_severity.values,
-        metrics.custom_distribution.gfx_checkerboard_severity.count
-      ) AS `gfx_checkerboard_severity`,
-      STRUCT(
-        metrics.custom_distribution.gfx_content_frame_time_from_paint.sum,
-        metrics.custom_distribution.gfx_content_frame_time_from_paint.values,
-        metrics.custom_distribution.gfx_content_frame_time_from_paint.count
-      ) AS `gfx_content_frame_time_from_paint`,
-      STRUCT(
-        metrics.custom_distribution.gfx_content_frame_time_from_vsync.sum,
-        metrics.custom_distribution.gfx_content_frame_time_from_vsync.values,
-        metrics.custom_distribution.gfx_content_frame_time_from_vsync.count
-      ) AS `gfx_content_frame_time_from_vsync`,
-      STRUCT(
-        metrics.custom_distribution.gfx_content_frame_time_with_svg.sum,
-        metrics.custom_distribution.gfx_content_frame_time_with_svg.values,
-        metrics.custom_distribution.gfx_content_frame_time_with_svg.count
-      ) AS `gfx_content_frame_time_with_svg`,
-      STRUCT(
-        metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.sum,
-        metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.values,
-        metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.count
-      ) AS `gfx_content_frame_time_without_resource_upload`,
-      STRUCT(
-        metrics.custom_distribution.gfx_content_frame_time_without_upload.sum,
-        metrics.custom_distribution.gfx_content_frame_time_without_upload.values,
-        metrics.custom_distribution.gfx_content_frame_time_without_upload.count
-      ) AS `gfx_content_frame_time_without_upload`,
-      STRUCT(
-        metrics.custom_distribution.geckoview_per_document_site_origins.sum,
-        metrics.custom_distribution.geckoview_per_document_site_origins.values,
-        metrics.custom_distribution.geckoview_per_document_site_origins.count
-      ) AS `geckoview_per_document_site_origins`,
-      STRUCT(
-        metrics.custom_distribution.js_baseline_compile_percentage.sum,
-        metrics.custom_distribution.js_baseline_compile_percentage.values,
-        metrics.custom_distribution.js_baseline_compile_percentage.count
-      ) AS `js_baseline_compile_percentage`,
-      STRUCT(
-        metrics.custom_distribution.js_delazification_percentage.sum,
-        metrics.custom_distribution.js_delazification_percentage.values,
-        metrics.custom_distribution.js_delazification_percentage.count
-      ) AS `js_delazification_percentage`,
-      STRUCT(
-        metrics.custom_distribution.js_execution_percentage.sum,
-        metrics.custom_distribution.js_execution_percentage.values,
-        metrics.custom_distribution.js_execution_percentage.count
-      ) AS `js_execution_percentage`,
-      STRUCT(
-        metrics.custom_distribution.js_xdr_encode_percentage.sum,
-        metrics.custom_distribution.js_xdr_encode_percentage.values,
-        metrics.custom_distribution.js_xdr_encode_percentage.count
-      ) AS `js_xdr_encode_percentage`,
-      STRUCT(
-        metrics.custom_distribution.performance_clone_deserialize_items.sum,
-        metrics.custom_distribution.performance_clone_deserialize_items.values,
-        metrics.custom_distribution.performance_clone_deserialize_items.count
-      ) AS `performance_clone_deserialize_items`,
-      STRUCT(
-        metrics.custom_distribution.search_terms_group_size_distribution.sum,
-        metrics.custom_distribution.search_terms_group_size_distribution.values,
-        metrics.custom_distribution.search_terms_group_size_distribution.count
-      ) AS `search_terms_group_size_distribution`,
-      STRUCT(
-        metrics.custom_distribution.power_battery_percentage_when_user_active.sum,
-        metrics.custom_distribution.power_battery_percentage_when_user_active.values,
-        metrics.custom_distribution.power_battery_percentage_when_user_active.count
-      ) AS `power_battery_percentage_when_user_active`,
-      STRUCT(
-        metrics.custom_distribution.pdfjs_time_to_view.count,
-        metrics.custom_distribution.pdfjs_time_to_view.sum,
-        metrics.custom_distribution.pdfjs_time_to_view.values
-      ) AS `pdfjs_time_to_view`,
-      STRUCT(
-        metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.count,
-        metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.sum,
-        metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.values
-      ) AS `timer_thread_timers_fired_per_wakeup`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_access_fixup_diff.count,
-        metrics.custom_distribution.networking_cookie_access_fixup_diff.sum,
-        metrics.custom_distribution.networking_cookie_access_fixup_diff.values
-      ) AS `networking_cookie_access_fixup_diff`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_creation_fixup_diff.count,
-        metrics.custom_distribution.networking_cookie_creation_fixup_diff.sum,
-        metrics.custom_distribution.networking_cookie_creation_fixup_diff.values
-      ) AS `networking_cookie_creation_fixup_diff`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_download_throughput.count,
-        metrics.custom_distribution.networking_http_1_download_throughput.sum,
-        metrics.custom_distribution.networking_http_1_download_throughput.values
-      ) AS `networking_http_1_download_throughput`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_download_throughput.count,
-        metrics.custom_distribution.networking_http_2_download_throughput.sum,
-        metrics.custom_distribution.networking_http_2_download_throughput.values
-      ) AS `networking_http_2_download_throughput`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_download_throughput.count,
-        metrics.custom_distribution.networking_http_3_download_throughput.sum,
-        metrics.custom_distribution.networking_http_3_download_throughput.values
-      ) AS `networking_http_3_download_throughput`,
-      STRUCT(
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.count,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.sum,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.values
-      ) AS `cookie_banners_click_query_selector_run_count_per_window_frame`,
-      STRUCT(
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.count,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.sum,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.values
-      ) AS `cookie_banners_click_query_selector_run_count_per_window_top_level`,
-      STRUCT(
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.count,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.sum,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.values
-      ) AS `cookie_banners_click_query_selector_run_duration_per_window_frame`,
-      STRUCT(
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.count,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.sum,
-        metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.values
-      ) AS `cookie_banners_click_query_selector_run_duration_per_window_top_level`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_upload_throughput.count,
-        metrics.custom_distribution.networking_http_1_upload_throughput.sum,
-        metrics.custom_distribution.networking_http_1_upload_throughput.values
-      ) AS `networking_http_1_upload_throughput`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_upload_throughput.count,
-        metrics.custom_distribution.networking_http_2_upload_throughput.sum,
-        metrics.custom_distribution.networking_http_2_upload_throughput.values
-      ) AS `networking_http_2_upload_throughput`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_upload_throughput.count,
-        metrics.custom_distribution.networking_http_3_upload_throughput.sum,
-        metrics.custom_distribution.networking_http_3_upload_throughput.values
-      ) AS `networking_http_3_upload_throughput`,
-      STRUCT(
-        metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.count,
-        metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.sum,
-        metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.values
-      ) AS `fog_validation_gvsv_number_of_unique_site_origins_all_tabs`,
-      STRUCT(
-        metrics.custom_distribution.extensions_timing_event_page_running_time.count,
-        metrics.custom_distribution.extensions_timing_event_page_running_time.sum,
-        metrics.custom_distribution.extensions_timing_event_page_running_time.values
-      ) AS `extensions_timing_event_page_running_time`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_count_part_by_key.count,
-        metrics.custom_distribution.networking_cookie_count_part_by_key.sum,
-        metrics.custom_distribution.networking_cookie_count_part_by_key.values
-      ) AS `networking_cookie_count_part_by_key`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_count_partitioned.count,
-        metrics.custom_distribution.networking_cookie_count_partitioned.sum,
-        metrics.custom_distribution.networking_cookie_count_partitioned.values
-      ) AS `networking_cookie_count_partitioned`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_count_total.count,
-        metrics.custom_distribution.networking_cookie_count_total.sum,
-        metrics.custom_distribution.networking_cookie_count_total.values
-      ) AS `networking_cookie_count_total`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_count_unpart_by_key.count,
-        metrics.custom_distribution.networking_cookie_count_unpart_by_key.sum,
-        metrics.custom_distribution.networking_cookie_count_unpart_by_key.values
-      ) AS `networking_cookie_count_unpart_by_key`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_count_unpartitioned.count,
-        metrics.custom_distribution.networking_cookie_count_unpartitioned.sum,
-        metrics.custom_distribution.networking_cookie_count_unpartitioned.values
-      ) AS `networking_cookie_count_unpartitioned`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_purge_entry_max.count,
-        metrics.custom_distribution.networking_cookie_purge_entry_max.sum,
-        metrics.custom_distribution.networking_cookie_purge_entry_max.values
-      ) AS `networking_cookie_purge_entry_max`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_purge_max.count,
-        metrics.custom_distribution.networking_cookie_purge_max.sum,
-        metrics.custom_distribution.networking_cookie_purge_max.values
-      ) AS `networking_cookie_purge_max`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_upload_throughput_100.count,
-        metrics.custom_distribution.networking_http_1_upload_throughput_100.sum,
-        metrics.custom_distribution.networking_http_1_upload_throughput_100.values
-      ) AS `networking_http_1_upload_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_upload_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_1_upload_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_1_upload_throughput_10_50.values
-      ) AS `networking_http_1_upload_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_upload_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_1_upload_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_1_upload_throughput_50_100.values
-      ) AS `networking_http_1_upload_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_upload_throughput_100.count,
-        metrics.custom_distribution.networking_http_2_upload_throughput_100.sum,
-        metrics.custom_distribution.networking_http_2_upload_throughput_100.values
-      ) AS `networking_http_2_upload_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_upload_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_2_upload_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_2_upload_throughput_10_50.values
-      ) AS `networking_http_2_upload_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_upload_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_2_upload_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_2_upload_throughput_50_100.values
-      ) AS `networking_http_2_upload_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_upload_throughput_100.count,
-        metrics.custom_distribution.networking_http_3_upload_throughput_100.sum,
-        metrics.custom_distribution.networking_http_3_upload_throughput_100.values
-      ) AS `networking_http_3_upload_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_upload_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_3_upload_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_3_upload_throughput_10_50.values
-      ) AS `networking_http_3_upload_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_upload_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_3_upload_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_3_upload_throughput_50_100.values
-      ) AS `networking_http_3_upload_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.pdfjs_editing_highlight_thickness.count,
-        metrics.custom_distribution.pdfjs_editing_highlight_thickness.sum,
-        metrics.custom_distribution.pdfjs_editing_highlight_thickness.values
-      ) AS `pdfjs_editing_highlight_thickness`,
-      STRUCT(
-        metrics.custom_distribution.network_tls_early_data_bytes_written.count,
-        metrics.custom_distribution.network_tls_early_data_bytes_written.sum,
-        metrics.custom_distribution.network_tls_early_data_bytes_written.values
-      ) AS `network_tls_early_data_bytes_written`,
-      STRUCT(
-        metrics.custom_distribution.cert_compression_brotli_saved_bytes.count,
-        metrics.custom_distribution.cert_compression_brotli_saved_bytes.sum,
-        metrics.custom_distribution.cert_compression_brotli_saved_bytes.values
-      ) AS `cert_compression_brotli_saved_bytes`,
-      STRUCT(
-        metrics.custom_distribution.cert_compression_zlib_saved_bytes.count,
-        metrics.custom_distribution.cert_compression_zlib_saved_bytes.sum,
-        metrics.custom_distribution.cert_compression_zlib_saved_bytes.values
-      ) AS `cert_compression_zlib_saved_bytes`,
-      STRUCT(
-        metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.count,
-        metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.sum,
-        metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.values
-      ) AS `bounce_tracking_protection_num_hosts_per_purge_run`,
-      STRUCT(
-        metrics.custom_distribution.cert_compression_zstd_saved_bytes.count,
-        metrics.custom_distribution.cert_compression_zstd_saved_bytes.sum,
-        metrics.custom_distribution.cert_compression_zstd_saved_bytes.values
-      ) AS `cert_compression_zstd_saved_bytes`,
-      STRUCT(
-        metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.count,
-        metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.sum,
-        metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.values
-      ) AS `networking_cookie_chips_partition_limit_overflow`,
-      STRUCT(
-        metrics.custom_distribution.geolocation_accuracy.count,
-        metrics.custom_distribution.geolocation_accuracy.sum,
-        metrics.custom_distribution.geolocation_accuracy.values
-      ) AS `geolocation_accuracy`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_download_throughput_100.count,
-        metrics.custom_distribution.networking_http_3_download_throughput_100.sum,
-        metrics.custom_distribution.networking_http_3_download_throughput_100.values
-      ) AS `networking_http_3_download_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_download_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_3_download_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_3_download_throughput_10_50.values
-      ) AS `networking_http_3_download_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_download_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_3_download_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_3_download_throughput_50_100.values
-      ) AS `networking_http_3_download_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.count,
-        metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.sum,
-        metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.values
-      ) AS `networking_http_3_udp_datagram_segments_received`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_loss_ratio.count,
-        metrics.custom_distribution.networking_http_3_loss_ratio.sum,
-        metrics.custom_distribution.networking_http_3_loss_ratio.values
-      ) AS `networking_http_3_loss_ratio`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.count,
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.sum,
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.values
-      ) AS `networking_http_3_ecn_ce_ect0_ratio_received`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.count,
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.sum,
-        metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.values
-      ) AS `networking_http_3_ecn_ce_ect0_ratio_sent`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_download_throughput_100.count,
-        metrics.custom_distribution.networking_http_1_download_throughput_100.sum,
-        metrics.custom_distribution.networking_http_1_download_throughput_100.values
-      ) AS `networking_http_1_download_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_download_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_1_download_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_1_download_throughput_10_50.values
-      ) AS `networking_http_1_download_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_1_download_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_1_download_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_1_download_throughput_50_100.values
-      ) AS `networking_http_1_download_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_download_throughput_100.count,
-        metrics.custom_distribution.networking_http_2_download_throughput_100.sum,
-        metrics.custom_distribution.networking_http_2_download_throughput_100.values
-      ) AS `networking_http_2_download_throughput_100`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_download_throughput_10_50.count,
-        metrics.custom_distribution.networking_http_2_download_throughput_10_50.sum,
-        metrics.custom_distribution.networking_http_2_download_throughput_10_50.values
-      ) AS `networking_http_2_download_throughput_10_50`,
-      STRUCT(
-        metrics.custom_distribution.networking_http_2_download_throughput_50_100.count,
-        metrics.custom_distribution.networking_http_2_download_throughput_50_100.sum,
-        metrics.custom_distribution.networking_http_2_download_throughput_50_100.values
-      ) AS `networking_http_2_download_throughput_50_100`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_effectiveness.count,
-        metrics.custom_distribution.javascript_gc_effectiveness.sum,
-        metrics.custom_distribution.javascript_gc_effectiveness.values
-      ) AS `javascript_gc_effectiveness`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_mark_rate.count,
-        metrics.custom_distribution.javascript_gc_mark_rate.sum,
-        metrics.custom_distribution.javascript_gc_mark_rate.values
-      ) AS `javascript_gc_mark_rate`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_mmu_50.count,
-        metrics.custom_distribution.javascript_gc_mmu_50.sum,
-        metrics.custom_distribution.javascript_gc_mmu_50.values
-      ) AS `javascript_gc_mmu_50`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_nursery_promotion_rate.count,
-        metrics.custom_distribution.javascript_gc_nursery_promotion_rate.sum,
-        metrics.custom_distribution.javascript_gc_nursery_promotion_rate.values
-      ) AS `javascript_gc_nursery_promotion_rate`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_parallel_mark_interruptions.count,
-        metrics.custom_distribution.javascript_gc_parallel_mark_interruptions.sum,
-        metrics.custom_distribution.javascript_gc_parallel_mark_interruptions.values
-      ) AS `javascript_gc_parallel_mark_interruptions`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_parallel_mark_speedup.count,
-        metrics.custom_distribution.javascript_gc_parallel_mark_speedup.sum,
-        metrics.custom_distribution.javascript_gc_parallel_mark_speedup.values
-      ) AS `javascript_gc_parallel_mark_speedup`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_parallel_mark_utilization.count,
-        metrics.custom_distribution.javascript_gc_parallel_mark_utilization.sum,
-        metrics.custom_distribution.javascript_gc_parallel_mark_utilization.values
-      ) AS `javascript_gc_parallel_mark_utilization`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_pretenure_count.count,
-        metrics.custom_distribution.javascript_gc_pretenure_count.sum,
-        metrics.custom_distribution.javascript_gc_pretenure_count.values
-      ) AS `javascript_gc_pretenure_count`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_slice_count.count,
-        metrics.custom_distribution.javascript_gc_slice_count.sum,
-        metrics.custom_distribution.javascript_gc_slice_count.values
-      ) AS `javascript_gc_slice_count`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_tenured_survival_rate.count,
-        metrics.custom_distribution.javascript_gc_tenured_survival_rate.sum,
-        metrics.custom_distribution.javascript_gc_tenured_survival_rate.values
-      ) AS `javascript_gc_tenured_survival_rate`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_zone_count.count,
-        metrics.custom_distribution.javascript_gc_zone_count.sum,
-        metrics.custom_distribution.javascript_gc_zone_count.values
-      ) AS `javascript_gc_zone_count`,
-      STRUCT(
-        metrics.custom_distribution.javascript_gc_zones_collected.count,
-        metrics.custom_distribution.javascript_gc_zones_collected.sum,
-        metrics.custom_distribution.javascript_gc_zones_collected.values
-      ) AS `javascript_gc_zones_collected`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_collected.count,
-        metrics.custom_distribution.cycle_collector_collected.sum,
-        metrics.custom_distribution.cycle_collector_collected.values
-      ) AS `cycle_collector_collected`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_slice_during_idle.count,
-        metrics.custom_distribution.cycle_collector_slice_during_idle.sum,
-        metrics.custom_distribution.cycle_collector_slice_during_idle.values
-      ) AS `cycle_collector_slice_during_idle`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_visited_gced.count,
-        metrics.custom_distribution.cycle_collector_visited_gced.sum,
-        metrics.custom_distribution.cycle_collector_visited_gced.values
-      ) AS `cycle_collector_visited_gced`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_visited_ref_counted.count,
-        metrics.custom_distribution.cycle_collector_visited_ref_counted.sum,
-        metrics.custom_distribution.cycle_collector_visited_ref_counted.values
-      ) AS `cycle_collector_visited_ref_counted`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_worker_collected.count,
-        metrics.custom_distribution.cycle_collector_worker_collected.sum,
-        metrics.custom_distribution.cycle_collector_worker_collected.values
-      ) AS `cycle_collector_worker_collected`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_worker_visited_gced.count,
-        metrics.custom_distribution.cycle_collector_worker_visited_gced.sum,
-        metrics.custom_distribution.cycle_collector_worker_visited_gced.values
-      ) AS `cycle_collector_worker_visited_gced`,
-      STRUCT(
-        metrics.custom_distribution.cycle_collector_worker_visited_ref_counted.count,
-        metrics.custom_distribution.cycle_collector_worker_visited_ref_counted.sum,
-        metrics.custom_distribution.cycle_collector_worker_visited_ref_counted.values
-      ) AS `cycle_collector_worker_visited_ref_counted`,
-      STRUCT(
-        metrics.custom_distribution.memory_phc_slots_allocated.count,
-        metrics.custom_distribution.memory_phc_slots_allocated.sum,
-        metrics.custom_distribution.memory_phc_slots_allocated.values
-      ) AS `memory_phc_slots_allocated`,
-      STRUCT(
-        metrics.custom_distribution.memory_phc_slots_freed.count,
-        metrics.custom_distribution.memory_phc_slots_freed.sum,
-        metrics.custom_distribution.memory_phc_slots_freed.values
-      ) AS `memory_phc_slots_freed`,
-      STRUCT(
-        metrics.custom_distribution.application_reputation_local.count,
-        metrics.custom_distribution.application_reputation_local.sum,
-        metrics.custom_distribution.application_reputation_local.values
-      ) AS `application_reputation_local`,
-      STRUCT(
-        metrics.custom_distribution.application_reputation_server.count,
-        metrics.custom_distribution.application_reputation_server.sum,
-        metrics.custom_distribution.application_reputation_server.values
-      ) AS `application_reputation_server`,
-      STRUCT(
-        metrics.custom_distribution.application_reputation_server_verdict.count,
-        metrics.custom_distribution.application_reputation_server_verdict.sum,
-        metrics.custom_distribution.application_reputation_server_verdict.values
-      ) AS `application_reputation_server_verdict`,
-      STRUCT(
-        metrics.custom_distribution.a11y_consumers.count,
-        metrics.custom_distribution.a11y_consumers.sum,
-        metrics.custom_distribution.a11y_consumers.values
-      ) AS `a11y_consumers`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_cookie_behavior.count,
-        metrics.custom_distribution.contentblocking_cookie_behavior.sum,
-        metrics.custom_distribution.contentblocking_cookie_behavior.values
-      ) AS `contentblocking_cookie_behavior`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_query_stripping_param_count.count,
-        metrics.custom_distribution.contentblocking_query_stripping_param_count.sum,
-        metrics.custom_distribution.contentblocking_query_stripping_param_count.values
-      ) AS `contentblocking_query_stripping_param_count`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_storage_access_remaining_days.count,
-        metrics.custom_distribution.contentblocking_storage_access_remaining_days.sum,
-        metrics.custom_distribution.contentblocking_storage_access_remaining_days.values
-      ) AS `contentblocking_storage_access_remaining_days`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_strip_on_share_length_decrease.count,
-        metrics.custom_distribution.contentblocking_strip_on_share_length_decrease.sum,
-        metrics.custom_distribution.contentblocking_strip_on_share_length_decrease.values
-      ) AS `contentblocking_strip_on_share_length_decrease`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_strip_on_share_params_removed.count,
-        metrics.custom_distribution.contentblocking_strip_on_share_params_removed.sum,
-        metrics.custom_distribution.contentblocking_strip_on_share_params_removed.values
-      ) AS `contentblocking_strip_on_share_params_removed`,
-      STRUCT(
-        metrics.custom_distribution.contentblocking_tracking_protection_shield.count,
-        metrics.custom_distribution.contentblocking_tracking_protection_shield.sum,
-        metrics.custom_distribution.contentblocking_tracking_protection_shield.values
-      ) AS `contentblocking_tracking_protection_shield`,
-      STRUCT(
-        metrics.custom_distribution.cookie_purging_origins_purged.count,
-        metrics.custom_distribution.cookie_purging_origins_purged.sum,
-        metrics.custom_distribution.cookie_purging_origins_purged.values
-      ) AS `cookie_purging_origins_purged`,
-      STRUCT(
-        metrics.custom_distribution.cookie_purging_trackers_with_user_interaction.count,
-        metrics.custom_distribution.cookie_purging_trackers_with_user_interaction.sum,
-        metrics.custom_distribution.cookie_purging_trackers_with_user_interaction.values
-      ) AS `cookie_purging_trackers_with_user_interaction`,
-      STRUCT(
-        metrics.custom_distribution.fontlist_dwritefont_delayedinit_count.count,
-        metrics.custom_distribution.fontlist_dwritefont_delayedinit_count.sum,
-        metrics.custom_distribution.fontlist_dwritefont_delayedinit_count.values
-      ) AS `fontlist_dwritefont_delayedinit_count`,
-      STRUCT(
-        metrics.custom_distribution.fontlist_dwritefont_init_problem.count,
-        metrics.custom_distribution.fontlist_dwritefont_init_problem.sum,
-        metrics.custom_distribution.fontlist_dwritefont_init_problem.values
-      ) AS `fontlist_dwritefont_init_problem`,
-      STRUCT(
-        metrics.custom_distribution.predictor_base_confidence.count,
-        metrics.custom_distribution.predictor_base_confidence.sum,
-        metrics.custom_distribution.predictor_base_confidence.values
-      ) AS `predictor_base_confidence`,
-      STRUCT(
-        metrics.custom_distribution.predictor_confidence.count,
-        metrics.custom_distribution.predictor_confidence.sum,
-        metrics.custom_distribution.predictor_confidence.values
-      ) AS `predictor_confidence`,
-      STRUCT(
-        metrics.custom_distribution.predictor_global_degradation.count,
-        metrics.custom_distribution.predictor_global_degradation.sum,
-        metrics.custom_distribution.predictor_global_degradation.values
-      ) AS `predictor_global_degradation`,
-      STRUCT(
-        metrics.custom_distribution.predictor_learn_attempts.count,
-        metrics.custom_distribution.predictor_learn_attempts.sum,
-        metrics.custom_distribution.predictor_learn_attempts.values
-      ) AS `predictor_learn_attempts`,
-      STRUCT(
-        metrics.custom_distribution.predictor_predictions_calculated.count,
-        metrics.custom_distribution.predictor_predictions_calculated.sum,
-        metrics.custom_distribution.predictor_predictions_calculated.values
-      ) AS `predictor_predictions_calculated`,
-      STRUCT(
-        metrics.custom_distribution.predictor_prefetch_decision_reason.count,
-        metrics.custom_distribution.predictor_prefetch_decision_reason.sum,
-        metrics.custom_distribution.predictor_prefetch_decision_reason.values
-      ) AS `predictor_prefetch_decision_reason`,
-      STRUCT(
-        metrics.custom_distribution.predictor_prefetch_ignore_reason.count,
-        metrics.custom_distribution.predictor_prefetch_ignore_reason.sum,
-        metrics.custom_distribution.predictor_prefetch_ignore_reason.values
-      ) AS `predictor_prefetch_ignore_reason`,
-      STRUCT(
-        metrics.custom_distribution.predictor_subresource_degradation.count,
-        metrics.custom_distribution.predictor_subresour

⚠️ 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.

3 participants