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

Bug 1836278 - Add dlsource to clients_daily #4240

Merged
merged 2 commits into from
Sep 5, 2023
Merged

Bug 1836278 - Add dlsource to clients_daily #4240

merged 2 commits into from
Sep 5, 2023

Conversation

fbertsch
Copy link
Contributor

@fbertsch fbertsch commented Sep 5, 2023

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

@fbertsch fbertsch requested a review from relud September 5, 2023 18:29
@dataops-ci-bot
Copy link

Integration report for "Bug 1836278 - Add dlsource to clients_daily"

sql.diff

Click to expand!
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql	2023-09-05 18:32:56.000000000 +0000
@@ -3,10 +3,10 @@
     SELECT
       COUNT(*)
     FROM
-      `{{project_id}}.{{dataset_id}}.{{table_name}}`
+      `moz-fx-data-marketing-prod.ga_derived.downloads_with_attribution_v2`
     WHERE
       download_date = @download_date
   ) > 50000
 )
 AS
-  'ETL Data Check Failed: Table {{project_id}}.{{dataset_id}}.{{table_name}} contains less than 50,000 rows for date: {{ download_date }}.'
+  'ETL Data Check Failed: Table moz-fx-data-marketing-prod.ga_derived.downloads_with_attribution_v2 contains less than 50,000 rows for date: .'
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql	2023-09-05 18:32:43.000000000 +0000
@@ -19,9 +19,8 @@
     sessions_per_user,
     sessions,
     date
-FROM `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
-WHERE (network != "Untrusted Devices")
-  AND
-  date in (
-    SELECT MAX(date) from `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
-    )
+FROM
+  `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
+WHERE
+  (network != "Untrusted Devices")
+  AND date IN (SELECT MAX(date) FROM `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`)
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql	2023-09-05 18:32:43.000000000 +0000
@@ -24,4 +24,5 @@
     daus,
     waus,
     maus
-FROM `moz-fx-data-shared-prod.adjust_derived.adjust_deliverables_v1`
+FROM
+  `moz-fx-data-shared-prod.adjust_derived.adjust_deliverables_v1`
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/quicksuggest_block: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql	2023-09-05 18:32:44.000000000 +0000
@@ -12,8 +12,7 @@
     COUNT(
       CASE
   -- SUGGEST DESKTOP ELIGIBILITY REQUIREMENTS
-      WHEN
-        normalized_app_name = "Firefox Desktop"
+        WHEN normalized_app_name = "Firefox Desktop"
         AND
             -- desktop Suggest experiment start -- 12.5% exposure until 2022-09-21
         (
@@ -23,10 +22,8 @@
           AND country IN UNNEST(["US"])
           AND locale LIKE "en%"
         )
-      THEN
-        1
-      ELSE
-        NULL
+          THEN 1
+        ELSE NULL
       END
     ) AS eligible_clients
   FROM
@@ -116,13 +113,10 @@
     "desktop" AS device,
     COUNT(
       CASE
-      WHEN
-        impression_sponsored_count > 0
+        WHEN impression_sponsored_count > 0
         OR impression_nonsponsored_count > 0
-      THEN
-        client_id
-      ELSE
-        NULL
+          THEN client_id
+        ELSE NULL
       END
     ) AS suggest_exposed_clients,
     SUM(impression_sponsored_count + impression_nonsponsored_count) AS total_impressions,
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql	2023-09-05 18:32:22.000000000 +0000
@@ -32,4 +32,5 @@
   END AS install_source,
 FROM
   `moz-fx-data-shared-prod.fenix_derived.firefox_android_clients_v1`
-WHERE metadata.reported_baseline_ping
+WHERE
+  metadata.reported_baseline_ping
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql	2023-09-05 18:32:23.000000000 +0000
@@ -17,11 +17,7 @@
   FROM
     `moz-fx-data-shared-prod`.fenix.baseline
   WHERE
-    {% if is_init() %}
-      DATE(submission_timestamp) >= "2021-08-01"
-    {% else %}
       DATE(submission_timestamp) = @submission_date
-    {% endif %}
   GROUP BY
     submission_date,
     sample_id,
@@ -39,11 +35,7 @@
   FROM
     `moz-fx-data-shared-prod.search_derived.mobile_search_clients_daily_v1`
   WHERE
-    {% if is_init() %}
-      submission_date >= "2021-08-01"
-    {% else %}
       submission_date = @submission_date
-    {% endif %}
     AND normalized_app_name = 'Fenix'
     AND os = 'Android'
   GROUP BY
@@ -60,11 +52,7 @@
   FROM
     `moz-fx-data-shared-prod`.fenix.new_profile_activation
   WHERE
-    {% if is_init() %}
-      submission_date >= "2021-08-01"
-    {% else %}
       submission_date = @submission_date
-    {% endif %}
 )
 SELECT
   submission_date,
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/quick_suggest: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/top_sites: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql	2023-09-05 18:32:17.000000000 +0000
@@ -1,2 +1,19 @@
-{{ is_unique(["`date`", "country"]) }}
-
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.firefox_ios_derived.app_store_funnel_v1`
+  GROUP BY
+    `date`,
+    country
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['`date`', 'country'] to be unique.)"
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml	2023-09-05 18:33:08.000000000 +0000
@@ -19,7 +19,7 @@
 # Generated by bigquery_etl.dependency
 references:
   checks.sql:
-  - ..
+  - moz-fx-data-shared-prod.firefox_ios_derived.app_store_funnel_v1
   query.sql:
   - app_store.firefox_app_store_territory_source_type_report
   - app_store.firefox_downloads_territory_source_type_report
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql	2023-09-05 18:32:17.000000000 +0000
@@ -1,5 +1,68 @@
-{{ is_unique(columns=["destination", "measured_date", "connector", "billing_type"]) }}
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+  GROUP BY
+    destination,
+    measured_date,
+    connector,
+    billing_type
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['destination', 'measured_date', 'connector', 'billing_type'] to be unique.)"
+    ),
+    NULL
+  );
 
-{{ not_null(columns=["destination", "measured_date", "connector", "billing_type", "active_rows", "cost_in_usd"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(destination IS NULL) > 0, "destination", NULL),
+      IF(COUNTIF(measured_date IS NULL) > 0, "measured_date", NULL),
+      IF(COUNTIF(connector IS NULL) > 0, "connector", NULL),
+      IF(COUNTIF(billing_type IS NULL) > 0, "billing_type", NULL),
+      IF(COUNTIF(active_rows IS NULL) > 0, "active_rows", NULL),
+      IF(COUNTIF(cost_in_usd IS NULL) > 0, "cost_in_usd", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql	2023-09-05 18:32:17.000000000 +0000
@@ -1,3 +1,47 @@
-{{ not_null(columns=["measured_date", "measured_month", "destination_id", "connector", "table_name", "billing_type", "active_rows"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(measured_date IS NULL) > 0, "measured_date", NULL),
+      IF(COUNTIF(measured_month IS NULL) > 0, "measured_month", NULL),
+      IF(COUNTIF(destination_id IS NULL) > 0, "destination_id", NULL),
+      IF(COUNTIF(connector IS NULL) > 0, "connector", NULL),
+      IF(COUNTIF(table_name IS NULL) > 0, "table_name", NULL),
+      IF(COUNTIF(billing_type IS NULL) > 0, "billing_type", NULL),
+      IF(COUNTIF(active_rows IS NULL) > 0, "active_rows", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.incremental_mar_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.incremental_mar_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql	2023-09-05 18:32:17.000000000 +0000
@@ -1,5 +1,62 @@
-{{ is_unique(columns=["destination_id", "measured_month"]) }}
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+  GROUP BY
+    destination_id,
+    measured_month
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['destination_id', 'measured_month'] to be unique.)"
+    ),
+    NULL
+  );
 
-{{ not_null(columns=["destination_id", "measured_month"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(destination_id IS NULL) > 0, "destination_id", NULL),
+      IF(COUNTIF(measured_month IS NULL) > 0, "measured_month", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/action: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/baseline: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/custom: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/deletion_request: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/metrics: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql	2023-09-05 18:32:18.000000000 +0000
@@ -6,7 +6,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM devices WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM devices WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _update
 FULL JOIN
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql	2023-09-05 18:32:18.000000000 +0000
@@ -6,7 +6,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM subscriptions WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM subscriptions WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _update
 FULL JOIN
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql	2023-09-05 18:32:18.000000000 +0000
@@ -11,7 +11,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM users WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM users WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _current
 FULL JOIN
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix_nightly/client_deduplication: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix_nightly/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fennec_aurora/client_deduplication: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fennec_aurora/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox_beta/topsites_impression: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml	2023-09-05 18:23:52.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml	2023-09-05 18:23:56.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml	2023-09-05 18:23:46.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/deletion_request: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/main_events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/regret_details: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/video_data: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/video_index: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql	2023-09-05 18:34:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql	2023-09-05 18:32:24.000000000 +0000
@@ -30,11 +30,7 @@
   FROM
     `moz-fx-data-shared-prod`.stripe_external.subscription_history_v1
   WHERE
-    {% if is_init() %}
-      TRUE
-    {% else %}
       DATE(_fivetran_start) >= @date
-    {% endif %}
 ),
 subscription_items AS (
   SELECT
@@ -291,8 +287,4 @@
 ON
   subscriptions_history.id = subscriptions_history_latest_discounts.subscription_history_id
 WHERE
-  {% if is_init() %}
-    DATE(subscriptions_history._fivetran_start) < CURRENT_DATE()
-  {% else %}
     DATE(subscriptions_history._fivetran_start) = @date
-  {% endif %}
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql	2023-09-05 18:34:37.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql	2023-09-05 18:32:20.000000000 +0000
@@ -1,6 +1,4 @@
-{#- format off #}
 WITH product_union AS (
-{%- for product in ["mozilla_vpn", "relay", "hubs"] %}
   SELECT
     active_date,
     plan_id,
@@ -18,17 +16,48 @@
     promotion_discounts_amount,
     `count`
   FROM
-    `moz-fx-data-shared-prod`.{{product}}.active_subscriptions
-{%- if product == "mozilla_vpn" %}
+    `moz-fx-data-shared-prod`.mozilla_vpn.active_subscriptions
   WHERE
     -- in order to avoid double counting, only include bundles via relay
     product_name NOT LIKE "%Relay%"
-{%- endif %}
-{%- if not loop.last %}
   UNION ALL
-{%- endif %}
-{%- endfor %}
-{#- format on #}
+  SELECT
+    active_date,
+    plan_id,
+    country,
+    country_name,
+    provider,
+    plan_amount,
+    plan_currency,
+    plan_interval,
+    plan_interval_count,
+    product_id,
+    product_name,
+    pricing_plan,
+    TO_JSON_S

⚠️ Only part of the diff is displayed.

@fbertsch fbertsch enabled auto-merge (squash) September 5, 2023 18:56
@dataops-ci-bot
Copy link

Integration report for "Merge branch 'main' into dlsource"

sql.diff

Click to expand!
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-marketing-prod/ga_derived/downloads_with_attribution_v2/checks.sql	2023-09-05 19:06:56.000000000 +0000
@@ -3,10 +3,10 @@
     SELECT
       COUNT(*)
     FROM
-      `{{project_id}}.{{dataset_id}}.{{table_name}}`
+      `moz-fx-data-marketing-prod.ga_derived.downloads_with_attribution_v2`
     WHERE
       download_date = @download_date
   ) > 50000
 )
 AS
-  'ETL Data Check Failed: Table {{project_id}}.{{dataset_id}}.{{table_name}} contains less than 50,000 rows for date: {{ download_date }}.'
+  'ETL Data Check Failed: Table moz-fx-data-marketing-prod.ga_derived.downloads_with_attribution_v2 contains less than 50,000 rows for date: .'
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/view.sql	2023-09-05 19:06:18.000000000 +0000
@@ -19,9 +19,8 @@
     sessions_per_user,
     sessions,
     date
-FROM `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
-WHERE (network != "Untrusted Devices")
-  AND
-  date in (
-    SELECT MAX(date) from `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
-    )
+FROM
+  `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`
+WHERE
+  (network != "Untrusted Devices")
+  AND date IN (SELECT MAX(date) FROM `moz-fx-data-shared-prod.adjust_derived.adjust_cohort_v1`)
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_kpi_deliverables/view.sql	2023-09-05 19:06:18.000000000 +0000
@@ -24,4 +24,5 @@
     daus,
     waus,
     maus
-FROM `moz-fx-data-shared-prod.adjust_derived.adjust_deliverables_v1`
+FROM
+  `moz-fx-data-shared-prod.adjust_derived.adjust_deliverables_v1`
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services/quicksuggest_block: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services_derived/suggest_revenue_levers_daily_v1/query.sql	2023-09-05 19:06:21.000000000 +0000
@@ -12,8 +12,7 @@
     COUNT(
       CASE
   -- SUGGEST DESKTOP ELIGIBILITY REQUIREMENTS
-      WHEN
-        normalized_app_name = "Firefox Desktop"
+        WHEN normalized_app_name = "Firefox Desktop"
         AND
             -- desktop Suggest experiment start -- 12.5% exposure until 2022-09-21
         (
@@ -23,10 +22,8 @@
           AND country IN UNNEST(["US"])
           AND locale LIKE "en%"
         )
-      THEN
-        1
-      ELSE
-        NULL
+          THEN 1
+        ELSE NULL
       END
     ) AS eligible_clients
   FROM
@@ -116,13 +113,10 @@
     "desktop" AS device,
     COUNT(
       CASE
-      WHEN
-        impression_sponsored_count > 0
+        WHEN impression_sponsored_count > 0
         OR impression_nonsponsored_count > 0
-      THEN
-        client_id
-      ELSE
-        NULL
+          THEN client_id
+        ELSE NULL
       END
     ) AS suggest_exposed_clients,
     SUM(impression_sponsored_count + impression_nonsponsored_count) AS total_impressions,
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/firefox_android_clients/view.sql	2023-09-05 19:06:22.000000000 +0000
@@ -32,4 +32,5 @@
   END AS install_source,
 FROM
   `moz-fx-data-shared-prod.fenix_derived.firefox_android_clients_v1`
-WHERE metadata.reported_baseline_ping
+WHERE
+  metadata.reported_baseline_ping
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix_derived/attributable_clients_v2/query.sql	2023-09-05 19:06:22.000000000 +0000
@@ -17,11 +17,7 @@
   FROM
     `moz-fx-data-shared-prod`.fenix.baseline
   WHERE
-    {% if is_init() %}
-      DATE(submission_timestamp) >= "2021-08-01"
-    {% else %}
       DATE(submission_timestamp) = @submission_date
-    {% endif %}
   GROUP BY
     submission_date,
     sample_id,
@@ -39,11 +35,7 @@
   FROM
     `moz-fx-data-shared-prod.search_derived.mobile_search_clients_daily_v1`
   WHERE
-    {% if is_init() %}
-      submission_date >= "2021-08-01"
-    {% else %}
       submission_date = @submission_date
-    {% endif %}
     AND normalized_app_name = 'Fenix'
     AND os = 'Android'
   GROUP BY
@@ -60,11 +52,7 @@
   FROM
     `moz-fx-data-shared-prod`.fenix.new_profile_activation
   WHERE
-    {% if is_init() %}
-      submission_date >= "2021-08-01"
-    {% else %}
       submission_date = @submission_date
-    {% endif %}
 )
 SELECT
   submission_date,
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/quick_suggest: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/top_sites: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/checks.sql	2023-09-05 19:06:19.000000000 +0000
@@ -1,2 +1,19 @@
-{{ is_unique(["`date`", "country"]) }}
-
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.firefox_ios_derived.app_store_funnel_v1`
+  GROUP BY
+    `date`,
+    country
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['`date`', 'country'] to be unique.)"
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios_derived/app_store_funnel_v1/metadata.yaml	2023-09-05 19:07:07.000000000 +0000
@@ -19,7 +19,7 @@
 # Generated by bigquery_etl.dependency
 references:
   checks.sql:
-  - ..
+  - moz-fx-data-shared-prod.firefox_ios_derived.app_store_funnel_v1
   query.sql:
   - app_store.firefox_app_store_territory_source_type_report
   - app_store.firefox_downloads_territory_source_type_report
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/daily_connector_costs_v1/checks.sql	2023-09-05 19:06:45.000000000 +0000
@@ -1,5 +1,68 @@
-{{ is_unique(columns=["destination", "measured_date", "connector", "billing_type"]) }}
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+  GROUP BY
+    destination,
+    measured_date,
+    connector,
+    billing_type
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['destination', 'measured_date', 'connector', 'billing_type'] to be unique.)"
+    ),
+    NULL
+  );
 
-{{ not_null(columns=["destination", "measured_date", "connector", "billing_type", "active_rows", "cost_in_usd"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(destination IS NULL) > 0, "destination", NULL),
+      IF(COUNTIF(measured_date IS NULL) > 0, "measured_date", NULL),
+      IF(COUNTIF(connector IS NULL) > 0, "connector", NULL),
+      IF(COUNTIF(billing_type IS NULL) > 0, "billing_type", NULL),
+      IF(COUNTIF(active_rows IS NULL) > 0, "active_rows", NULL),
+      IF(COUNTIF(cost_in_usd IS NULL) > 0, "cost_in_usd", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.daily_connector_costs_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/incremental_mar_v1/checks.sql	2023-09-05 19:06:45.000000000 +0000
@@ -1,3 +1,47 @@
-{{ not_null(columns=["measured_date", "measured_month", "destination_id", "connector", "table_name", "billing_type", "active_rows"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(measured_date IS NULL) > 0, "measured_date", NULL),
+      IF(COUNTIF(measured_month IS NULL) > 0, "measured_month", NULL),
+      IF(COUNTIF(destination_id IS NULL) > 0, "destination_id", NULL),
+      IF(COUNTIF(connector IS NULL) > 0, "connector", NULL),
+      IF(COUNTIF(table_name IS NULL) > 0, "table_name", NULL),
+      IF(COUNTIF(billing_type IS NULL) > 0, "billing_type", NULL),
+      IF(COUNTIF(active_rows IS NULL) > 0, "active_rows", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.incremental_mar_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.incremental_mar_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fivetran_costs_derived/monthly_costs_v1/checks.sql	2023-09-05 19:06:45.000000000 +0000
@@ -1,5 +1,62 @@
-{{ is_unique(columns=["destination_id", "measured_month"]) }}
+WITH non_unique AS (
+  SELECT
+    COUNT(*) AS total_count
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+  GROUP BY
+    destination_id,
+    measured_month
+  HAVING
+    total_count > 1
+)
+SELECT
+  IF(
+    (SELECT COUNT(*) FROM non_unique) > 0,
+    ERROR(
+      "Duplicates detected (Expected combined set of values for columns ['destination_id', 'measured_month'] to be unique.)"
+    ),
+    NULL
+  );
 
-{{ not_null(columns=["destination_id", "measured_month"]) }}
+WITH null_checks AS (
+  SELECT
+    [
+      IF(COUNTIF(destination_id IS NULL) > 0, "destination_id", NULL),
+      IF(COUNTIF(measured_month IS NULL) > 0, "measured_month", NULL)
+    ] AS checks
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+),
+non_null_checks AS (
+  SELECT
+    ARRAY_AGG(u IGNORE NULLS) AS checks
+  FROM
+    null_checks,
+    UNNEST(checks) AS u
+)
+SELECT
+  IF(
+    (SELECT ARRAY_LENGTH(checks) FROM non_null_checks) > 0,
+    ERROR(
+      CONCAT(
+        "Columns with NULL values: ",
+        (SELECT ARRAY_TO_STRING(checks, ", ") FROM non_null_checks)
+      )
+    ),
+    NULL
+  );
 
-{{ min_rows(1) }}
+WITH min_rows AS (
+  SELECT
+    COUNT(*) AS total_rows
+  FROM
+    `moz-fx-data-shared-prod.fivetran_costs_derived.monthly_costs_v1`
+)
+SELECT
+  IF(
+    (SELECT total_rows FROM min_rows WHERE total_rows < 1) > 0,
+    ERROR(
+      CONCAT("Less than ", (SELECT total_rows FROM min_rows), " rows found (expected more than 1)")
+    ),
+    NULL
+  );
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/action: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/baseline: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/custom: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/deletion_request: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mlhackweek_search/metrics: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/devices_v1/query.sql	2023-09-05 19:06:45.000000000 +0000
@@ -6,7 +6,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM devices WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM devices WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _update
 FULL JOIN
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/subscriptions_v1/query.sql	2023-09-05 19:06:45.000000000 +0000
@@ -6,7 +6,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM subscriptions WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM subscriptions WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _update
 FULL JOIN
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn_external/users_v1/query.sql	2023-09-05 19:06:45.000000000 +0000
@@ -11,7 +11,7 @@
     -- The external_database_query argument in EXTERNAL_QUERY must be a literal string or query
     -- parameter, and cannot be generated at runtime using function calls like CONCAT or FORMAT,
     -- so the entire value must be provided as a STRING query parameter to handle specific dates:
-    -- {% raw %} "SELECT * FROM users WHERE DATE(updated_at) = DATE '{{ds}}'" {% endraw %}
+    --  "SELECT * FROM users WHERE DATE(updated_at) = DATE ''"
     @external_database_query
   ) AS _current
 FULL JOIN
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix_nightly/client_deduplication: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fenix_nightly/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fennec_aurora/client_deduplication: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_fennec_aurora/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox/topsites_impression: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox_beta/topsites_impression: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_fennec/topsites_impression/schema.yaml	2023-09-05 18:57:53.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefox/topsites_impression/schema.yaml	2023-09-05 18:57:54.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_ios_firefoxbeta/topsites_impression/schema.yaml	2023-09-05 18:57:45.000000000 +0000
@@ -1 +1,455 @@
-{}
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+  description: A JSON string containing any payload properties not present in the
+    schema
+- name: client_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: android_sdk_version
+    type: STRING
+    mode: NULLABLE
+    description: The optional Android specific SDK version of the software running
+      on this hardware device.
+  - name: app_build
+    type: STRING
+    mode: NULLABLE
+    description: The build identifier generated by the CI system (e.g. "1234/A").
+      For language bindings that provide automatic detection for this value, (e.g.
+      Android/Kotlin), in the unlikely event that the build identifier can not be
+      retrieved from the OS, it is set to "inaccessible". For other language bindings,
+      if the value was not provided through configuration, this metric gets set to
+      `Unknown`.
+  - name: app_channel
+    type: STRING
+    mode: NULLABLE
+    description: The channel the application is being distributed on.
+  - name: app_display_version
+    type: STRING
+    mode: NULLABLE
+    description: The user visible version string (e.g. "1.0.3").  In the unlikely
+      event that the display version can not be retrieved, it is set to "inaccessible".
+  - name: architecture
+    type: STRING
+    mode: NULLABLE
+    description: The architecture of the device, (e.g. "arm", "x86").
+  - name: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+  - name: client_id
+    type: STRING
+    mode: NULLABLE
+    description: A UUID uniquely identifying the client.
+  - name: device_manufacturer
+    type: STRING
+    mode: NULLABLE
+    description: The manufacturer of the device the application is running on. Not
+      set if the device manufacturer can't be determined (e.g. on Desktop).
+  - name: device_model
+    type: STRING
+    mode: NULLABLE
+    description: The model of the device the application is running on. On Android,
+      this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not
+      set if the device model can't be determined (e.g. on Desktop).
+  - name: first_run_date
+    type: STRING
+    mode: NULLABLE
+    description: The date of the first run of the application.
+  - name: locale
+    type: STRING
+    mode: NULLABLE
+    description: The locale of the application during initialization (e.g. "es-ES").
+      If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers),
+      to indicate "undetermined".
+  - name: os
+    type: STRING
+    mode: NULLABLE
+    description: 'The name of the operating system. Possible values: Android, iOS,
+      Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown'
+  - name: os_version
+    type: STRING
+    mode: NULLABLE
+    description: The user-visible version of the operating system (e.g. "1.2.3").
+      If the version detection fails, this metric gets set to `Unknown`.
+  - name: telemetry_sdk_build
+    type: STRING
+    mode: NULLABLE
+    description: The version of the Glean SDK
+  - name: windows_build_number
+    type: INTEGER
+    mode: NULLABLE
+    description: The optional Windows build number, reported by Windows (e.g. 22000)
+      and not set for other platforms
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- name: events
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: category
+    type: STRING
+    mode: NULLABLE
+  - name: extra
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: STRING
+      mode: NULLABLE
+  - name: name
+    type: STRING
+    mode: NULLABLE
+  - name: timestamp
+    type: INTEGER
+    mode: NULLABLE
+- name: metadata
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: geo
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: city
+      type: STRING
+      mode: NULLABLE
+    - name: country
+      type: STRING
+      mode: NULLABLE
+      description: An ISO 3166-1 alpha-2 country code
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo database version used for this lookup
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+      description: First major country subdivision, typically a state, province, or
+        county
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+      description: Second major country subdivision; not applicable for most countries
+    description: Results of a geographic lookup based on the client's IP address
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+      description: Date HTTP header
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+      description: DNT (Do Not Track) HTTP header
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+      description: X-Debug-Id HTTP header
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+      description: X-Foxsec-IP-Reputation header
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-LB-Tags HTTP header
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+      description: X-PingSender-Version HTTP header
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+      description: X-Source-Tags HTTP header
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+      description: X-Telemetry-Agent HTTP header
+    - name: parsed_date
+      type: TIMESTAMP
+      mode: NULLABLE
+    - name: parsed_x_source_tags
+      type: STRING
+      mode: REPEATED
+    - name: parsed_x_lb_tags
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: tls_version
+        type: STRING
+        mode: NULLABLE
+      - name: tls_cipher_hex
+        type: STRING
+        mode: NULLABLE
+    description: Headers included in the client's HTTP request
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+      description: The specific geo ISP database version used for this lookup
+    - name: name
+      type: STRING
+      mode: NULLABLE
+      description: The name of the ISP associated with the client's IP address
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+      description: The name of a specific business entity associated with the client's
+        IP address when available; otherwise the ISP name
+    description: Results of ISP lookup based on the client's IP address
+  - name: user_agent
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: browser
+      type: STRING
+      mode: NULLABLE
+    - name: os
+      type: STRING
+      mode: NULLABLE
+    - name: version
+      type: STRING
+      mode: NULLABLE
+    description: Parsed components of the client's user agent string
+- name: metrics
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: labeled_counter
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: glean_error_invalid_label
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set with an invalid label.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_overflow
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set a value that overflowed.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_state
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a timing metric was used incorrectly.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+    - name: glean_error_invalid_value
+      type: RECORD
+      mode: REPEATED
+      fields:
+      - name: key
+        type: STRING
+        mode: NULLABLE
+      - name: value
+        type: INTEGER
+        mode: NULLABLE
+      description: 'Counts the number of times a metric was set to an invalid value.
+
+        The labels are the `category.name` identifier of the metric.
+
+        '
+  - name: quantity
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+    - name: top_sites_contile_tile_id
+      type: INTEGER
+      mode: NULLABLE
+      description: 'A unique identifier provided by the AdM for the sponsored TopSites
+        tile
+
+        '
+  - name: string
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+    - name: top_sites_contile_advertiser
+      type: STRING
+      mode: NULLABLE
+      description: 'Advertiser brand for the sponsored TopSites tile
+
+        '
+  - name: url2
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+      description: "The AdM reporting endpoint (impression_url for \u201Cimpression\u201D\
+        \ event,\nclick_url for \u201Cclick\u201D event).\n"
+  - name: uuid
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+    - name: top_sites_context_id
+      type: STRING
+      mode: NULLABLE
+      description: 'A UUID that is unjoinable with other browser metrics. This ID
+        will not be
+
+        shared with AdM, only for internal uses. This ID is shared across all
+
+        contextual services features.
+
+        '
+  - name: url
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: top_site_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+    - name: top_sites_contile_reporting_url
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized app name
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized channel name
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+  description: An ISO 3166-1 alpha-2 country code
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+  description: Set to "Other" if this message contained an unrecognized OS name
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: ping_info
+  type: RECORD
+  mode: NULLABLE
+  fields:
+  - name: end_time
+    type: STRING
+    mode: NULLABLE
+  - name: experiments
+    type: RECORD
+    mode: REPEATED
+    fields:
+    - name: key
+      type: STRING
+      mode: NULLABLE
+    - name: value
+      type: RECORD
+      mode: NULLABLE
+      fields:
+      - name: branch
+        type: STRING
+        mode: NULLABLE
+      - name: extra
+        type: RECORD
+        mode: NULLABLE
+        fields:
+        - name: type
+          type: STRING
+          mode: NULLABLE
+        - name: enrollment_id
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: parsed_start_time
+    type: TIMESTAMP
+    mode: NULLABLE
+  - name: parsed_end_time
+    type: TIMESTAMP
+    mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+  description: Hashed version of client_id (if present) useful for partitioning; ranges
+    from 0 to 99
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+  description: Time when the ingestion edge server accepted this message
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/deletion_request: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/main_events: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/regret_details: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/video_data: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/regrets_reporter_ucs/video_index: schema.yaml
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql	2023-09-05 19:08:36.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/stripe_external/subscriptions_changelog_v1/query.sql	2023-09-05 19:06:25.000000000 +0000
@@ -30,11 +30,7 @@
   FROM
     `moz-fx-data-shared-prod`.stripe_external.subscription_history_v1
   WHERE
-    {% if is_init() %}
-      TRUE
-    {% else %}
       DATE(_fivetran_start) >= @date
-    {% endif %}
 ),
 subscription_items AS (
   SELECT
@@ -291,8 +287,4 @@
 ON
   subscriptions_history.id = subscriptions_history_latest_discounts.subscription_history_id
 WHERE
-  {% if is_init() %}
-    DATE(subscriptions_history._fivetran_start) < CURRENT_DATE()
-  {% else %}
     DATE(subscriptions_history._fivetran_start) = @date
-  {% endif %}
diff -bur --no-dereference /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql	2023-09-05 19:08:35.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/subscription_platform_derived/active_subscriptions_v1/query.sql	2023-09-05 19:06:26.000000000 +0000
@@ -1,6 +1,4 @@
-{#- format off #}
 WITH product_union AS (
-{%- for product in ["mozilla_vpn", "relay", "hubs"] %}
   SELECT
     active_date,
     plan_id,
@@ -18,17 +16,48 @@
     promotion_discounts_amount,
     `count`
   FROM
-    `moz-fx-data-shared-prod`.{{product}}.active_subscriptions
-{%- if product == "mozilla_vpn" %}
+    `moz-fx-data-shared-prod`.mozilla_vpn.active_subscriptions
   WHERE
     -- in order to avoid double counting, only include bundles via relay
     product_name NOT LIKE "%Relay%"
-{%- endif %}
-{%- if not loop.last %}
   UNION ALL
-{%- endif %}
-{%- endfor %}
-{#- format on #}
+  SELECT
+    active_date,
+    plan_id,
+    country,
+    country_name,
+    provider,
+    plan_amount,
+    plan_currency,
+    plan_interval,
+    plan_interval_count,
+    product_id,
+    product_name,
+    pricing_plan,
+    TO_JSON_S

⚠️ Only part of the diff is displayed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants