Skip to content

Conversation

scholtzan
Copy link
Collaborator

Description

This PR implements a mechanism to cache dryrun results locally for a configured amount of time. The cache gets invalidated if, for example, the query changes.

Reviewer, please follow this checklist

@scholtzan scholtzan force-pushed the cache-dryrun-result-locally branch from 4d4e365 to 3aae64d Compare September 16, 2025 17:40
@dataops-ci-bot

This comment has been minimized.

@scholtzan scholtzan force-pushed the cache-dryrun-result-locally branch from 3aae64d to d60da1b Compare September 16, 2025 19:27
@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@scholtzan scholtzan force-pushed the cache-dryrun-result-locally branch from 58e40de to 25e3e9c Compare September 16, 2025 21:00
@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@scholtzan scholtzan force-pushed the cache-dryrun-result-locally branch from dcd907c to 037db4e Compare September 17, 2025 17:26
@dataops-ci-bot
Copy link

Integration report for "[run-tests] log cache key"

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/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix/metrics: schema.yaml
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-17 17:33:18.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml	2025-09-17 17:46:02.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-17 17:33:18.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml	2025-09-17 17:46:09.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/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-17 17:33:17.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/broken_site_report/metadata.yaml	2025-09-17 17:58:40.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-17 17:33:17.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/crash/metadata.yaml	2025-09-17 17:58:40.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-17 17:33:17.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml	2025-09-17 17:45:56.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-17 17:33:17.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml	2025-09-17 17:46:06.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-17 17:33:17.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql	2025-09-17 17:45:07.000000000 +0000
@@ -4057,12 +4057,42 @@
     client_info.windows_build_number,
     client_info.session_count,
     client_info.session_id,
