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

Fix bugs in derived_view_schemas SQL generator #5592

Merged
merged 26 commits into from
Jun 8, 2024

Conversation

sean-rose
Copy link
Contributor

@sean-rose sean-rose commented May 16, 2024

The derived_view_schemas SQL generator was running against all types of directories (not just view directories), and it was reading the view schemas from the currently deployed views (not based on the latest view code).

Changes:

  • Limit derived_view_schemas SQL generator to actual view directories.

  • Fix the derived_view_schemas SQL generator to get the view schemas by dry-running their latest SQL and/or from their latest schema.yaml file. Getting the schema from the currently deployed view wasn't appropriate because it wouldn't reflect the latest view code.

  • Rename View.view_schema to View.schema.

  • Change View so its schema dry-runs use the cloud function (CI doesn't have permission to run dry-run queries directly).

  • Apply partition column filters in view dry-run queries when possible for speed/efficiency.

  • Don't allow missing fields to prevent view schema enrichment.

  • Only copy column descriptions during view schema enrichment.

  • Only try enriching view schemas from their reference table schema.yaml files if those files actually exist.

  • Change main_1pct view to select directly from the main_remainder_1pct_v1 table, so the derived_view_schemas SQL generator can detect the partition column to use and successfully dry-run the view to determine its schema.

  • Formalize the order bqetl generate all runs the SQL generators in.

  • Have bqetl generate all run derived_view_schemas last, in case other SQL generators create derived views.

  • Fix Schema._traverse() to only recurse if both fields are records.


Checklist for reviewer:

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

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

┆Issue is synchronized with this Jira Task

@dataops-ci-bot

This comment has been minimized.

for path in dataset_path.iterdir()
if path.is_dir()
and (path / VIEW_FILE).exists()
and not (path / SCHEMA_FILE).exists()
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think view deploys update the schema from dry run if a schema.yaml exists, unlike table deploys. So this might cause view deployment to publish outdated schemas and fail. IMO we can update the schema if it already exists, but if not then any schemas that need to be updated should be included in this PR

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think if there's an explicit schema.yaml file for a view it's reasonable to expect that to be kept up to date and be accurate (e.g. your code for View.view_schema seems to make that assumption).

Copy link
Contributor

Choose a reason for hiding this comment

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

It's a safe assumption because those schemas get updated by this generator but that wouldn't be the case with this change. Running this generator locally, at least funnel_retention_clients and funnel_retention_week_4 have columns added so those would fail to publish here

try:
schema_path = Path(self.path).parent / "schema.yaml"
if schema_path.is_file():
self.view_schema.deploy(target_view)
except Exception as e:
print(f"Could not update field descriptions for {target_view}: {e}")

Those should be updated in this PR. I would still lean towards updating existing schemas since we can't always rely on schemas being up to date which is the case for tables

Copy link
Contributor Author

Choose a reason for hiding this comment

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

OK:

  • I've changed the View.view_schema logic to always try dry-running first, then augment with the schema.yaml if one exists.
  • I've changed the derived_view_schemas SQL generator to use View.view_schema to get schemas, rather than getting the deployed view schema with Schema.for_table() (which I suspect was probably preventing the logic you implemented in Bug 1868244 Publish views if dry run schema differs from deployed #5057 from working properly).
  • I've changed the derived_view_schemas SQL generator to not skip views that already have schema.yaml files.

It now gets the view schemas from their latest `schema.yaml` file or dry-running their latest SQL.  Getting the schema from the currently deployed view wasn't appropriate because it wouldn't reflect the latest view code.
@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

"""Derive view schema from a dry run result and/or a schema file."""
schema = None

# check schema based on dry run results
Copy link
Contributor

Choose a reason for hiding this comment

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

I think dry running everything makes sense to make sure everything is updated but it will probably add a few minutes to the publish views task. Views should usually be up to date since the generator already ran. I don't have any issues with this but worth checking later on to see how much time this adds.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I reversed course on this and went back to having it return the schema from schema.yaml if one exits by default, because it turns out dry-runs for some views which select from very large tables can take well over a minute.

The derived_view_schemas SQL generator logic will still always try to dry-run views to get their up-to-date schema.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I did manage to get the dry-runs on some of the views that select from large tables to run quicker by adding partition column filters, but I'm still going to leave this with the original behavior of using the schema from schema.yaml by default, with the derived_view_schemas SQL generator using custom logic to always try to dry-run the views.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

Comment on lines 187 to 199
# We have to remove `CREATE OR REPLACE VIEW ... AS` from the query to avoid
# view creation permission denied errors, and we have to apply a `WHERE FALSE`
# filter to avoid partition column filter missing errors.
query=dedent(
f"""
WITH view_query AS (
{CREATE_VIEW_PATTERN.sub("", self.content)}
)
SELECT *
FROM view_query
WHERE FALSE
"""
),
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I was pleasantly surprised that dry-running the full CREATE VIEW ... query returns the view's schema, nicely side-stepping the issue of potentially having to add query filters on any partition columns from the underlying tables. However, it turns out that only works if you actually have permission to create the view in the target dataset, which we DEs generally do but CI does not, so the previous dry-run-to-get-view-schema logic would have always failed in a CI context.

CI doesn't have permission to do the dry-runs directly.
@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

…the latest schema.

Dry-runs for some views which select from very large tables can take well over a minute.
@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

…1` table.

So the `derived_view_schemas` SQL generator can detect the partition column to use and successfully dry-run the view to determine its schema.
@dataops-ci-bot

This comment has been minimized.

Comment on lines 105 to 110
# Run `stable_views` after `glean_usage` because both update `dataset_metadata.yaml` files
# and we want the `stable_views` updates to take precedence.
case "glean_usage":
return (1, command.name)
case "stable_views":
return (2, command.name)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is based on comments in #2594.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@scholtzan the sql.diff shows this changing some dataset_metadata.yaml files. Since I based the implementation on your comments, can you please confirm that stable_views should still run after glean_usage, and not vice versa?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I believe for _, cmd in reversed(generate.commands.items()): causes stable_views to be run before glean_usage. I'm not sure whether it makes a difference here though? I believe glean_app_ping_views might depended on the stable views at some point.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

OK, I've reversed the order in this PR so that stable_views runs before glean_usage, and now no dataset_metadata.yaml changes appear in the sql.diff.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot

This comment has been minimized.

case _:
return (3, command.name)

for cmd in sorted(generate.commands.values(), key=generator_command_sort_key):
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm hoping running the SQL generators in a deterministic order will also reduce the seemingly random unrelated diffs that sometimes get reported in sql.diff. Currently the SQL generators are run in the reverse order that Path.iterdir() returns the sql_generators/* subdirectories, and according to the docs that order is "arbitrary".

Copy link
Contributor

@BenWu BenWu left a comment

Choose a reason for hiding this comment

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

The changes make sense to me but definitely something to keep an eye on to make sure there aren't unintended side effects

@@ -247,7 +247,7 @@ def _traverse(
f"for {prefix}.{field_path} are incompatible"
)

if dtype == "RECORD":
if dtype == "RECORD" and nodes[node_name]["type"] == "RECORD":
Copy link
Contributor

Choose a reason for hiding this comment

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

Did an issue with this pop up while you were testing? I'm ignore_incompatible_fields would need to be true

Copy link
Contributor Author

@sean-rose sean-rose May 22, 2024

Choose a reason for hiding this comment

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

Did an issue with this pop up while you were testing?

Yes, it was causing the derived_view_schemas generator to fail for a couple views that transform an underlying struct column into something else:

  • telemetry.clients_daily_joined
  • telemetry.clients_daily_v6

I'm ignore_incompatible_fields would need to be true

The derived_view_schemas generator calls Schema.merge() with attributes=["description"], which kind of has a similar effect since the field incompatibility logic is applied at the attribute level.

@dataops-ci-bot

This comment has been minimized.

@dataops-ci-bot
Copy link

Integration report for "Have bqetl generate all run glean_usage after stable_views."

sql.diff

Click to expand!
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_by_experiment: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_flat: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_live: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_dev/amo_stats_dau_v2: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_dev/amo_stats_installs_v3: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_prod/amo_stats_dau_v2: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_prod/amo_stats_installs_v3: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_prod/desktop_addons_by_client_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/amo_prod/fenix_addons_by_client_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/analysis/bqetl_default_task_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bedrock/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bergamot/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/bergamot/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/burnham/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/quicksuggest_click_live: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/quicksuggest_impression_live: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/topsites_click_live: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/contextual_services/topsites_impression_live: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/debug_ping_view/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/fenix/retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_all_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_content_auth_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_content_auth_oauth_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_content_auth_stdout_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_users_services_devices_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/fxa_users_services_devices_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/nonprod_fxa_all_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_accounts/nonprod_fxa_content_auth_stdout_events: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop/newtab_live: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_defaultagent/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_tasks/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_desktop_background_update/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_echo_show/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_echo_show/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_echo_show/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_echo_show/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_echo_show/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_fire_tv/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_fire_tv/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_fire_tv/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_fire_tv/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_fire_tv/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_ios/retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality_pc/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality_pc/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality_pc/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality_pc/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_reality_pc/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/firefox_translations/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_android/retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/focus_ios/retention_clients: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_beta_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_beta_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_nightly_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_nightly_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_release_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_desktop_release_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_beta_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_beta_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_nightly_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_nightly_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_release_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fenix_release_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_beta_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_beta_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_nightly_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_nightly_aggregates_v1: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_release_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/glam_etl/glam_fog_release_aggregates_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/glean_dictionary/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_android/retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/klar_ios/retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_android/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_android/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_android/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_android/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_android/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_ios/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_ios/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_ios/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_ios/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/lockwise_ios/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mach/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mach/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mach/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mach/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mach/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mdn_yari/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/monitor_cirrus/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/monitor_frontend/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/monitoring/payload_bytes_error_all: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/monitoring/payload_bytes_error_structured: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozilla_vpn/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozillavpn_backend_cirrus/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozphab/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozregression/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozregression/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozregression/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozregression/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/mozregression/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/org_mozilla_firefox/migration: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/pine/events_unnested: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/pocket/pocket_reach_mau: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/reference_browser/baseline_clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/reference_browser/baseline_clients_first_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/reference_browser/baseline_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/reference_browser/events_stream: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/reference_browser/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/search/firefox_products_search_clients_engines_sources_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/search/search_clients_last_seen: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/static/fxa_amplitude_export_users_daily: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/static/fxa_amplitude_export_users_last_seen: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/static/normalized_os_name: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/static/normalized_os_version: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/static/third_party_standardized_country_names: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/active_users_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/active_users_aggregates_mobile: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/addon_aggregates: schema.yaml
Only in /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/telemetry/buildhub2: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/clients_daily: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/clients_daily_joined: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/clients_daily_v6: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/cohort_daily_statistics: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/core: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/core_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/crash_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/crash_aggregates_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/crash_summary_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/desktop_retention_1_week: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/eng_workflow_build_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/eng_workflow_build_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/eng_workflow_hgpush_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/eng_workflow_hgpush_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/experiment_error_aggregates: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/experiment_error_aggregates_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/fenix_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/fennec_ios_events_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/first_shutdown_summary: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/first_shutdown_summary_v4: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/install: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/main_1pct: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/main_summary: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/main_summary_v3: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/main_summary_v4: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/mobile_active_users: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/mobile_engagement_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/mobile_retention_clients: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/nondesktop_clients_last_seen: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/nondesktop_clients_last_seen_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/rocket_android_events_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/socorro_crash: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/socorro_crash_v2: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_anonymous_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_core_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_core_parquet_v3: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_downgrade_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_focus_event_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_focus_event_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_heartbeat_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_ip_privacy: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_mobile_event_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_mobile_event_parquet_v2: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_new_profile_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_new_profile_parquet_v2: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_shield_study_parquet: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/telemetry/telemetry_shield_study_parquet_v1: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/treeherder/events_unnested: schema.yaml
Only in /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/viu_politica/events_unnested: schema.yaml
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend/events_unnested/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend/events_unnested/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend/events_unnested/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend/events_unnested/schema.yaml	2024-06-08 01:11:32.000000000 +0000
@@ -0,0 +1,300 @@
+fields:
+- name: normalized_app_id
+  type: STRING
+  mode: NULLABLE
+- 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: 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: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- 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_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: 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: 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: 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: enrollment_id
+          type: STRING
+          mode: NULLABLE
+        - name: type
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    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
+- name: event_id
+  type: STRING
+  mode: NULLABLE
+- name: event_timestamp
+  type: INTEGER
+  mode: NULLABLE
+- name: event_category
+  type: STRING
+  mode: NULLABLE
+- name: event_name
+  type: STRING
+  mode: NULLABLE
+- name: event_extra
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: key
+    type: STRING
+    mode: NULLABLE
+  - name: value
+    type: STRING
+    mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql	2024-06-08 01:04:27.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_backend_derived/event_monitoring_live_v1/materialized_view.sql	2024-06-08 01:06:17.000000000 +0000
@@ -60,7 +60,7 @@
   LEFT JOIN
     UNNEST(event.extra) AS event_extra
   WHERE
-    DATE(submission_timestamp) >= "2024-06-07"
+    DATE(submission_timestamp) >= "2024-06-08"
   GROUP BY
     submission_date,
     window_start,
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus/events_unnested/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus/events_unnested/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus/events_unnested/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_cirrus/events_unnested/schema.yaml	2024-06-08 01:14:21.000000000 +0000
@@ -0,0 +1,300 @@
+fields:
+- name: normalized_app_id
+  type: STRING
+  mode: NULLABLE
+- 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: 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: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- 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_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: 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: 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: 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: enrollment_id
+          type: STRING
+          mode: NULLABLE
+        - name: type
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    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
+- name: event_id
+  type: STRING
+  mode: NULLABLE
+- name: event_timestamp
+  type: INTEGER
+  mode: NULLABLE
+- name: event_category
+  type: STRING
+  mode: NULLABLE
+- name: event_name
+  type: STRING
+  mode: NULLABLE
+- name: event_extra
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: key
+    type: STRING
+    mode: NULLABLE
+  - name: value
+    type: STRING
+    mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend/events_unnested/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend/events_unnested/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend/events_unnested/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend/events_unnested/schema.yaml	2024-06-08 01:13:40.000000000 +0000
@@ -0,0 +1,300 @@
+fields:
+- name: normalized_app_id
+  type: STRING
+  mode: NULLABLE
+- 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: 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: build_date
+    type: STRING
+    mode: NULLABLE
+    description: The date & time the application was built
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+  description: The document ID specified in the URI when the client sent this message
+- 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_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: 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: 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: 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: enrollment_id
+          type: STRING
+          mode: NULLABLE
+        - name: type
+          type: STRING
+          mode: NULLABLE
+  - name: ping_type
+    type: STRING
+    mode: NULLABLE
+  - name: seq
+    type: INTEGER
+    mode: NULLABLE
+  - name: start_time
+    type: STRING
+    mode: NULLABLE
+  - name: reason
+    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
+- name: event_id
+  type: STRING
+  mode: NULLABLE
+- name: event_timestamp
+  type: INTEGER
+  mode: NULLABLE
+- name: event_category
+  type: STRING
+  mode: NULLABLE
+- name: event_name
+  type: STRING
+  mode: NULLABLE
+- name: event_extra
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: key
+    type: STRING
+    mode: NULLABLE
+  - name: value
+    type: STRING
+    mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql	2024-06-08 01:04:28.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/accounts_frontend_derived/event_monitoring_live_v1/materialized_view.sql	2024-06-08 01:06:17.000000000 +0000
@@ -60,7 +60,7 @@
   LEFT JOIN
     UNNEST(event.extra) AS event_extra
   WHERE
-    DATE(submission_timestamp) >= "2024-06-07"
+    DATE(submission_timestamp) >= "2024-06-08"
   GROUP BY
     submission_date,
     window_start,
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_by_experiment/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_by_experiment/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_by_experiment/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_by_experiment/schema.yaml	2024-06-08 01:13:43.000000000 +0000
@@ -0,0 +1,37 @@
+fields:
+- name: tile_id
+  type: INTEGER
+  mode: NULLABLE
+- name: tile_type
+  type: STRING
+  mode: NULLABLE
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+- name: experiment_id
+  type: STRING
+  mode: NULLABLE
+- name: experiment_branch
+  type: STRING
+  mode: NULLABLE
+- name: client_id
+  type: STRING
+  mode: NULLABLE
+- name: blocked
+  type: INTEGER
+  mode: NULLABLE
+- name: clicks
+  type: INTEGER
+  mode: NULLABLE
+- name: impressions
+  type: INTEGER
+  mode: NULLABLE
+- name: position
+  type: INTEGER
+  mode: NULLABLE
+- name: source
+  type: STRING
+  mode: NULLABLE
+- name: user_prefs
+  type: INTEGER
+  mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_flat/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_flat/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_flat/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_flat/schema.yaml	2024-06-08 01:13:43.000000000 +0000
@@ -0,0 +1,75 @@
+fields:
+- name: tile_id
+  type: INTEGER
+  mode: NULLABLE
+- name: tile_type
+  type: STRING
+  mode: NULLABLE
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+- name: client_id
+  type: STRING
+  mode: NULLABLE
+- name: addon_version
+  type: STRING
+  mode: NULLABLE
+- name: loaded
+  type: INTEGER
+  mode: NULLABLE
+- name: impressions
+  type: INTEGER
+  mode: NULLABLE
+- name: clicks
+  type: INTEGER
+  mode: NULLABLE
+- name: blocked
+  type: INTEGER
+  mode: NULLABLE
+- name: pocketed
+  type: INTEGER
+  mode: NULLABLE
+- name: position
+  type: INTEGER
+  mode: NULLABLE
+- name: page
+  type: STRING
+  mode: NULLABLE
+- name: source
+  type: STRING
+  mode: NULLABLE
+- name: locale
+  type: STRING
+  mode: NULLABLE
+- name: country_code
+  type: STRING
+  mode: NULLABLE
+- name: version
+  type: STRING
+  mode: NULLABLE
+- name: user_prefs
+  type: INTEGER
+  mode: NULLABLE
+- name: release_channel
+  type: STRING
+  mode: NULLABLE
+- name: shield_id
+  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: sample_id
+  type: INTEGER
+  mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_live/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_live/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_live/schema.yaml	1970-01-01 00:00:00.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/activity_stream/impression_stats_live/schema.yaml	2024-06-08 01:13:42.000000000 +0000
@@ -0,0 +1,196 @@
+fields:
+- name: additional_properties
+  type: STRING
+  mode: NULLABLE
+- name: addon_version
+  type: STRING
+  mode: NULLABLE
+- name: block
+  type: INTEGER
+  mode: NULLABLE
+- name: click
+  type: INTEGER
+  mode: NULLABLE
+- name: document_id
+  type: STRING
+  mode: NULLABLE
+- name: impression_id
+  type: STRING
+  mode: NULLABLE
+- name: loaded
+  type: INTEGER
+  mode: NULLABLE
+- name: locale
+  type: STRING
+  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
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+    - name: subdivision1
+      type: STRING
+      mode: NULLABLE
+    - name: subdivision2
+      type: STRING
+      mode: NULLABLE
+  - name: header
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: date
+      type: STRING
+      mode: NULLABLE
+    - name: dnt
+      type: STRING
+      mode: NULLABLE
+    - name: x_debug_id
+      type: STRING
+      mode: NULLABLE
+    - name: x_pingsender_version
+      type: STRING
+      mode: NULLABLE
+    - name: x_source_tags
+      type: STRING
+      mode: NULLABLE
+    - name: x_telemetry_agent
+      type: STRING
+      mode: NULLABLE
+    - name: x_foxsec_ip_reputation
+      type: STRING
+      mode: NULLABLE
+    - name: x_lb_tags
+      type: STRING
+      mode: NULLABLE
+    - 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
+  - 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
+  - name: isp
+    type: RECORD
+    mode: NULLABLE
+    fields:
+    - name: db_version
+      type: STRING
+      mode: NULLABLE
+    - name: name
+      type: STRING
+      mode: NULLABLE
+    - name: organization
+      type: STRING
+      mode: NULLABLE
+- name: normalized_app_name
+  type: STRING
+  mode: NULLABLE
+- name: normalized_channel
+  type: STRING
+  mode: NULLABLE
+- name: normalized_country_code
+  type: STRING
+  mode: NULLABLE
+- name: normalized_os
+  type: STRING
+  mode: NULLABLE
+- name: normalized_os_version
+  type: STRING
+  mode: NULLABLE
+- name: page
+  type: STRING
+  mode: NULLABLE
+- name: pocket
+  type: INTEGER
+  mode: NULLABLE
+- name: profile_creation_date
+  type: INTEGER
+  mode: NULLABLE
+- name: region
+  type: STRING
+  mode: NULLABLE
+- name: release_channel
+  type: STRING
+  mode: NULLABLE
+- name: sample_id
+  type: INTEGER
+  mode: NULLABLE
+- name: shield_id
+  type: STRING
+  mode: NULLABLE
+- name: source
+  type: STRING
+  mode: NULLABLE
+- name: submission_timestamp
+  type: TIMESTAMP
+  mode: NULLABLE
+- name: tiles
+  type: RECORD
+  mode: REPEATED
+  fields:
+  - name: id
+    type: INTEGER
+    mode: NULLABLE
+  - name: pos
+    type: INTEGER
+    mode: NULLABLE
+- name: user_prefs
+  type: INTEGER
+  mode: NULLABLE
+- name: version
+  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: window_inner_height
+  type: INTEGER
+  mode: NULLABLE
+- name: window_inner_width
+  type: INTEGER
+  mode: NULLABLE
diff -bur --no-dereference --new-file /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/schema.yaml /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/schema.yaml
--- /tmp/workspace/main-generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/schema.yaml	2024-06-08 01:04:28.000000000 +0000
+++ /tmp/workspace/generated-sql/sql/moz-fx-data-shared-prod/adjust/adjust_cohort/schema.yaml	2024-06-08 01:12:15.000000000 +0000
@@ -19,39 +19,53 @@
 - name: network
   type: STRING
   mode: NULLABLE
+  description: name of network ex. Google Ads ACI
 - name: network_token
   type: STRING
   mode: NULLABLE
+  description: unique token for the network
 - name: country
   type: STRING
   mode: NULLABLE
+  description: co

⚠️ Only part of the diff is displayed.

Link to full diff

@sean-rose sean-rose merged commit 4b8574f into main Jun 8, 2024
21 checks passed
@sean-rose sean-rose deleted the fix/derived_view_schemas branch June 8, 2024 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants