Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deng 3763 increment changed tables #5704

Merged
merged 8 commits into from
May 31, 2024

Conversation

chelseybeck
Copy link
Contributor

@chelseybeck chelseybeck commented May 31, 2024

What changed:

  • changed sync tables to incremental + partitioned
  • removed raw sql checks - they're no longer required since we're using incremental
  • added update timestamp to subscriptions sync payload + changed to use this filter in sync
  • removed changed subscriptions table as no longer needed

Checklist for reviewer:

  • Commits should reference a bug or github issue, if relevant (if a bug is referenced, the pull request should include the bug number in the title).
  • If the PR comes from a fork, trigger integration CI tests by running the Push to upstream workflow and provide the <username>:<branch> of the fork as parameter. The parameter will also show up
    in the logs of the manual-trigger-required-for-fork CI task together with more detailed instructions.
  • If adding a new field to a query, ensure that the schema and dependent downstream schemas have been updated.
  • When adding a new derived dataset, ensure that data is not available already (fully or partially) and recommend extending an existing dataset in favor of creating new ones. Data can be available in the bigquery-etl repository, looker-hub or in looker-spoke-default.

For modifications to schemas in restricted namespaces (see CODEOWNERS):

┆Issue is synchronized with this Jira Task

@dataops-ci-bot
Copy link

Integration report for "updating comments"

sql.diff

Click to expand!
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/dags/bqetl_braze.py /tmp/workspace/generated-sql/dags/bqetl_braze.py
--- /tmp/workspace/main-generated-sql/dags/bqetl_braze.py	2024-05-31 20:06:24.000000000 +0000
+++ /tmp/workspace/generated-sql/dags/bqetl_braze.py	2024-05-31 20:18:48.000000000 +0000
@@ -175,18 +175,6 @@
         task_concurrency=1,
     )
 
-    braze_external__changed_subscriptions__v1 = bigquery_etl_query(
-        task_id="braze_external__changed_subscriptions__v1",
-        destination_table="changed_subscriptions_v1",
-        dataset_id="braze_external",
-        project_id="moz-fx-data-shared-prod",
-        owner="cbeck@mozilla.com",
-        email=["cbeck@mozilla.com", "leli@mozilla.com"],
-        date_partition_parameter=None,
-        depends_on_past=False,
-        task_concurrency=1,
-    )
-
     braze_external__changed_users__v1 = bigquery_etl_query(
         task_id="braze_external__changed_users__v1",
         destination_table="changed_users_v1",
@@ -350,19 +338,6 @@
         retries=0,
     )
 
-    checks__fail_braze_external__changed_subscriptions__v1 = bigquery_dq_check(
-        task_id="checks__fail_braze_external__changed_subscriptions__v1",
-        source_table="changed_subscriptions_v1",
-        dataset_id="braze_external",
-        project_id="moz-fx-data-shared-prod",
-        is_dq_check_fail=True,
-        owner="cbeck@mozilla.com",
-        email=["cbeck@mozilla.com", "leli@mozilla.com"],
-        depends_on_past=False,
-        task_concurrency=1,
-        retries=0,
-    )
-
     checks__warn_braze_external__changed_firefox_subscriptions_sync__v1 = bigquery_dq_check(
         task_id="checks__warn_braze_external__changed_firefox_subscriptions_sync__v1",
         source_table="changed_firefox_subscriptions_sync_v1",
@@ -402,19 +377,6 @@
         retries=0,
     )
 
-    checks__warn_braze_external__changed_subscriptions__v1 = bigquery_dq_check(
-        task_id="checks__warn_braze_external__changed_subscriptions__v1",
-        source_table="changed_subscriptions_v1",
-        dataset_id="braze_external",
-        project_id="moz-fx-data-shared-prod",
-        is_dq_check_fail=False,
-        owner="cbeck@mozilla.com",
-        email=["cbeck@mozilla.com", "leli@mozilla.com"],
-        depends_on_past=False,
-        task_concurrency=1,
-        retries=0,
-    )
-
     checks__warn_braze_external__changed_users__v1 = bigquery_dq_check(
         task_id="checks__warn_braze_external__changed_users__v1",
         source_table="changed_users_v1",
@@ -494,7 +456,7 @@
     braze_derived__waitlists__v1.set_upstream(checks__fail_braze_derived__users__v1)
 
     braze_external__changed_firefox_subscriptions_sync__v1.set_upstream(
-        checks__fail_braze_external__changed_subscriptions__v1
+        checks__fail_braze_derived__subscriptions__v1
     )
 
     braze_external__changed_newsletters_sync__v1.set_upstream(
@@ -505,10 +467,6 @@
         checks__fail_braze_derived__products__v1
     )
 
-    braze_external__changed_subscriptions__v1.set_upstream(
-        checks__fail_braze_derived__subscriptions__v1
-    )
-
     braze_external__changed_users__v1.set_upstream(
         braze_external__users_previous_day_snapshot__v2
     )
@@ -551,14 +509,6 @@
 
     checks__fail_braze_derived__waitlists__v1.set_upstream(braze_derived__waitlists__v1)
 
-    checks__fail_braze_external__changed_subscriptions__v1.set_upstream(
-        braze_external__changed_subscriptions__v1
-    )
-
-    checks__fail_braze_external__changed_subscriptions__v1.set_upstream(
-        checks__fail_braze_derived__subscriptions__v1
-    )
-
     checks__warn_braze_external__changed_firefox_subscriptions_sync__v1.set_upstream(
         braze_external__changed_firefox_subscriptions_sync__v1
     )
@@ -571,14 +521,6 @@
         braze_external__changed_products_sync__v1
     )
 
-    checks__warn_braze_external__changed_subscriptions__v1.set_upstream(
-        braze_external__changed_subscriptions__v1
-    )
-
-    checks__warn_braze_external__changed_subscriptions__v1.set_upstream(
-        checks__fail_braze_derived__subscriptions__v1
-    )
-
     checks__warn_braze_external__changed_users__v1.set_upstream(
         braze_external__changed_users__v1
     )
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external: changed_subscriptions_v1
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	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bedrock_derived/event_monitoring_live_v1/materialized_view.sql	2024-05-31 20:05:46.000000000 +0000
@@ -50,7 +50,7 @@
         client_info.app_display_version AS version,
         ping_info
       FROM
-        `moz-fx-data-shared-prod.bedrock_live.interaction_v1`
+        `moz-fx-data-shared-prod.bedrock_live.non_interaction_v1`
       UNION ALL
       SELECT
         submission_timestamp,
@@ -60,7 +60,7 @@
         client_info.app_display_version AS version,
         ping_info
       FROM
-        `moz-fx-data-shared-prod.bedrock_live.events_v1`
+        `moz-fx-data-shared-prod.bedrock_live.interaction_v1`
       UNION ALL
       SELECT
         submission_timestamp,
@@ -70,7 +70,7 @@
         client_info.app_display_version AS version,
         ping_info
       FROM
-        `moz-fx-data-shared-prod.bedrock_live.non_interaction_v1`
+        `moz-fx-data-shared-prod.bedrock_live.events_v1`
     )
   CROSS JOIN
     UNNEST(events) AS event,
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/checks.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,20 +1,3 @@
--- raw SQL checks
--- checking to see if there is new data since the last run
--- if not, fail or we will have blank sync tables
-
-#fail
-ASSERT(
-  SELECT
-    COUNT(1)
-  FROM
-    `moz-fx-data-shared-prod.braze_derived.newsletters_v1`,
-    UNNEST(newsletters) AS newsletters
-  WHERE
-    newsletters.update_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 HOUR)
-) > 0
-AS
-  "No new records in the braze_derived.newsletters_v1 table in the last 7 hours";
-
 -- macro checks
 
 #fail
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/newsletters_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -27,7 +27,6 @@
 references:
   checks.sql:
   - ..
-  - moz-fx-data-shared-prod.braze_derived.newsletters_v1
   query.sql:
   - moz-fx-data-shared-prod.braze_derived.users_v1
   - moz-fx-data-shared-prod.ctms_braze.ctms_newsletters
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/checks.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,22 +1,3 @@
--- raw SQL checks
--- checking to see if there is new data since the last run
--- if not, fail or we will have blank sync tables
-
-#fail
-ASSERT(
--- Retrieves the maximum subscription updated timestamp from the last run to only
--- select recently changed records
-  SELECT
-    COUNT(1)
-  FROM
-    `moz-fx-data-shared-prod.braze_derived.products_v1`,
-    UNNEST(products) AS products
-  WHERE
-    products.subscription_updated_at > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 HOUR)
-) > 0
-AS
-  "No new records in the braze_derived.products_v1 table in the last 7 hours";
-
 -- macro checks
 
 #fail
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/products_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -27,7 +27,6 @@
 references:
   checks.sql:
   - ..
-  - moz-fx-data-shared-prod.braze_derived.products_v1
   query.sql:
   - moz-fx-data-shared-prod.braze_derived.users_v1
   - moz-fx-data-shared-prod.ctms_braze.ctms_fxa
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/subscriptions_map_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/subscriptions_map_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/subscriptions_map_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/subscriptions_map_v1/checks.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,3 +1,5 @@
+--macro checks
+
 #fail
 {{ not_null(["braze_subscription_name", "description", "mozilla_subscription_id", "firefox_subscription_id", "mozilla_dev_subscription_id", "basket_slug"]) }}
 
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/checks.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,19 +1,3 @@
--- raw SQL checks
--- checking to see if there is new data since the last run
--- if not, fail or we will have blank sync tables
-
-#fail
-ASSERT(
-  SELECT
-    COUNT(1)
-  FROM
-    `moz-fx-data-shared-prod.braze_derived.users_v1` AS users
-  WHERE
-    users.update_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 HOUR)
-) > 0
-AS
-  "No new records in the braze_derived.users_v1 table in the last 7 hours";
-
 -- macro checks
 
 #fail
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/users_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -28,7 +28,6 @@
 references:
   checks.sql:
   - ..
-  - moz-fx-data-shared-prod.braze_derived.users_v1
   query.sql:
   - moz-fx-data-shared-prod.braze_derived.subscriptions_map_v1
   - moz-fx-data-shared-prod.ctms_braze.ctms_emails
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/checks.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,19 +1,4 @@
--- raw SQL checks
--- checking to see if there is new data since the last run
--- if not, fail or we will have blank sync tables
-
-#fail
-ASSERT(
-  SELECT
-    COUNT(1)
-  FROM
-    `moz-fx-data-shared-prod.braze_derived.waitlists_v1`,
-    UNNEST(waitlists) AS waitlists
-  WHERE
-    waitlists.update_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 HOUR)
-) > 0
-AS
-  "No new records in the braze_derived.waitlists_v1 table in the last 7 hours";
+-- macro checks
 
 #fail
 {{ not_null(["external_id"]) }} -- to do: add array values
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_derived/waitlists_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -27,7 +27,6 @@
 references:
   checks.sql:
   - ..
-  - moz-fx-data-shared-prod.braze_derived.waitlists_v1
   query.sql:
   - moz-fx-data-shared-prod.braze_derived.users_v1
   - moz-fx-data-shared-prod.ctms_braze.ctms_waitlists
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -33,4 +33,5 @@
   checks.sql:
   - ..
   query.sql:
-  - moz-fx-data-shared-prod.braze_external.changed_subscriptions_v1
+  - moz-fx-data-shared-prod.braze_derived.subscriptions_v1
+  - moz-fx-data-shared-prod.braze_external.changed_firefox_subscriptions_sync_v1
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/query.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_firefox_subscriptions_sync_v1/query.sql	2024-05-31 20:03:52.000000000 +0000
@@ -1,4 +1,26 @@
--- Construct the JSON payload in Braze required format
+-- get the latest update timestamp from the last sync
+WITH max_update AS (
+  SELECT
+    MAX(
+      CAST(JSON_EXTRACT_SCALAR(payload, '$.update_timestamp') AS TIMESTAMP)
+    ) AS latest_subscription_updated_at
+  FROM
+    `moz-fx-data-shared-prod.braze_external.changed_firefox_subscriptions_sync_v1`
+),
+-- get the max update timestamp for each external_id in subscriptions_v1
+max_subscriptions AS (
+  SELECT
+    external_id,
+    MAX(subscriptions.update_timestamp) AS update_timestamp
+  FROM
+    `moz-fx-data-shared-prod.braze_derived.subscriptions_v1`
+  CROSS JOIN
+    UNNEST(subscriptions) AS subscriptions
+  GROUP BY
+    external_id
+)
+-- select all records from subscriptions_v1 that have been updated since the last sync
+-- and construct JSON payload for Braze sync
 SELECT
   CURRENT_TIMESTAMP() AS UPDATED_AT,
   subscriptions.external_id AS EXTERNAL_ID,
@@ -11,12 +33,19 @@
         )
         ORDER BY
           subscriptions_array.update_timestamp DESC
-      ) AS subscription_groups
+      ) AS subscription_groups,
+      max_subscriptions.update_timestamp
     )
   ) AS PAYLOAD
 FROM
-  `moz-fx-data-shared-prod.braze_external.changed_subscriptions_v1` AS subscriptions
+  `moz-fx-data-shared-prod.braze_derived.subscriptions_v1` AS subscriptions
 CROSS JOIN
   UNNEST(subscriptions.subscriptions) AS subscriptions_array
+JOIN
+  max_subscriptions
+  ON subscriptions.external_id = max_subscriptions.external_id
+WHERE
+  subscriptions_array.update_timestamp > (SELECT latest_subscription_updated_at FROM max_update)
 GROUP BY
-  subscriptions.external_id;
+  subscriptions.external_id,
+  max_subscriptions.update_timestamp
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/checks.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/checks.sql	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
--- raw SQL checks
--- checking to see if there is new data since the last run
--- if not, fail or we will have blank sync tables
-
-#fail
-ASSERT(
-  SELECT
-    COUNT(1)
-  FROM
-    `moz-fx-data-shared-prod.braze_derived.subscriptions_v1`,
-    UNNEST(subscriptions) AS subscriptions
-  WHERE
-    subscriptions.update_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 15 HOUR)
-) > 0
-AS
-  "No new records in the braze_external.changed_subscriptions_v1 table in the last 15 hours";
-
--- macro checks
-
-#warn
-{{ not_null(["external_id"]) }}
-
-#warn
-{{ min_row_count(1) }}
-
-#warn
-{{ is_unique(["external_id"]) }}
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/metadata.yaml	1970-01-01 00:00:00.000000000 +0000
@@ -1,37 +0,0 @@
-friendly_name: Braze Changed Subscriptions
-description: |-
-  This table represents changes to user subscriptions since the
-  previous DAG run. It enables us to build the changed subscriptions
-  sync(s)
-
-  See https://mozilla-hub.atlassian.net/browse/DENG-3182
-owners:
-- cbeck@mozilla.com
-labels:
-  schedule: daily
-  owner: cbeck
-  dag: bqetl_braze
-  owner1: cbeck
-scheduling:
-  dag_name: bqetl_braze
-  date_partition_parameter: null
-bigquery:
-  time_partitioning: null
-  range_partitioning: null
-  clustering: null
-workgroup_access:
-- role: roles/bigquery.dataViewer
-  members:
-  - workgroup:braze
-  - workgroup:braze/ingestion-mozilla-dev
-  - workgroup:braze/ingestion-firefox
-- role: roles/bigquery.dataEditor
-  members:
-  - workgroup:braze/writers
-references:
-  checks.sql:
-  - ..
-  - moz-fx-data-shared-prod.braze_derived.subscriptions_v1
-  query.sql:
-  - moz-fx-data-shared-prod.braze_derived.subscriptions_v1
-  - moz-fx-data-shared-prod.braze_external.changed_subscriptions_v1
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/query.sql	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/query.sql	1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
-    -- CTE to determine the maximum update timestamp from changed_subscriptions_v1
-WITH max_update AS (
-  SELECT
-    MAX(subscriptions.update_timestamp) AS latest_subscription_updated_at
-  FROM
-    `moz-fx-data-shared-prod.braze_external.changed_subscriptions_v1` AS changed,
-    UNNEST(changed.subscriptions) AS subscriptions
-)
-  -- Main query to select all records from subscriptions_v1 that have been updated since the last sync
-SELECT
-  subscriptions.external_id,
-  -- Reconstruct the subscriptions array to include only entries with non-null timestamps greater than max_timestamp
-  ARRAY(
-    SELECT AS STRUCT
-      subscriptions_array.subscription_name AS subscription_name,
-      subscriptions_array.firefox_subscription_id AS firefox_subscription_id,
-      subscriptions_array.mozilla_subscription_id AS mozilla_subscription_id,
-      subscriptions_array.mozilla_dev_subscription_id AS mozilla_dev_subscription_id,
-      subscriptions_array.subscription_state AS subscription_state,
-      subscriptions_array.update_timestamp AS update_timestamp
-    FROM
-      UNNEST(subscriptions.subscriptions) AS subscriptions_array
-    WHERE
-      subscriptions_array.update_timestamp > max_update.latest_subscription_updated_at
-      AND subscriptions_array.update_timestamp IS NOT NULL
-  ) AS subscriptions
-FROM
-  `moz-fx-data-shared-prod.braze_derived.subscriptions_v1` AS subscriptions,
-  max_update
-  -- Filter to include only those rows where the new subscriptions array is not empty
-WHERE
-  ARRAY_LENGTH(
-    ARRAY(
-      SELECT
-        1
-      FROM
-        UNNEST(subscriptions.subscriptions) AS subscriptions_array
-      WHERE
-        subscriptions_array.update_timestamp > max_update.latest_subscription_updated_at
-        AND subscriptions_array.update_timestamp IS NOT NULL
-    )
-  ) > 0;
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/schema.yaml	2024-05-31 20:02:57.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_subscriptions_v1/schema.yaml	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-fields:
-- mode: NULLABLE
-  name: external_id
-  type: STRING
-- fields:
-  - mode: NULLABLE
-    name: subscription_name
-    type: STRING
-  - mode: NULLABLE
-    name: firefox_subscription_id
-    type: STRING
-  - mode: NULLABLE
-    name: mozilla_subscription_id
-    type: STRING
-  - mode: NULLABLE
-    name: mozilla_dev_subscription_id
-    type: STRING
-  - mode: NULLABLE
-    name: subscription_state
-    type: STRING
-  - mode: NULLABLE
-    name: update_timestamp
-    type: TIMESTAMP
-  mode: REPEATED
-  name: subscriptions
-  type: RECORD
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_users_sync_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_users_sync_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_users_sync_v1/metadata.yaml	2024-05-31 20:04:32.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/braze_external/changed_users_sync_v1/metadata.yaml	2024-05-31 20:15:34.000000000 +0000
@@ -8,7 +8,7 @@
 owners:
 - cbeck@mozilla.com
 labels:
-  schedule: daily
+  incremental: true
   owner: cbeck
   dag: bqetl_braze
   owner1: cbeck
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	2024-05-31 20:02:56.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates/schema.yaml	2024-05-31 20:10:59.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	2024-05-31 20:02:56.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/event_aggregates_suggest/schema.yaml	2024-05-31 20:10:59.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/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	2024-05-31 20:02:56.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_clients/schema.yaml	2024-05-31 20:12:19.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	2024-05-31 20:02:56.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/funnel_retention_week_4/schema.yaml	2024-05-31 20:12:17.000000000 +0000
@@ -48,6 +48,10 @@
   description: 'The type of source of a client installation.
 
     '
+- name: install_source
+  type: STRING
+  mode: NULLABLE
+  description: null
 - 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/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/schema.yaml	2024-05-31 20:08:40.000000000 +0000
@@ -1642,6 +1642,26 @@
         - name: value
           type: INTEGER
           mode: NULLABLE
+    - name: network_tls_early_data_bytes_written
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: count
+        type: INTEGER
+        mode: NULLABLE
+      - name: sum
+        type: INTEGER
+        mode: NULLABLE
+      - name: values
+        type: RECORD
+        mode: REPEATED
+        fields:
+        - name: key
+          type: STRING
+          mode: NULLABLE
+        - name: value
+          type: INTEGER
+          mode: NULLABLE
   - name: labeled_counter
     type: RECORD
     mode: NULLABLE
@@ -3000,6 +3020,46 @@
       type: RECORD
       mode: REPEATED
       fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+    - name: network_tls_early_data_accepted
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+    - name: network_tls_early_data_negotiated
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+    - name: networking_http_redirect_to_scheme_subresource
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+    - name: networking_http_redirect_to_scheme_top_level
+      type: RECORD
+      mode: REPEATED
+      fields:
       - name: key
         type: STRING
         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	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/metrics/view.sql	2024-05-31 20:08:39.000000000 +0000
@@ -175,7 +175,11 @@
       metrics.labeled_counter.webrtcdtls_srtp_cipher,
       metrics.labeled_counter.media_playback_not_supported_video_per_mime_type,
       metrics.labeled_counter.power_energy_per_process_type,
-      metrics.labeled_counter.bounce_tracking_protection_purge_count
+      metrics.labeled_counter.bounce_tracking_protection_purge_count,
+      metrics.labeled_counter.network_tls_early_data_accepted,
+      metrics.labeled_counter.network_tls_early_data_negotiated,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_subresource,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_top_level
     ) AS `labeled_counter`,
     metrics.quantity,
     metrics.string,
@@ -439,7 +443,8 @@
       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.pdfjs_editing_highlight_thickness,
+      metrics.custom_distribution.network_tls_early_data_bytes_written
     ) AS `custom_distribution`,
     STRUCT(
       metrics.labeled_counter.crash_metrics_crash_count,
@@ -577,7 +582,11 @@
       metrics.labeled_counter.webrtcdtls_srtp_cipher,
       metrics.labeled_counter.media_playback_not_supported_video_per_mime_type,
       metrics.labeled_counter.power_energy_per_process_type,
-      metrics.labeled_counter.bounce_tracking_protection_purge_count
+      metrics.labeled_counter.bounce_tracking_protection_purge_count,
+      metrics.labeled_counter.network_tls_early_data_accepted,
+      metrics.labeled_counter.network_tls_early_data_negotiated,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_subresource,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_top_level
     ) AS `labeled_counter`,
     metrics.quantity,
     STRUCT(
@@ -1067,7 +1076,8 @@
       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.pdfjs_editing_highlight_thickness,
+      metrics.custom_distribution.network_tls_early_data_bytes_written
     ) AS `custom_distribution`,
     STRUCT(
       metrics.labeled_counter.crash_metrics_crash_count,
@@ -1205,7 +1215,11 @@
       metrics.labeled_counter.webrtcdtls_srtp_cipher,
       metrics.labeled_counter.media_playback_not_supported_video_per_mime_type,
       metrics.labeled_counter.power_energy_per_process_type,
-      metrics.labeled_counter.bounce_tracking_protection_purge_count
+      metrics.labeled_counter.bounce_tracking_protection_purge_count,
+      metrics.labeled_counter.network_tls_early_data_accepted,
+      metrics.labeled_counter.network_tls_early_data_negotiated,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_subresource,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_top_level
     ) AS `labeled_counter`,
     metrics.quantity,
     STRUCT(
@@ -1609,7 +1623,11 @@
       metrics.labeled_counter.webrtcdtls_srtp_cipher,
       metrics.labeled_counter.media_playback_not_supported_video_per_mime_type,
       metrics.labeled_counter.power_energy_per_process_type,
-      metrics.labeled_counter.bounce_tracking_protection_purge_count
+      metrics.labeled_counter.bounce_tracking_protection_purge_count,
+      metrics.labeled_counter.network_tls_early_data_accepted,
+      metrics.labeled_counter.network_tls_early_data_negotiated,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_subresource,
+      metrics.labeled_counter.networking_http_redirect_to_scheme_top_level
     ) AS `labeled_counter`,
     metrics.quantity,
     metrics.string,
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/use_counters/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/use_counters/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/use_counters/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/use_counters/schema.yaml	2024-05-31 20:07:25.000000000 +0000
@@ -7230,6 +7230,48 @@
     - name: use_counter_page_js_subclassing_typedarray_type_3
       type: INTEGER
       mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domattr_modified
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domcharacter_data_modified
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domnode_inserted
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domnode_inserted_into_document
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domnode_removed
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domnode_removed_from_document
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_doc_domsubtree_modified
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domattr_modified
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domcharacter_data_modified
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domnode_inserted
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domnode_inserted_into_document
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domnode_removed
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domnode_removed_from_document
+      type: INTEGER
+      mode: NULLABLE
+    - name: use_counter_deprecated_ops_page_domsubtree_modified
+      type: INTEGER
+      mode: NULLABLE
   - name: labeled_counter
     type: RECORD
     mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/crash/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/crash/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/crash/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/crash/schema.yaml	2024-05-31 20:04:58.000000000 +0000
@@ -310,6 +310,40 @@
       description: 'If true, the crash occurred during process startup.
 
         '
+    - name: crash_is_garbage_collecting
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates that the crash occurred while the garbage collector
+        was running.
+
+        '
+    - name: crash_windows_error_reporting
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates if the crash was intercepted by the Windows Error Reporting
+        runtime exception module.
+
+        '
+    - name: dll_blocklist_init_failed
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates whether initialization of the DLL blocklist failed.
+
+        '
+    - name: dll_blocklist_user32_loaded_before
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates whether `user32.dll` was loaded before the DLL blocklist
+        was initialized.
+
+        '
+    - name: environment_headless_mode
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Whether the app was invoked in headless mode via `--headless`
+        or `--backgroundtask`.
+
+        '
   - name: datetime
     type: RECORD
     mode: NULLABLE
@@ -342,6 +376,101 @@
         for the purpose of experimentation enrollment.
 
         '
+    - name: crash_app_build
+      type: STRING
+      mode: NULLABLE
+      description: 'The build id of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_app_channel
+      type: STRING
+      mode: NULLABLE
+      description: 'The release channel of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_app_display_version
+      type: STRING
+      mode: NULLABLE
+      description: 'The version of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_background_task_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The name of the background task if launched as one.
+
+        '
+    - name: crash_font_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The font family name that is being loaded when the crash occurred.
+
+        '
+    - name: crash_ipc_channel_error
+      type: STRING
+      mode: NULLABLE
+      description: 'The error reason for an ipc-based content crash.
+
+        '
+    - name: crash_main_thread_runnable_name
+      type: STRING
+      mode: NULLABLE
+      description: 'Name of the currently executing `nsIRunnable` on the main thread.
+        Nightly-only.
+
+        '
+    - name: crash_minidump_sha256_hash
+      type: STRING
+      mode: NULLABLE
+      description: 'The SHA256 hash of the associated minidump file, if any.
+
+        '
+    - name: crash_moz_crash_reason
+      type: STRING
+      mode: NULLABLE
+      description: 'Contains the string passed to `MOZ_CRASH()`.
+
+        '
+    - name: crash_profiler_child_shutdown_phase
+      type: STRING
+      mode: NULLABLE
+      description: 'The shutdown phase of the profiler.
+
+        '
+    - name: crash_remote_type
+      type: STRING
+      mode: NULLABLE
+      description: 'The type of the content process. See the full list of options
+        [here](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/data/crash-ping.html#remote-process-types).
+
+        '
+    - name: crash_shutdown_progress
+      type: STRING
+      mode: NULLABLE
+      description: 'The shutdown phase in which the crash occurred.
+
+        '
+    - name: crash_windows_file_dialog_error_code
+      type: STRING
+      mode: NULLABLE
+      description: 'The HRESULT returned from a Win32 system call leading to termination
+        of the file-dialog utility process. MozCrashReason is expected to provide
+        context for the value.
+
+        '
+    - name: windows_package_family_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The Package Family Name of Firefox, if installed through an MSIX
+        package.
+
+        '
   - name: timespan
     type: RECORD
     mode: NULLABLE
@@ -360,6 +489,143 @@
         ping''s `UptimeTS` field.
 
         '
+    - name: environment_uptime
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: time_unit
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'The start time of the application.
+
+        '
+  - name: object
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: crash_async_shutdown_timeout
+      type: JSON
+      mode: NULLABLE
+      description: 'Present when a shutdown blocker failed to respond within a reasonable
+        amount of time.
+
+        '
+    - name: crash_quota_manager_shutdown_timeout
+      type: JSON
+      mode: NULLABLE
+      description: 'Contains a list of shutdown steps and status of the quota manager
+        clients.
+
+        '
+    - name: crash_stack_traces
+      type: JSON
+      mode: NULLABLE
+      description: 'Stack trace and module information of the crashing process.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: crash_event_loop_nesting_level
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Indicates the nesting level of the event loop.
+
+        '
+    - name: crash_gpu_process_launch
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The number of times that the GPU process was launched.
+
+        '
+    - name: memory_available_commit
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available commit size.
+
+        '
+    - name: memory_available_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available physical memory.
+
+        '
+    - name: memory_available_swap
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available swap memory.
+
+        '
+    - name: memory_available_virtual
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available virtual memory.
+
+        '
+    - name: memory_low_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The number of times the available memory tracker has detected
+        that free physical memory is running low.
+
+        '
+    - name: memory_oom_allocation_size
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The size of the allocation that caused on OOM crash.
+
+        '
+    - name: memory_purgeable_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The amount of memory that can be deallocated by the OS in case
+        of memory pressure.
+
+        '
+    - name: memory_system_use_percentage
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The percentage of memory in use.
+
+        '
+    - name: memory_texture
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The amount of memory used in textures.
+
+        '
+    - name: memory_total_page_file
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total page file size.
+
+        '
+    - name: memory_total_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total physical memory.
+
+        '
+    - name: memory_total_virtual
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total virtual memory.
+
+        '
+  - name: string_list
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: dll_blocklist_list
+      type: STRING
+      mode: REPEATED
+    - name: environment_experimental_features
+      type: STRING
+      mode: REPEATED
 - name: normalized_app_name
   type: STRING
   mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/metrics/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/metrics/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/metrics/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/metrics/schema.yaml	2024-05-31 20:04:54.000000000 +0000
@@ -2542,6 +2542,62 @@
         would have happened under the dry label.
 
         '
+    - name: network_tls_early_data_accepted
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'TLS early data was used and it was accepted or rejected by the
+        remote host.
+
+        '
+    - name: network_tls_early_data_negotiated
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Sending TLS early data was not possible, possible and used, or
+        possible but not used.
+
+        '
+    - name: networking_http_redirect_to_scheme_subresource
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Count of the HTTP redirection that triggered by subresource, keyed
+        by the URL scheme redirected to
+
+        '
+    - name: networking_http_redirect_to_scheme_top_level
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Count of the HTTP redirection that triggered by top-level document,
+        keyed by the URL scheme redirected to
+
+        '
   - name: memory_distribution
     type: RECORD
     mode: NULLABLE
@@ -9887,6 +9943,32 @@
       description: 'The thickness used to draw a free highlight.
 
         '
+    - name: network_tls_early_data_bytes_written
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: count
+        type: INTEGER
+        mode: NULLABLE
+        description: This was accidentally sent in the past and is now deprecated.
+          See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5
+      - name: sum
+        type: INTEGER
+        mode: NULLABLE
+      - name: values
+        type: RECORD
+        mode: REPEATED
+        fields:
+        - name: key
+          type: STRING
+          mode: NULLABLE
+        - name: value
+          type: INTEGER
+          mode: NULLABLE
+      description: 'Amount of bytes sent using TLS early data at the start of a TLS
+        connection for a given channel.
+
+        '
   - name: url2
     type: RECORD
     mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/use_counters/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/use_counters/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/use_counters/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/use_counters/schema.yaml	2024-05-31 20:04:46.000000000 +0000
@@ -17789,6 +17789,104 @@
         `use.counter.top_level_content_documents_destroyed` to calculate the rate.
 
         '
+    - name: use_counter_deprecated_ops_doc_domattr_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMAttrModified. Compare against `use.counter.content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domcharacter_data_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMCharacterDataModified. Compare against
+        `use.counter.content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domnode_inserted
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMNodeInserted. Compare against `use.counter.content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domnode_inserted_into_document
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMNodeInsertedIntoDocument. Compare against
+        `use.counter.content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domnode_removed
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMNodeRemoved. Compare against `use.counter.content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domnode_removed_from_document
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMNodeRemovedFromDocument. Compare against
+        `use.counter.content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_doc_domsubtree_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a document used DOMSubtreeModified. Compare against `use.counter.content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domattr_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMAttrModified. Compare against `use.counter.top_level_content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domcharacter_data_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMCharacterDataModified. Compare against
+        `use.counter.top_level_content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domnode_inserted
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMNodeInserted. Compare against `use.counter.top_level_content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domnode_inserted_into_document
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMNodeInsertedIntoDocument. Compare against
+        `use.counter.top_level_content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domnode_removed
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMNodeRemoved. Compare against `use.counter.top_level_content_documents_destroyed`
+        to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domnode_removed_from_document
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMNodeRemovedFromDocument. Compare against
+        `use.counter.top_level_content_documents_destroyed` to calculate the rate.
+
+        '
+    - name: use_counter_deprecated_ops_page_domsubtree_modified
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Whether a page used DOMSubtreeModified. Compare against `use.counter.top_level_content_documents_destroyed`
+        to calculate the rate.
+
+        '
   - name: labeled_counter
     type: RECORD
     mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/user_characteristics/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/user_characteristics/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/user_characteristics/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/user_characteristics/schema.yaml	2024-05-31 20:04:48.000000000 +0000
@@ -515,6 +515,12 @@
       description: 'Screen pixel depth property
 
         '
+    - name: characteristics_screen_orientation
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Orientation of the primary screen.
+
+        '
   - name: string
     type: RECORD
     mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks/crash/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks/crash/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks/crash/schema.yaml	2024-05-31 20:03:34.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks/crash/schema.yaml	2024-05-31 20:04:50.000000000 +0000
@@ -246,6 +246,40 @@
       description: 'If true, the crash occurred during process startup.
 
         '
+    - name: crash_is_garbage_collecting
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates that the crash occurred while the garbage collector
+        was running.
+
+        '
+    - name: crash_windows_error_reporting
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates if the crash was intercepted by the Windows Error Reporting
+        runtime exception module.
+
+        '
+    - name: dll_blocklist_init_failed
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates whether initialization of the DLL blocklist failed.
+
+        '
+    - name: dll_blocklist_user32_loaded_before
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Indicates whether `user32.dll` was loaded before the DLL blocklist
+        was initialized.
+
+        '
+    - name: environment_headless_mode
+      type: BOOLEAN
+      mode: NULLABLE
+      description: 'Whether the app was invoked in headless mode via `--headless`
+        or `--backgroundtask`.
+
+        '
   - name: datetime
     type: RECORD
     mode: NULLABLE
@@ -342,6 +376,101 @@
         for the purpose of experimentation enrollment.
 
         '
+    - name: crash_app_build
+      type: STRING
+      mode: NULLABLE
+      description: 'The build id of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_app_channel
+      type: STRING
+      mode: NULLABLE
+      description: 'The release channel of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_app_display_version
+      type: STRING
+      mode: NULLABLE
+      description: 'The version of the application. This may differ from `client_info`
+        because a main process crash may be reported later by a different (e.g. updated)
+        client.
+
+        '
+    - name: crash_background_task_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The name of the background task if launched as one.
+
+        '
+    - name: crash_font_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The font family name that is being loaded when the crash occurred.
+
+        '
+    - name: crash_ipc_channel_error
+      type: STRING
+      mode: NULLABLE
+      description: 'The error reason for an ipc-based content crash.
+
+        '
+    - name: crash_main_thread_runnable_name
+      type: STRING
+      mode: NULLABLE
+      description: 'Name of the currently executing `nsIRunnable` on the main thread.
+        Nightly-only.
+
+        '
+    - name: crash_minidump_sha256_hash
+      type: STRING
+      mode: NULLABLE
+      description: 'The SHA256 hash of the associated minidump file, if any.
+
+        '
+    - name: crash_moz_crash_reason
+      type: STRING
+      mode: NULLABLE
+      description: 'Contains the string passed to `MOZ_CRASH()`.
+
+        '
+    - name: crash_profiler_child_shutdown_phase
+      type: STRING
+      mode: NULLABLE
+      description: 'The shutdown phase of the profiler.
+
+        '
+    - name: crash_remote_type
+      type: STRING
+      mode: NULLABLE
+      description: 'The type of the content process. See the full list of options
+        [here](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/data/crash-ping.html#remote-process-types).
+
+        '
+    - name: crash_shutdown_progress
+      type: STRING
+      mode: NULLABLE
+      description: 'The shutdown phase in which the crash occurred.
+
+        '
+    - name: crash_windows_file_dialog_error_code
+      type: STRING
+      mode: NULLABLE
+      description: 'The HRESULT returned from a Win32 system call leading to termination
+        of the file-dialog utility process. MozCrashReason is expected to provide
+        context for the value.
+
+        '
+    - name: windows_package_family_name
+      type: STRING
+      mode: NULLABLE
+      description: 'The Package Family Name of Firefox, if installed through an MSIX
+        package.
+
+        '
   - name: timespan
     type: RECORD
     mode: NULLABLE
@@ -360,6 +489,143 @@
         ping''s `UptimeTS` field.
 
         '
+    - name: environment_uptime
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: time_unit
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'The start time of the application.
+
+        '
+  - name: object
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: crash_async_shutdown_timeout
+      type: JSON
+      mode: NULLABLE
+      description: 'Present when a shutdown blocker failed to respond within a reasonable
+        amount of time.
+
+        '
+    - name: crash_quota_manager_shutdown_timeout
+      type: JSON
+      mode: NULLABLE
+      description: 'Contains a list of shutdown steps and status of the quota manager
+        clients.
+
+        '
+    - name: crash_stack_traces
+      type: JSON
+      mode: NULLABLE
+      description: 'Stack trace and module information of the crashing process.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: crash_event_loop_nesting_level
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Indicates the nesting level of the event loop.
+
+        '
+    - name: crash_gpu_process_launch
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The number of times that the GPU process was launched.
+
+        '
+    - name: memory_available_commit
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available commit size.
+
+        '
+    - name: memory_available_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available physical memory.
+
+        '
+    - name: memory_available_swap
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available swap memory.
+
+        '
+    - name: memory_available_virtual
+      type: INTEGER
+      mode: NULLABLE
+      description: 'Available virtual memory.
+
+        '
+    - name: memory_low_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The number of times the available memory tracker has detected
+        that free physical memory is running low.
+
+        '
+    - name: memory_oom_allocation_size
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The size of the allocation that caused on OOM crash.
+
+        '
+    - name: memory_purgeable_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The amount of memory that can be deallocated by the OS in case
+        of memory pressure.
+
+        '
+    - name: memory_system_use_percentage
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The percentage of memory in use.
+
+        '
+    - name: memory_texture
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The amount of memory used in textures.
+
+        '
+    - name: memory_total_page_file
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total page file size.
+
+        '
+    - name: memory_total_physical
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total physical memory.
+
+        '
+    - name: memory_total_virtual
+      type: INTEGER
+      mode: NULLABLE
+      description: 'The total virtual memory.
+
+        '
+  - name: string_list
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: dll_blocklist_list
+      type: STRING
+      mode: REPEATED
+    - name: environment_experimental_features
+      type: STRING
+      mode: REPEATED
 - name: normalized_app_name
   type: STRING
   mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks_derived/event_monitoring_live_v1/materialized_view.sql	2024-05-31 20:03:33.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks_derived/event_monitoring_live_v1/materialized_view.sql	2024-05-31 20:05:47.000000000 +0000
@@ -50,7 +50,7 @@
         client_info.app_display_version AS version,
         ping_info
       FROM
-        `moz-fx-data-shared-prod.firefox_desktop_background_tasks_live.events_v1`
+        `moz-fx-data-shared-prod.firefox_desktop_background_tasks_live.background_tasks_v1`
 

⚠️ Only part of the diff is displayed.

Link to full diff

@chelseybeck chelseybeck merged commit e9c2f04 into main May 31, 2024
21 checks passed
@chelseybeck chelseybeck deleted the DENG-3763-increment-changed-tables branch May 31, 2024 21:09
lucia-vargas-a pushed a commit that referenced this pull request Jun 6, 2024
* changing sync tables to incremental

* removing checks no longer needed

* adding timestamp to payload and using it in changed query

* formatting sql

* deleting changed subscriptions

* updating firefox subscriptions query

* updating comments
lucia-vargas-a added a commit that referenced this pull request Jun 6, 2024
* Changes to active_users_aggregates.

* GROWTH-147 iOS LTV (#5400)

* Adding a new table (moz-fx-data-shared-prod.firefox_ios_derived.ltv_states_v1) & corresponding view (moz-fx-data-shared-prod.firefox_ios.ltv_states)

* GROWTH-147 backfill (#5407)

* DENG-3462 create view on top of clients_last_seen_v2 with new boolean… (#5406)

* DENG-3462 create view on top of clients_last_seen_v2 with new boolean columns is_dau, is_wau, etc

* DENG-3462 remove is_mobile column

* Backfill new `newtab_clients_daily_v1` table (#5408)

* Backfill new table

* update end_date to incorporate new fields

* GROWTH-147 complete backfill of firefox_ios_derived.ltv_states_v1 (#5409)

* Google ads etl (#5393)

* Add UDFs for extracting campaign info

* Add campaigns table

* Add ad_groups table

* Add schemas

* Uncomment UDFs

* Format sql files

* Reformat UDFs

* Use common most_recent_rec terminology

* Replace 3 UDFs with one

* reformat & fix tests

* Reformat again

* App campaign stats (#5413)

* Extract campaign_id and ad_group_id in fac

* Add Android App Campaign Stats table

* Dont rely on fac view

* Reformat

* DENG-2621: Add pageload derived tables (#5359)

* Added nightly, experiments and 1pct tables

* DENG-3235: Added deletion date field to bigquery_tables_inventory_v1 (#5386)

* Added deletion date field

---------

Co-authored-by: Chelsey Beck <64881557+chelseybeck@users.noreply.github.com>

* DENG-3471 suppression list from campaign monitor (#5412)

* DENG-3471 suppression list from campaign monitor

* Update sql/moz-fx-data-shared-prod/marketing_suppression_list_external/campaign_monitor_suppression_list_v1/metadata.yaml

Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>

---------

Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>

* Complete backfill (#5414)

* DENG-3008 Updating Braze Models (#5405)

* updating create statement

* joining on users table to filter for active and ensuring there is at least one subscription

* joining on users to filter for active

* adding dev subscription group

* removing fxa_id in favor of has_fxa

* bringing in update timestamp for downstream use

* updating formatting and adding filter for active users

* adding filter for one active newsletter

* updating tests

* adding fxa id back to users table to join to products

* updating query

* updating values

* updating tests

* fix test for subscriptions

* changing schema to array

* updating format

* updating to pull in all subscriptions with statuses

* removing create statement

* updating subscriptions query to make it an array and updating associated tests

* updating formatting and comment

---------

Co-authored-by: Leli Schiestl <lschiestl@mozilla.com>

* Deng 3471 suppression list out of campaign monitor api (#5416)

* DENG-3471 suppression list from campaign monitor

* Update sql/moz-fx-data-shared-prod/marketing_suppression_list_external/campaign_monitor_suppression_list_v1/metadata.yaml

Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>

* after seans coder review

---------

Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>

* fixing the readme (#5418)

* DENG-3511 update funnel_derived_clients to remove channel to match updated private bqetl (#5419)

* DENG-3511 update views to use updated udfs (#5420)

* DENG-3511 remove channel from input since no longer required for updated UDF

* DENG-3511 remove channel from input since no longer required for updated UDF

* DENG-3186 new desktop engagement model (#5415)

* DENG-3186 new desktop engagement model

* DENG-3186 add distribution ID to eng client V1 query

* DENG-3186 - add distribution ID to the schema.yaml for eng client

* DENG-3186 add distribution ID to the agg table

* DENG-3186 adding locale to both client & agg tables

* DENG-3186 add app_version to client & agg tables

* DENG-3168 move lifecycle stage from engagement agg table to engagement agg view

* DENG-3186 - add new desktop_engagement_client_v1 table to shredder

* DENG-3186 update formatting of config.py

* DENG-3186 switch to get country, os, os version, and build # from clients last seen and remove join to clients daily

* DENG-3168 backfill new desktop_engagement_client_v1 table (#5422)

* Update Glean generators checks. (#5323)

* Update Glean generators checks.

* Remove new_profiles check, not required.

* warn or fail depending on range

* Set check to fail if clients are missing, which is an ETL issue.

* Checks fail when difference is higher than 1%.

* Checks fail when difference is higher than 1%.

* Make checks fail on a smaller difference.

* Deng 3410 main suppression list (#5423)

* DENG-3471 suppression list from campaign monitor

* status quo

* DENG-3410 Main Suppression List

* adding metadata

* DENG-3125 Update clients last seen v2 (#5617)

Explicitly adding column order to schema.yaml and query, and will also swap out with newly backfilled table

* Deng 3763 increase schedule frequency (#5590)

* changing to 8 hours to align with schedules

* updating schedule

* updating schedule and aligning checks

* updating error text

* DENG-3462 - update clients last seen to use clients_last_seen_v2 instead of v1 (#5447)

Co-authored-by: Brad Ochocki Szasz <brad.ochocki@gmail.com>

* Revert "RS-788 Add support for organic searches with ads to the mobile search…" (#5676)

This reverts commit 9814059.

* Include VPN iOS network extension app in VPN events ETLs. (#5677)

* feat: remove backfill.yaml for org_mozilla_fennec_aurora_derived/baseline_clients_daily_v1 as it was not used (#5673)

* Normalizing campaign names (#5681)

* Normalizing campaign names

Converted all the campaign names to upper case to prevent us from seeing situations like eu and EU in our segments

* Fixed the placement of the UPPER function

* removing acoustic last engaged timestamp from models and tests (#5678)

* removing acoustic last engaged timestamp

* removing suppression list model and tests

* removing dependency until frequency is increased

* formatting

* formatting

* Add isp name to desktop_active_users (#5686)

* feat: update firefox_android_clients_v1 to pull distribution_id only from the baseline ping (#5685)

* feat: update firefox_android_clients_v1 to pull distribution_id only from the baseline ping

* feat: update firefox_android_clients_v1 baseline test schema to include distribution_id

* fix: resolve distribution_id not in baseline error

---------

Co-authored-by: Katie Windau <153020235+kwindau@users.noreply.github.com>

* adding search_with_ads_organic to mobile_clients_daily table (#5683)

* adding search_with_ads_organic to mobile_clients_daily table

* Fix the CI tests

---------

Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>

* Fix setting partitioning metadata (#5690)

* DENG-3186 start managed backfill of desktop_engagement_clients_v1 (#5691)

* chore: refactor schema deploys, add and use deploy utils (#5674)

* chore: refactor schema deploys, add and use utils

* Update tests

* Add deploy tests

* Use string representation of table object in log statements

* removing upstream dependencies for now (#5688)

* removing dependencies

* adding comment

* feat: add backfill.yaml to fenix and firefox_ios retention_v1 query (#5679)

* DENG-3186 complete managed backfill of destkop_engagement_clients_v1 (#5695)

* Reverted EXPANSION to Expansion (#5698)

* fix: update entry date to be the same as the end_date (#5699)

* fix(deploy): skip (instead of fail) deploys with explicitly null destination_table (#5700)

* Revert "adding search_with_ads_organic to mobile_clients_daily table (#5683)" (#5701)

This reverts commit 71bbaa2.

* DENG-3186 initiate managed backfill for desktop_engagement_v1 (#5694)

* feat: NULL empty strings in attribution fields when generating retention_clients and engagement_clients results (#5680)

* feat: NULL empty strings in attribution fields when generating retention_clients and engagement_clients results

* fix: fix engagement and retention clients views inside kpi_mobile generator

* Add registration funnels config using legacy events (#5696)

* Add registration funnels using legacy events

* Update registration_funnels_legacy_events.toml

---------

Co-authored-by: Kimberly Siegler <kimberlysiegler@Kimberlys-MacBook-Pro-2.local>
Co-authored-by: Anna Scholtz <anna@scholtzan.net>

* Deng 3763 increment changed tables (#5704)

* changing sync tables to incremental

* removing checks no longer needed

* adding timestamp to payload and using it in changed query

* formatting sql

* deleting changed subscriptions

* updating firefox subscriptions query

* updating comments

* DENG-3186 complete managed backfill of desktop engagement v1 (#5705)

* updating labels (#5706)

* removed backfill yaml (#5707)

* Fix mobile_search_clients_daily (#5702)

* Update mobile_search_clients_daily tempate

* Update mobile_search_clients_daily tests

* adding builders application newsletter to map (#5708)

* feat: moving 2024-05-31 fenix_derived.retention_v1 backfill entry to Complete (#5709)

* Clean up views that are no longer needed (#5713)

* feat: make changes to generate retention and engagement for focus and klar products also (#5710)

* add scheduling definition into parameter to fix error where data not … (#5716)

* add scheduling definition into parameter to fix error where data not going into the proper partition

* remove {raw} around date as not using sql generator here

* add backfill.yaml, initiate backfill for desktop_retention_clients_v1 (#5718)

* updating metadata for incremental runs (#5717)

* updating metadata for incremental runs

* changing back to day from hour

* missed one

* updating to remove partition parameter and add tags (#5719)

* The app_name is Firefox Desktop in all cases. (#5720)

* complete managed backfill for desktop-client-retetion-v1 (#5724)

* add backfill.yaml for managed backfill of desktop_retention_v1 aggregation table (#5727)

* feat: add bqetl_mobile_kpi_metrics DAG and schedule mobile_kpi_metrics using it (#5715)

* feat: add backfill.yaml for firefox_ios_derived.retention_v1 (#5728)

* adding search with ads organic to mobile_search_aggregates and search_revenue_levers_daily table (#5682)

* updates to mobile_search_aggregates and search_revenue_levers_table

adding search_with_ads_organic to mobile_search_aggregates and search_revenue_levers_table

* Update query.sql

* Fix schema.yaml and test files

* Fix CI issue

Fix CI issue

---------

Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>

* Exclude `accounts_cirrus` Glean app from baseline ping checks as it has no baseline pings (bug 1888718). (#5726)

Cirrus apps generally don't have baseline pings.

This should resolve bug 1888718 "Airflow task bqetl_glean_usage.checks__warn_accounts_cirrus_derived__baseline_clients_last_seen__v1 failing since exec_date 2024-03-23".

* feat: update bqetl_mobile_kpi_metrics DAG start date (#5731)

* feat: update status of firefox_ios_derived.retention_v1 to Complete (#5730)

* change status from Intitiate to Complete (#5732)

* Remove `external_downstream_tasks` metadata from `unified_metrics_v1`. (#5734)

The `kpi_forecasting` DAG doesn't currently have a `wait_for_unified_metrics` task.

* Add additional fields to data observability table to test schema changes (#5735)

* Added dataset id (#5721)

* GROWTH-143 Create new desktop conversion event table (#5733)

* fix(geckoview_version): Replace geckoview.version field with valid gecko.version (#5736)

* removing uniqueness check from sync models (#5739)

* Backfill geckoview_version_v1 (#5738)

* Backfill geckoview_version_v1

* Add schema.yaml to geckoview_version_v1

* RS_1233 add is_enterprise_policies to search_clients_daily_v8 and search_aggregates (#5714)

* RS_1233_Add payload.processes.parent.scalars.policies_is_enterprise to search aggregates and search clients daily table

Add ingpayload.processes.parent.scalars.policies_is_enterprise to
- search_derived/search_aggregates
- search_derived/searc_ clients_daily_v8

* Update query.sql

* update to schema.yaml

* Fix CI issues

* Fix the tests

Fix tests issue

---------

Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>

* Hardcode normalized_os as iOS in event_aggregates (#5725)

* GROWTH-143 fix check to use required partition by column and check al… (#5743)

* Add channel to schema_error_counts_v2 (#5744)

* Complete backfill of geckoview_versions (#5742)

* Fix `format_timedelta` function's parsing of negative timedeltas (#5740)

* Fix `format_timedelta` function's parsing of negative timedeltas.

The entire timedelta can be negative.

* Refactor to use a single timedelta regular expression.

* Fix typo in `format_timedelta` function argument.

* Add deprecation label to sql generators. (#5746)

* Deprecate active_users_aggregates_attribution (#5745)

* The app_name is Firefox Desktop in all cases.

* Formatting

* Formatting

* Example config files for BigEye and Monte Carlo (#5737)

* Add BigConfig example

* Add monte carlo config

* Allow multiple monte carlo configs

* Update schema for schema_error_counts_v2 (#5748)

* Deng 3998 deprecate active users aggregates deletion requests (#5747)

* Add deprecation label to sql generators.

* Clarification to not delete the table.

* Update active_users_aggregates query for Desktop (#5607)

* Update active_users_aggregates query for Desktop to get app_name and growth metrics from clients_last_seen_v2, replace language_name with locale and remove search metrics based on sprint decision (see DENG-1989).

* Use active_users view.

* Naming adjustment

---------

Co-authored-by: Brad Ochocki Szasz <brad.ochocki@gmail.com>

* Changes to active_users_aggregates query for Mobile (#5396)

* Changes to active_users_aggregates.

* Remove days_since_seen and calculate activity segment.

* Remove is_core_active not required.

* Remove days_seen_bits from mobile queries not required.

* Adjust mobile query to use the baseline_clients_last_seen views.

* Update Focus Android query to use the baseline_clients_last_seen view.

* Get activity segments from the views instead of hard-coding it. Query attribution only when neccesary to improve performance. Delay update by 1 day to get metrics ping's data.

* Get app_name from clients_last_seen_v2 view.

* Set activity_segment as NULL for legacy Focus Android.

* Formatting

* Remove first_seen_date and correct column name in desktop_query.sql

* Update active_users_aggregates query for Desktop to get app_name and growth metrics from clients_last_seen_v2, replace language_name with locale and remove search metrics based on sprint decision (see DENG-1989).

* Update active_users_aggregates query for Mobile to remove search metrics based on sprint decision (see DENG-1989) and calculate the min metrics ping received between the current and next date, given that these pings can arrive in the same or next date as the baseline ping.

* Revert changes to Desktop queries in this PR, as this implementation is separated to [PR-5607](#5607).

* Space

* Formatting.

* Change name of activity_segment to segment.

* Fix reference to app name.

* Update app_anme in checks for Focus

* Use active_users instead of baseline_clients_last_seen and improve retrieving metrics ping's data.

* Formatting.

* Get distribution_id for Fenix.

* Get distribution_id for Fenix.

---------

Co-authored-by: Brad Ochocki Szasz <brad.ochocki@gmail.com>

* Create klar_android.active users aggregates (#5624)

* Changes to active_users_aggregates.

* Remove days_since_seen and calculate activity segment.

* Remove is_core_active not required.

* Remove days_seen_bits from mobile queries not required.

* Adjust mobile query to use the baseline_clients_last_seen views.

* Update Focus Android query to use the baseline_clients_last_seen view.

* Get activity segments from the views instead of hard-coding it. Query attribution only when neccesary to improve performance. Delay update by 1 day to get metrics ping's data.

* Get app_name from clients_last_seen_v2 view.

* Set activity_segment as NULL for legacy Focus Android.

* Formatting

* Remove first_seen_date and correct column name in desktop_query.sql

* Update active_users_aggregates query for Desktop to get app_name and growth metrics from clients_last_seen_v2, replace language_name with locale and remove search metrics based on sprint decision (see DENG-1989).

* Update active_users_aggregates query for Mobile to remove search metrics based on sprint decision (see DENG-1989) and calculate the min metrics ping received between the current and next date, given that these pings can arrive in the same or next date as the baseline ping.

* Revert changes to Desktop queries in this PR, as this implementation is separated to [PR-5607](#5607).

* Space

* Formatting.

* Change name of activity_segment to segment.

* Add . Klar Android query and join in the Mobile view.

* Fix reference to app name.

* Update app_anme in checks for Focus

* Add klar android to the checks and update app_name in checks for Focus.

* Formatting.

* Use active_users instead of baseline_clients_last_seen and improve retrieving metrics ping's data.

* Formatting.

* --- (#5623)

updated-dependencies:
- dependency-name: requests
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anna Scholtz <anna@scholtzan.net>

* Update backfill.yaml (#5629)

* DENG-3719: Allow setting billing project for managed backfills (#5605)

* Added default billing project and param

* DENG-3851 Updated managed backfill docs with slack channel for notifcations (#5630)

* Updated docs

* Update docs/cookbooks/creating_a_derived_dataset.md

Co-authored-by: Alexander <anicholson@mozilla.com>

---------

Co-authored-by: Alexander <anicholson@mozilla.com>

* Inject some errors to fenix metrics_clients_last_seen_v1 to test observability tooling (#5631)

* feat: add kpi_support_metrics SQL generator (#5594)

* feat: add kpi_support_metrics SQL generator

* feat: replace baseline_clients_last_seen_activity_extended with active_users

* feat: add template to union all views inside telemetry namespace

* feat: remove retention queries for firefox_ios and fenix as now they are generated via kpi_support_metrics generator

* bug: correct app_name based logic used by templating

* bug: fix formatting inside kpi_support_metrics templates

* feat: implement feedback from PR by removing mozilla online logic as no longer needed and correcting app_name setting

* feat: fix active_users union mismatch

* feat: remove scheduling for now, will be added in the next PR.

* feat: make sure we user product_specific_attribution_fields additional field list instead of app_name logic in templates (#5633)

* delete new pageload experiments table (#5634)

* Use information_schema to find experiment tables for shredder (#5635)

* Update retention of search terms sanitized datasets (#5577)

* Be explicit about columns in clients_yearly (#5636)

* Add distribution_id and geo_subdivision to clients_yearly schema (#5637)

* Added two new fields to col list (#5639)

* feat: add backfill.yaml to org_mozilla_fennec_aurora_derived.baseline_clients_daily_v1 (#5632)

* Add flipkart and home_depot views (#5638)

* Add flipkart and home_depot views

* remove manually created views. use the user_facing view syndication instead

* fix yaml lint

* DENG-3288 add Focus iOS and Focus Android and switch to use new views instead of extended views (#5641)

* DENG-3288 Add "is_mobile" to mobile_engagement_clients_v1 and mobile_engagement_v1 (#5648)

* Update `bqetl_subplat` DAG description with new expected Stripe report error message. (#5642)

* feat: add schema files to baseline_clients_daily_v1 and baseline_clients_last_seen_v1 (#5646)

* fix: add fields: map to baseline_daily and baseline_last_seen schemas (#5651)

* feat: update kpi_support_metrics generation to append platform to the unioned view name (#5644)

Co-authored-by: Katie Windau <153020235+kwindau@users.noreply.github.com>

* fix(backfills): switch to concurrent.futures to improve debuggability (#5653)

* fix(backfills): followup to concurrent.futures, raise Error if any failed dates (#5654)

* Reprocess past two days in jobs_by_organization_v1 (#5652)

* feat: rename baseline_last_seen references to active_users and add "platform" to only include platform specific fields when it matches (#5645)

* fix(backfills): switch from process to thread to avoid pickling bigquery object (#5656)

* feat: rename kpi_support_metrics to mobile_kpi_support_metrics (#5657)

* [RS-1246] Fix DDG DAU in search_revenue_levers_daily (#5655)

* Fix search_revenue_levers_daily

* Query formatting

---------

Co-authored-by: m-d-bowerman <mbowerman@mozilla.com>

* DENG-2975 active_users (#5478)

* Add is_desktop to engagement and retention tables (#5658)

* add is_desktop to engagement and retention tables

* replace clients_last_seen by active_users

* format

* remove unused normalized_channel

* [DENG-3889] Rewrite events_stream_v1 for better performance (#5659)

* Add more null channels for metrics_clients_last_seen test (#5662)

* chore(glam): accommodate for dag reschedule (#5664)

* [DENG-3889] Replace events_stream temp udfs with inline usages (#5666)

* Add telemetry_derived.latest_version to data-observability-dev (#5663)

* [RS-834] Add country to search_revenue_levers_daily (#4739)

* Add country

* change channel spellings so match revenue table

* update country list

* Reformat

* Update desktop DAU definition

Can't update mobile DAU by engine breakouts w/o changes to mobile_search_clients_daily. But we also don't need that option since default engine is currently buggy and searchers presumably have > 0 active seconds

* Fix sql format

---------

Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>
Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>

* Fix PyPI package publishing in CI (#5669)

* Fix PyPI package publishing in CI

* Update .circleci/workflows.yml

Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>

---------

Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>

* Use ad group ID to get campaign info (#5670)

* feat: move mobile engagement logic into mobile kpi support metrics generator (#5661)

* feat: move mobile_engagement SQL logic into mobile_kpi_support_metrics generator

* feat: remove mobile_engagement queries from telemetry and telemetry_erived

* feat: apply formatting to engagement_clients view and add checks template

* feat: add engagement view template and add engagement templates to the generation logic

* bug: fix engagement query errors

* feat: sneak in removing of retention views inside telemetry (mobile kpi generator will overwrite these anyways)

* feat: remove bqetl_mobile_engagement_model DAG from DAG list as no longer needed.

* feat: fix an engagement_v1 query template and removed unecessary comment from the metadata template

* fix: update engagement templates to ensure valid query is rendered

* [DENG-3905] Support queries with temp udfs when billing project is set (#5668)

* DENG-3237: Added deletion dates to deprecated tables (#5660)

* Added deletion dates

* fix: metadata.yaml generation change to allow backfill command execution (#5671)

* RS-788 Add support for organic searches with ads to the mobile search counts tables (#5598)

* adding organic searches with ads to this table

* updating mobile_search_aggregates table with search_with_ads_organic column

* updating the search revenue lever table

- include search_with_ads_organic columns for Bing, Google and DDG

* Fix CI issues

* Fix tests CI failure

* fix tests

* Fix test sql failure

* Update query.sql

reverting back to original code for search_revenue_levers table

---------

Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>

* Update desktop active_users view to make dimensions available for KPIs. (#5675)

* Use desktop active_users view to make dimensions available for KPIs.

* Naming adjustment

* Fix reference to app name.

* Use active_users instead of baseline_clients_last_seen and improve retrieving metrics ping's data.

* Formatting.

* Get distribution_id for Fenix.

* Get distribution_id for Fenix.

* Format correction

* Skip unavailable data, becuase it's not KPI relevant.

* Formatting

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Anna Scholtz <anna@scholtzan.net>
Co-authored-by: Teon L Brooks <teon.brooks@gmail.com>
Co-authored-by: Winnie Chan <10429026+wwyc@users.noreply.github.com>
Co-authored-by: Alexander <anicholson@mozilla.com>
Co-authored-by: kik-kik <42538694+kik-kik@users.noreply.github.com>
Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>
Co-authored-by: whd <whd@users.noreply.github.com>
Co-authored-by: Frank Bertsch <frank.bertsch@gmail.com>
Co-authored-by: wil stuckey <wstuckey@mozilla.com>
Co-authored-by: Katie Windau <153020235+kwindau@users.noreply.github.com>
Co-authored-by: Sean Rose <1994030+sean-rose@users.noreply.github.com>
Co-authored-by: skahmann3 <16420065+skahmann3@users.noreply.github.com>
Co-authored-by: m-d-bowerman <mbowerman@mozilla.com>
Co-authored-by: Vanessa Sabino <vsabino@mozilla.com>
Co-authored-by: Eduardo Filho <edugomfilho@gmail.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>
Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>
Co-authored-by: Preethi Issac <102384487+pissac17@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Katie Windau <153020235+kwindau@users.noreply.github.com>
Co-authored-by: m-d-bowerman <107562575+m-d-bowerman@users.noreply.github.com>
Co-authored-by: Frank Bertsch <frank.bertsch@gmail.com>
Co-authored-by: Winnie Chan <10429026+wwyc@users.noreply.github.com>
Co-authored-by: Chelsey Beck <64881557+chelseybeck@users.noreply.github.com>
Co-authored-by: Leli <33942105+lelilia@users.noreply.github.com>
Co-authored-by: Ben Wu <12437227+BenWu@users.noreply.github.com>
Co-authored-by: Leli Schiestl <lschiestl@mozilla.com>
Co-authored-by: Brad Ochocki Szasz <brad.ochocki@gmail.com>
Co-authored-by: Alekhya <88394696+alekhyamoz@users.noreply.github.com>
Co-authored-by: Sean Rose <1994030+sean-rose@users.noreply.github.com>
Co-authored-by: kik-kik <42538694+kik-kik@users.noreply.github.com>
Co-authored-by: richard baffour <baffour345@gmail.com>
Co-authored-by: Preethi Issac <102384487+pissac17@users.noreply.github.com>
Co-authored-by: Alekhya Kommasani <akommasani@mozilla.com>
Co-authored-by: Anna Scholtz <anna@scholtzan.net>
Co-authored-by: Alexander <anicholson@mozilla.com>
Co-authored-by: ksiegler1 <ksiegler@mozilla.com>
Co-authored-by: Kimberly Siegler <kimberlysiegler@Kimberlys-MacBook-Pro-2.local>
Co-authored-by: Marlene Hirose <92952117+Marlene-M-Hirose@users.noreply.github.com>
Co-authored-by: Eduardo Filho <edugomfilho@gmail.com>
Co-authored-by: Curtis Morales <cmorales@mozilla.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Teon L Brooks <teon.brooks@gmail.com>
Co-authored-by: whd <whd@users.noreply.github.com>
Co-authored-by: wil stuckey <wstuckey@mozilla.com>
Co-authored-by: skahmann3 <16420065+skahmann3@users.noreply.github.com>
Co-authored-by: m-d-bowerman <mbowerman@mozilla.com>
Co-authored-by: Vanessa Sabino <vsabino@mozilla.com>
Co-authored-by: Mike Williams <102263964+mikewilli@users.noreply.github.com>
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.

None yet

3 participants