-    client_info.attribution,
-    client_info.distribution
+    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`,
   document_id,
   events,
-  metadata,
+  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`,
   STRUCT(
     STRUCT(
       metrics.boolean.gfx_status_headless,
@@ -4418,332 +4448,1636 @@
       metrics.counter.media_mkv_content_count
     ) AS `counter`,
     STRUCT(
-      metrics.custom_distribution.geckoview_document_site_origins,
-      metrics.custom_distribution.gfx_checkerboard_peak_pixel_count,
-      metrics.custom_distribution.gfx_checkerboard_severity,
-      metrics.custom_distribution.gfx_content_frame_time_from_paint,
-      metrics.custom_distribution.gfx_content_frame_time_from_vsync,
-      metrics.custom_distribution.gfx_content_frame_time_with_svg,
-      metrics.custom_distribution.gfx_content_frame_time_without_resource_upload,
-      metrics.custom_distribution.gfx_content_frame_time_without_upload,
-      metrics.custom_distribution.geckoview_per_document_site_origins,
-      metrics.custom_distribution.js_baseline_compile_percentage,
-      metrics.custom_distribution.js_delazification_percentage,
-      metrics.custom_distribution.js_execution_percentage,
-      metrics.custom_distribution.js_xdr_encode_percentage,
-      metrics.custom_distribution.performance_clone_deserialize_items,
-      metrics.custom_distribution.search_terms_group_size_distribution,
-      metrics.custom_distribution.power_battery_percentage_when_user_active,
-      metrics.custom_distribution.pdfjs_time_to_view,
-      metrics.custom_distribution.timer_thread_timers_fired_per_wakeup,
-      metrics.custom_distribution.networking_cookie_access_fixup_diff,
-      metrics.custom_distribution.networking_cookie_creation_fixup_diff,
-      metrics.custom_distribution.networking_http_1_download_throughput,
-      metrics.custom_distribution.networking_http_2_download_throughput,
-      metrics.custom_distribution.networking_http_3_download_throughput,
-      metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame,
-      metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level,
-      metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame,
-      metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level,
-      metrics.custom_distribution.networking_http_1_upload_throughput,
-      metrics.custom_distribution.networking_http_2_upload_throughput,
-      metrics.custom_distribution.networking_http_3_upload_throughput,
-      metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs,
-      metrics.custom_distribution.extensions_timing_event_page_running_time,
-      metrics.custom_distribution.networking_cookie_count_part_by_key,
-      metrics.custom_distribution.networking_cookie_count_partitioned,
-      metrics.custom_distribution.networking_cookie_count_total,
-      metrics.custom_distribution.networking_cookie_count_unpart_by_key,
-      metrics.custom_distribution.networking_cookie_count_unpartitioned,
-      metrics.custom_distribution.networking_cookie_purge_entry_max,
-      metrics.custom_distribution.networking_cookie_purge_max,
-      metrics.custom_distribution.networking_http_1_upload_throughput_100,
-      metrics.custom_distribution.networking_http_1_upload_throughput_10_50,
-      metrics.custom_distribution.networking_http_1_upload_throughput_50_100,
-      metrics.custom_distribution.networking_http_2_upload_throughput_100,
-      metrics.custom_distribution.networking_http_2_upload_throughput_10_50,
-      metrics.custom_distribution.networking_http_2_upload_throughput_50_100,
-      metrics.custom_distribution.networking_http_3_upload_throughput_100,
-      metrics.custom_distribution.networking_http_3_upload_throughput_10_50,
-      metrics.custom_distribution.networking_http_3_upload_throughput_50_100,
-      metrics.custom_distribution.pdfjs_editing_highlight_thickness,
-      metrics.custom_distribution.network_tls_early_data_bytes_written,
-      metrics.custom_distribution.cert_compression_brotli_saved_bytes,
-      metrics.custom_distribution.cert_compression_zlib_saved_bytes,
-      metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run,
-      metrics.custom_distribution.cert_compression_zstd_saved_bytes,
-      metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow,
-      metrics.custom_distribution.geolocation_accuracy,
-      metrics.custom_distribution.networking_http_3_download_throughput_100,
-      metrics.custom_distribution.networking_http_3_download_throughput_10_50,
-      metrics.custom_distribution.networking_http_3_download_throughput_50_100,
-      metrics.custom_distribution.networking_http_3_udp_datagram_segments_received,
-      metrics.custom_distribution.networking_http_3_loss_ratio,
-      metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received,
-      metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent,
-      metrics.custom_distribution.networking_http_1_download_throughput_100,
-      metrics.custom_distribution.networking_http_1_download_throughput_10_50,
-      metrics.custom_distribution.networking_http_1_download_throughput_50_100,
-      metrics.custom_distribution.networking_http_2_download_throughput_100,
-      metrics.custom_distribution.networking_http_2_download_throughput_10_50,
-      metrics.custom_distribution.networking_http_2_download_throughput_50_100,
-      metrics.custom_distribution.javascript_gc_effectiveness,
-      metrics.custom_distribution.javascript_gc_mark_rate,
-      metrics.custom_distribution.javascript_gc_mmu_50,
-      metrics.custom_distribution.javascript_gc_nursery_promotion_rate,
-      metrics.custom_distribution.javascript_gc_parallel_mark_interruptions,
-      metrics.custom_distribution.javascript_gc_parallel_mark_speedup,
-      metrics.custom_distribution.javascript_gc_parallel_mark_utilization,
-      metrics.custom_distribution.javascript_gc_pretenure_count,
-      metrics.custom_distribution.javascript_gc_slice_count,
-      metrics.custom_distribution.javascript_gc_tenured_survival_rate,
-      metrics.custom_distribution.javascript_gc_zone_count,
-      metrics.custom_distribution.javascript_gc_zones_collected,
-      metrics.custom_distribution.cycle_collector_collected,
-      metrics.custom_distribution.cycle_collector_slice_during_idle,
-      metrics.custom_distribution.cycle_collector_visited_gced,
-      metrics.custom_distribution.cycle_collector_visited_ref_counted,
-      metrics.custom_distribution.cycle_collector_worker_collected,
-      metrics.custom_distribution.cycle_collector_worker_visited_gced,
-      metrics.custom_distribution.cycle_collector_worker_visited_ref_counted,
-      metrics.custom_distribution.memory_phc_slots_allocated,
-      metrics.custom_distribution.memory_phc_slots_freed,
-      metrics.custom_distribution.application_reputation_local,
-      metrics.custom_distribution.application_reputation_server,
-      metrics.custom_distribution.application_reputation_server_verdict,
-      metrics.custom_distribution.a11y_consumers,
-      metrics.custom_distribution.contentblocking_cookie_behavior,
-      metrics.custom_distribution.contentblocking_query_stripping_param_count,
-      metrics.custom_distribution.contentblocking_storage_access_remaining_days,
-      metrics.custom_distribution.contentblocking_strip_on_share_length_decrease,
-      metrics.custom_distribution.contentblocking_strip_on_share_params_removed,
-      metrics.custom_distribution.contentblocking_tracking_protection_shield,
-      metrics.custom_distribution.cookie_purging_origins_purged,
-      metrics.custom_distribution.cookie_purging_trackers_with_user_interaction,
-      metrics.custom_distribution.fontlist_dwritefont_delayedinit_count,
-      metrics.custom_distribution.fontlist_dwritefont_init_problem,
-      metrics.custom_distribution.predictor_base_confidence,
-      metrics.custom_distribution.predictor_confidence,
-      metrics.custom_distribution.predictor_global_degradation,
-      metrics.custom_distribution.predictor_learn_attempts,
-      metrics.custom_distribution.predictor_predictions_calculated,
-      metrics.custom_distribution.predictor_prefetch_decision_reason,
-      metrics.custom_distribution.predictor_prefetch_ignore_reason,
-      metrics.custom_distribution.predictor_subresource_degradation,
-      metrics.custom_distribution.predictor_total_preconnects,
-      metrics.custom_distribution.predictor_total_predictions,
-      metrics.custom_distribution.predictor_total_prefetches,
-      metrics.custom_distribution.predictor_total_preresolves,
-      metrics.custom_distribution.thumbnails_capture_done_reason_2,
-      metrics.custom_distribution.thumbnails_queue_size_on_capture,
-      metrics.custom_distribution.urlclassifier_completion_error,
-      metrics.custom_distribution.urlclassifier_threathit_network_error,
-      metrics.custom_distribution.urlclassifier_threathit_remote_status,
-      metrics.custom_distribution.urlclassifier_ui_events,
-      metrics.custom_distribution.webcrypto_alg,
-      metrics.custom_distribution.webcrypto_method,
-      metrics.custom_distribution.image_decode_chunks,
-      metrics.custom_distribution.image_decode_count,
-      metrics.custom_distribution.media_mp4_parse_num_sample_description_entries,
-      metrics.custom_distribution.webrtc_audio_quality_inbound_bandwidth_kbits,
-      metrics.custom_distribution.webrtc_audio_quality_inbound_packetloss_rate,
-      metrics.custom_distribution.webrtc_audio_quality_outbound_packetloss_rate,
-      metrics.custom_distribution.webrtc_call_type,
-      metrics.custom_distribution.webrtc_get_user_media_type,
-      metrics.custom_distribution.webrtc_max_audio_receive_track,
-      metrics.custom_distribution.webrtc_max_audio_send_track,
-      metrics.custom_distribution.webrtc_max_video_receive_track,
-      metrics.custom_distribution.webrtc_max_video_send_track,
-      metrics.custom_distribution.webrtc_renegotiations,
-      metrics.custom_distribution.webrtc_video_decoder_bitrate_avg_per_call_kbps,
-      metrics.custom_distribution.webrtc_video_decoder_bitrate_std_dev_per_call_kbps,
-      metrics.custom_distribution.webrtc_video_decoder_discarded_packets_per_call_ppm,
-      metrics.custom_distribution.webrtc_video_decoder_framerate_10x_std_dev_per_call,
-      metrics.custom_distribution.webrtc_video_decoder_framerate_avg_per_call,
-      metrics.custom_distribution.webrtc_video_encoder_bitrate_avg_per_call_kbps,
-      metrics.custom_distribution.webrtc_video_encoder_bitrate_std_dev_per_call_kbps,
-      metrics.custom_distribution.webrtc_video_encoder_framerate_10x_std_dev_per_call,
-      metrics.custom_distribution.webrtc_video_encoder_framerate_avg_per_call,
-      metrics.custom_distribution.webrtc_video_quality_inbound_bandwidth_kbits,
-      metrics.custom_distribution.webrtc_video_quality_inbound_packetloss_rate,
-      metrics.custom_distribution.webrtc_video_quality_outbound_packetloss_rate,
-      metrics.custom_distribution.mixed_content_hsts,
-      metrics.custom_distribution.mixed_content_page_load,
-      metrics.custom_distribution.mixed_content_unblock_counter,
-      metrics.custom_distribution.cert_chain_key_size_status,
-      metrics.custom_distribution.cert_ev_status,
-      metrics.custom_distribution.cert_pinning_failures_by_ca,
-      metrics.custom_distribution.cert_pinning_moz_results_by_host,
-      metrics.custom_distribution.cert_pinning_moz_test_results_by_host,
-      metrics.custom_distribution.cert_validation_http_request_result,
-      metrics.custom_distribution.cert_validation_success_by_ca,
-      metrics.custom_distribution.dns_blocklist_count,
-      metrics.custom_distribution.dns_lookup_method,
-      metrics.custom_distribution.hpack_bytes_evicted_ratio_compressor,
-      metrics.custom_distribution.hpack_bytes_evicted_ratio_decompressor,
-      metrics.custom_distribution.hpack_elements_evicted_compressor,
-      metrics.custom_distribution.hpack_elements_evicted_decompressor,
-      metrics.custom_distribution.hpack_peak_count_compressor,
-      metrics.custom_distribution.hpack_peak_count_decompressor,
-      metrics.custom_distribution.http_altsvc_entries_per_header,
-      metrics.custom_distribution.http_channel_disposition,
-      metrics.custom_distribution.http_content_encoding,
-      metrics.custom_distribution.http_proxy_type,
-      metrics.custom_distribution.http_request_per_conn,
-      metrics.custom_distribution.http_request_per_page,
-      metrics.custom_distribution.http_request_per_page_from_cache,
-      metrics.custom_distribution.http_response_version,
-      metrics.custom_distribution.http_saw_quic_alt_protocol,
-      metrics.custom_distribution.http_transaction_ech_retry_ech_failed_count,
-      metrics.custom_distribution.http_transaction_ech_retry_others_count,
-      metrics.custom_distribution.http_transaction_ech_retry_with_ech_count,
-      metrics.custom_distribution.http_transaction_ech_retry_without_ech_count,
-      metrics.custom_distribution.http_transaction_restart_reason,
-      metrics.custom_distribution.media_video_dropped_compositor_frames_proportion_exponential,
-      metrics.custom_distribution.media_video_dropped_decoded_frames_proportion_exponential,
-      metrics.custom_distribution.media_video_dropped_frames_proportion,
-      metrics.custom_distribution.media_video_dropped_frames_proportion_exponential,
-      metrics.custom_distribution.media_video_dropped_sink_frames_proportion_exponential,
-      metrics.custom_distribution.network_back_pressure_suspension_cp_type,
-      metrics.custom_distribution.network_cache_v2_input_stream_status,
-      metrics.custom_distribution.network_cache_v2_output_stream_status,
-      metrics.custom_distribution.network_http_cache_entry_reuse_count,
-      metrics.custom_distribution.spdy_goaway_local,
-      metrics.custom_distribution.spdy_goaway_peer,
-      metrics.custom_distribution.spdy_parallel_streams,
-      metrics.custom_distribution.spdy_request_per_conn,
-      metrics.custom_distribution.spdy_server_initiated_streams,
-      metrics.custom_distribution.spdy_settings_max_streams,
-      metrics.custom_distribution.spdy_syn_ratio,
-      metrics.custom_distribution.spdy_syn_reply_ratio,
-      metrics.custom_distribution.ssl_auth_algorithm_full,
-      metrics.custom_distribution.ssl_auth_ecdsa_curve_full,
-      metrics.custom_distribution.ssl_auth_rsa_key_size_full,
-      metrics.custom_distribution.ssl_cert_error_overrides,
-      metrics.custom_distribution.ssl_cert_verification_errors,
-      metrics.custom_distribution.ssl_ct_policy_non_compliant_connections_by_ca,
-      metrics.custom_distribution.ssl_handshake_completed,
-      metrics.custom_distribution.ssl_handshake_privacy,
-      metrics.custom_distribution.ssl_handshake_result,
-      metrics.custom_distribution.ssl_handshake_result_conservative,
-      metrics.custom_distribution.ssl_handshake_result_ech,
-      metrics.custom_distribution.ssl_handshake_result_ech_grease,
-      metrics.custom_distribution.ssl_handshake_result_first_try,
-      metrics.custom_distribution.ssl_handshake_version,
-      metrics.custom_distribution.ssl_kea_dhe_key_size_full,
-      metrics.custom_distribution.ssl_kea_ecdhe_curve_full,
-      metrics.custom_distribution.ssl_kea_rsa_key_size_full,
-      metrics.custom_distribution.ssl_key_exchange_algorithm_full,
-      metrics.custom_distribution.ssl_key_exchange_algorithm_resumed,
-      metrics.custom_distribution.ssl_npn_type,
-      metrics.custom_distribution.ssl_ocsp_stapling,
-      metrics.custom_distribution.ssl_permanent_cert_error_overrides,
-      metrics.custom_distribution.ssl_reasons_for_not_false_starting,
-      metrics.custom_distribution.ssl_scts_origin,
-      metrics.custom_distribution.ssl_scts_per_connection,
-      metrics.custom_distribution.ssl_scts_verification_status,
-      metrics.custom_distribution.ssl_tls10_intolerance_reason_post,
-      metrics.custom_distribution.ssl_tls10_intolerance_reason_pre,
-      metrics.custom_distribution.ssl_tls11_intolerance_reason_post,
-      metrics.custom_distribution.ssl_tls11_intolerance_reason_pre,
-      metrics.custom_distribution.ssl_tls12_intolerance_reason_post,
-      metrics.custom_distribution.ssl_tls12_intolerance_reason_pre,
-      metrics.custom_distribution.ssl_tls13_intolerance_reason_post,
-      metrics.custom_distribution.ssl_tls13_intolerance_reason_pre,
-      metrics.custom_distribution.ssl_version_fallback_inappropriate,
-      metrics.custom_distribution.tls_cipher_suite,
-      metrics.custom_distribution.readermode_download_result,
-      metrics.custom_distribution.readermode_parse_result,
-      metrics.custom_distribution.http3_blocked_by_stream_limit_per_conn,
-      metrics.custom_distribution.http3_drop_dgrams,
-      metrics.custom_distribution.http3_loss_ratio,
-      metrics.custom_distribution.http3_request_per_conn,
-      metrics.custom_distribution.http3_saved_dgrams,
-      metrics.custom_distribution.http3_sending_blocked_by_flow_control_per_trans,
-      metrics.custom_distribution.http3_trans_blocked_by_stream_limit_per_conn,
-      metrics.custom_distribution.http3_trans_sending_blocked_by_flow_control_per_conn,
-      metrics.custom_distribution.update_bits_result_complete,
-      metrics.custom_distribution.update_bits_result_partial,
-      metrics.custom_distribution.update_check_code_external,
-      metrics.custom_distribution.update_check_code_notify,
-      metrics.custom_distribution.update_check_code_subsequent,
-      metrics.custom_distribution.update_download_code_complete,
-      metrics.custom_distribution.update_download_code_partial,
-      metrics.custom_distribution.update_download_code_unknown,
-      metrics.custom_distribution.update_pref_service_errors_external,
-      metrics.custom_distribution.update_pref_service_errors_notify,
-      metrics.custom_distribution.update_pref_service_errors_subsequent,
-      metrics.custom_distribution.update_pref_update_cancelations_external,
-      metrics.custom_distribution.update_pref_update_cancelations_notify,
-      metrics.custom_distribution.update_pref_update_cancelations_subsequent,
-      metrics.custom_distribution.update_state_code_complete_stage,
-      metrics.custom_distribution.update_state_code_complete_startup,
-      metrics.custom_distribution.update_state_code_partial_stage,
-      metrics.custom_distribution.update_state_code_partial_startup,
-      metrics.custom_distribution.update_state_code_unknown_stage,
-      metrics.custom_distribution.update_state_code_unknown_startup,
-      metrics.custom_distribution.update_status_error_code_complete_stage,
-      metrics.custom_distribution.update_status_error_code_complete_startup,
-      metrics.custom_distribution.update_status_error_code_partial_stage,
-      metrics.custom_distribution.update_status_error_code_partial_startup,
-      metrics.custom_distribution.update_status_error_code_unknown_stage,
-      metrics.custom_distribution.update_status_error_code_unknown_startup,
-      metrics.custom_distribution.devtools_inspector_number_of_css_grids_in_a_page,
-      metrics.custom_distribution.devtools_toolbox_host,
-      metrics.custom_distribution.devtools_heap_snapshot_edge_count,
-      metrics.custom_distribution.devtools_heap_snapshot_node_count,
-      metrics.custom_distribution.region_fetch_result,
-      metrics.custom_distribution.screenwakelock_release_battery_level_discharging,
-      metrics.custom_distribution.memory_ghost_windows,
-      metrics.custom_distribution.memory_heap_overhead_fraction,
-      metrics.custom_distribution.memory_js_compartments_system,
-      metrics.custom_distribution.memory_js_compartments_user,
-      metrics.custom_distribution.memory_js_realms_system,
-      metrics.custom_distribution.memory_js_realms_user,
-      metrics.custom_distribution.memory_low_memory_events_physical,
-      metrics.custom_distribution.memory_page_faults_hard,
-      metrics.custom_distribution.pwmgr_login_page_safety,
-      metrics.custom_distribution.pwmgr_prompt_remember_action,
-      metrics.custom_distribution.pwmgr_prompt_update_action,
-      metrics.custom_distribution.apz_zoom_pinchsource,
-      metrics.custom_distribution.dom_forget_skippable_during_idle,
-      metrics.custom_distribution.dom_forget_skippable_frequency,
-      metrics.custom_distribution.dom_gc_slice_during_idle,
-      metrics.custom_distribution.gecko_safe_mode_usage,
-      metrics.custom_distribution.gfx_composite_swap_time,
-      metrics.custom_distribution.gfx_content_failed_to_acquire_device,
-      metrics.custom_distribution.gfx_crash,
-      metrics.custom_distribution.gfx_device_reset_reason,
-      metrics.custom_distribution.gfx_display_scaling,
-      metrics.custom_distribution.gfx_forced_device_reset_reason,
-      metrics.custom_distribution.gfx_graphics_driver_startup_test,
-      metrics.custom_distribution.gfx_sanity_test,
-      metrics.custom_distribution.security_addon_signature_verification_status,
-      metrics.custom_distribution.security_content_signature_verification_status,
-      metrics.custom_distribution.security_ntlm_module_used,
-      metrics.custom_distribution.security_referrer_policy_count,
-      metrics.custom_distribution.security_ui_events,
-      metrics.custom_distribution.sync_device_count_desktop,
-      metrics.custom_distribution.sync_device_count_mobile,
-      metrics.custom_distribution.webfont_compression_woff,
-      metrics.custom_distribution.webfont_compression_woff2,
-      metrics.custom_distribution.webfont_fonttype,
-      metrics.custom_distribution.webfont_srctype,
-      metrics.custom_distribution.http_dns_httpssvc_connection_failed_reason,
-      metrics.custom_distribution.http_dns_httpssvc_record_receiving_stage,
-      metrics.custom_distribution.http_dnt_usage,
-      metrics.custom_distribution.http_tls_early_data_negotiated,
-      metrics.custom_distribution.network_backgroundfilesaver_thread_count,
-      metrics.custom_distribution.network_id,
-      metrics.custom_distribution.network_ipv4_and_ipv6_address_connectivity,
-      metrics.custom_distribution.websockets_handshake_type,
-      metrics.custom_distribution.networking_local_network_access_port,
-      metrics.custom_distribution.cert_pinning_failures_by_ca_2,
-      metrics.custom_distribution.cert_validation_success_by_ca_2,
-      metrics.custom_distribution.ssl_ct_policy_non_compliant_connections_by_ca_2,
-      metrics.custom_distribution.networking_http_3_udp_datagram_segments_sent,
-      metrics.custom_distribution.ssl_scts_from_tiled_logs_per_connection,
-      metrics.custom_distribution.quotamanager_initialize_temporarystorage_non_persisted_zero_usage_origins
+      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.predi

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