diff --git a/.gitignore b/.gitignore index ebaaa86..0ec50c8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ dbt_modules/ logs/ env/ dbt_packages/ -package-lock.yml \ No newline at end of file +package-lock.yml +.DS_Store +integration_tests/.DS_Store \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e31b882..fa414e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +# dbt_snapchat_ads v0.7.0 +[PR #28](https://github.com/fivetran/dbt_snapchat_ads/pull/28) includes the following **BREAKING CHANGE** updates: + +## Feature Updates: Conversion Support +We have added more robust support for conversions in our data models by doing the following: + +- Added a `conversion_purchases_value` field to each `_report` end model, representing the value of conversions that occurred on each day for each account, ad, ad squad, campaign and url in your Ad Account's currency. +- Introduced the `snapchat_ads_conversion_fields` variable to configure which conversion fields (reflecting the total number of conversions) to include in each end model. + - By default, `snapchat_ads_conversion_fields` will include the most commonly used conversion field, `conversion_purchases`. See [README](https://github.com/fivetran/dbt_snapchat_ads/tree/main?tab=readme-ov-file#configuring-conversion-fields) for details on how to configure this variable to include other conversion events. + - The individual conversion fields specified by `snapchat_ads_conversion_fields` are summed together into a `total_conversions` field in each end model as well. +> **IMPORTANT**: The above new field additions are **breaking changes** for users who were not already bringing in conversion fields via passthrough columns. + +## Documentation Update +- Documented how to use the new `snapchat_ads__conversion_fields` variable [here](https://github.com/fivetran/dbt_snapchat_ads/tree/main?tab=readme-ov-file#configuring-conversion-fields). +- Documented new default conversion fields in yml. + +## Under the Hood +- Added a new [version](https://github.com/fivetran/dbt_snapchat_ads/blob/main/macros/snapchat_ads_persist_pass_through_columns.sql) of the `persist_pass_through_columns()` [macro](https://github.com/fivetran/dbt_fivetran_utils/blob/v0.4.10/macros/persist_pass_through_columns.sql) in which we can include `coalesces` and properly check between conversion field values and the existing passthrough column. +- Added data validation tests to verify this release. + +## Contributors +- [Seer Interactive](https://www.seerinteractive.com/?utm_campaign=Fivetran%20%7C%20Models&utm_source=Fivetran&utm_medium=Fivetran%20Documentation) + # dbt_snapchat_ads v0.6.2 ## Bug Fixes - Adjust the severity of the `ad_account_id` test in `snapchat_ads__account_report` to `warn`. This is required since Snapchat can hard-delete records from the history tables, but not from the reporting tables. This ensures that accurate statistics are being reported and production pipelines aren't failing. ([PR #20](https://github.com/fivetran/dbt_snapchat_ads/pull/20)) diff --git a/DECISIONLOG.md b/DECISIONLOG.md index f0bf3e3..800ecb9 100644 --- a/DECISIONLOG.md +++ b/DECISIONLOG.md @@ -5,7 +5,7 @@ An ad can be associated with multiple ad squads and therefore multiple campaigns ## UTM Filtering This package contains a `snapchat_ads__url_report` which provides daily metrics for your utm compatible ads. It is important to note that not all Ads leverage utm parameters. Therefore, this package takes an opinionated approach to filter out any records that do not contain utm parameters or leverage a url within the ad. -If you would like to leverage a report that contains all ads and their daily metrics, I would suggest you leverage the snpapchat_ads__ad_report which does not apply any filtering. +If you would like to leverage a report that contains all ads and their daily metrics, I would suggest you leverage the `snapchat_ads__ad_report` which does not apply any filtering. ## Ad Account Report Metrics Associated with Deleted Entities Similar to some other Ad Platforms, Snapchat Ads will hard-delete entities (i.e. ads, ad squads, campaigns, accounts) from their `*_history` tables but retain associated records in their respective `*_hourly_report` tables. This typically does not pose an issue for our `not_null` tests on our end models, as most entities have their own `_hourly_report` source tables that come with the appropriate entity-level ID. However, `snapchat_ads__account_report` draws from the `ad_hourly_report` table, rolls it up to the account level, and joins in the `ad_account_id` using history tables. Thus, if any ad report record is associated with a deleted ad, campaign, ad squad, or account, the `ad_account_id` will be `null`. diff --git a/README.md b/README.md index 4701d46..2b80c07 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,15 @@ dispatch: search_order: ['spark_utils', 'dbt_utils'] ``` -### Step 2: Install the package -Include the following snapchat_ads_source package version in your `packages.yml` file: +### Step 2: Install the package (skip if also using the `ad_reporting` combination package) +If you are not using the [Ad Reporting](https://github.com/fivetran/dbt_ad_reporting) combination package, include the following Snapchat Ads package version in your `packages.yml` file: > TIP: Check [dbt Hub](https://hub.getdbt.com/) for the latest installation instructions or [read the dbt docs](https://docs.getdbt.com/docs/package-management) for more information on installing packages. ```yml packages: - package: fivetran/snapchat_ads - version: [">=0.6.0", "<0.7.0"] # we recommend using ranges to capture non-breaking changes automatically + version: [">=0.7.0", "<0.8.0"] # we recommend using ranges to capture non-breaking changes automatically ``` + Do NOT include the `snapchat_ads_source` package in this file. The transformation package itself has a dependency on it and will install the source package as well. ### Step 3: Configure your variables @@ -69,6 +70,8 @@ vars: ``` ### (Optional) Step 4: Additional configurations +
Expand/Collapse details + #### Union multiple connectors If you have multiple snapchat_ads connectors in Fivetran and would like to use this package on all of them simultaneously, we have provided functionality to do so. The package will union all of the data together and pass the unioned table into the transformations. You will be able to see which source it came from in the `source_relation` column of each model. To use this functionality, you will need to set either the `snapchat_ads_union_schemas` OR `snapchat_ads_union_databases` variables (cannot do both) in your root `dbt_project.yml` file: @@ -82,15 +85,18 @@ vars: To connect your multiple schema/database sources to the package models, follow the steps outlined in the [Union Data Defined Sources Configuration](https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source) section of the Fivetran Utils documentation for the union_data macro. This will ensure a proper configuration and correct visualization of connections in the DAG. #### Passing Through Additional Metrics -By default, this package will select `clicks`, `impressions`, and `cost` from the source reporting tables to store into the staging models. If you would like to pass through additional metrics to the staging models, add the below configurations to your `dbt_project.yml` file. These variables allow for the pass-through fields to be aliased (`alias`) if desired, but not required. Use the below format for declaring the respective pass-through variables: - -> IMPORTANT: Make sure to exercise due diligence when adding metrics to these models. The metrics added by default (taps, impressions, and spend) have been vetted by the Fivetran team, maintaining this package for accuracy. There are metrics included within the source reports, such as metric averages, which may be inaccurately represented at the grain for reports created in this package. You must ensure that whichever metrics you pass through are appropriate to aggregate at the respective reporting levels in this package. +By default, this package will select `swipes`, `impressions`, `spend`, `conversion_purchases_value`, and `total_conversions` (as well as fields set via `snapchat_ads__conversion_fields` in the next section) from the source reporting tables to store into the staging models. If you would like to pass through additional metrics to the staging models, add the below configurations to your `dbt_project.yml` file. These variables allow for the pass-through fields to be aliased (`alias`) if desired, but not required. Use the below format for declaring the respective pass-through variables: ```yml vars: snapchat_ads__ad_hourly_passthrough_metrics: - name: "new_custom_field" - alias: "custom_field" + alias: "custom_field_alias" + transform_sql: "coalesce(custom_field_alias, 0)" # reference the `alias` here if you are using one + - name: "unique_int_field" + alias: "field_id" + - name: "another_one" + transform_sql: "coalesce(another_one, 0)" # reference the `name` here if you're not using an alias snapchat_ads__ad_squad_hourly_passthrough_metrics: - name: "this_field" snapchat_ads__campaign_hourly_report_passthrough_metrics: @@ -98,8 +104,26 @@ vars: alias: "field_id" ``` +>**Note**: Make sure to exercise due diligence when adding metrics to these models. The metrics added by default (swipes, impressions, spend, and conversions) have been vetted by the Fivetran team, maintaining this package for accuracy. There are metrics included within the source reports, such as metric averages, which may be inaccurately represented at the grain for reports created in this package. You must ensure that whichever metrics you pass through are appropriate to aggregate at the respective reporting levels in this package. + +**Important**: You do NOT need to add conversions in this way. See the following section for an alternative implementation. + +#### Configuring Conversion Fields +Separate from the above passthrough metrics, the package will also include conversion metrics based on the `snapchat_ads__conversion_fields` variable, in addition to the `conversion_purchases_value` field. + +By default, the data models consider `conversion_purchases` to be conversions. These should cover most use cases, but, say, if you would like to consider adding payment info, adding to wishlist, adding to the cart, etc. to also be conversions, you would apply the following configuration with the **original** source names of the conversion fields (not aliases you provided in the section above): + +```yml +# dbt_project.yml +vars: + snapchat_ads__conversion_fields: ['conversion_purchases', 'conversion_add_billing', 'conversion_save', 'conversion_add_cart'] +``` + +> We introduced support for conversion fields in our `*_report` data models in the [v0.7.0 release](https://github.com/fivetran/dbt_snapchat_ads_source/releases/tag/v0.7.0) of the package, but customers might have been bringing in these conversion fields earlier using the passthrough fields variables. The data models will avoid "duplicate column" errors automatically if this is the case. + #### Change the source table references -If an individual source table has a different name than the package expects, add the table name as it appears in your destination to the respective variable: +If an individual source table has a different name than the package expects, add the table name as it appears in your destination to the respective variable. This is not available when running the package on multiple unioned connectors. + > IMPORTANT: See this project's [`dbt_project.yml`](https://github.com/fivetran/dbt_snapchat_ads_source/blob/main/dbt_project.yml) variable declarations to see the expected names. ```yml @@ -108,7 +132,7 @@ vars: ``` #### Change the build schema -By default, this package builds the Snapchat Ads staging models within a schema titled (`` + `_stg_snapchat_ads`) and your Snapchat Ads modeling models within a schema titled (`` + `_snapchat_ads`) in your destination. If this is not where you would like your Snapchat Ads data to be written to, add the following configuration to your root `dbt_project.yml` file: +By default, this package builds the Snapchat Ads staging models (9 views, 9 tables) within a schema titled (`` + `_stg_snapchat_ads`) and your Snapchat Ads modeling models (5 tables) within a schema titled (`` + `_snapchat_ads`) in your destination. If this is not where you would like your Snapchat Ads data to be written to, add the following configuration to your root `dbt_project.yml` file: ```yml models: @@ -118,6 +142,8 @@ models: +schema: my_new_schema_name # leave blank for just the target_schema ``` +
+ ### (Optional) Step 5: Orchestrate your models with Fivetran Transformations for dbt Coreā„¢
Expand for more details
@@ -133,7 +159,7 @@ This dbt package is dependent on the following dbt packages. These dependencies ```yml packages: - package: fivetran/snapchat_ads_source - version: [">=0.6.0", "<0.7.0"] + version: [">=0.7.0", "<0.8.0"] - package: fivetran/fivetran_utils version: [">=0.4.0", "<0.5.0"] @@ -156,6 +182,11 @@ A small team of analytics engineers at Fivetran develops these dbt packages. How We highly encourage and welcome contributions to this package. Check out [this dbt Discourse article](https://discourse.getdbt.com/t/contributing-to-a-dbt-package/657) on the best workflow for contributing to a package. +#### Contributors +We thank [everyone](https://github.com/fivetran/dbt_snapchat_ads/graphs/contributors) who has taken the time to contribute. Each PR, bug report, and feature request has made this package better and is truly appreciated. + +A special thank you to [Seer Interactive](https://www.seerinteractive.com/?utm_campaign=Fivetran%20%7C%20Models&utm_source=Fivetran&utm_medium=Fivetran%20Documentation), who we closely collaborated with to introduce native conversion support to our Ad packages. + ## Are there any resources available? - If you have questions or want to reach out for help, see the [GitHub Issue](https://github.com/fivetran/dbt_snapchat_ads/issues/new/choose) section to find the right avenue of support for you. - If you would like to provide feedback to the dbt package team at Fivetran or would like to request a new dbt package, fill out our [Feedback Form](https://www.surveymonkey.com/r/DQ7K7WW). diff --git a/dbt_project.yml b/dbt_project.yml index 92345c7..3179ffc 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -16,6 +16,7 @@ vars: snapchat_ads__ad_hourly_passthrough_metrics: [] snapchat_ads__ad_squad_hourly_passthrough_metrics: [] snapchat_ads__campaign_hourly_report_passthrough_metrics: [] + snapchat_ads__conversion_fields: ['conversion_purchases'] models: snapchat_ads: +schema: snapchat_ads diff --git a/docs/catalog.json b/docs/catalog.json index f6060b0..ee4f8d9 100644 --- a/docs/catalog.json +++ b/docs/catalog.json @@ -1 +1 @@ -{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/catalog/v1.json", "dbt_version": "1.7.3", "generated_at": "2023-12-12T20:18:30.661826Z", "invocation_id": "74dde586-ceda-441e-a7bb-2d212c264b58", "env": {}}, "nodes": {"seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_account_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "name": {"type": "text", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "text", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "text", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "text", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_id": {"type": "text", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "integer", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "integer", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 5, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "text", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_squad_id": {"type": "text", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"campaign_id": {"type": "text", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "text", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_url_tag_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"creative_id": {"type": "text", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "text", "index": 2, "name": "key", "comment": null}, "value": {"type": "text", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data"}, "model.snapchat_ads.snapchat_ads__account_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__account_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "date", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 4, "name": "ad_account_name", "comment": null}, "currency": {"type": "text", "index": 5, "name": "currency", "comment": null}, "swipes": {"type": "bigint", "index": 6, "name": "swipes", "comment": null}, "impressions": {"type": "bigint", "index": 7, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 8, "name": "spend", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__account_report"}, "model.snapchat_ads.snapchat_ads__ad_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__ad_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "date", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 4, "name": "ad_account_name", "comment": null}, "ad_id": {"type": "text", "index": 5, "name": "ad_id", "comment": null}, "ad_name": {"type": "text", "index": 6, "name": "ad_name", "comment": null}, "currency": {"type": "text", "index": 7, "name": "currency", "comment": null}, "swipes": {"type": "bigint", "index": 8, "name": "swipes", "comment": null}, "impressions": {"type": "bigint", "index": 9, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 10, "name": "spend", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__ad_report"}, "model.snapchat_ads.snapchat_ads__ad_squad_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__ad_squad_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "date", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 4, "name": "ad_account_name", "comment": null}, "campaign_id": {"type": "text", "index": 5, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "text", "index": 6, "name": "campaign_name", "comment": null}, "ad_squad_id": {"type": "text", "index": 7, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "text", "index": 8, "name": "ad_squad_name", "comment": null}, "currency": {"type": "text", "index": 9, "name": "currency", "comment": null}, "swipes": {"type": "bigint", "index": 10, "name": "swipes", "comment": null}, "impressions": {"type": "bigint", "index": 11, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 12, "name": "spend", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__ad_squad_report"}, "model.snapchat_ads.snapchat_ads__campaign_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__campaign_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "date", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 4, "name": "ad_account_name", "comment": null}, "campaign_id": {"type": "text", "index": 5, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "text", "index": 6, "name": "campaign_name", "comment": null}, "currency": {"type": "text", "index": 7, "name": "currency", "comment": null}, "swipes": {"type": "bigint", "index": 8, "name": "swipes", "comment": null}, "impressions": {"type": "bigint", "index": 9, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 10, "name": "spend", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__campaign_report"}, "model.snapchat_ads.snapchat_ads__url_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__url_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "date", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 4, "name": "ad_account_name", "comment": null}, "ad_id": {"type": "text", "index": 5, "name": "ad_id", "comment": null}, "ad_name": {"type": "text", "index": 6, "name": "ad_name", "comment": null}, "ad_squad_id": {"type": "text", "index": 7, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "text", "index": 8, "name": "ad_squad_name", "comment": null}, "campaign_id": {"type": "text", "index": 9, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "text", "index": 10, "name": "campaign_name", "comment": null}, "currency": {"type": "text", "index": 11, "name": "currency", "comment": null}, "base_url": {"type": "text", "index": 12, "name": "base_url", "comment": null}, "url_host": {"type": "text", "index": 13, "name": "url_host", "comment": null}, "url_path": {"type": "text", "index": 14, "name": "url_path", "comment": null}, "utm_source": {"type": "text", "index": 15, "name": "utm_source", "comment": null}, "utm_medium": {"type": "text", "index": 16, "name": "utm_medium", "comment": null}, "utm_campaign": {"type": "text", "index": 17, "name": "utm_campaign", "comment": null}, "utm_content": {"type": "text", "index": 18, "name": "utm_content", "comment": null}, "utm_term": {"type": "text", "index": 19, "name": "utm_term", "comment": null}, "swipes": {"type": "bigint", "index": 20, "name": "swipes", "comment": null}, "impressions": {"type": "bigint", "index": 21, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 22, "name": "spend", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__url_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_account_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "text", "index": 3, "name": "ad_account_name", "comment": null}, "created_at": {"type": "timestamp without time zone", "index": 4, "name": "created_at", "comment": null}, "advertiser": {"type": "text", "index": 5, "name": "advertiser", "comment": null}, "currency": {"type": "text", "index": 6, "name": "currency", "comment": null}, "timezone": {"type": "text", "index": 7, "name": "timezone", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 8, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 9, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 10, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_account_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "name": {"type": "text", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "ad_id": {"type": "text", "index": 2, "name": "ad_id", "comment": null}, "ad_name": {"type": "text", "index": 3, "name": "ad_name", "comment": null}, "created_at": {"type": "timestamp without time zone", "index": 4, "name": "created_at", "comment": null}, "ad_squad_id": {"type": "text", "index": 5, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "text", "index": 6, "name": "creative_id", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 7, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 8, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 9, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "text", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "text", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "text", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_hourly_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "ad_id": {"type": "text", "index": 2, "name": "ad_id", "comment": null}, "date_hour": {"type": "timestamp without time zone", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "numeric(28,6)", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "numeric(28,6)", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "numeric(28,6)", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "numeric", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "numeric(28,6)", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "numeric(28,6)", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "numeric(28,6)", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "numeric(28,6)", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "numeric(28,6)", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "numeric(28,6)", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "numeric", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "numeric(28,6)", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "numeric(28,6)", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "numeric", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "integer", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 20, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_hourly_report_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_id": {"type": "text", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "integer", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "integer", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 5, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "ad_squad_id": {"type": "text", "index": 2, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "text", "index": 3, "name": "ad_squad_name", "comment": null}, "created_at": {"type": "timestamp without time zone", "index": 4, "name": "created_at", "comment": null}, "campaign_id": {"type": "text", "index": 5, "name": "campaign_id", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 6, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 7, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 8, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "text", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_hourly_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "ad_squad_id": {"type": "text", "index": 2, "name": "ad_squad_id", "comment": null}, "date_hour": {"type": "timestamp without time zone", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "numeric", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "integer", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "integer", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "numeric", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "integer", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "numeric", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "integer", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 20, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_squad_id": {"type": "text", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "campaign_id": {"type": "text", "index": 2, "name": "campaign_id", "comment": null}, "ad_account_id": {"type": "text", "index": 3, "name": "ad_account_id", "comment": null}, "created_at": {"type": "timestamp without time zone", "index": 4, "name": "created_at", "comment": null}, "campaign_name": {"type": "text", "index": 5, "name": "campaign_name", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 6, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 7, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 8, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_hourly_report", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "campaign_id": {"type": "text", "index": 2, "name": "campaign_id", "comment": null}, "date_hour": {"type": "timestamp without time zone", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "numeric", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "integer", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "integer", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "numeric", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "integer", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "numeric", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "integer", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "numeric", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 20, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_hourly_report_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"campaign_id": {"type": "text", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "creative_id": {"type": "text", "index": 2, "name": "creative_id", "comment": null}, "created_at": {"type": "timestamp without time zone", "index": 3, "name": "created_at", "comment": null}, "ad_account_id": {"type": "text", "index": 4, "name": "ad_account_id", "comment": null}, "creative_name": {"type": "text", "index": 5, "name": "creative_name", "comment": null}, "url": {"type": "text", "index": 6, "name": "url", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 7, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 8, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 9, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "text", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_url_tag_history", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"source_relation": {"type": "text", "index": 1, "name": "source_relation", "comment": null}, "creative_id": {"type": "text", "index": 2, "name": "creative_id", "comment": null}, "param_key": {"type": "text", "index": 3, "name": "param_key", "comment": null}, "param_value": {"type": "text", "index": 4, "name": "param_value", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 5, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "boolean", "index": 6, "name": "is_most_recent_record", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": {"metadata": {"type": "VIEW", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_url_tag_history_tmp", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"creative_id": {"type": "text", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "text", "index": 2, "name": "key", "comment": null}, "value": {"type": "text", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"}}, "sources": {"source.snapchat_ads_source.snapchat_ads.ad_account_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_account_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "name": {"type": "text", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_account_history"}, "source.snapchat_ads_source.snapchat_ads.ad_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "text", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "text", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "text", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_history"}, "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_id": {"type": "text", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "integer", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "integer", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "integer", "index": 5, "name": "swipes", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.ad_squad_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "text", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_history"}, "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"ad_squad_id": {"type": "text", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.campaign_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "text", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_history"}, "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_hourly_report_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"campaign_id": {"type": "text", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "timestamp without time zone", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "timestamp without time zone", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "integer", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "integer", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "integer", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "integer", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "integer", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "integer", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "integer", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "integer", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "integer", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "integer", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "integer", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "integer", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "integer", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "integer", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "integer", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "integer", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "integer", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "integer", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "integer", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "integer", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "integer", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "integer", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "integer", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "integer", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "integer", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "integer", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "integer", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "integer", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "integer", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "integer", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "integer", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "integer", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "integer", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "integer", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "integer", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "integer", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "integer", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "integer", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.creative_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"id": {"type": "text", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "text", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "text", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "text", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "text", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_history"}, "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": {"metadata": {"type": "BASE TABLE", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_url_tag_history_data", "database": "postgres", "comment": null, "owner": "pguser"}, "columns": {"creative_id": {"type": "text", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "text", "index": 2, "name": "key", "comment": null}, "value": {"type": "text", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "timestamp without time zone", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"}}, "errors": null} \ No newline at end of file +{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/catalog/v1.json", "dbt_version": "1.8.7", "generated_at": "2024-10-29T19:19:50.401555Z", "invocation_id": "f385af02-cce9-4149-b638-4efd7b534030", "env": {}}, "nodes": {"model.snapchat_ads.snapchat_ads__account_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__account_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "DATE", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 4, "name": "ad_account_name", "comment": null}, "currency": {"type": "STRING", "index": 5, "name": "currency", "comment": null}, "swipes": {"type": "INT64", "index": 6, "name": "swipes", "comment": null}, "impressions": {"type": "INT64", "index": 7, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 8, "name": "spend", "comment": null}, "total_conversions": {"type": "INT64", "index": 9, "name": "total_conversions", "comment": null}, "conversion_purchases_value": {"type": "NUMERIC", "index": 10, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 11, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 4, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 552, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__account_report"}, "model.snapchat_ads.snapchat_ads__ad_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__ad_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "DATE", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 4, "name": "ad_account_name", "comment": null}, "ad_id": {"type": "STRING", "index": 5, "name": "ad_id", "comment": null}, "ad_name": {"type": "STRING", "index": 6, "name": "ad_name", "comment": null}, "currency": {"type": "STRING", "index": 7, "name": "currency", "comment": null}, "swipes": {"type": "INT64", "index": 8, "name": "swipes", "comment": null}, "impressions": {"type": "INT64", "index": 9, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 10, "name": "spend", "comment": null}, "total_conversions": {"type": "INT64", "index": 11, "name": "total_conversions", "comment": null}, "conversion_purchases_value": {"type": "NUMERIC", "index": 12, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 13, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 70, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 14700, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__ad_report"}, "model.snapchat_ads.snapchat_ads__ad_squad_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__ad_squad_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "DATE", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 4, "name": "ad_account_name", "comment": null}, "campaign_id": {"type": "STRING", "index": 5, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "STRING", "index": 6, "name": "campaign_name", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 7, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "STRING", "index": 8, "name": "ad_squad_name", "comment": null}, "currency": {"type": "STRING", "index": 9, "name": "currency", "comment": null}, "swipes": {"type": "INT64", "index": 10, "name": "swipes", "comment": null}, "impressions": {"type": "INT64", "index": 11, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 12, "name": "spend", "comment": null}, "total_conversions": {"type": "INT64", "index": 13, "name": "total_conversions", "comment": null}, "conversion_purchases_value": {"type": "NUMERIC", "index": 14, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 15, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 2, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 208, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__ad_squad_report"}, "model.snapchat_ads.snapchat_ads__campaign_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__campaign_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "DATE", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 4, "name": "ad_account_name", "comment": null}, "campaign_id": {"type": "STRING", "index": 5, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "STRING", "index": 6, "name": "campaign_name", "comment": null}, "currency": {"type": "STRING", "index": 7, "name": "currency", "comment": null}, "swipes": {"type": "INT64", "index": 8, "name": "swipes", "comment": null}, "impressions": {"type": "INT64", "index": 9, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 10, "name": "spend", "comment": null}, "total_conversions": {"type": "INT64", "index": 11, "name": "total_conversions", "comment": null}, "conversion_purchases_value": {"type": "NUMERIC", "index": 12, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 13, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 1, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 104, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__campaign_report"}, "model.snapchat_ads.snapchat_ads__url_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__url_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "date_day": {"type": "DATE", "index": 2, "name": "date_day", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 4, "name": "ad_account_name", "comment": null}, "ad_id": {"type": "STRING", "index": 5, "name": "ad_id", "comment": null}, "ad_name": {"type": "STRING", "index": 6, "name": "ad_name", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 7, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "STRING", "index": 8, "name": "ad_squad_name", "comment": null}, "campaign_id": {"type": "STRING", "index": 9, "name": "campaign_id", "comment": null}, "campaign_name": {"type": "STRING", "index": 10, "name": "campaign_name", "comment": null}, "currency": {"type": "STRING", "index": 11, "name": "currency", "comment": null}, "base_url": {"type": "STRING", "index": 12, "name": "base_url", "comment": null}, "url_host": {"type": "STRING", "index": 13, "name": "url_host", "comment": null}, "url_path": {"type": "STRING", "index": 14, "name": "url_path", "comment": null}, "utm_source": {"type": "STRING", "index": 15, "name": "utm_source", "comment": null}, "utm_medium": {"type": "STRING", "index": 16, "name": "utm_medium", "comment": null}, "utm_campaign": {"type": "STRING", "index": 17, "name": "utm_campaign", "comment": null}, "utm_content": {"type": "STRING", "index": 18, "name": "utm_content", "comment": null}, "utm_term": {"type": "STRING", "index": 19, "name": "utm_term", "comment": null}, "swipes": {"type": "INT64", "index": 20, "name": "swipes", "comment": null}, "impressions": {"type": "INT64", "index": 21, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 22, "name": "spend", "comment": null}, "total_conversions": {"type": "INT64", "index": 23, "name": "total_conversions", "comment": null}, "conversion_purchases_value": {"type": "NUMERIC", "index": 24, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 25, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 70, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 34312, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads.snapchat_ads__url_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_account_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "ad_account_name": {"type": "STRING", "index": 3, "name": "ad_account_name", "comment": null}, "created_at": {"type": "TIMESTAMP", "index": 4, "name": "created_at", "comment": null}, "advertiser": {"type": "STRING", "index": 5, "name": "advertiser", "comment": null}, "currency": {"type": "STRING", "index": 6, "name": "currency", "comment": null}, "timezone": {"type": "STRING", "index": 7, "name": "timezone", "comment": null}, "_fivetran_synced": {"type": "TIMESTAMP", "index": 8, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 9, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 10, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 111, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 9213, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_account_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "name": {"type": "STRING", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "ad_id": {"type": "STRING", "index": 2, "name": "ad_id", "comment": null}, "ad_name": {"type": "STRING", "index": 3, "name": "ad_name", "comment": null}, "created_at": {"type": "TIMESTAMP", "index": 4, "name": "created_at", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 5, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "STRING", "index": 6, "name": "creative_id", "comment": null}, "_fivetran_synced": {"type": "TIMESTAMP", "index": 7, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 8, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 9, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 320, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 50880, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "STRING", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "STRING", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_hourly_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "ad_id": {"type": "STRING", "index": 2, "name": "ad_id", "comment": null}, "date_hour": {"type": "TIMESTAMP", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "NUMERIC", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "NUMERIC", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "NUMERIC", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "NUMERIC", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "NUMERIC", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "NUMERIC", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "NUMERIC", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "NUMERIC", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "NUMERIC", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "NUMERIC", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "NUMERIC", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "NUMERIC", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "NUMERIC", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "NUMERIC", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "INT64", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 20, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 21, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 22, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 1212, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 106656, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_hourly_report_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_id": {"type": "STRING", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "TIMESTAMP", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "INT64", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "INT64", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 5, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 6, "name": "conversion_purchases_value", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 7, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 8, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 9, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 10, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 11, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 12, "name": "conversion_purchases", "comment": null}, "conversion_save": {"type": "INT64", "index": 13, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 14, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 15, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 16, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 17, "name": "conversion_view_content", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 2, "name": "ad_squad_id", "comment": null}, "ad_squad_name": {"type": "STRING", "index": 3, "name": "ad_squad_name", "comment": null}, "created_at": {"type": "TIMESTAMP", "index": 4, "name": "created_at", "comment": null}, "campaign_id": {"type": "STRING", "index": 5, "name": "campaign_id", "comment": null}, "_fivetran_synced": {"type": "TIMESTAMP", "index": 6, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 7, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 8, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 228, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 27588, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "STRING", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_hourly_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 2, "name": "ad_squad_id", "comment": null}, "date_hour": {"type": "TIMESTAMP", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "FLOAT64", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "INT64", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "INT64", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "FLOAT64", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "INT64", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "FLOAT64", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "INT64", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 20, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 21, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 22, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 2000, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_squad_id": {"type": "STRING", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "campaign_id": {"type": "STRING", "index": 2, "name": "campaign_id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 3, "name": "ad_account_id", "comment": null}, "created_at": {"type": "TIMESTAMP", "index": 4, "name": "created_at", "comment": null}, "campaign_name": {"type": "STRING", "index": 5, "name": "campaign_name", "comment": null}, "_fivetran_synced": {"type": "TIMESTAMP", "index": 6, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 7, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 8, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 58, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 7018, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_hourly_report", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "campaign_id": {"type": "STRING", "index": 2, "name": "campaign_id", "comment": null}, "date_hour": {"type": "TIMESTAMP", "index": 3, "name": "date_hour", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 4, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 5, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 6, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time": {"type": "FLOAT64", "index": 7, "name": "attachment_total_view_time", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 8, "name": "attachment_view_completion", "comment": null}, "quartile_1": {"type": "INT64", "index": 9, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 10, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 11, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 12, "name": "saves", "comment": null}, "shares": {"type": "INT64", "index": 13, "name": "shares", "comment": null}, "screen_time": {"type": "FLOAT64", "index": 14, "name": "screen_time", "comment": null}, "video_views": {"type": "INT64", "index": 15, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 16, "name": "view_completion", "comment": null}, "view_time": {"type": "FLOAT64", "index": 17, "name": "view_time", "comment": null}, "impressions": {"type": "INT64", "index": 18, "name": "impressions", "comment": null}, "spend": {"type": "FLOAT64", "index": 19, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 20, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 21, "name": "conversion_purchases_value", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 22, "name": "conversion_purchases", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 2000, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_hourly_report_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"campaign_id": {"type": "STRING", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "creative_id": {"type": "STRING", "index": 2, "name": "creative_id", "comment": null}, "created_at": {"type": "TIMESTAMP", "index": 3, "name": "created_at", "comment": null}, "ad_account_id": {"type": "STRING", "index": 4, "name": "ad_account_id", "comment": null}, "creative_name": {"type": "STRING", "index": 5, "name": "creative_name", "comment": null}, "url": {"type": "STRING", "index": 6, "name": "url", "comment": null}, "_fivetran_synced": {"type": "TIMESTAMP", "index": 7, "name": "_fivetran_synced", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 8, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 9, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 119, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 17136, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "STRING", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_url_tag_history", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"source_relation": {"type": "STRING", "index": 1, "name": "source_relation", "comment": null}, "creative_id": {"type": "STRING", "index": 2, "name": "creative_id", "comment": null}, "param_key": {"type": "STRING", "index": 3, "name": "param_key", "comment": null}, "param_value": {"type": "STRING", "index": 4, "name": "param_value", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 5, "name": "updated_at", "comment": null}, "is_most_recent_record": {"type": "BOOL", "index": 6, "name": "is_most_recent_record", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 383, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 36051, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": {"metadata": {"type": "view", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_url_tag_history_tmp", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"creative_id": {"type": "STRING", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "STRING", "index": 2, "name": "key", "comment": null}, "value": {"type": "STRING", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"has_stats": {"id": "has_stats", "label": "Has Stats?", "value": false, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"}, "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_account_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "name": {"type": "STRING", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 111, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 10767, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "STRING", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "STRING", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 320, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 55360, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_id": {"type": "STRING", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "TIMESTAMP", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "INT64", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "INT64", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 5, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 6, "name": "conversion_purchases_value", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 7, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 8, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 9, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 10, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 11, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 12, "name": "conversion_purchases", "comment": null}, "conversion_save": {"type": "INT64", "index": 13, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 14, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 15, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 16, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 17, "name": "conversion_view_content", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 1212, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 201176, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "STRING", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 228, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 30780, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_squad_id": {"type": "STRING", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 3580, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 58, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 7830, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"campaign_id": {"type": "STRING", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 3580, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data"}, "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_creative_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "STRING", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 119, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 18802, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_history_data"}, "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_creative_url_tag_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"creative_id": {"type": "STRING", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "STRING", "index": 2, "name": "key", "comment": null}, "value": {"type": "STRING", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 383, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 34902, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data"}}, "sources": {"source.snapchat_ads_source.snapchat_ads.ad_account_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_account_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "name": {"type": "STRING", "index": 2, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 3, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 111, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 10767, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_account_history"}, "source.snapchat_ads_source.snapchat_ads.ad_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_squad_id": {"type": "STRING", "index": 2, "name": "ad_squad_id", "comment": null}, "creative_id": {"type": "STRING", "index": 3, "name": "creative_id", "comment": null}, "name": {"type": "STRING", "index": 4, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 320, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 55360, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_history"}, "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_id": {"type": "STRING", "index": 1, "name": "ad_id", "comment": null}, "date": {"type": "TIMESTAMP", "index": 2, "name": "date", "comment": null}, "impressions": {"type": "INT64", "index": 3, "name": "impressions", "comment": null}, "spend": {"type": "INT64", "index": 4, "name": "spend", "comment": null}, "swipes": {"type": "INT64", "index": 5, "name": "swipes", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 6, "name": "conversion_purchases_value", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 7, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 8, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 9, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 10, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 11, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 12, "name": "conversion_purchases", "comment": null}, "conversion_save": {"type": "INT64", "index": 13, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 14, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 15, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 16, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 17, "name": "conversion_view_content", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 1212, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 201176, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.ad_squad_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "campaign_id": {"type": "STRING", "index": 2, "name": "campaign_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 228, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 30780, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_history"}, "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"ad_squad_id": {"type": "STRING", "index": 1, "name": "ad_squad_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 3580, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.campaign_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 4, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 58, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 7830, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_history"}, "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_hourly_report_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"campaign_id": {"type": "STRING", "index": 1, "name": "campaign_id", "comment": null}, "date": {"type": "DATETIME", "index": 2, "name": "date", "comment": null}, "_fivetran_synced": {"type": "DATETIME", "index": 3, "name": "_fivetran_synced", "comment": null}, "android_installs": {"type": "INT64", "index": 4, "name": "android_installs", "comment": null}, "attachment_avg_view_time_millis": {"type": "INT64", "index": 5, "name": "attachment_avg_view_time_millis", "comment": null}, "attachment_quartile_1": {"type": "INT64", "index": 6, "name": "attachment_quartile_1", "comment": null}, "attachment_quartile_2": {"type": "INT64", "index": 7, "name": "attachment_quartile_2", "comment": null}, "attachment_quartile_3": {"type": "INT64", "index": 8, "name": "attachment_quartile_3", "comment": null}, "attachment_total_view_time_millis": {"type": "INT64", "index": 9, "name": "attachment_total_view_time_millis", "comment": null}, "attachment_view_completion": {"type": "INT64", "index": 10, "name": "attachment_view_completion", "comment": null}, "avg_screen_time_millis": {"type": "INT64", "index": 11, "name": "avg_screen_time_millis", "comment": null}, "avg_view_time_millis": {"type": "INT64", "index": 12, "name": "avg_view_time_millis", "comment": null}, "conversion_add_billing": {"type": "INT64", "index": 13, "name": "conversion_add_billing", "comment": null}, "conversion_add_cart": {"type": "INT64", "index": 14, "name": "conversion_add_cart", "comment": null}, "conversion_app_opens": {"type": "INT64", "index": 15, "name": "conversion_app_opens", "comment": null}, "conversion_level_completes": {"type": "INT64", "index": 16, "name": "conversion_level_completes", "comment": null}, "conversion_page_views": {"type": "INT64", "index": 17, "name": "conversion_page_views", "comment": null}, "conversion_purchases": {"type": "INT64", "index": 18, "name": "conversion_purchases", "comment": null}, "conversion_purchases_value": {"type": "FLOAT64", "index": 19, "name": "conversion_purchases_value", "comment": null}, "conversion_save": {"type": "INT64", "index": 20, "name": "conversion_save", "comment": null}, "conversion_searches": {"type": "INT64", "index": 21, "name": "conversion_searches", "comment": null}, "conversion_sign_ups": {"type": "INT64", "index": 22, "name": "conversion_sign_ups", "comment": null}, "conversion_start_checkout": {"type": "INT64", "index": 23, "name": "conversion_start_checkout", "comment": null}, "conversion_view_content": {"type": "INT64", "index": 24, "name": "conversion_view_content", "comment": null}, "impressions": {"type": "INT64", "index": 25, "name": "impressions", "comment": null}, "ios_installs": {"type": "INT64", "index": 26, "name": "ios_installs", "comment": null}, "quartile_1": {"type": "INT64", "index": 27, "name": "quartile_1", "comment": null}, "quartile_2": {"type": "INT64", "index": 28, "name": "quartile_2", "comment": null}, "quartile_3": {"type": "INT64", "index": 29, "name": "quartile_3", "comment": null}, "saves": {"type": "INT64", "index": 30, "name": "saves", "comment": null}, "screen_time_millis": {"type": "INT64", "index": 31, "name": "screen_time_millis", "comment": null}, "shares": {"type": "INT64", "index": 32, "name": "shares", "comment": null}, "spend": {"type": "INT64", "index": 33, "name": "spend", "comment": null}, "story_completes": {"type": "INT64", "index": 34, "name": "story_completes", "comment": null}, "story_opens": {"type": "INT64", "index": 35, "name": "story_opens", "comment": null}, "swipe_up_percent": {"type": "INT64", "index": 36, "name": "swipe_up_percent", "comment": null}, "swipes": {"type": "INT64", "index": 37, "name": "swipes", "comment": null}, "total_installs": {"type": "INT64", "index": 38, "name": "total_installs", "comment": null}, "video_views": {"type": "INT64", "index": 39, "name": "video_views", "comment": null}, "view_completion": {"type": "INT64", "index": 40, "name": "view_completion", "comment": null}, "view_time_millis": {"type": "INT64", "index": 41, "name": "view_time_millis", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 10, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 3580, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"}, "source.snapchat_ads_source.snapchat_ads.creative_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_creative_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"id": {"type": "STRING", "index": 1, "name": "id", "comment": null}, "ad_account_id": {"type": "STRING", "index": 2, "name": "ad_account_id", "comment": null}, "name": {"type": "STRING", "index": 3, "name": "name", "comment": null}, "web_view_url": {"type": "STRING", "index": 4, "name": "web_view_url", "comment": null}, "_fivetran_synced": {"type": "STRING", "index": 5, "name": "_fivetran_synced", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 119, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 18802, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_history"}, "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": {"metadata": {"type": "table", "schema": "snapchat_ads_tests", "name": "snapchat_creative_url_tag_history_data", "database": "dbt-package-testing", "comment": null, "owner": null}, "columns": {"creative_id": {"type": "STRING", "index": 1, "name": "creative_id", "comment": null}, "key": {"type": "STRING", "index": 2, "name": "key", "comment": null}, "value": {"type": "STRING", "index": 3, "name": "value", "comment": null}, "updated_at": {"type": "TIMESTAMP", "index": 4, "name": "updated_at", "comment": null}}, "stats": {"num_rows": {"id": "num_rows", "label": "# Rows", "value": 383, "include": true, "description": "Approximate count of rows in this table"}, "num_bytes": {"id": "num_bytes", "label": "Approximate Size", "value": 34902, "include": true, "description": "Approximate size of table as reported by BigQuery"}, "has_stats": {"id": "has_stats", "label": "Has Stats?", "value": true, "include": false, "description": "Indicates whether there are statistics for this table"}}, "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"}}, "errors": null} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index ca1e6f8..c580ce9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,30 +1,4 @@ - - - - - - - dbt Docs - - - - - - - - - - - - - - - - - -
icons
-
- - +e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){n(8).module("dbt").factory("locationService",["$state",function(e){var t={};return t.parseState=function(e){return function(e){return{selected:{include:e.g_i||"",exclude:e.g_e||""},show_graph:!!e.g_v}}(e)},t.setState=function(t){var n=function(e){var t={g_v:1};return t.g_i=e.include,t.g_e=e.exclude,t}(t),r=e.current.name;e.go(r,n)},t.clearState=function(){var t=e.current.name;e.go(t,{g_i:null,g_e:null,g_v:null})},t}])},function(e,t,n){"use strict";const r=n(8),i=n(202);r.module("dbt").controller("OverviewCtrl",["$scope","$state","project",function(e,t,n){e.overview_md="(loading)",n.ready((function(n){let r=t.params.project_name?t.params.project_name:null;var o=n.docs["doc.dbt.__overview__"],a=i.filter(n.docs,{name:"__overview__"});if(i.each(a,(function(e){"dbt"!=e.package_name&&(o=e)})),null!==r){o=n.docs[`doc.${r}.__${r}__`]||o;let e=i.filter(n.docs,{name:`__${r}__`});i.each(e,e=>{e.package_name!==r&&(o=e)})}e.overview_md=o.block_contents}))}])},function(e,t,n){"use strict";n(8).module("dbt").controller("SourceListCtrl",["$scope","$state","project",function(e,t,n){e.source=t.params.source,e.model={},e.extra_table_fields=[],e.has_more_info=function(e){return(e.description||"").length},e.toggle_source_expanded=function(t){e.has_more_info(t)&&(t.expanded=!t.expanded)},n.ready((function(t){var n=_.filter(t.nodes,(function(t){return t.source_name==e.source}));if(0!=n.length){n.sort((e,t)=>e.name.localeCompare(t.name));var r=n[0];e.model={name:e.source,source_description:r.source_description,sources:n};var i=_.uniq(_.map(n,"metadata.owner")),o=_.uniq(_.map(n,"database")),a=_.uniq(_.map(n,"schema"));e.extra_table_fields=[{name:"Loader",value:r.loader},{name:1==i.length?"Owner":"Owners",value:i.join(", ")},{name:1==o.length?"Database":"Databases",value:o.join(", ")},{name:1==a.length?"Schema":"Schemas",value:a.join(", ")},{name:"Tables",value:n.length}]}}))}])},function(e,t,n){const r=n(8),i={main:n(483),overview:n(484),graph:n(485),source:n(205),source_list:n(486),model:n(487),source:n(205),snapshot:n(488),seed:n(489),unit_test:n(490),test:n(491),analysis:n(492),macro:n(493),exposure:n(494),metric:n(495),semantic_model:n(496),saved_query:n(497),operation:n(498)};r.module("dbt").config(["$stateProvider","$urlRouterProvider",function(e,t){var n="g_v&g_i&g_e&g_p&g_n";t.otherwise("/overview"),e.state("dbt",{url:"/",abstract:!0,controller:"MainController",templateUrl:i.main}).state("dbt.overview",{url:"overview?"+n,controller:"OverviewCtrl",templateUrl:i.overview}).state("dbt.project_overview",{url:"overview/:project_name?"+n,controller:"OverviewCtrl",templateUrl:i.overview,params:{project_name:{type:"string"}}}).state("dbt.graph",{url:"graph",controller:"GraphCtrl",templateUrl:i.graph}).state("dbt.model",{url:"model/:unique_id?section&"+n,controller:"ModelCtrl",templateUrl:i.model,params:{unique_id:{type:"string"}}}).state("dbt.seed",{url:"seed/:unique_id?section&"+n,controller:"SeedCtrl",templateUrl:i.seed,params:{unique_id:{type:"string"}}}).state("dbt.snapshot",{url:"snapshot/:unique_id?section&"+n,controller:"SnapshotCtrl",templateUrl:i.snapshot,params:{unique_id:{type:"string"}}}).state("dbt.unit_test",{url:"unit_test/:unique_id?section&"+n,controller:"TestCtrl",templateUrl:i.unit_test,params:{unique_id:{type:"string"}}}).state("dbt.test",{url:"test/:unique_id?section&"+n,controller:"TestCtrl",templateUrl:i.test,params:{unique_id:{type:"string"}}}).state("dbt.analysis",{url:"analysis/:unique_id?section&"+n,controller:"AnalysisCtrl",templateUrl:i.analysis,params:{unique_id:{type:"string"}}}).state("dbt.source",{url:"source/:unique_id?section&"+n,controller:"SourceCtrl",templateUrl:i.source,params:{unique_id:{type:"string"}}}).state("dbt.source_list",{url:"source_list/:source?section&"+n,controller:"SourceListCtrl",templateUrl:i.source_list,params:{source:{type:"string"}}}).state("dbt.macro",{url:"macro/:unique_id?section",controller:"MacroCtrl",templateUrl:i.macro,params:{unique_id:{type:"string"}}}).state("dbt.exposure",{url:"exposure/:unique_id?section&"+n,controller:"ExposureCtrl",templateUrl:i.exposure,params:{unique_id:{type:"string"}}}).state("dbt.metric",{url:"metric/:unique_id?section&"+n,controller:"MetricCtrl",templateUrl:i.metric,params:{unique_id:{type:"string"}}}).state("dbt.semantic_model",{url:"semantic_model/:unique_id?section&"+n,controller:"SemanticModelCtrl",templateUrl:i.semantic_model,params:{unique_id:{type:"string"}}}).state("dbt.saved_query",{url:"saved_query/:unique_id?section&"+n,controller:"SavedQueryCtrl",templateUrl:i.saved_query,params:{unique_id:{type:"string"}}}).state("dbt.operation",{url:"operation/:unique_id?section&"+n,controller:"OperationCtrl",templateUrl:i.operation,params:{unique_id:{type:"string"}}})}])},function(e,t){var n="/main/main.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/overview/overview.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'
\n \n
\n
\n

\n
\n
\n
\n\n')}]),e.exports=n},function(e,t){var n="/graph/graph.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'
\n
\n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/sources/source_list.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n\n
\n
\n
\n
Source Tables
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SourceTableDescriptionLinkMore?
\n
\n {{ source.source_name }}\n
\n
\n {{ source.name }}

\n
\n {{ source.description }}\n \n View docs\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
Description
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/model.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Columns
\n \n
\n
\n\n
\n
\n
\n
Referenced By
\n \n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/snapshot.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Columns
\n \n
\n
\n\n
\n
\n
\n
Referenced By
\n \n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/seed.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n
\n
\n
\n
Columns
\n \n
\n
\n\n
\n
\n
\n
Referenced By
\n \n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/unit_test.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/test.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/analysis.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/macro.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ macro.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Arguments
\n \n
\n
\n\n
\n
\n
\n
Referenced By
\n \n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/exposure.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ exposure.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/metric.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ metric.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/semantic_model.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ semantic_model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Entities
\n\n
\n
\n
\n
\n
Name
\n
{{ entity.name }}
\n
None
\n
Type
\n
{{ entity.type }}
\n
None
\n
Expression
\n
{{ entity.expr }}
\n
None
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n')}]),e.exports=n},function(e,t){var n="/docs/saved_query.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n\n
\n
\n \n
\n\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ saved_query.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Entities
\n\n
\n
\n
\n
\n
Name
\n
{{ entity.name }}
\n
None
\n
Type
\n
{{ entity.type }}
\n
None
\n
Expression
\n
{{ entity.expr }}
\n
None
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
')}]),e.exports=n},function(e,t){var n="/docs/operation.html";window.angular.module("ng").run(["$templateCache",function(e){e.put(n,'\n\n
\n \n
\n
\n
\n
\n
\n
Description
\n
\n
\n
\n
This {{ model.resource_type }} is not currently documented
\n
\n
\n
\n
\n\n
\n
\n
\n
Depends On
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n')}]),e.exports=n}]); +//# sourceMappingURL=main.js.map diff --git a/docs/manifest.json b/docs/manifest.json index 1903469..b52ba6b 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -1 +1 @@ -{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/manifest/v11.json", "dbt_version": "1.7.3", "generated_at": "2023-12-12T20:18:27.963266Z", "invocation_id": "74dde586-ceda-441e-a7bb-2d212c264b58", "env": {}, "project_name": "snapchat_ads_integration_tests", "project_id": "0eb30f7211ccca11c94be2a882f44ff0", "user_id": "8929baf0-9bc1-477e-9a57-eb8b0db4da62", "send_anonymous_usage_stats": true, "adapter_type": "postgres"}, "nodes": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_squad_history_data.csv", "original_file_path": "seeds/snapchat_ad_squad_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_squad_history_data"], "alias": "snapchat_ad_squad_history_data", "checksum": {"name": "sha256", "checksum": "0e83ca691f2153480e7b63173f1c7ed8c38c0dc247d41a6f2fd46afc1e5963b1"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.972395, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_history_data.csv", "original_file_path": "seeds/snapchat_ad_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_history_data"], "alias": "snapchat_ad_history_data", "checksum": {"name": "sha256", "checksum": "839c0910ff6ff3cff2580bd9144223132dd1d87f003aeea329e47ba858a2dc23"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.9803572, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_campaign_history_data.csv", "original_file_path": "seeds/snapchat_campaign_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_campaign_history_data"], "alias": "snapchat_campaign_history_data", "checksum": {"name": "sha256", "checksum": "640eb2ec082938ad70c430a6b3441711f6fed19eb6e28d7622f03294e92e5b70"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.981605, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_squad_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_squad_hourly_report_data.csv", "original_file_path": "seeds/snapchat_ad_squad_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_squad_hourly_report_data"], "alias": "snapchat_ad_squad_hourly_report_data", "checksum": {"name": "sha256", "checksum": "bfd35d6b8446668beead2ac4590a52d36815d55adf1dee4cde552a5538fc1725"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.982798, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_hourly_report_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_creative_history_data.csv", "original_file_path": "seeds/snapchat_creative_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_creative_history_data"], "alias": "snapchat_creative_history_data", "checksum": {"name": "sha256", "checksum": "40505e1e47b59c850371007584560a03172120f078da2c81c6712aea77d868a8"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.983979, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_hourly_report_data.csv", "original_file_path": "seeds/snapchat_ad_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_hourly_report_data"], "alias": "snapchat_ad_hourly_report_data", "checksum": {"name": "sha256", "checksum": "1f2f808727dc7d9d45ba0ac10bba717da6454110d8fb242ee54986b8b60d7f9d"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {"date": "timestamp"}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}", "column_types": {"date": "timestamp"}}, "created_at": 1702412293.985354, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_hourly_report_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_campaign_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_campaign_hourly_report_data.csv", "original_file_path": "seeds/snapchat_campaign_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_campaign_hourly_report_data"], "alias": "snapchat_campaign_hourly_report_data", "checksum": {"name": "sha256", "checksum": "30cfac35c4fb0c216f8992ee23e13c2ed9322373ef62316ca9b5876952444295"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.986549, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_hourly_report_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_ad_account_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_account_history_data.csv", "original_file_path": "seeds/snapchat_ad_account_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_account_history_data"], "alias": "snapchat_ad_account_history_data", "checksum": {"name": "sha256", "checksum": "0e1f3a58ee6a4863bb59fbd30c286606f0de77040fbb2903ab312e5d248454cb"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1702412293.98769, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_account_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "snapchat_creative_url_tag_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_creative_url_tag_history_data.csv", "original_file_path": "seeds/snapchat_creative_url_tag_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_creative_url_tag_history_data"], "alias": "snapchat_creative_url_tag_history_data", "checksum": {"name": "sha256", "checksum": "c5e8dbafad038e142209d2145532d5d5e762922bf4fe44535901b46cd9797dcc"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {"updated_at": "timestamp"}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": true}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}", "column_types": {"updated_at": "timestamp"}}, "created_at": 1702412293.9888709, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_url_tag_history_data\"", "raw_code": "", "root_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "model.snapchat_ads.snapchat_ads__ad_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__ad_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__ad_report.sql", "original_file_path": "models/snapchat_ads__ad_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__ad_report", "fqn": ["snapchat_ads", "snapchat_ads__ad_report"], "alias": "snapchat_ads__ad_report", "checksum": {"name": "sha256", "checksum": "d5d4dfd8b53b975f2cee2da78d00072727921ef264bb51eee0087f5e568770e7"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad account.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "table", "enabled": true}, "created_at": 1702412294.3455229, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *\n from {{ var('ad_hourly_report') }}\n\n), creatives as (\n\n select *\n from {{ ref('snapchat_ads__creative_history_prep') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }}\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(7) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "snapchat_ads__creative_history_prep", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__ad_report.sql", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [{"id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "sql": " __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n)"}], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__url_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__url_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__url_report.sql", "original_file_path": "models/snapchat_ads__url_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__url_report", "fqn": ["snapchat_ads", "snapchat_ads__url_report"], "alias": "snapchat_ads__url_report", "checksum": {"name": "sha256", "checksum": "15688ef56b9031405b7551bbd87199b11b755624066be6abe16d52a0a1605b98"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of Snapchat ads that leverage urls.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "base_url": {"name": "base_url", "description": "The base URL of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url_host": {"name": "url_host", "description": "The URL host of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url_path": {"name": "url_path", "description": "The URL path of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_source": {"name": "utm_source", "description": "The utm_source parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_medium": {"name": "utm_medium", "description": "The utm_medium parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_campaign": {"name": "utm_campaign", "description": "The utm_campaign parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_content": {"name": "utm_content", "description": "The utm_content parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_term": {"name": "utm_term", "description": "The utm_term parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "table", "enabled": true}, "created_at": 1702412294.348626, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *\n from {{ var('ad_hourly_report') }}\n\n), creatives as (\n\n select *\n from {{ ref('snapchat_ads__creative_history_prep') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n ad_squads.ad_squad_id,\n ad_squads.ad_squad_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n account.currency,\n creatives.base_url,\n creatives.url_host,\n creatives.url_path,\n creatives.utm_source,\n creatives.utm_medium,\n creatives.utm_campaign,\n creatives.utm_content,\n creatives.utm_term,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }}\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n\n {% if var('ad_reporting__url_report__using_null_filter', True) %}\n -- We only want utm ads to populate this report. Therefore, we filter where url ads are populated.\n where creatives.url is not null\n {% endif %}\n\n {{ dbt_utils.group_by(19) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "snapchat_ads__creative_history_prep", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__url_report.sql", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n ad_squads.ad_squad_id,\n ad_squads.ad_squad_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n account.currency,\n creatives.base_url,\n creatives.url_host,\n creatives.url_path,\n creatives.utm_source,\n creatives.utm_medium,\n creatives.utm_campaign,\n creatives.utm_content,\n creatives.utm_term,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n\n \n -- We only want utm ads to populate this report. Therefore, we filter where url ads are populated.\n where creatives.url is not null\n \n\n group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [{"id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "sql": " __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n)"}], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__account_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__account_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__account_report.sql", "original_file_path": "models/snapchat_ads__account_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__account_report", "fqn": ["snapchat_ads", "snapchat_ads__account_report"], "alias": "snapchat_ads__account_report", "checksum": {"name": "sha256", "checksum": "edbd01f5a56bdd4fbbee68f8d3fae2ca3a34524f2b086d6fd78a8b473d3a785c"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad account.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "table", "enabled": true}, "created_at": 1702412294.344674, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *\n from {{ var('ad_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n\n {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }}\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n\n {{ dbt_utils.group_by(5) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__account_report.sql", "compiled": true, "compiled_code": "\n\nwith ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n\n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n\n group by 1,2,3,4,5\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__ad_squad_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__ad_squad_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__ad_squad_report.sql", "original_file_path": "models/snapchat_ads__ad_squad_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__ad_squad_report", "fqn": ["snapchat_ads", "snapchat_ads__ad_squad_report"], "alias": "snapchat_ads__ad_squad_report", "checksum": {"name": "sha256", "checksum": "c5a6732162b500b1c3ca0ea67c0c32114467efec03629a895664d239131e8a89"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad squad.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "table", "enabled": true}, "created_at": 1702412294.34699, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_squad_hourly as (\n\n select *\n from {{ var('ad_squad_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_squad_hourly.source_relation,\n cast(ad_squad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n ad_squad_hourly.ad_squad_id,\n ad_squads.ad_squad_name,\n account.currency,\n sum(ad_squad_hourly.swipes) as swipes,\n sum(ad_squad_hourly.impressions) as impressions,\n round(sum(ad_squad_hourly.spend),2) as spend\n \n {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', transform = 'sum') }}\n \n from ad_squad_hourly\n left join ad_squads\n on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id\n and ad_squad_hourly.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(9) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__ad_squad_report.sql", "compiled": true, "compiled_code": "\n\nwith ad_squad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_squad_hourly.source_relation,\n cast(ad_squad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n ad_squad_hourly.ad_squad_id,\n ad_squads.ad_squad_name,\n account.currency,\n sum(ad_squad_hourly.swipes) as swipes,\n sum(ad_squad_hourly.impressions) as impressions,\n round(sum(ad_squad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_squad_hourly\n left join ad_squads\n on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id\n and ad_squad_hourly.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7,8,9\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__campaign_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__campaign_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__campaign_report.sql", "original_file_path": "models/snapchat_ads__campaign_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__campaign_report", "fqn": ["snapchat_ads", "snapchat_ads__campaign_report"], "alias": "snapchat_ads__campaign_report", "checksum": {"name": "sha256", "checksum": "4706ff55fcc94cc2e1c570f4cdc2b7e0db84ecd4db5c77650753a23b8976f4e7"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat campaign.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "table", "enabled": true}, "created_at": 1702412294.346219, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith campaign_hourly as (\n\n select *\n from {{ var('campaign_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n campaign_hourly.source_relation,\n cast(campaign_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaign_hourly.campaign_id,\n campaigns.campaign_name,\n account.currency,\n sum(campaign_hourly.swipes) as swipes,\n sum(campaign_hourly.impressions) as impressions,\n round(sum(campaign_hourly.spend),2) as spend\n \n {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', transform = 'sum') }}\n \n from campaign_hourly\n left join campaigns\n on campaign_hourly.campaign_id = campaigns.campaign_id\n and campaign_hourly.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(7) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__campaign_report.sql", "compiled": true, "compiled_code": "\n\nwith campaign_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n campaign_hourly.source_relation,\n cast(campaign_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaign_hourly.campaign_id,\n campaigns.campaign_name,\n account.currency,\n sum(campaign_hourly.swipes) as swipes,\n sum(campaign_hourly.impressions) as impressions,\n round(sum(campaign_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from campaign_hourly\n left join campaigns\n on campaign_hourly.campaign_id = campaigns.campaign_id\n and campaign_hourly.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__creative_history_prep": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads", "name": "snapchat_ads__creative_history_prep", "resource_type": "model", "package_name": "snapchat_ads", "path": "intermediate/snapchat_ads__creative_history_prep.sql", "original_file_path": "models/intermediate/snapchat_ads__creative_history_prep.sql", "unique_id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "fqn": ["snapchat_ads", "intermediate", "snapchat_ads__creative_history_prep"], "alias": "snapchat_ads__creative_history_prep", "checksum": {"name": "sha256", "checksum": "e3cefdb96080d7616e006c39ed116afc1bfdf99c32ae5f8cf01f72a16e86a8a6"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "ephemeral", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads", "materialized": "ephemeral", "enabled": true}, "created_at": 1702412294.0954812, "relation_name": null, "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\nwith base as (\n\n select *\n from {{ var('creative_history') }}\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from {{ var('creative_url_tag_history') }}\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n {{ dbt.split_part('base.url', \"'?'\", 1) }} as base_url,\n {{ dbt_utils.get_url_host('base.url') }} as url_host,\n '/' || {{ dbt_utils.get_url_path('base.url') }} as url_path,\n coalesce(url_tags_pivoted.utm_source, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_source') }}) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_medium') }}) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_campaign') }}) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_content') }}) as utm_content,\n coalesce(url_tags_pivoted.utm_term, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_term') }}) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.split_part", "macro.dbt_utils.get_url_host", "macro.dbt_utils.get_url_path", "macro.snapchat_ads.snapchat_ads_extract_url_parameter"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history", "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/intermediate/snapchat_ads__creative_history_prep.sql", "compiled": true, "compiled_code": "\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_squad_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__ad_squad_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_squad_hourly_report"], "alias": "stg_snapchat_ads__ad_squad_hourly_report", "checksum": {"name": "sha256", "checksum": "ce4d153720c25a4d97969cd1fee5c04592c8d865c9600d51ac3685d0e7c5669b"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "ID of the ad squad.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.474244, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_squad_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_squad_hourly_report_tmp')),\n staging_columns=get_ad_squad_hourly_report_columns()\n )\n }} \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_squad_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n {{ fivetran_utils.fill_pass_through_columns('snapchat_ads__ad_squad_hourly_passthrough_metrics') }}\n \n from fields\n)\n\nselect *\nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_squad_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.fivetran_utils.fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_squad_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n\n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_squad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n \n from fields\n)\n\nselect *\nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_history"], "alias": "stg_snapchat_ads__ad_history", "checksum": {"name": "sha256", "checksum": "c5e6d8190a234277e68501aa96b048452931369da6556021b43dfea818a276cf"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the related ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.471997, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_history_tmp')),\n staging_columns=get_ad_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_id,\n name as ad_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n ad_squad_id,\n creative_id,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_id,\n name as ad_name,\n cast (created_at as timestamp) as created_at,\n ad_squad_id,\n creative_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_squad_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_squad_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_squad_history"], "alias": "stg_snapchat_ads__ad_squad_history", "checksum": {"name": "sha256", "checksum": "52dd01aacf5296607f2cd01a15942b091ddf6b9df5b230e11eaf8bc8305e9994"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad squad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the related campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.4736419, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_squad_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_squad_history_tmp')),\n staging_columns=get_ad_squad_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_squad_id,\n name as ad_squad_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n campaign_id,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_squad_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_squad_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_squad_id,\n name as ad_squad_name,\n cast (created_at as timestamp) as created_at,\n campaign_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__ad_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_hourly_report"], "alias": "stg_snapchat_ads__ad_hourly_report", "checksum": {"name": "sha256", "checksum": "6910b0c0ad16621354a5323526f2c934955373d3835b677510bd9ad9d204dbc8"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents an hourly performance summary for an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad that the report relates to in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record converted from micros.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.4732318, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_hourly_report_tmp')),\n staging_columns=get_ad_hourly_report_columns()\n )\n }} \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n {{ fivetran_utils.fill_pass_through_columns('snapchat_ads__ad_hourly_passthrough_metrics') }}\n\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.fivetran_utils.fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n ad_id\n \n as \n \n ad_id\n \n, \n cast(null as numeric(28,6)) as \n \n attachment_quartile_1\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_quartile_2\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_quartile_3\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_total_view_time_millis\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_view_completion\n \n , \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n cast(null as numeric(28,6)) as \n \n quartile_1\n \n , \n cast(null as numeric(28,6)) as \n \n quartile_2\n \n , \n cast(null as numeric(28,6)) as \n \n quartile_3\n \n , \n cast(null as numeric(28,6)) as \n \n saves\n \n , \n cast(null as numeric(28,6)) as \n \n screen_time_millis\n \n , \n cast(null as numeric(28,6)) as \n \n shares\n \n , \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n cast(null as numeric(28,6)) as \n \n video_views\n \n , \n cast(null as numeric(28,6)) as \n \n view_completion\n \n , \n cast(null as numeric(28,6)) as \n \n view_time_millis\n \n \n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__creative_history.sql", "original_file_path": "models/stg_snapchat_ads__creative_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__creative_history"], "alias": "stg_snapchat_ads__creative_history", "checksum": {"name": "sha256", "checksum": "ee8a3cbc842df2f1f73d35d75566cbc3ab7e56056cad04dab1c98fa1f6853113"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of a creative in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_name": {"name": "creative_name", "description": "The name of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url": {"name": "url", "description": "The URL of the creative if the creative is of type 'web view'.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.475945, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__creative_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__creative_history_tmp')),\n staging_columns=get_creative_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as creative_id,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n ad_account_id,\n name as creative_name,\n web_view_url as url,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_creative_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__creative_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n , \n \n \n web_view_url\n \n as \n \n web_view_url\n \n\n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as creative_id,\n cast (created_at as timestamp) as created_at,\n ad_account_id,\n name as creative_name,\n web_view_url as url,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_url_tag_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__creative_url_tag_history.sql", "original_file_path": "models/stg_snapchat_ads__creative_url_tag_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__creative_url_tag_history"], "alias": "stg_snapchat_ads__creative_url_tag_history", "checksum": {"name": "sha256", "checksum": "92851f4b67f728a6845faca7a8f94e2851808a2fe430259b5fb8534a6212bd32"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a URL paramter key-value pair for a creative in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "param_key": {"name": "param_key", "description": "The URL parameter key, i.e. UTM_SOURCE.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "param_value": {"name": "param_value", "description": "The URL parameter value, i.e. Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.4765701, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__creative_url_tag_history_tmp') }}\n\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__creative_url_tag_history_tmp')),\n staging_columns=get_creative_url_tag_history_columns()\n )\n }}\n \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n creative_id,\n key as param_key,\n value as param_value,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, creative_id, key order by updated_at desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_url_tag_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_creative_url_tag_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__creative_url_tag_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history_tmp\"\n\n),\n\nfields as (\n\n select\n \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n key\n \n as \n \n key\n \n, \n \n \n updated_at\n \n as \n \n updated_at\n \n, \n \n \n value\n \n as \n \n value\n \n\n\n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n creative_id,\n key as param_key,\n value as param_value,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, creative_id, key order by updated_at desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_account_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_account_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_account_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_account_history"], "alias": "stg_snapchat_ads__ad_account_history", "checksum": {"name": "sha256", "checksum": "038466c7ae703d4c445eb0cfb1847ae4282b0f9cdf77f9d9ec4553befcba1ee0"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad account in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "advertiser": {"name": "advertiser", "description": "Name of advertiser", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "Currency used by account", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "timezone": {"name": "timezone", "description": "Account timezone", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.47155, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_account_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_account_history_tmp')),\n staging_columns=get_ad_account_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_account_id,\n name as ad_account_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n advertiser, \n currency,\n timezone,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_account_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_account_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n cast(null as TEXT) as \n \n advertiser\n \n , \n cast(null as timestamp) as \n \n created_at\n \n , \n cast(null as TEXT) as \n \n currency\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as TEXT) as \n \n timezone\n \n , \n cast(null as TEXT) as \n \n type\n \n , \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_account_id,\n name as ad_account_name,\n cast (created_at as timestamp) as created_at,\n advertiser, \n currency,\n timezone,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__campaign_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__campaign_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__campaign_hourly_report"], "alias": "stg_snapchat_ads__campaign_hourly_report", "checksum": {"name": "sha256", "checksum": "f5ccbf9ccd928646b0d2f64521412e2a0b65bcecba86e4daa115fcfceec6e412"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "ID of campaign", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.4752839, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__campaign_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__campaign_hourly_report_tmp')),\n staging_columns=get_campaign_hourly_report_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n campaign_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n {{ fivetran_utils.fill_pass_through_columns('snapchat_ads__campaign_hourly_report_passthrough_metrics') }}\n \n from fields\n)\n\nselect *\nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_campaign_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.fivetran_utils.fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__campaign_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n\n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n campaign_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n \n from fields\n)\n\nselect *\nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__campaign_history.sql", "original_file_path": "models/stg_snapchat_ads__campaign_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__campaign_history"], "alias": "stg_snapchat_ads__campaign_history", "checksum": {"name": "sha256", "checksum": "4bdc0a822494f1f1b1806407151746864f0cd31ca0393d54517cc1431dfef5f1"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of a campaign in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The id of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "table", "enabled": true}, "created_at": 1702412294.474684, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__campaign_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__campaign_history_tmp')),\n staging_columns=get_campaign_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation,\n id as campaign_id,\n ad_account_id,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n name as campaign_name,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_campaign_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__campaign_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation,\n id as campaign_id,\n ad_account_id,\n cast (created_at as timestamp) as created_at,\n name as campaign_name,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__creative_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__creative_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__creative_history_tmp"], "alias": "stg_snapchat_ads__creative_history_tmp", "checksum": {"name": "sha256", "checksum": "af71368261d6f41a42e53d8d3522dbd7c2343ef32d5d518c0740024944b005e8"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.261448, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='creative_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='creative_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "creative_history"], ["snapchat_ads", "creative_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__creative_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_account_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_account_history_tmp"], "alias": "stg_snapchat_ads__ad_account_history_tmp", "checksum": {"name": "sha256", "checksum": "ecb8114190d4e6ac289124eb4588c540a426e1d449caa958ad34bd4a7e3bf6a9"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.2790349, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_account_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_account_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_account_history"], ["snapchat_ads", "ad_account_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_account_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_hourly_report_tmp"], "alias": "stg_snapchat_ads__ad_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "6c656f5f35626e2da5fb5eb5c84ec8c6a92e99832407708ed55bd0de7e5df50e"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.2829921, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_hourly_report"], ["snapchat_ads", "ad_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_hourly_report_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__creative_url_tag_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__creative_url_tag_history_tmp"], "alias": "stg_snapchat_ads__creative_url_tag_history_tmp", "checksum": {"name": "sha256", "checksum": "9d7c3b09ee4cdd1b50bd4d9dcaa83506d4b92c886601a9a5b3d3eb3d64c87cb2"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.286877, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='creative_url_tag_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='creative_url_tag_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "creative_url_tag_history"], ["snapchat_ads", "creative_url_tag_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_url_tag_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_squad_hourly_report_tmp"], "alias": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "95586bdee0fc83cd072ec0e9e53e5468e3fc125b6421d2eb7434e636c7dde0ea"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.2912982, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_squad_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_squad_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_squad_hourly_report"], ["snapchat_ads", "ad_squad_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_hourly_report_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__campaign_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__campaign_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__campaign_history_tmp"], "alias": "stg_snapchat_ads__campaign_history_tmp", "checksum": {"name": "sha256", "checksum": "77443d363898105f0e8102998dc2e60b0ba612a50f0f0db676f7c77ed9c5de5c"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.294976, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='campaign_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='campaign_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "campaign_history"], ["snapchat_ads", "campaign_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__campaign_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_history_tmp"], "alias": "stg_snapchat_ads__ad_history_tmp", "checksum": {"name": "sha256", "checksum": "ff60fd4ced1d85ba518f5a0c3566e10aed80c9201c78e51d2e95e24e814a8610"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.298678, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_history"], ["snapchat_ads", "ad_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__ad_squad_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_squad_history_tmp"], "alias": "stg_snapchat_ads__ad_squad_history_tmp", "checksum": {"name": "sha256", "checksum": "7dd4147d6b7ee617b048090525b4578398c85fd40fb4f509efbbdefb89ed16ba"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.302498, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_squad_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_squad_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_squad_history"], ["snapchat_ads", "ad_squad_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_history_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6_snapchat_ads_source", "name": "stg_snapchat_ads__campaign_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__campaign_hourly_report_tmp"], "alias": "stg_snapchat_ads__campaign_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "25c22f93768af7aedb92b425ebe2b5756b624690741a7f333e3b2d4e5b677f66"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_source", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"schema": "snapchat_ads_source", "materialized": "view", "enabled": true}, "created_at": 1702412294.306377, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report_tmp\"", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='campaign_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='campaign_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "campaign_hourly_report"], ["snapchat_ads", "campaign_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_hourly_report_data\"", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__account_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__account_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260", "fqn": ["snapchat_ads", "not_null_snapchat_ads__account_report_date_day"], "alias": "not_null_snapchat_ads__account_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.389886, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__account_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report"}, "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_account_id", "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__account_report_ad_account_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__account_report_ad_account_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b", "fqn": ["snapchat_ads", "not_null_snapchat_ads__account_report_ad_account_id"], "alias": "not_null_snapchat_ads__account_report_ad_account_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.391159, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__account_report_ad_account_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\nwhere ad_account_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_account_id", "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report"}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_account_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day"], "alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8"}, "created_at": 1702412294.3921869, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\n group by source_relation, ad_account_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report"}, "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__ad_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_report_date_day"], "alias": "not_null_snapchat_ads__ad_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.3989708, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report"}, "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__ad_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_report_ad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_report_ad_id"], "alias": "not_null_snapchat_ads__ad_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.399966, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report"}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day"], "alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1"}, "created_at": 1702412294.401115, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report"}, "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__campaign_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__campaign_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b", "fqn": ["snapchat_ads", "not_null_snapchat_ads__campaign_report_date_day"], "alias": "not_null_snapchat_ads__campaign_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.403477, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__campaign_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report"}, "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__campaign_report_campaign_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__campaign_report_campaign_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac", "fqn": ["snapchat_ads", "not_null_snapchat_ads__campaign_report_campaign_id"], "alias": "not_null_snapchat_ads__campaign_report_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.404437, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__campaign_report_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report"}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day"], "alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb"}, "created_at": 1702412294.406143, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\n group by source_relation, campaign_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report"}, "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__ad_squad_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_squad_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_squad_report_date_day"], "alias": "not_null_snapchat_ads__ad_squad_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.4084742, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_squad_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report"}, "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__ad_squad_report_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_squad_report_ad_squad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_squad_report_ad_squad_id"], "alias": "not_null_snapchat_ads__ad_squad_report_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.409643, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_squad_report_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report"}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day"], "alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3"}, "created_at": 1702412294.410613, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\n group by source_relation, ad_squad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report"}, "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_date_day"], "alias": "not_null_snapchat_ads__url_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.413213, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report"}, "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_ad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_ad_id"], "alias": "not_null_snapchat_ads__url_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.414269, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report"}, "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "base_url", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_base_url", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_base_url.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_base_url"], "alias": "not_null_snapchat_ads__url_report_base_url", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"enabled": true}, "created_at": 1702412294.415684, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}{{ config(enabled=True) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_base_url.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect base_url\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere base_url is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "base_url", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report"}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day"], "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76"}, "created_at": 1702412294.417042, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(enabled=True,alias=\"dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.4770749, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_account_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_account_history_ad_account_id"], "alias": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.478293, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_account_history_ad_account_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\nwhere ad_account_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_account_id", "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_account_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad"}, "created_at": 1702412294.4794428, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n group by source_relation, ad_account_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.48225, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_history_ad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_history_ad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_history_ad_id"], "alias": "not_null_stg_snapchat_ads__ad_history_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.483242, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_history_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302"}, "created_at": 1702412294.4842188, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n group by source_relation, ad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_hourly_report_ad_id"], "alias": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.486767, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_hourly_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.487722, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour"], "alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c"}, "created_at": 1702412294.488756, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n group by source_relation, ad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.491553, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id"], "alias": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.492841, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56"}, "created_at": 1702412294.493875, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n group by source_relation, ad_squad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id"], "alias": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.496536, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.4974778, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour"], "alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac"}, "created_at": 1702412294.498733, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\n group by source_relation, ad_squad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.501528, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_history_campaign_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_history_campaign_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_history_campaign_id"], "alias": "not_null_stg_snapchat_ads__campaign_history_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.5025449, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_history_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014"}, "created_at": 1702412294.503691, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n group by source_relation, campaign_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id"], "alias": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.506072, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.50723, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour"], "alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d"}, "created_at": 1702412294.50826, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\n group by source_relation, campaign_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__creative_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.511286, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "creative_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_history_creative_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_history_creative_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_history_creative_id"], "alias": "not_null_stg_snapchat_ads__creative_history_creative_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.51228, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_history_creative_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\nwhere creative_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "creative_id", "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "creative_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da"}, "created_at": 1702412294.513236, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n group by source_relation, creative_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history"}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": {"test_metadata": {"name": "not_null", "kwargs": {"column_name": "creative_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_url_tag_history')) }}"}, "namespace": null}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id"], "alias": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {}, "created_at": 1702412294.5156538, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\nwhere creative_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "creative_id", "file_key_name": "models.stg_snapchat_ads__creative_url_tag_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": {"test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "creative_id", "param_key", "updated_at"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_url_tag_history')) }}"}, "namespace": "dbt_utils"}, "database": "postgres", "schema": "snapchat_ads_integration_tests_6_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at"], "alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "deferred": false, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16"}, "created_at": 1702412294.516653, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, param_key, updated_at\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n group by source_relation, creative_id, param_key, updated_at\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__creative_url_tag_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"}}, "sources": {"source.snapchat_ads_source.snapchat_ads.ad_account_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "ad_account_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_account_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_account_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_account_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad account in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "advertiser": {"name": "advertiser", "description": "Name of advertiser", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "Currency used by account", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "timezone": {"name": "timezone", "description": "Account timezone", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_account_history_data\"", "created_at": 1702412294.519982}, "source.snapchat_ads_source.snapchat_ads.ad_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "ad_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the related ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_history_data\"", "created_at": 1702412294.520112}, "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "ad_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for an ad in Snapchat.", "columns": {"ad_id": {"name": "ad_id", "description": "The ID of the ad that the report relates to in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_hourly_report_data\"", "created_at": 1702412294.520227}, "source.snapchat_ads_source.snapchat_ads.ad_squad_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "ad_squad_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_squad_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_squad_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad squad in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the related campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_history_data\"", "created_at": 1702412294.5203168}, "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "ad_squad_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_squad_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_squad_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for each ad squad.", "columns": {"ad_squad_id": {"name": "ad_squad_id", "description": "ID of the ad squad.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_hourly_report_data\"", "created_at": 1702412294.520421}, "source.snapchat_ads_source.snapchat_ads.campaign_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "campaign_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "campaign_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_campaign_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of a campaign in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_history_data\"", "created_at": 1702412294.52051}, "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "campaign_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "campaign_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_campaign_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for each campaign.", "columns": {"campaign_id": {"name": "campaign_id", "description": "ID of campaign", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_hourly_report_data\"", "created_at": 1702412294.520619}, "source.snapchat_ads_source.snapchat_ads.creative_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "creative_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "creative_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_creative_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of a creative in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "web_view_url": {"name": "web_view_url", "description": "The URL of the creative if the creative is of type 'web view'.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_history_data\"", "created_at": 1702412294.52071}, "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": {"database": "postgres", "schema": "snapchat_ads_integration_tests_6", "name": "creative_url_tag_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "creative_url_tag_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_creative_url_tag_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a URL parameter key-value pair for a creative in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "key": {"name": "key", "description": "The URL parameter key, i.e. UTM_SOURCE.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "value": {"name": "value", "description": "The URL parameter value, i.e. Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_url_tag_history_data\"", "created_at": 1702412294.5208}}, "macros": {"macro.dbt_postgres.postgres__current_timestamp": {"name": "postgres__current_timestamp", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/timestamps.sql", "original_file_path": "macros/timestamps.sql", "unique_id": "macro.dbt_postgres.postgres__current_timestamp", "macro_sql": "{% macro postgres__current_timestamp() -%}\n now()\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.351456, "supported_languages": null}, "macro.dbt_postgres.postgres__snapshot_string_as_time": {"name": "postgres__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/timestamps.sql", "original_file_path": "macros/timestamps.sql", "unique_id": "macro.dbt_postgres.postgres__snapshot_string_as_time", "macro_sql": "{% macro postgres__snapshot_string_as_time(timestamp) -%}\n {%- set result = \"'\" ~ timestamp ~ \"'::timestamp without time zone\" -%}\n {{ return(result) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3516579, "supported_languages": null}, "macro.dbt_postgres.postgres__snapshot_get_time": {"name": "postgres__snapshot_get_time", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/timestamps.sql", "original_file_path": "macros/timestamps.sql", "unique_id": "macro.dbt_postgres.postgres__snapshot_get_time", "macro_sql": "{% macro postgres__snapshot_get_time() -%}\n {{ current_timestamp() }}::timestamp without time zone\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.35176, "supported_languages": null}, "macro.dbt_postgres.postgres__current_timestamp_backcompat": {"name": "postgres__current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/timestamps.sql", "original_file_path": "macros/timestamps.sql", "unique_id": "macro.dbt_postgres.postgres__current_timestamp_backcompat", "macro_sql": "{% macro postgres__current_timestamp_backcompat() %}\n current_timestamp::{{ type_timestamp() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.35186, "supported_languages": null}, "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat": {"name": "postgres__current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/timestamps.sql", "original_file_path": "macros/timestamps.sql", "unique_id": "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat", "macro_sql": "{% macro postgres__current_timestamp_in_utc_backcompat() %}\n (current_timestamp at time zone 'utc')::{{ type_timestamp() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.351959, "supported_languages": null}, "macro.dbt_postgres.postgres__get_catalog_relations": {"name": "postgres__get_catalog_relations", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/catalog.sql", "original_file_path": "macros/catalog.sql", "unique_id": "macro.dbt_postgres.postgres__get_catalog_relations", "macro_sql": "{% macro postgres__get_catalog_relations(information_schema, relations) -%}\n {%- call statement('catalog', fetch_result=True) -%}\n\n {#\n If the user has multiple databases set and the first one is wrong, this will fail.\n But we won't fail in the case where there are multiple quoting-difference-only dbs, which is better.\n #}\n {% set database = information_schema.database %}\n {{ adapter.verify_database(database) }}\n\n select\n '{{ database }}' as table_database,\n sch.nspname as table_schema,\n tbl.relname as table_name,\n case tbl.relkind\n when 'v' then 'VIEW'\n when 'm' then 'MATERIALIZED VIEW'\n else 'BASE TABLE'\n end as table_type,\n tbl_desc.description as table_comment,\n col.attname as column_name,\n col.attnum as column_index,\n pg_catalog.format_type(col.atttypid, col.atttypmod) as column_type,\n col_desc.description as column_comment,\n pg_get_userbyid(tbl.relowner) as table_owner\n\n from pg_catalog.pg_namespace sch\n join pg_catalog.pg_class tbl on tbl.relnamespace = sch.oid\n join pg_catalog.pg_attribute col on col.attrelid = tbl.oid\n left outer join pg_catalog.pg_description tbl_desc on (tbl_desc.objoid = tbl.oid and tbl_desc.objsubid = 0)\n left outer join pg_catalog.pg_description col_desc on (col_desc.objoid = tbl.oid and col_desc.objsubid = col.attnum)\n where (\n {%- for relation in relations -%}\n {%- if relation.identifier -%}\n (upper(sch.nspname) = upper('{{ relation.schema }}') and\n upper(tbl.relname) = upper('{{ relation.identifier }}'))\n {%- else-%}\n upper(sch.nspname) = upper('{{ relation.schema }}')\n {%- endif -%}\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n )\n and not pg_is_other_temp_schema(sch.oid) -- not a temporary schema belonging to another session\n and tbl.relpersistence in ('p', 'u') -- [p]ermanent table or [u]nlogged table. Exclude [t]emporary tables\n and tbl.relkind in ('r', 'v', 'f', 'p', 'm') -- o[r]dinary table, [v]iew, [f]oreign table, [p]artitioned table, [m]aterialized view. Other values are [i]ndex, [S]equence, [c]omposite type, [t]OAST table\n and col.attnum > 0 -- negative numbers are used for system columns such as oid\n and not col.attisdropped -- column as not been dropped\n\n order by\n sch.nspname,\n tbl.relname,\n col.attnum\n\n {%- endcall -%}\n\n {{ return(load_result('catalog').table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.35346, "supported_languages": null}, "macro.dbt_postgres.postgres__get_catalog": {"name": "postgres__get_catalog", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/catalog.sql", "original_file_path": "macros/catalog.sql", "unique_id": "macro.dbt_postgres.postgres__get_catalog", "macro_sql": "{% macro postgres__get_catalog(information_schema, schemas) -%}\n {%- set relations = [] -%}\n {%- for schema in schemas -%}\n {%- set dummy = relations.append({'schema': schema}) -%}\n {%- endfor -%}\n {{ return(postgres__get_catalog_relations(information_schema, relations)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_catalog_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3538518, "supported_languages": null}, "macro.dbt_postgres.postgres__get_relations": {"name": "postgres__get_relations", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations.sql", "original_file_path": "macros/relations.sql", "unique_id": "macro.dbt_postgres.postgres__get_relations", "macro_sql": "{% macro postgres__get_relations() -%}\n\n {#\n -- in pg_depend, objid is the dependent, refobjid is the referenced object\n -- > a pg_depend entry indicates that the referenced object cannot be\n -- > dropped without also dropping the dependent object.\n #}\n\n {%- call statement('relations', fetch_result=True) -%}\n with relation as (\n select\n pg_rewrite.ev_class as class,\n pg_rewrite.oid as id\n from pg_rewrite\n ),\n class as (\n select\n oid as id,\n relname as name,\n relnamespace as schema,\n relkind as kind\n from pg_class\n ),\n dependency as (\n select distinct\n pg_depend.objid as id,\n pg_depend.refobjid as ref\n from pg_depend\n ),\n schema as (\n select\n pg_namespace.oid as id,\n pg_namespace.nspname as name\n from pg_namespace\n where nspname != 'information_schema' and nspname not like 'pg\\_%'\n ),\n referenced as (\n select\n relation.id AS id,\n referenced_class.name ,\n referenced_class.schema ,\n referenced_class.kind\n from relation\n join class as referenced_class on relation.class=referenced_class.id\n where referenced_class.kind in ('r', 'v', 'm')\n ),\n relationships as (\n select\n referenced.name as referenced_name,\n referenced.schema as referenced_schema_id,\n dependent_class.name as dependent_name,\n dependent_class.schema as dependent_schema_id,\n referenced.kind as kind\n from referenced\n join dependency on referenced.id=dependency.id\n join class as dependent_class on dependency.ref=dependent_class.id\n where\n (referenced.name != dependent_class.name or\n referenced.schema != dependent_class.schema)\n )\n\n select\n referenced_schema.name as referenced_schema,\n relationships.referenced_name as referenced_name,\n dependent_schema.name as dependent_schema,\n relationships.dependent_name as dependent_name\n from relationships\n join schema as dependent_schema on relationships.dependent_schema_id=dependent_schema.id\n join schema as referenced_schema on relationships.referenced_schema_id=referenced_schema.id\n group by referenced_schema, referenced_name, dependent_schema, dependent_name\n order by referenced_schema, referenced_name, dependent_schema, dependent_name;\n\n {%- endcall -%}\n\n {{ return(load_result('relations').table) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.354517, "supported_languages": null}, "macro.dbt_postgres.postgres_get_relations": {"name": "postgres_get_relations", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations.sql", "original_file_path": "macros/relations.sql", "unique_id": "macro.dbt_postgres.postgres_get_relations", "macro_sql": "{% macro postgres_get_relations() %}\n {{ return(postgres__get_relations()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.354649, "supported_languages": null}, "macro.dbt_postgres.postgres__create_table_as": {"name": "postgres__create_table_as", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__create_table_as", "macro_sql": "{% macro postgres__create_table_as(temporary, relation, sql) -%}\n {%- set unlogged = config.get('unlogged', default=false) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create {% if temporary -%}\n temporary\n {%- elif unlogged -%}\n unlogged\n {%- endif %} table {{ relation }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {% endif -%}\n {% if contract_config.enforced and (not temporary) -%}\n {{ get_table_columns_and_constraints() }} ;\n insert into {{ relation }} (\n {{ adapter.dispatch('get_column_names', 'dbt')() }}\n )\n {%- set sql = get_select_subquery(sql) %}\n {% else %}\n as\n {% endif %}\n (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent", "macro.dbt.get_table_columns_and_constraints", "macro.dbt.default__get_column_names", "macro.dbt.get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.36255, "supported_languages": null}, "macro.dbt_postgres.postgres__get_create_index_sql": {"name": "postgres__get_create_index_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__get_create_index_sql", "macro_sql": "{% macro postgres__get_create_index_sql(relation, index_dict) -%}\n {%- set index_config = adapter.parse_index(index_dict) -%}\n {%- set comma_separated_columns = \", \".join(index_config.columns) -%}\n {%- set index_name = index_config.render(relation) -%}\n\n create {% if index_config.unique -%}\n unique\n {%- endif %} index if not exists\n \"{{ index_name }}\"\n on {{ relation }} {% if index_config.type -%}\n using {{ index_config.type }}\n {%- endif %}\n ({{ comma_separated_columns }});\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.363025, "supported_languages": null}, "macro.dbt_postgres.postgres__create_schema": {"name": "postgres__create_schema", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__create_schema", "macro_sql": "{% macro postgres__create_schema(relation) -%}\n {% if relation.database -%}\n {{ adapter.verify_database(relation.database) }}\n {%- endif -%}\n {%- call statement('create_schema') -%}\n create schema if not exists {{ relation.without_identifier().include(database=False) }}\n {%- endcall -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.363313, "supported_languages": null}, "macro.dbt_postgres.postgres__drop_schema": {"name": "postgres__drop_schema", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__drop_schema", "macro_sql": "{% macro postgres__drop_schema(relation) -%}\n {% if relation.database -%}\n {{ adapter.verify_database(relation.database) }}\n {%- endif -%}\n {%- call statement('drop_schema') -%}\n drop schema if exists {{ relation.without_identifier().include(database=False) }} cascade\n {%- endcall -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3636081, "supported_languages": null}, "macro.dbt_postgres.postgres__get_columns_in_relation": {"name": "postgres__get_columns_in_relation", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__get_columns_in_relation", "macro_sql": "{% macro postgres__get_columns_in_relation(relation) -%}\n {% call statement('get_columns_in_relation', fetch_result=True) %}\n select\n column_name,\n data_type,\n character_maximum_length,\n numeric_precision,\n numeric_scale\n\n from {{ relation.information_schema('columns') }}\n where table_name = '{{ relation.identifier }}'\n {% if relation.schema %}\n and table_schema = '{{ relation.schema }}'\n {% endif %}\n order by ordinal_position\n\n {% endcall %}\n {% set table = load_result('get_columns_in_relation').table %}\n {{ return(sql_convert_columns_in_relation(table)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.sql_convert_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.364038, "supported_languages": null}, "macro.dbt_postgres.postgres__list_relations_without_caching": {"name": "postgres__list_relations_without_caching", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__list_relations_without_caching", "macro_sql": "{% macro postgres__list_relations_without_caching(schema_relation) %}\n {% call statement('list_relations_without_caching', fetch_result=True) -%}\n select\n '{{ schema_relation.database }}' as database,\n tablename as name,\n schemaname as schema,\n 'table' as type\n from pg_tables\n where schemaname ilike '{{ schema_relation.schema }}'\n union all\n select\n '{{ schema_relation.database }}' as database,\n viewname as name,\n schemaname as schema,\n 'view' as type\n from pg_views\n where schemaname ilike '{{ schema_relation.schema }}'\n union all\n select\n '{{ schema_relation.database }}' as database,\n matviewname as name,\n schemaname as schema,\n 'materialized_view' as type\n from pg_matviews\n where schemaname ilike '{{ schema_relation.schema }}'\n {% endcall %}\n {{ return(load_result('list_relations_without_caching').table) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.36461, "supported_languages": null}, "macro.dbt_postgres.postgres__information_schema_name": {"name": "postgres__information_schema_name", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__information_schema_name", "macro_sql": "{% macro postgres__information_schema_name(database) -%}\n {% if database_name -%}\n {{ adapter.verify_database(database_name) }}\n {%- endif -%}\n information_schema\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.364775, "supported_languages": null}, "macro.dbt_postgres.postgres__list_schemas": {"name": "postgres__list_schemas", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__list_schemas", "macro_sql": "{% macro postgres__list_schemas(database) %}\n {% if database -%}\n {{ adapter.verify_database(database) }}\n {%- endif -%}\n {% call statement('list_schemas', fetch_result=True, auto_begin=False) %}\n select distinct nspname from pg_namespace\n {% endcall %}\n {{ return(load_result('list_schemas').table) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.365087, "supported_languages": null}, "macro.dbt_postgres.postgres__check_schema_exists": {"name": "postgres__check_schema_exists", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__check_schema_exists", "macro_sql": "{% macro postgres__check_schema_exists(information_schema, schema) -%}\n {% if information_schema.database -%}\n {{ adapter.verify_database(information_schema.database) }}\n {%- endif -%}\n {% call statement('check_schema_exists', fetch_result=True, auto_begin=False) %}\n select count(*) from pg_namespace where nspname = '{{ schema }}'\n {% endcall %}\n {{ return(load_result('check_schema_exists').table) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.36544, "supported_languages": null}, "macro.dbt_postgres.postgres__make_relation_with_suffix": {"name": "postgres__make_relation_with_suffix", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__make_relation_with_suffix", "macro_sql": "{% macro postgres__make_relation_with_suffix(base_relation, suffix, dstring) %}\n {% if dstring %}\n {% set dt = modules.datetime.datetime.now() %}\n {% set dtstring = dt.strftime(\"%H%M%S%f\") %}\n {% set suffix = suffix ~ dtstring %}\n {% endif %}\n {% set suffix_length = suffix|length %}\n {% set relation_max_name_length = base_relation.relation_max_name_length() %}\n {% if suffix_length > relation_max_name_length %}\n {% do exceptions.raise_compiler_error('Relation suffix is too long (' ~ suffix_length ~ ' characters). Maximum length is ' ~ relation_max_name_length ~ ' characters.') %}\n {% endif %}\n {% set identifier = base_relation.identifier[:relation_max_name_length - suffix_length] ~ suffix %}\n\n {{ return(base_relation.incorporate(path={\"identifier\": identifier })) }}\n\n {% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3662038, "supported_languages": null}, "macro.dbt_postgres.postgres__make_intermediate_relation": {"name": "postgres__make_intermediate_relation", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__make_intermediate_relation", "macro_sql": "{% macro postgres__make_intermediate_relation(base_relation, suffix) %}\n {{ return(postgres__make_relation_with_suffix(base_relation, suffix, dstring=False)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_relation_with_suffix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.366388, "supported_languages": null}, "macro.dbt_postgres.postgres__make_temp_relation": {"name": "postgres__make_temp_relation", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__make_temp_relation", "macro_sql": "{% macro postgres__make_temp_relation(base_relation, suffix) %}\n {% set temp_relation = postgres__make_relation_with_suffix(base_relation, suffix, dstring=True) %}\n {{ return(temp_relation.incorporate(path={\"schema\": none,\n \"database\": none})) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_relation_with_suffix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3666759, "supported_languages": null}, "macro.dbt_postgres.postgres__make_backup_relation": {"name": "postgres__make_backup_relation", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__make_backup_relation", "macro_sql": "{% macro postgres__make_backup_relation(base_relation, backup_relation_type, suffix) %}\n {% set backup_relation = postgres__make_relation_with_suffix(base_relation, suffix, dstring=False) %}\n {{ return(backup_relation.incorporate(type=backup_relation_type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_relation_with_suffix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.366931, "supported_languages": null}, "macro.dbt_postgres.postgres_escape_comment": {"name": "postgres_escape_comment", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres_escape_comment", "macro_sql": "{% macro postgres_escape_comment(comment) -%}\n {% if comment is not string %}\n {% do exceptions.raise_compiler_error('cannot escape a non-string: ' ~ comment) %}\n {% endif %}\n {%- set magic = '$dbt_comment_literal_block$' -%}\n {%- if magic in comment -%}\n {%- do exceptions.raise_compiler_error('The string ' ~ magic ~ ' is not allowed in comments.') -%}\n {%- endif -%}\n {{ magic }}{{ comment }}{{ magic }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3673222, "supported_languages": null}, "macro.dbt_postgres.postgres__alter_relation_comment": {"name": "postgres__alter_relation_comment", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__alter_relation_comment", "macro_sql": "{% macro postgres__alter_relation_comment(relation, comment) %}\n {% set escaped_comment = postgres_escape_comment(comment) %}\n comment on {{ relation.type }} {{ relation }} is {{ escaped_comment }};\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres_escape_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.367527, "supported_languages": null}, "macro.dbt_postgres.postgres__alter_column_comment": {"name": "postgres__alter_column_comment", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__alter_column_comment", "macro_sql": "{% macro postgres__alter_column_comment(relation, column_dict) %}\n {% set existing_columns = adapter.get_columns_in_relation(relation) | map(attribute=\"name\") | list %}\n {% for column_name in column_dict if (column_name in existing_columns) %}\n {% set comment = column_dict[column_name]['description'] %}\n {% set escaped_comment = postgres_escape_comment(comment) %}\n comment on column {{ relation }}.{{ adapter.quote(column_name) if column_dict[column_name]['quote'] else column_name }} is {{ escaped_comment }};\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres_escape_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.368065, "supported_languages": null}, "macro.dbt_postgres.postgres__get_show_grant_sql": {"name": "postgres__get_show_grant_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__get_show_grant_sql", "macro_sql": "\n\n{%- macro postgres__get_show_grant_sql(relation) -%}\n select grantee, privilege_type\n from {{ relation.information_schema('role_table_grants') }}\n where grantor = current_role\n and grantee != current_role\n and table_schema = '{{ relation.schema }}'\n and table_name = '{{ relation.identifier }}'\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3682492, "supported_languages": null}, "macro.dbt_postgres.postgres__copy_grants": {"name": "postgres__copy_grants", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__copy_grants", "macro_sql": "{% macro postgres__copy_grants() %}\n {{ return(False) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.36836, "supported_languages": null}, "macro.dbt_postgres.postgres__get_show_indexes_sql": {"name": "postgres__get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__get_show_indexes_sql", "macro_sql": "{% macro postgres__get_show_indexes_sql(relation) %}\n select\n i.relname as name,\n m.amname as method,\n ix.indisunique as \"unique\",\n array_to_string(array_agg(a.attname), ',') as column_names\n from pg_index ix\n join pg_class i\n on i.oid = ix.indexrelid\n join pg_am m\n on m.oid=i.relam\n join pg_class t\n on t.oid = ix.indrelid\n join pg_namespace n\n on n.oid = t.relnamespace\n join pg_attribute a\n on a.attrelid = t.oid\n and a.attnum = ANY(ix.indkey)\n where t.relname = '{{ relation.identifier }}'\n and n.nspname = '{{ relation.schema }}'\n and t.relkind in ('r', 'm')\n group by 1, 2, 3\n order by 1, 2, 3\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.368526, "supported_languages": null}, "macro.dbt_postgres.postgres__get_drop_index_sql": {"name": "postgres__get_drop_index_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_postgres.postgres__get_drop_index_sql", "macro_sql": "\n\n\n{%- macro postgres__get_drop_index_sql(relation, index_name) -%}\n drop index if exists \"{{ relation.schema }}\".\"{{ index_name }}\"\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3686552, "supported_languages": null}, "macro.dbt_postgres.postgres__get_incremental_default_sql": {"name": "postgres__get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/materializations/incremental_strategies.sql", "original_file_path": "macros/materializations/incremental_strategies.sql", "unique_id": "macro.dbt_postgres.postgres__get_incremental_default_sql", "macro_sql": "{% macro postgres__get_incremental_default_sql(arg_dict) %}\n\n {% if arg_dict[\"unique_key\"] %}\n {% do return(get_incremental_delete_insert_sql(arg_dict)) %}\n {% else %}\n {% do return(get_incremental_append_sql(arg_dict)) %}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_incremental_delete_insert_sql", "macro.dbt.get_incremental_append_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3690188, "supported_languages": null}, "macro.dbt_postgres.postgres__snapshot_merge_sql": {"name": "postgres__snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/materializations/snapshot_merge.sql", "original_file_path": "macros/materializations/snapshot_merge.sql", "unique_id": "macro.dbt_postgres.postgres__snapshot_merge_sql", "macro_sql": "{% macro postgres__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n update {{ target }}\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_scd_id::text = {{ target }}.dbt_scd_id::text\n and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)\n and {{ target }}.dbt_valid_to is null;\n\n insert into {{ target }} ({{ insert_cols_csv }})\n select {% for column in insert_cols -%}\n DBT_INTERNAL_SOURCE.{{ column }} {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.dbt_change_type::text = 'insert'::text;\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.369674, "supported_languages": null}, "macro.dbt_postgres.postgres__drop_materialized_view": {"name": "postgres__drop_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt_postgres.postgres__drop_materialized_view", "macro_sql": "{% macro postgres__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.369808, "supported_languages": null}, "macro.dbt_postgres.postgres__describe_materialized_view": {"name": "postgres__describe_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/describe.sql", "original_file_path": "macros/relations/materialized_view/describe.sql", "unique_id": "macro.dbt_postgres.postgres__describe_materialized_view", "macro_sql": "{% macro postgres__describe_materialized_view(relation) %}\n -- for now just get the indexes, we don't need the name or the query yet\n {% set _indexes = run_query(get_show_indexes_sql(relation)) %}\n {% do return({'indexes': _indexes}) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.get_show_indexes_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.370087, "supported_languages": null}, "macro.dbt_postgres.postgres__refresh_materialized_view": {"name": "postgres__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt_postgres.postgres__refresh_materialized_view", "macro_sql": "{% macro postgres__refresh_materialized_view(relation) %}\n refresh materialized view {{ relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.370218, "supported_languages": null}, "macro.dbt_postgres.postgres__get_rename_materialized_view_sql": {"name": "postgres__get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/rename.sql", "original_file_path": "macros/relations/materialized_view/rename.sql", "unique_id": "macro.dbt_postgres.postgres__get_rename_materialized_view_sql", "macro_sql": "{% macro postgres__get_rename_materialized_view_sql(relation, new_name) %}\n alter materialized view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.370382, "supported_languages": null}, "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql": {"name": "postgres__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql", "macro_sql": "{% macro postgres__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n\n -- apply a full refresh immediately if needed\n {% if configuration_changes.requires_full_refresh %}\n\n {{ get_replace_sql(existing_relation, relation, sql) }}\n\n -- otherwise apply individual changes as needed\n {% else %}\n\n {{ postgres__update_indexes_on_materialized_view(relation, configuration_changes.indexes) }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_replace_sql", "macro.dbt_postgres.postgres__update_indexes_on_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.371222, "supported_languages": null}, "macro.dbt_postgres.postgres__update_indexes_on_materialized_view": {"name": "postgres__update_indexes_on_materialized_view", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt_postgres.postgres__update_indexes_on_materialized_view", "macro_sql": "\n\n\n{%- macro postgres__update_indexes_on_materialized_view(relation, index_changes) -%}\n {{- log(\"Applying UPDATE INDEXES to: \" ~ relation) -}}\n\n {%- for _index_change in index_changes -%}\n {%- set _index = _index_change.context -%}\n\n {%- if _index_change.action == \"drop\" -%}\n\n {{ postgres__get_drop_index_sql(relation, _index.name) }};\n\n {%- elif _index_change.action == \"create\" -%}\n\n {{ postgres__get_create_index_sql(relation, _index.as_node_config) }}\n\n {%- endif -%}\n\n {%- endfor -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_drop_index_sql", "macro.dbt_postgres.postgres__get_create_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.371648, "supported_languages": null}, "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes": {"name": "postgres__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes", "macro_sql": "{% macro postgres__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {% set _existing_materialized_view = postgres__describe_materialized_view(existing_relation) %}\n {% set _configuration_changes = existing_relation.get_materialized_view_config_change_collection(_existing_materialized_view, new_config) %}\n {% do return(_configuration_changes) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__describe_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3719082, "supported_languages": null}, "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql": {"name": "postgres__get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql", "macro_sql": "{% macro postgres__get_create_materialized_view_as_sql(relation, sql) %}\n create materialized view if not exists {{ relation }} as {{ sql }};\n\n {% for _index_dict in config.get('indexes', []) -%}\n {{- get_create_index_sql(relation, _index_dict) -}}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_create_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.372239, "supported_languages": null}, "macro.dbt_postgres.postgres__drop_table": {"name": "postgres__drop_table", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt_postgres.postgres__drop_table", "macro_sql": "{% macro postgres__drop_table(relation) -%}\n drop table if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.372364, "supported_languages": null}, "macro.dbt_postgres.postgres__get_replace_table_sql": {"name": "postgres__get_replace_table_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/table/replace.sql", "original_file_path": "macros/relations/table/replace.sql", "unique_id": "macro.dbt_postgres.postgres__get_replace_table_sql", "macro_sql": "{% macro postgres__get_replace_table_sql(relation, sql) -%}\n\n {%- set sql_header = config.get('sql_header', none) -%}\n {{ sql_header if sql_header is not none }}\n\n create or replace table {{ relation }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {{ get_table_columns_and_constraints() }}\n {%- set sql = get_select_subquery(sql) %}\n {% endif %}\n as (\n {{ sql }}\n );\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent", "macro.dbt.get_table_columns_and_constraints", "macro.dbt.get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.372991, "supported_languages": null}, "macro.dbt_postgres.postgres__get_rename_table_sql": {"name": "postgres__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt_postgres.postgres__get_rename_table_sql", "macro_sql": "{% macro postgres__get_rename_table_sql(relation, new_name) %}\n alter table {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.373163, "supported_languages": null}, "macro.dbt_postgres.postgres__drop_view": {"name": "postgres__drop_view", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt_postgres.postgres__drop_view", "macro_sql": "{% macro postgres__drop_view(relation) -%}\n drop view if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3732831, "supported_languages": null}, "macro.dbt_postgres.postgres__get_replace_view_sql": {"name": "postgres__get_replace_view_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt_postgres.postgres__get_replace_view_sql", "macro_sql": "{% macro postgres__get_replace_view_sql(relation, sql) -%}\n\n {%- set sql_header = config.get('sql_header', none) -%}\n {{ sql_header if sql_header is not none }}\n\n create or replace view {{ relation }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as (\n {{ sql }}\n );\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.373792, "supported_languages": null}, "macro.dbt_postgres.postgres__get_rename_view_sql": {"name": "postgres__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt_postgres.postgres__get_rename_view_sql", "macro_sql": "{% macro postgres__get_rename_view_sql(relation, new_name) %}\n alter view {{ relation }} rename to {{ new_name }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.373953, "supported_languages": null}, "macro.dbt_postgres.postgres__dateadd": {"name": "postgres__dateadd", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt_postgres.postgres__dateadd", "macro_sql": "{% macro postgres__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n {{ from_date_or_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.374153, "supported_languages": null}, "macro.dbt_postgres.postgres__listagg": {"name": "postgres__listagg", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt_postgres.postgres__listagg", "macro_sql": "{% macro postgres__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n (array_agg(\n {{ measure }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n ))[1:{{ limit_num }}],\n {{ delimiter_text }}\n )\n {%- else %}\n string_agg(\n {{ measure }},\n {{ delimiter_text }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n )\n {%- endif %}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.374706, "supported_languages": null}, "macro.dbt_postgres.postgres__datediff": {"name": "postgres__datediff", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt_postgres.postgres__datediff", "macro_sql": "{% macro postgres__datediff(first_date, second_date, datepart) -%}\n\n {% if datepart == 'year' %}\n (date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))\n {% elif datepart == 'quarter' %}\n ({{ datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))\n {% elif datepart == 'month' %}\n ({{ datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))\n {% elif datepart == 'day' %}\n (({{second_date}})::date - ({{first_date}})::date)\n {% elif datepart == 'week' %}\n ({{ datediff(first_date, second_date, 'day') }} / 7 + case\n when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then\n case when {{first_date}} <= {{second_date}} then 0 else -1 end\n else\n case when {{first_date}} <= {{second_date}} then 1 else 0 end\n end)\n {% elif datepart == 'hour' %}\n ({{ datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))\n {% elif datepart == 'minute' %}\n ({{ datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))\n {% elif datepart == 'second' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))\n {% elif datepart == 'millisecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))\n {% elif datepart == 'microsecond' %}\n ({{ datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))\n {% else %}\n {{ exceptions.raise_compiler_error(\"Unsupported datepart for macro datediff in postgres: {!r}\".format(datepart)) }}\n {% endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.377894, "supported_languages": null}, "macro.dbt_postgres.postgres__any_value": {"name": "postgres__any_value", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/any_value.sql", "original_file_path": "macros/utils/any_value.sql", "unique_id": "macro.dbt_postgres.postgres__any_value", "macro_sql": "{% macro postgres__any_value(expression) -%}\n\n min({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.378113, "supported_languages": null}, "macro.dbt_postgres.postgres__last_day": {"name": "postgres__last_day", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt_postgres.postgres__last_day", "macro_sql": "{% macro postgres__last_day(date, datepart) -%}\n\n {%- if datepart == 'quarter' -%}\n -- postgres dateadd does not support quarter interval.\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd('month', '3', dbt.date_trunc(datepart, date))\n )}}\n as date)\n {%- else -%}\n {{dbt.default_last_day(date, datepart)}}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.dateadd", "macro.dbt.date_trunc", "macro.dbt.default_last_day"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.378646, "supported_languages": null}, "macro.dbt_postgres.postgres__split_part": {"name": "postgres__split_part", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt_postgres.postgres__split_part", "macro_sql": "{% macro postgres__split_part(string_text, delimiter_text, part_number) %}\n\n {% if part_number >= 0 %}\n {{ dbt.default__split_part(string_text, delimiter_text, part_number) }}\n {% else %}\n {{ dbt._split_part_negative(string_text, delimiter_text, part_number) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__split_part", "macro.dbt._split_part_negative"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.379072, "supported_languages": null}, "macro.dbt.run_hooks": {"name": "run_hooks", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.run_hooks", "macro_sql": "{% macro run_hooks(hooks, inside_transaction=True) %}\n {% for hook in hooks | selectattr('transaction', 'equalto', inside_transaction) %}\n {% if not inside_transaction and loop.first %}\n {% call statement(auto_begin=inside_transaction) %}\n commit;\n {% endcall %}\n {% endif %}\n {% set rendered = render(hook.get('sql')) | trim %}\n {% if (rendered | length) > 0 %}\n {% call statement(auto_begin=inside_transaction) %}\n {{ rendered }}\n {% endcall %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.380157, "supported_languages": null}, "macro.dbt.make_hook_config": {"name": "make_hook_config", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.make_hook_config", "macro_sql": "{% macro make_hook_config(sql, inside_transaction) %}\n {{ tojson({\"sql\": sql, \"transaction\": inside_transaction}) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.380358, "supported_languages": null}, "macro.dbt.before_begin": {"name": "before_begin", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.before_begin", "macro_sql": "{% macro before_begin(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3804958, "supported_languages": null}, "macro.dbt.in_transaction": {"name": "in_transaction", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.in_transaction", "macro_sql": "{% macro in_transaction(sql) %}\n {{ make_hook_config(sql, inside_transaction=True) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.380636, "supported_languages": null}, "macro.dbt.after_commit": {"name": "after_commit", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.after_commit", "macro_sql": "{% macro after_commit(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.380787, "supported_languages": null}, "macro.dbt.set_sql_header": {"name": "set_sql_header", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.set_sql_header", "macro_sql": "{% macro set_sql_header(config) -%}\n {{ config.set('sql_header', caller()) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3811579, "supported_languages": null}, "macro.dbt.should_full_refresh": {"name": "should_full_refresh", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.should_full_refresh", "macro_sql": "{% macro should_full_refresh() %}\n {% set config_full_refresh = config.get('full_refresh') %}\n {% if config_full_refresh is none %}\n {% set config_full_refresh = flags.FULL_REFRESH %}\n {% endif %}\n {% do return(config_full_refresh) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.381446, "supported_languages": null}, "macro.dbt.should_store_failures": {"name": "should_store_failures", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.should_store_failures", "macro_sql": "{% macro should_store_failures() %}\n {% set config_store_failures = config.get('store_failures') %}\n {% if config_store_failures is none %}\n {% set config_store_failures = flags.STORE_FAILURES %}\n {% endif %}\n {% do return(config_store_failures) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.381739, "supported_languages": null}, "macro.dbt.snapshot_merge_sql": {"name": "snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot_merge.sql", "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", "unique_id": "macro.dbt.snapshot_merge_sql", "macro_sql": "{% macro snapshot_merge_sql(target, source, insert_cols) -%}\n {{ adapter.dispatch('snapshot_merge_sql', 'dbt')(target, source, insert_cols) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__snapshot_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.382163, "supported_languages": null}, "macro.dbt.default__snapshot_merge_sql": {"name": "default__snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot_merge.sql", "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", "unique_id": "macro.dbt.default__snapshot_merge_sql", "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id\n\n when matched\n and DBT_INTERNAL_DEST.dbt_valid_to is null\n and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n then update\n set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n\n when not matched\n and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n then insert ({{ insert_cols_csv }})\n values ({{ insert_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.382421, "supported_languages": null}, "macro.dbt.strategy_dispatch": {"name": "strategy_dispatch", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.strategy_dispatch", "macro_sql": "{% macro strategy_dispatch(name) -%}\n{% set original_name = name %}\n {% if '.' in name %}\n {% set package_name, name = name.split(\".\", 1) %}\n {% else %}\n {% set package_name = none %}\n {% endif %}\n\n {% if package_name is none %}\n {% set package_context = context %}\n {% elif package_name in context %}\n {% set package_context = context[package_name] %}\n {% else %}\n {% set error_msg %}\n Could not find package '{{package_name}}', called with '{{original_name}}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n\n {%- set search_name = 'snapshot_' ~ name ~ '_strategy' -%}\n\n {% if search_name not in package_context %}\n {% set error_msg %}\n The specified strategy macro '{{name}}' was not found in package '{{ package_name }}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n {{ return(package_context[search_name]) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3858151, "supported_languages": null}, "macro.dbt.snapshot_hash_arguments": {"name": "snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_hash_arguments", "macro_sql": "{% macro snapshot_hash_arguments(args) -%}\n {{ adapter.dispatch('snapshot_hash_arguments', 'dbt')(args) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3859992, "supported_languages": null}, "macro.dbt.default__snapshot_hash_arguments": {"name": "default__snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.default__snapshot_hash_arguments", "macro_sql": "{% macro default__snapshot_hash_arguments(args) -%}\n md5({%- for arg in args -%}\n coalesce(cast({{ arg }} as varchar ), '')\n {% if not loop.last %} || '|' || {% endif %}\n {%- endfor -%})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.386312, "supported_languages": null}, "macro.dbt.snapshot_timestamp_strategy": {"name": "snapshot_timestamp_strategy", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_timestamp_strategy", "macro_sql": "{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set primary_key = config['unique_key'] %}\n {% set updated_at = config['updated_at'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n\n {#/*\n The snapshot relation might not have an {{ updated_at }} value if the\n snapshot strategy is changed from `check` to `timestamp`. We\n should use a dbt-created column for the comparison in the snapshot\n table instead of assuming that the user-supplied {{ updated_at }}\n will be present in the historical data.\n\n See https://github.com/dbt-labs/dbt-core/issues/2350\n */ #}\n {% set row_changed_expr -%}\n ({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3870668, "supported_languages": null}, "macro.dbt.snapshot_string_as_time": {"name": "snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_string_as_time", "macro_sql": "{% macro snapshot_string_as_time(timestamp) -%}\n {{ adapter.dispatch('snapshot_string_as_time', 'dbt')(timestamp) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__snapshot_string_as_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.387242, "supported_languages": null}, "macro.dbt.default__snapshot_string_as_time": {"name": "default__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.default__snapshot_string_as_time", "macro_sql": "{% macro default__snapshot_string_as_time(timestamp) %}\n {% do exceptions.raise_not_implemented(\n 'snapshot_string_as_time macro not implemented for adapter '+adapter.type()\n ) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.387409, "supported_languages": null}, "macro.dbt.snapshot_check_all_get_existing_columns": {"name": "snapshot_check_all_get_existing_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_check_all_get_existing_columns", "macro_sql": "{% macro snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) -%}\n {%- if not target_exists -%}\n {#-- no table yet -> return whatever the query does --#}\n {{ return((false, query_columns)) }}\n {%- endif -%}\n\n {#-- handle any schema changes --#}\n {%- set target_relation = adapter.get_relation(database=node.database, schema=node.schema, identifier=node.alias) -%}\n\n {% if check_cols_config == 'all' %}\n {%- set query_columns = get_columns_in_query(node['compiled_code']) -%}\n\n {% elif check_cols_config is iterable and (check_cols_config | length) > 0 %}\n {#-- query for proper casing/quoting, to support comparison below --#}\n {%- set select_check_cols_from_target -%}\n {#-- N.B. The whitespace below is necessary to avoid edge case issue with comments --#}\n {#-- See: https://github.com/dbt-labs/dbt-core/issues/6781 --#}\n select {{ check_cols_config | join(', ') }} from (\n {{ node['compiled_code'] }}\n ) subq\n {%- endset -%}\n {% set query_columns = get_columns_in_query(select_check_cols_from_target) %}\n\n {% else %}\n {% do exceptions.raise_compiler_error(\"Invalid value for 'check_cols': \" ~ check_cols_config) %}\n {% endif %}\n\n {%- set existing_cols = adapter.get_columns_in_relation(target_relation) | map(attribute = 'name') | list -%}\n {%- set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}\n {%- set ns.column_added = false -%}\n\n {%- set intersection = [] -%}\n {%- for col in query_columns -%}\n {%- if col in existing_cols -%}\n {%- do intersection.append(adapter.quote(col)) -%}\n {%- else -%}\n {% set ns.column_added = true %}\n {%- endif -%}\n {%- endfor -%}\n {{ return((ns.column_added, intersection)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_columns_in_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3887339, "supported_languages": null}, "macro.dbt.snapshot_check_strategy": {"name": "snapshot_check_strategy", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_check_strategy", "macro_sql": "{% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n {% set check_cols_config = config['check_cols'] %}\n {% set primary_key = config['unique_key'] %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n {% set updated_at = config.get('updated_at', snapshot_get_time()) %}\n\n {% set column_added = false %}\n\n {% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}\n\n {%- set row_changed_expr -%}\n (\n {%- if column_added -%}\n {{ get_true_sql() }}\n {%- else -%}\n {%- for col in check_cols -%}\n {{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}\n or\n (\n (({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))\n or\n ((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))\n )\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n {%- endif -%}\n )\n {%- endset %}\n\n {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.snapshot_get_time", "macro.dbt.snapshot_check_all_get_existing_columns", "macro.dbt.get_true_sql", "macro.dbt.snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.389992, "supported_languages": null}, "macro.dbt.create_columns": {"name": "create_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.create_columns", "macro_sql": "{% macro create_columns(relation, columns) %}\n {{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3935711, "supported_languages": null}, "macro.dbt.default__create_columns": {"name": "default__create_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__create_columns", "macro_sql": "{% macro default__create_columns(relation, columns) %}\n {% for column in columns %}\n {% call statement() %}\n alter table {{ relation }} add column \"{{ column.name }}\" {{ column.data_type }};\n {% endcall %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3938391, "supported_languages": null}, "macro.dbt.post_snapshot": {"name": "post_snapshot", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.post_snapshot", "macro_sql": "{% macro post_snapshot(staging_relation) %}\n {{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__post_snapshot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3939981, "supported_languages": null}, "macro.dbt.default__post_snapshot": {"name": "default__post_snapshot", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__post_snapshot", "macro_sql": "{% macro default__post_snapshot(staging_relation) %}\n {# no-op #}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.394082, "supported_languages": null}, "macro.dbt.get_true_sql": {"name": "get_true_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.get_true_sql", "macro_sql": "{% macro get_true_sql() %}\n {{ adapter.dispatch('get_true_sql', 'dbt')() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_true_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.394218, "supported_languages": null}, "macro.dbt.default__get_true_sql": {"name": "default__get_true_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__get_true_sql", "macro_sql": "{% macro default__get_true_sql() %}\n {{ return('TRUE') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.394331, "supported_languages": null}, "macro.dbt.snapshot_staging_table": {"name": "snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.snapshot_staging_table", "macro_sql": "{% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}\n {{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__snapshot_staging_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.39452, "supported_languages": null}, "macro.dbt.default__snapshot_staging_table": {"name": "default__snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__snapshot_staging_table", "macro_sql": "{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}\n\n with snapshot_query as (\n\n {{ source_sql }}\n\n ),\n\n snapshotted_data as (\n\n select *,\n {{ strategy.unique_key }} as dbt_unique_key\n\n from {{ target_relation }}\n where dbt_valid_to is null\n\n ),\n\n insertions_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to,\n {{ strategy.scd_id }} as dbt_scd_id\n\n from snapshot_query\n ),\n\n updates_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n {{ strategy.updated_at }} as dbt_valid_to\n\n from snapshot_query\n ),\n\n {%- if strategy.invalidate_hard_deletes %}\n\n deletes_source_data as (\n\n select\n *,\n {{ strategy.unique_key }} as dbt_unique_key\n from snapshot_query\n ),\n {% endif %}\n\n insertions as (\n\n select\n 'insert' as dbt_change_type,\n source_data.*\n\n from insertions_source_data as source_data\n left outer join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where snapshotted_data.dbt_unique_key is null\n or (\n snapshotted_data.dbt_unique_key is not null\n and (\n {{ strategy.row_changed }}\n )\n )\n\n ),\n\n updates as (\n\n select\n 'update' as dbt_change_type,\n source_data.*,\n snapshotted_data.dbt_scd_id\n\n from updates_source_data as source_data\n join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where (\n {{ strategy.row_changed }}\n )\n )\n\n {%- if strategy.invalidate_hard_deletes -%}\n ,\n\n deletes as (\n\n select\n 'delete' as dbt_change_type,\n source_data.*,\n {{ snapshot_get_time() }} as dbt_valid_from,\n {{ snapshot_get_time() }} as dbt_updated_at,\n {{ snapshot_get_time() }} as dbt_valid_to,\n snapshotted_data.dbt_scd_id\n\n from snapshotted_data\n left join deletes_source_data as source_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n where source_data.dbt_unique_key is null\n )\n {%- endif %}\n\n select * from insertions\n union all\n select * from updates\n {%- if strategy.invalidate_hard_deletes %}\n union all\n select * from deletes\n {%- endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.snapshot_get_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.39535, "supported_languages": null}, "macro.dbt.build_snapshot_table": {"name": "build_snapshot_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.build_snapshot_table", "macro_sql": "{% macro build_snapshot_table(strategy, sql) -%}\n {{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__build_snapshot_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3955252, "supported_languages": null}, "macro.dbt.default__build_snapshot_table": {"name": "default__build_snapshot_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__build_snapshot_table", "macro_sql": "{% macro default__build_snapshot_table(strategy, sql) %}\n\n select *,\n {{ strategy.scd_id }} as dbt_scd_id,\n {{ strategy.updated_at }} as dbt_updated_at,\n {{ strategy.updated_at }} as dbt_valid_from,\n nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to\n from (\n {{ sql }}\n ) sbq\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3957639, "supported_languages": null}, "macro.dbt.build_snapshot_staging_table": {"name": "build_snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.build_snapshot_staging_table", "macro_sql": "{% macro build_snapshot_staging_table(strategy, sql, target_relation) %}\n {% set temp_relation = make_temp_relation(target_relation) %}\n\n {% set select = snapshot_staging_table(strategy, sql, target_relation) %}\n\n {% call statement('build_snapshot_staging_relation') %}\n {{ create_table_as(True, temp_relation, select) }}\n {% endcall %}\n\n {% do return(temp_relation) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_temp_relation", "macro.dbt.snapshot_staging_table", "macro.dbt.statement", "macro.dbt.create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.3961668, "supported_languages": null}, "macro.dbt.materialization_snapshot_default": {"name": "materialization_snapshot_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot.sql", "original_file_path": "macros/materializations/snapshots/snapshot.sql", "unique_id": "macro.dbt.materialization_snapshot_default", "macro_sql": "{% materialization snapshot, default %}\n {%- set config = model['config'] -%}\n\n {%- set target_table = model.get('alias', model.get('name')) -%}\n\n {%- set strategy_name = config.get('strategy') -%}\n {%- set unique_key = config.get('unique_key') %}\n -- grab current tables grants config for comparision later on\n {%- set grant_config = config.get('grants') -%}\n\n {% set target_relation_exists, target_relation = get_or_create_relation(\n database=model.database,\n schema=model.schema,\n identifier=target_table,\n type='table') -%}\n\n {%- if not target_relation.is_table -%}\n {% do exceptions.relation_wrong_type(target_relation, 'table') %}\n {%- endif -%}\n\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set strategy_macro = strategy_dispatch(strategy_name) %}\n {% set strategy = strategy_macro(model, \"snapshotted_data\", \"source_data\", config, target_relation_exists) %}\n\n {% if not target_relation_exists %}\n\n {% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}\n {% set final_sql = create_table_as(False, target_relation, build_sql) %}\n\n {% else %}\n\n {{ adapter.valid_snapshot_target(target_relation) }}\n\n {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}\n\n -- this may no-op if the database does not require column expansion\n {% do adapter.expand_target_column_types(from_relation=staging_table,\n to_relation=target_relation) %}\n\n {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% do create_columns(target_relation, missing_columns) %}\n\n {% set source_columns = adapter.get_columns_in_relation(staging_table)\n | rejectattr('name', 'equalto', 'dbt_change_type')\n | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n | rejectattr('name', 'equalto', 'dbt_unique_key')\n | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n | list %}\n\n {% set quoted_source_columns = [] %}\n {% for column in source_columns %}\n {% do quoted_source_columns.append(adapter.quote(column.name)) %}\n {% endfor %}\n\n {% set final_sql = snapshot_merge_sql(\n target = target_relation,\n source = staging_table,\n insert_cols = quoted_source_columns\n )\n %}\n\n {% endif %}\n\n {% call statement('main') %}\n {{ final_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if not target_relation_exists %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {% if staging_table is defined %}\n {% do post_snapshot(staging_table) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.get_or_create_relation", "macro.dbt.run_hooks", "macro.dbt.strategy_dispatch", "macro.dbt.build_snapshot_table", "macro.dbt.create_table_as", "macro.dbt.build_snapshot_staging_table", "macro.dbt.create_columns", "macro.dbt.snapshot_merge_sql", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes", "macro.dbt.post_snapshot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.40182, "supported_languages": ["sql"]}, "macro.dbt.materialization_test_default": {"name": "materialization_test_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/test.sql", "original_file_path": "macros/materializations/tests/test.sql", "unique_id": "macro.dbt.materialization_test_default", "macro_sql": "{%- materialization test, default -%}\n\n {% set relations = [] %}\n\n {% if should_store_failures() %}\n\n {% set identifier = model['alias'] %}\n {% set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% set store_failures_as = config.get('store_failures_as') %}\n -- if `--store-failures` is invoked via command line and `store_failures_as` is not set,\n -- config.get('store_failures_as', 'table') returns None, not 'table'\n {% if store_failures_as == none %}{% set store_failures_as = 'table' %}{% endif %}\n {% if store_failures_as not in ['table', 'view'] %}\n {{ exceptions.raise_compiler_error(\n \"'\" ~ store_failures_as ~ \"' is not a valid value for `store_failures_as`. \"\n \"Accepted values are: ['ephemeral', 'table', 'view']\"\n ) }}\n {% endif %}\n\n {% set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database, type=store_failures_as) -%} %}\n\n {% if old_relation %}\n {% do adapter.drop_relation(old_relation) %}\n {% endif %}\n\n {% call statement(auto_begin=True) %}\n {{ get_create_sql(target_relation, sql) }}\n {% endcall %}\n\n {% do relations.append(target_relation) %}\n\n {% set main_sql %}\n select *\n from {{ target_relation }}\n {% endset %}\n\n {{ adapter.commit() }}\n\n {% else %}\n\n {% set main_sql = sql %}\n\n {% endif %}\n\n {% set limit = config.get('limit') %}\n {% set fail_calc = config.get('fail_calc') %}\n {% set warn_if = config.get('warn_if') %}\n {% set error_if = config.get('error_if') %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit)}}\n\n {%- endcall %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.should_store_failures", "macro.dbt.statement", "macro.dbt.get_create_sql", "macro.dbt.get_test_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.404222, "supported_languages": ["sql"]}, "macro.dbt.get_test_sql": {"name": "get_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.get_test_sql", "macro_sql": "{% macro get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n {{ adapter.dispatch('get_test_sql', 'dbt')(main_sql, fail_calc, warn_if, error_if, limit) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_test_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.404646, "supported_languages": null}, "macro.dbt.default__get_test_sql": {"name": "default__get_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.default__get_test_sql", "macro_sql": "{% macro default__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n select\n {{ fail_calc }} as failures,\n {{ fail_calc }} {{ warn_if }} as should_warn,\n {{ fail_calc }} {{ error_if }} as should_error\n from (\n {{ main_sql }}\n {{ \"limit \" ~ limit if limit != none }}\n ) dbt_internal_test\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4049249, "supported_languages": null}, "macro.dbt.get_where_subquery": {"name": "get_where_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/where_subquery.sql", "original_file_path": "macros/materializations/tests/where_subquery.sql", "unique_id": "macro.dbt.get_where_subquery", "macro_sql": "{% macro get_where_subquery(relation) -%}\n {% do return(adapter.dispatch('get_where_subquery', 'dbt')(relation)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_where_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4052632, "supported_languages": null}, "macro.dbt.default__get_where_subquery": {"name": "default__get_where_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/where_subquery.sql", "original_file_path": "macros/materializations/tests/where_subquery.sql", "unique_id": "macro.dbt.default__get_where_subquery", "macro_sql": "{% macro default__get_where_subquery(relation) -%}\n {% set where = config.get('where', '') %}\n {% if where %}\n {%- set filtered -%}\n (select * from {{ relation }} where {{ where }}) dbt_subquery\n {%- endset -%}\n {% do return(filtered) %}\n {%- else -%}\n {% do return(relation) %}\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.405601, "supported_languages": null}, "macro.dbt.materialization_materialized_view_default": {"name": "materialization_materialized_view_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialization_materialized_view_default", "macro_sql": "{% materialization materialized_view, default %}\n {% set existing_relation = load_cached_relation(this) %}\n {% set target_relation = this.incorporate(type=this.MaterializedView) %}\n {% set intermediate_relation = make_intermediate_relation(target_relation) %}\n {% set backup_relation_type = target_relation.MaterializedView if existing_relation is none else existing_relation.type %}\n {% set backup_relation = make_backup_relation(target_relation, backup_relation_type) %}\n\n {{ materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) }}\n\n {% set build_sql = materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% if build_sql == '' %}\n {{ materialized_view_execute_no_op(target_relation) }}\n {% else %}\n {{ materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) }}\n {% endif %}\n\n {{ materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.materialized_view_setup", "macro.dbt.materialized_view_get_build_sql", "macro.dbt.materialized_view_execute_no_op", "macro.dbt.materialized_view_execute_build_sql", "macro.dbt.materialized_view_teardown"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.410156, "supported_languages": ["sql"]}, "macro.dbt.materialized_view_setup": {"name": "materialized_view_setup", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_setup", "macro_sql": "{% macro materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) %}\n\n -- backup_relation and intermediate_relation should not already exist in the database\n -- it's possible these exist because of a previous run that exited unexpectedly\n {% set preexisting_backup_relation = load_cached_relation(backup_relation) %}\n {% set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.410551, "supported_languages": null}, "macro.dbt.materialized_view_teardown": {"name": "materialized_view_teardown", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_teardown", "macro_sql": "{% macro materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) %}\n\n -- drop the temp relations if they exist to leave the database clean for the next run\n {{ drop_relation_if_exists(backup_relation) }}\n {{ drop_relation_if_exists(intermediate_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4107919, "supported_languages": null}, "macro.dbt.materialized_view_get_build_sql": {"name": "materialized_view_get_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_get_build_sql", "macro_sql": "{% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% set full_refresh_mode = should_full_refresh() %}\n\n -- determine the scenario we're in: create, full_refresh, alter, refresh data\n {% if existing_relation is none %}\n {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n {% else %}\n\n -- get config options\n {% set on_configuration_change = config.get('on_configuration_change') %}\n {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n {% if configuration_changes is none %}\n {% set build_sql = refresh_materialized_view(target_relation) %}\n\n {% elif on_configuration_change == 'apply' %}\n {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n {% elif on_configuration_change == 'continue' %}\n {% set build_sql = '' %}\n {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation ~ \"`\") }}\n {% elif on_configuration_change == 'fail' %}\n {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation ~ \"`\") }}\n\n {% else %}\n -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n {% endif %}\n\n {% endif %}\n\n {% do return(build_sql) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh", "macro.dbt.get_create_materialized_view_as_sql", "macro.dbt.get_replace_sql", "macro.dbt.get_materialized_view_configuration_changes", "macro.dbt.refresh_materialized_view", "macro.dbt.get_alter_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.412014, "supported_languages": null}, "macro.dbt.materialized_view_execute_no_op": {"name": "materialized_view_execute_no_op", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_execute_no_op", "macro_sql": "{% macro materialized_view_execute_no_op(target_relation) %}\n {% do store_raw_result(\n name=\"main\",\n message=\"skip \" ~ target_relation,\n code=\"skip\",\n rows_affected=\"-1\"\n ) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.412241, "supported_languages": null}, "macro.dbt.materialized_view_execute_build_sql": {"name": "materialized_view_execute_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_execute_build_sql", "macro_sql": "{% macro materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set grant_config = config.get('grants') %}\n\n {% call statement(name=\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.412858, "supported_languages": null}, "macro.dbt.materialization_view_default": {"name": "materialization_view_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/view.sql", "original_file_path": "macros/materializations/models/view.sql", "unique_id": "macro.dbt.materialization_view_default", "macro_sql": "{%- materialization view, default -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='view') -%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n This relation (probably) doesn't exist yet. If it does exist, it's a leftover from\n a previous run, and we're going to try to drop it immediately. At the end of this\n materialization, we're going to rename the \"existing_relation\" to this identifier,\n and then we're going to drop it. In order to make sure we run the correct one of:\n - drop view ...\n - drop table ...\n\n We need to set the type of this relation to be the type of the existing_relation, if it exists,\n or else \"view\" as a sane default if it does not. Note that if the existing_relation does not\n exist, then there is nothing to move out of the way and subsequentally drop. In that case,\n this relation will be effectively unused.\n */\n {%- set backup_relation_type = 'view' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n -- move the existing view out of the way\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.run_hooks", "macro.dbt.drop_relation_if_exists", "macro.dbt.statement", "macro.dbt.get_create_view_as_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4156191, "supported_languages": ["sql"]}, "macro.dbt.materialization_table_default": {"name": "materialization_table_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/table.sql", "original_file_path": "macros/materializations/models/table.sql", "unique_id": "macro.dbt.materialization_table_default", "macro_sql": "{% materialization table, default %}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') %}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n See ../view/view.sql for more information about this relation.\n */\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_table_as_sql(False, intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% do create_indexes(target_relation) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n -- finally, drop the existing/backup relation after the commit\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt.get_create_table_as_sql", "macro.dbt.create_indexes", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.418449, "supported_languages": ["sql"]}, "macro.dbt.get_quoted_csv": {"name": "get_quoted_csv", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.get_quoted_csv", "macro_sql": "{% macro get_quoted_csv(column_names) %}\n\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote(col)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4200058, "supported_languages": null}, "macro.dbt.diff_columns": {"name": "diff_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.diff_columns", "macro_sql": "{% macro diff_columns(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% set source_names = source_columns | map(attribute = 'column') | list %}\n {% set target_names = target_columns | map(attribute = 'column') | list %}\n\n {# --check whether the name attribute exists in the target - this does not perform a data type check #}\n {% for sc in source_columns %}\n {% if sc.name not in target_names %}\n {{ result.append(sc) }}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4205189, "supported_languages": null}, "macro.dbt.diff_column_data_types": {"name": "diff_column_data_types", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.diff_column_data_types", "macro_sql": "{% macro diff_column_data_types(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% for sc in source_columns %}\n {% set tc = target_columns | selectattr(\"name\", \"equalto\", sc.name) | list | first %}\n {% if tc %}\n {% if sc.data_type != tc.data_type and not sc.can_expand_to(other_column=tc) %}\n {{ result.append( { 'column_name': tc.name, 'new_type': sc.data_type } ) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.421132, "supported_languages": null}, "macro.dbt.get_merge_update_columns": {"name": "get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.get_merge_update_columns", "macro_sql": "{% macro get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {{ return(adapter.dispatch('get_merge_update_columns', 'dbt')(merge_update_columns, merge_exclude_columns, dest_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_merge_update_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.421351, "supported_languages": null}, "macro.dbt.default__get_merge_update_columns": {"name": "default__get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.default__get_merge_update_columns", "macro_sql": "{% macro default__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {%- set default_cols = dest_columns | map(attribute=\"quoted\") | list -%}\n\n {%- if merge_update_columns and merge_exclude_columns -%}\n {{ exceptions.raise_compiler_error(\n 'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config'\n )}}\n {%- elif merge_update_columns -%}\n {%- set update_columns = merge_update_columns -%}\n {%- elif merge_exclude_columns -%}\n {%- set update_columns = [] -%}\n {%- for column in dest_columns -%}\n {% if column.column | lower not in merge_exclude_columns | map(\"lower\") | list %}\n {%- do update_columns.append(column.quoted) -%}\n {% endif %}\n {%- endfor -%}\n {%- else -%}\n {%- set update_columns = default_cols -%}\n {%- endif -%}\n\n {{ return(update_columns) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.422007, "supported_languages": null}, "macro.dbt.get_merge_sql": {"name": "get_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_merge_sql", "macro_sql": "{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n -- back compat for old kwarg name\n {% set incremental_predicates = kwargs.get('predicates', incremental_predicates) %}\n {{ adapter.dispatch('get_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.427417, "supported_languages": null}, "macro.dbt.default__get_merge_sql": {"name": "default__get_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_merge_sql", "macro_sql": "{% macro default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n {%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set merge_update_columns = config.get('merge_update_columns') -%}\n {%- set merge_exclude_columns = config.get('merge_exclude_columns') -%}\n {%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not mapping and unique_key is not string %}\n {% for key in unique_key %}\n {% set this_key_match %}\n DBT_INTERNAL_SOURCE.{{ key }} = DBT_INTERNAL_DEST.{{ key }}\n {% endset %}\n {% do predicates.append(this_key_match) %}\n {% endfor %}\n {% else %}\n {% set unique_key_match %}\n DBT_INTERNAL_SOURCE.{{ unique_key }} = DBT_INTERNAL_DEST.{{ unique_key }}\n {% endset %}\n {% do predicates.append(unique_key_match) %}\n {% endif %}\n {% else %}\n {% do predicates.append('FALSE') %}\n {% endif %}\n\n {{ sql_header if sql_header is not none }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on {{\"(\" ~ predicates | join(\") and (\") ~ \")\"}}\n\n {% if unique_key %}\n when matched then update set\n {% for column_name in update_columns -%}\n {{ column_name }} = DBT_INTERNAL_SOURCE.{{ column_name }}\n {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n {% endif %}\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv", "macro.dbt.get_merge_update_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.428857, "supported_languages": null}, "macro.dbt.get_delete_insert_merge_sql": {"name": "get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_delete_insert_merge_sql", "macro_sql": "{% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n {{ adapter.dispatch('get_delete_insert_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_delete_insert_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.429104, "supported_languages": null}, "macro.dbt.default__get_delete_insert_merge_sql": {"name": "default__get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_delete_insert_merge_sql", "macro_sql": "{% macro default__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not string %}\n delete from {{target }}\n using {{ source }}\n where (\n {% for key in unique_key %}\n {{ source }}.{{ key }} = {{ target }}.{{ key }}\n {{ \"and \" if not loop.last}}\n {% endfor %}\n {% if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {% endif %}\n );\n {% else %}\n delete from {{ target }}\n where (\n {{ unique_key }}) in (\n select ({{ unique_key }})\n from {{ source }}\n )\n {%- if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {%- endif -%};\n\n {% endif %}\n {% endif %}\n\n insert into {{ target }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ source }}\n )\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.429995, "supported_languages": null}, "macro.dbt.get_insert_overwrite_merge_sql": {"name": "get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_insert_overwrite_merge_sql", "macro_sql": "{% macro get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header=false) -%}\n {{ adapter.dispatch('get_insert_overwrite_merge_sql', 'dbt')(target, source, dest_columns, predicates, include_sql_header) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4302459, "supported_languages": null}, "macro.dbt.default__get_insert_overwrite_merge_sql": {"name": "default__get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_insert_overwrite_merge_sql", "macro_sql": "{% macro default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) -%}\n {#-- The only time include_sql_header is True: --#}\n {#-- BigQuery + insert_overwrite strategy + \"static\" partitions config --#}\n {#-- We should consider including the sql header at the materialization level instead --#}\n\n {%- set predicates = [] if predicates is none else [] + predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none and include_sql_header }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on FALSE\n\n when not matched by source\n {% if predicates %} and {{ predicates | join(' and ') }} {% endif %}\n then delete\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.430825, "supported_languages": null}, "macro.dbt.is_incremental": {"name": "is_incremental", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/is_incremental.sql", "original_file_path": "macros/materializations/models/incremental/is_incremental.sql", "unique_id": "macro.dbt.is_incremental", "macro_sql": "{% macro is_incremental() %}\n {#-- do not run introspective queries in parsing #}\n {% if not execute %}\n {{ return(False) }}\n {% else %}\n {% set relation = adapter.get_relation(this.database, this.schema, this.table) %}\n {{ return(relation is not none\n and relation.type == 'table'\n and model.config.materialized == 'incremental'\n and not should_full_refresh()) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.431398, "supported_languages": null}, "macro.dbt.get_incremental_append_sql": {"name": "get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_append_sql", "macro_sql": "{% macro get_incremental_append_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_append_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_append_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.432222, "supported_languages": null}, "macro.dbt.default__get_incremental_append_sql": {"name": "default__get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_append_sql", "macro_sql": "{% macro default__get_incremental_append_sql(arg_dict) %}\n\n {% do return(get_insert_into_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_insert_into_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.432446, "supported_languages": null}, "macro.dbt.get_incremental_delete_insert_sql": {"name": "get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_delete_insert_sql", "macro_sql": "{% macro get_incremental_delete_insert_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_delete_insert_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_delete_insert_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4326122, "supported_languages": null}, "macro.dbt.default__get_incremental_delete_insert_sql": {"name": "default__get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_delete_insert_sql", "macro_sql": "{% macro default__get_incremental_delete_insert_sql(arg_dict) %}\n\n {% do return(get_delete_insert_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_delete_insert_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.432877, "supported_languages": null}, "macro.dbt.get_incremental_merge_sql": {"name": "get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_merge_sql", "macro_sql": "{% macro get_incremental_merge_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.43312, "supported_languages": null}, "macro.dbt.default__get_incremental_merge_sql": {"name": "default__get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_merge_sql", "macro_sql": "{% macro default__get_incremental_merge_sql(arg_dict) %}\n\n {% do return(get_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.433394, "supported_languages": null}, "macro.dbt.get_incremental_insert_overwrite_sql": {"name": "get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_insert_overwrite_sql", "macro_sql": "{% macro get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_insert_overwrite_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_insert_overwrite_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.433567, "supported_languages": null}, "macro.dbt.default__get_incremental_insert_overwrite_sql": {"name": "default__get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_insert_overwrite_sql", "macro_sql": "{% macro default__get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {% do return(get_insert_overwrite_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4338062, "supported_languages": null}, "macro.dbt.get_incremental_default_sql": {"name": "get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_default_sql", "macro_sql": "{% macro get_incremental_default_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_default_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_incremental_default_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4339771, "supported_languages": null}, "macro.dbt.default__get_incremental_default_sql": {"name": "default__get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_default_sql", "macro_sql": "{% macro default__get_incremental_default_sql(arg_dict) %}\n\n {% do return(get_incremental_append_sql(arg_dict)) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_incremental_append_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.434113, "supported_languages": null}, "macro.dbt.get_insert_into_sql": {"name": "get_insert_into_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_insert_into_sql", "macro_sql": "{% macro get_insert_into_sql(target_relation, temp_relation, dest_columns) %}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n insert into {{ target_relation }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ temp_relation }}\n )\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.434367, "supported_languages": null}, "macro.dbt.materialization_incremental_default": {"name": "materialization_incremental_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/incremental.sql", "original_file_path": "macros/materializations/models/incremental/incremental.sql", "unique_id": "macro.dbt.materialization_incremental_default", "macro_sql": "{% materialization incremental, default -%}\n\n -- relations\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n -- configs\n {%- set unique_key = config.get('unique_key') -%}\n {%- set full_refresh_mode = (should_full_refresh() or existing_relation.is_view) -%}\n {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n -- the temp_ and backup_ relations should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation. This has to happen before\n -- BEGIN, in a separate transaction\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set to_drop = [] %}\n\n {% if existing_relation is none %}\n {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n {% elif full_refresh_mode %}\n {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n {% set need_swap = true %}\n {% else %}\n {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n {% do adapter.expand_target_column_types(\n from_relation=temp_relation,\n to_relation=target_relation) %}\n {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n {% if not dest_columns %}\n {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n {% endif %}\n\n {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n {% endif %}\n\n {% call statement(\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% if need_swap %}\n {% do adapter.rename_relation(target_relation, backup_relation) %}\n {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n {% do to_drop.append(backup_relation) %}\n {% endif %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {% do adapter.commit() %}\n\n {% for rel in to_drop %}\n {% do adapter.drop_relation(rel) %}\n {% endfor %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_temp_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.should_full_refresh", "macro.dbt.incremental_validate_on_schema_change", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks", "macro.dbt.get_create_table_as_sql", "macro.dbt.run_query", "macro.dbt.process_schema_changes", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.438933, "supported_languages": ["sql"]}, "macro.dbt.incremental_validate_on_schema_change": {"name": "incremental_validate_on_schema_change", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.incremental_validate_on_schema_change", "macro_sql": "{% macro incremental_validate_on_schema_change(on_schema_change, default='ignore') %}\n\n {% if on_schema_change not in ['sync_all_columns', 'append_new_columns', 'fail', 'ignore'] %}\n\n {% set log_message = 'Invalid value for on_schema_change (%s) specified. Setting default value of %s.' % (on_schema_change, default) %}\n {% do log(log_message) %}\n\n {{ return(default) }}\n\n {% else %}\n\n {{ return(on_schema_change) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.443757, "supported_languages": null}, "macro.dbt.check_for_schema_changes": {"name": "check_for_schema_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.check_for_schema_changes", "macro_sql": "{% macro check_for_schema_changes(source_relation, target_relation) %}\n\n {% set schema_changed = False %}\n\n {%- set source_columns = adapter.get_columns_in_relation(source_relation) -%}\n {%- set target_columns = adapter.get_columns_in_relation(target_relation) -%}\n {%- set source_not_in_target = diff_columns(source_columns, target_columns) -%}\n {%- set target_not_in_source = diff_columns(target_columns, source_columns) -%}\n\n {% set new_target_types = diff_column_data_types(source_columns, target_columns) %}\n\n {% if source_not_in_target != [] %}\n {% set schema_changed = True %}\n {% elif target_not_in_source != [] or new_target_types != [] %}\n {% set schema_changed = True %}\n {% elif new_target_types != [] %}\n {% set schema_changed = True %}\n {% endif %}\n\n {% set changes_dict = {\n 'schema_changed': schema_changed,\n 'source_not_in_target': source_not_in_target,\n 'target_not_in_source': target_not_in_source,\n 'source_columns': source_columns,\n 'target_columns': target_columns,\n 'new_target_types': new_target_types\n } %}\n\n {% set msg %}\n In {{ target_relation }}:\n Schema changed: {{ schema_changed }}\n Source columns not in target: {{ source_not_in_target }}\n Target columns not in source: {{ target_not_in_source }}\n New column types: {{ new_target_types }}\n {% endset %}\n\n {% do log(msg) %}\n\n {{ return(changes_dict) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.diff_columns", "macro.dbt.diff_column_data_types"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.444864, "supported_languages": null}, "macro.dbt.sync_column_schemas": {"name": "sync_column_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.sync_column_schemas", "macro_sql": "{% macro sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {%- set add_to_target_arr = schema_changes_dict['source_not_in_target'] -%}\n\n {%- if on_schema_change == 'append_new_columns'-%}\n {%- if add_to_target_arr | length > 0 -%}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, none) -%}\n {%- endif -%}\n\n {% elif on_schema_change == 'sync_all_columns' %}\n {%- set remove_from_target_arr = schema_changes_dict['target_not_in_source'] -%}\n {%- set new_target_types = schema_changes_dict['new_target_types'] -%}\n\n {% if add_to_target_arr | length > 0 or remove_from_target_arr | length > 0 %}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, remove_from_target_arr) -%}\n {% endif %}\n\n {% if new_target_types != [] %}\n {% for ntt in new_target_types %}\n {% set column_name = ntt['column_name'] %}\n {% set new_type = ntt['new_type'] %}\n {% do alter_column_type(target_relation, column_name, new_type) %}\n {% endfor %}\n {% endif %}\n\n {% endif %}\n\n {% set schema_change_message %}\n In {{ target_relation }}:\n Schema change approach: {{ on_schema_change }}\n Columns added: {{ add_to_target_arr }}\n Columns removed: {{ remove_from_target_arr }}\n Data types changed: {{ new_target_types }}\n {% endset %}\n\n {% do log(schema_change_message) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.alter_relation_add_remove_columns", "macro.dbt.alter_column_type"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.445958, "supported_languages": null}, "macro.dbt.process_schema_changes": {"name": "process_schema_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.process_schema_changes", "macro_sql": "{% macro process_schema_changes(on_schema_change, source_relation, target_relation) %}\n\n {% if on_schema_change == 'ignore' %}\n\n {{ return({}) }}\n\n {% else %}\n\n {% set schema_changes_dict = check_for_schema_changes(source_relation, target_relation) %}\n\n {% if schema_changes_dict['schema_changed'] %}\n\n {% if on_schema_change == 'fail' %}\n\n {% set fail_msg %}\n The source and target schemas on this incremental model are out of sync!\n They can be reconciled in several ways:\n - set the `on_schema_change` config to either append_new_columns or sync_all_columns, depending on your situation.\n - Re-run the incremental model with `full_refresh: True` to update the target schema.\n - update the schema manually and re-run the process.\n\n Additional troubleshooting context:\n Source columns not in target: {{ schema_changes_dict['source_not_in_target'] }}\n Target columns not in source: {{ schema_changes_dict['target_not_in_source'] }}\n New column types: {{ schema_changes_dict['new_target_types'] }}\n {% endset %}\n\n {% do exceptions.raise_compiler_error(fail_msg) %}\n\n {# -- unless we ignore, run the sync operation per the config #}\n {% else %}\n\n {% do sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {% endif %}\n\n {% endif %}\n\n {{ return(schema_changes_dict['source_columns']) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.check_for_schema_changes", "macro.dbt.sync_column_schemas"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.44673, "supported_languages": null}, "macro.dbt.can_clone_table": {"name": "can_clone_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/can_clone_table.sql", "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", "unique_id": "macro.dbt.can_clone_table", "macro_sql": "{% macro can_clone_table() %}\n {{ return(adapter.dispatch('can_clone_table', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__can_clone_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4469602, "supported_languages": null}, "macro.dbt.default__can_clone_table": {"name": "default__can_clone_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/can_clone_table.sql", "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", "unique_id": "macro.dbt.default__can_clone_table", "macro_sql": "{% macro default__can_clone_table() %}\n {{ return(False) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.447066, "supported_languages": null}, "macro.dbt.create_or_replace_clone": {"name": "create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/create_or_replace_clone.sql", "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", "unique_id": "macro.dbt.create_or_replace_clone", "macro_sql": "{% macro create_or_replace_clone(this_relation, defer_relation) %}\n {{ return(adapter.dispatch('create_or_replace_clone', 'dbt')(this_relation, defer_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_or_replace_clone"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.447335, "supported_languages": null}, "macro.dbt.default__create_or_replace_clone": {"name": "default__create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/create_or_replace_clone.sql", "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", "unique_id": "macro.dbt.default__create_or_replace_clone", "macro_sql": "{% macro default__create_or_replace_clone(this_relation, defer_relation) %}\n create or replace table {{ this_relation }} clone {{ defer_relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.447458, "supported_languages": null}, "macro.dbt.materialization_clone_default": {"name": "materialization_clone_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/clone.sql", "original_file_path": "macros/materializations/models/clone/clone.sql", "unique_id": "macro.dbt.materialization_clone_default", "macro_sql": "{%- materialization clone, default -%}\n\n {%- set relations = {'relations': []} -%}\n\n {%- if not defer_relation -%}\n -- nothing to do\n {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n\n {%- if existing_relation and not flags.FULL_REFRESH -%}\n -- noop!\n {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n -- Otherwise, this will be a view\n\n {% set can_clone_table = can_clone_table() %}\n\n {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {% if existing_relation is not none and not existing_relation.is_table %}\n {{ log(\"Dropping relation \" ~ existing_relation ~ \" because it is of type \" ~ existing_relation.type) }}\n {{ drop_relation_if_exists(existing_relation) }}\n {% endif %}\n\n -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n {% call statement('main') %}\n {% if target_relation and defer_relation and target_relation == defer_relation %}\n {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation) }}\n {% else %}\n {{ create_or_replace_clone(target_relation, defer_relation) }}\n {% endif %}\n\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n {%- else -%}\n\n {%- set target_relation = this.incorporate(type='view') -%}\n\n -- reuse the view materialization\n -- TODO: support actual dispatch for materialization macros\n -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n {% if not search_name in context %}\n {% set search_name = \"materialization_view_default\" %}\n {% endif %}\n {% set materialization_macro = context[search_name] %}\n {% set relations = materialization_macro() %}\n {{ return(relations) }}\n\n {%- endif -%}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.can_clone_table", "macro.dbt.drop_relation_if_exists", "macro.dbt.statement", "macro.dbt.create_or_replace_clone", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.45073, "supported_languages": ["sql"]}, "macro.dbt.materialization_seed_default": {"name": "materialization_seed_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/seed.sql", "original_file_path": "macros/materializations/seeds/seed.sql", "unique_id": "macro.dbt.materialization_seed_default", "macro_sql": "{% materialization seed, default %}\n\n {%- set identifier = model['alias'] -%}\n {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set grant_config = config.get('grants') -%}\n {%- set agate_table = load_agate_table() -%}\n -- grab current tables grants config for comparison later on\n\n {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% set create_table_sql = \"\" %}\n {% if exists_as_view %}\n {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation)) }}\n {% elif exists_as_table %}\n {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n {% else %}\n {% set create_table_sql = create_csv_table(model, agate_table) %}\n {% endif %}\n\n {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n {% set rows_affected = (agate_table.rows | length) %}\n {% set sql = load_csv_rows(model, agate_table) %}\n\n {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n {{ get_csv_sql(create_table_sql, sql) }};\n {% endcall %}\n\n {% set target_relation = this.incorporate(type='table') %}\n\n {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if full_refresh_mode or not exists_as_table %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh", "macro.dbt.run_hooks", "macro.dbt.reset_csv_table", "macro.dbt.create_csv_table", "macro.dbt.load_csv_rows", "macro.dbt.noop_statement", "macro.dbt.get_csv_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.453654, "supported_languages": ["sql"]}, "macro.dbt.create_csv_table": {"name": "create_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.create_csv_table", "macro_sql": "{% macro create_csv_table(model, agate_table) -%}\n {{ adapter.dispatch('create_csv_table', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4579468, "supported_languages": null}, "macro.dbt.default__create_csv_table": {"name": "default__create_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__create_csv_table", "macro_sql": "{% macro default__create_csv_table(model, agate_table) %}\n {%- set column_override = model['config'].get('column_types', {}) -%}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n\n {% set sql %}\n create table {{ this.render() }} (\n {%- for col_name in agate_table.column_names -%}\n {%- set inferred_type = adapter.convert_type(agate_table, loop.index0) -%}\n {%- set type = column_override.get(col_name, inferred_type) -%}\n {%- set column_name = (col_name | string) -%}\n {{ adapter.quote_seed_column(column_name, quote_seed_column) }} {{ type }} {%- if not loop.last -%}, {%- endif -%}\n {%- endfor -%}\n )\n {% endset %}\n\n {% call statement('_') -%}\n {{ sql }}\n {%- endcall %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.458762, "supported_languages": null}, "macro.dbt.reset_csv_table": {"name": "reset_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.reset_csv_table", "macro_sql": "{% macro reset_csv_table(model, full_refresh, old_relation, agate_table) -%}\n {{ adapter.dispatch('reset_csv_table', 'dbt')(model, full_refresh, old_relation, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__reset_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.458981, "supported_languages": null}, "macro.dbt.default__reset_csv_table": {"name": "default__reset_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__reset_csv_table", "macro_sql": "{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n {% set sql = \"\" %}\n {% if full_refresh %}\n {{ adapter.drop_relation(old_relation) }}\n {% set sql = create_csv_table(model, agate_table) %}\n {% else %}\n {{ adapter.truncate_relation(old_relation) }}\n {% set sql = \"truncate table \" ~ old_relation %}\n {% endif %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.459411, "supported_languages": null}, "macro.dbt.get_csv_sql": {"name": "get_csv_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_csv_sql", "macro_sql": "{% macro get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ adapter.dispatch('get_csv_sql', 'dbt')(create_or_truncate_sql, insert_sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_csv_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.459585, "supported_languages": null}, "macro.dbt.default__get_csv_sql": {"name": "default__get_csv_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_csv_sql", "macro_sql": "{% macro default__get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ create_or_truncate_sql }};\n -- dbt seed --\n {{ insert_sql }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.459705, "supported_languages": null}, "macro.dbt.get_binding_char": {"name": "get_binding_char", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_binding_char", "macro_sql": "{% macro get_binding_char() -%}\n {{ adapter.dispatch('get_binding_char', 'dbt')() }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_binding_char"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.459832, "supported_languages": null}, "macro.dbt.default__get_binding_char": {"name": "default__get_binding_char", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_binding_char", "macro_sql": "{% macro default__get_binding_char() %}\n {{ return('%s') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4599419, "supported_languages": null}, "macro.dbt.get_batch_size": {"name": "get_batch_size", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_batch_size", "macro_sql": "{% macro get_batch_size() -%}\n {{ return(adapter.dispatch('get_batch_size', 'dbt')()) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_batch_size"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.460086, "supported_languages": null}, "macro.dbt.default__get_batch_size": {"name": "default__get_batch_size", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_batch_size", "macro_sql": "{% macro default__get_batch_size() %}\n {{ return(10000) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.460194, "supported_languages": null}, "macro.dbt.get_seed_column_quoted_csv": {"name": "get_seed_column_quoted_csv", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_seed_column_quoted_csv", "macro_sql": "{% macro get_seed_column_quoted_csv(model, column_names) %}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote_seed_column(col, quote_seed_column)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.460625, "supported_languages": null}, "macro.dbt.load_csv_rows": {"name": "load_csv_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.load_csv_rows", "macro_sql": "{% macro load_csv_rows(model, agate_table) -%}\n {{ adapter.dispatch('load_csv_rows', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__load_csv_rows"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4607959, "supported_languages": null}, "macro.dbt.default__load_csv_rows": {"name": "default__load_csv_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__load_csv_rows", "macro_sql": "{% macro default__load_csv_rows(model, agate_table) %}\n\n {% set batch_size = get_batch_size() %}\n\n {% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}\n {% set bindings = [] %}\n\n {% set statements = [] %}\n\n {% for chunk in agate_table.rows | batch(batch_size) %}\n {% set bindings = [] %}\n\n {% for row in chunk %}\n {% do bindings.extend(row) %}\n {% endfor %}\n\n {% set sql %}\n insert into {{ this.render() }} ({{ cols_sql }}) values\n {% for row in chunk -%}\n ({%- for column in agate_table.column_names -%}\n {{ get_binding_char() }}\n {%- if not loop.last%},{%- endif %}\n {%- endfor -%})\n {%- if not loop.last%},{%- endif %}\n {%- endfor %}\n {% endset %}\n\n {% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}\n\n {% if loop.index0 == 0 %}\n {% do statements.append(sql) %}\n {% endif %}\n {% endfor %}\n\n {# Return SQL so we can render it out into the compiled files #}\n {{ return(statements[0]) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_batch_size", "macro.dbt.get_seed_column_quoted_csv", "macro.dbt.get_binding_char"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.461937, "supported_languages": null}, "macro.dbt.generate_alias_name": {"name": "generate_alias_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_alias.sql", "original_file_path": "macros/get_custom_name/get_custom_alias.sql", "unique_id": "macro.dbt.generate_alias_name", "macro_sql": "{% macro generate_alias_name(custom_alias_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_alias_name', 'dbt')(custom_alias_name, node)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_alias_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4623291, "supported_languages": null}, "macro.dbt.default__generate_alias_name": {"name": "default__generate_alias_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_alias.sql", "original_file_path": "macros/get_custom_name/get_custom_alias.sql", "unique_id": "macro.dbt.default__generate_alias_name", "macro_sql": "{% macro default__generate_alias_name(custom_alias_name=none, node=none) -%}\n\n {%- if custom_alias_name -%}\n\n {{ custom_alias_name | trim }}\n\n {%- elif node.version -%}\n\n {{ return(node.name ~ \"_v\" ~ (node.version | replace(\".\", \"_\"))) }}\n\n {%- else -%}\n\n {{ node.name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.462678, "supported_languages": null}, "macro.dbt.generate_schema_name": {"name": "generate_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.generate_schema_name", "macro_sql": "{% macro generate_schema_name(custom_schema_name=none, node=none) -%}\n {{ return(adapter.dispatch('generate_schema_name', 'dbt')(custom_schema_name, node)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_schema_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.463181, "supported_languages": null}, "macro.dbt.default__generate_schema_name": {"name": "default__generate_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.default__generate_schema_name", "macro_sql": "{% macro default__generate_schema_name(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if custom_schema_name is none -%}\n\n {{ default_schema }}\n\n {%- else -%}\n\n {{ default_schema }}_{{ custom_schema_name | trim }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.46342, "supported_languages": null}, "macro.dbt.generate_schema_name_for_env": {"name": "generate_schema_name_for_env", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.generate_schema_name_for_env", "macro_sql": "{% macro generate_schema_name_for_env(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if target.name == 'prod' and custom_schema_name is not none -%}\n\n {{ custom_schema_name | trim }}\n\n {%- else -%}\n\n {{ default_schema }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.463678, "supported_languages": null}, "macro.dbt.generate_database_name": {"name": "generate_database_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_database.sql", "original_file_path": "macros/get_custom_name/get_custom_database.sql", "unique_id": "macro.dbt.generate_database_name", "macro_sql": "{% macro generate_database_name(custom_database_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_database_name', 'dbt')(custom_database_name, node)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_database_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.464036, "supported_languages": null}, "macro.dbt.default__generate_database_name": {"name": "default__generate_database_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_database.sql", "original_file_path": "macros/get_custom_name/get_custom_database.sql", "unique_id": "macro.dbt.default__generate_database_name", "macro_sql": "{% macro default__generate_database_name(custom_database_name=none, node=none) -%}\n {%- set default_database = target.database -%}\n {%- if custom_database_name is none -%}\n\n {{ default_database }}\n\n {%- else -%}\n\n {{ custom_database_name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.464267, "supported_languages": null}, "macro.dbt.get_drop_sql": {"name": "get_drop_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.get_drop_sql", "macro_sql": "{%- macro get_drop_sql(relation) -%}\n {{- log('Applying DROP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.46491, "supported_languages": null}, "macro.dbt.default__get_drop_sql": {"name": "default__get_drop_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.default__get_drop_sql", "macro_sql": "{%- macro default__get_drop_sql(relation) -%}\n\n {%- if relation.is_view -%}\n {{ drop_view(relation) }}\n\n {%- elif relation.is_table -%}\n {{ drop_table(relation) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ drop_materialized_view(relation) }}\n\n {%- else -%}\n drop {{ relation.type }} if exists {{ relation }} cascade\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.drop_view", "macro.dbt.drop_table", "macro.dbt.drop_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4652429, "supported_languages": null}, "macro.dbt.drop_relation": {"name": "drop_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.drop_relation", "macro_sql": "{% macro drop_relation(relation) -%}\n {{ return(adapter.dispatch('drop_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__drop_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.465416, "supported_languages": null}, "macro.dbt.default__drop_relation": {"name": "default__drop_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.default__drop_relation", "macro_sql": "{% macro default__drop_relation(relation) -%}\n {% call statement('drop_relation', auto_begin=False) -%}\n {{ get_drop_sql(relation) }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.465596, "supported_languages": null}, "macro.dbt.drop_relation_if_exists": {"name": "drop_relation_if_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.drop_relation_if_exists", "macro_sql": "{% macro drop_relation_if_exists(relation) %}\n {% if relation is not none %}\n {{ adapter.drop_relation(relation) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.465774, "supported_languages": null}, "macro.dbt.get_replace_sql": {"name": "get_replace_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/replace.sql", "original_file_path": "macros/relations/replace.sql", "unique_id": "macro.dbt.get_replace_sql", "macro_sql": "{% macro get_replace_sql(existing_relation, target_relation, sql) %}\n {{- log('Applying REPLACE to: ' ~ existing_relation) -}}\n {{- adapter.dispatch('get_replace_sql', 'dbt')(existing_relation, target_relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.46652, "supported_languages": null}, "macro.dbt.default__get_replace_sql": {"name": "default__get_replace_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/replace.sql", "original_file_path": "macros/relations/replace.sql", "unique_id": "macro.dbt.default__get_replace_sql", "macro_sql": "{% macro default__get_replace_sql(existing_relation, target_relation, sql) %}\n\n {# /* use a create or replace statement if possible */ #}\n\n {% set is_replaceable = existing_relation.type == target_relation_type and existing_relation.can_be_replaced %}\n\n {% if is_replaceable and existing_relation.is_view %}\n {{ get_replace_view_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_table %}\n {{ get_replace_table_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_materialized_view %}\n {{ get_replace_materialized_view_sql(target_relation, sql) }}\n\n {# /* a create or replace statement is not possible, so try to stage and/or backup to be safe */ #}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one using a backup */ #}\n {%- elif target_relation.can_be_renamed and existing_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one without using a backup */ #}\n {%- elif target_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_drop_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }}\n\n {# /* create target_relation in place by first backing up the existing relation */ #}\n {%- elif existing_relation.can_be_renamed -%}\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* no renaming is allowed, so just drop and create */ #}\n {%- else -%}\n {{ get_drop_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_replace_view_sql", "macro.dbt.get_replace_table_sql", "macro.dbt.get_replace_materialized_view_sql", "macro.dbt.get_create_intermediate_sql", "macro.dbt.get_create_backup_sql", "macro.dbt.get_rename_intermediate_sql", "macro.dbt.get_drop_backup_sql", "macro.dbt.get_drop_sql", "macro.dbt.get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.46768, "supported_languages": null}, "macro.dbt.get_create_intermediate_sql": {"name": "get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_intermediate.sql", "original_file_path": "macros/relations/create_intermediate.sql", "unique_id": "macro.dbt.get_create_intermediate_sql", "macro_sql": "{%- macro get_create_intermediate_sql(relation, sql) -%}\n {{- log('Applying CREATE INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_intermediate_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_intermediate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4680939, "supported_languages": null}, "macro.dbt.default__get_create_intermediate_sql": {"name": "default__get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_intermediate.sql", "original_file_path": "macros/relations/create_intermediate.sql", "unique_id": "macro.dbt.default__get_create_intermediate_sql", "macro_sql": "{%- macro default__get_create_intermediate_sql(relation, sql) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n -- drop any pre-existing intermediate\n {{ get_drop_sql(intermediate_relation) }};\n\n {{ get_create_sql(intermediate_relation, sql) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_intermediate_relation", "macro.dbt.get_drop_sql", "macro.dbt.get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.468339, "supported_languages": null}, "macro.dbt.get_drop_backup_sql": {"name": "get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop_backup.sql", "original_file_path": "macros/relations/drop_backup.sql", "unique_id": "macro.dbt.get_drop_backup_sql", "macro_sql": "{%- macro get_drop_backup_sql(relation) -%}\n {{- log('Applying DROP BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_drop_backup_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4686441, "supported_languages": null}, "macro.dbt.default__get_drop_backup_sql": {"name": "default__get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop_backup.sql", "original_file_path": "macros/relations/drop_backup.sql", "unique_id": "macro.dbt.default__get_drop_backup_sql", "macro_sql": "{%- macro default__get_drop_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n {{ get_drop_sql(backup_relation) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_backup_relation", "macro.dbt.get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.46885, "supported_languages": null}, "macro.dbt.get_rename_sql": {"name": "get_rename_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.get_rename_sql", "macro_sql": "{%- macro get_rename_sql(relation, new_name) -%}\n {{- log('Applying RENAME to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_sql', 'dbt')(relation, new_name) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.469494, "supported_languages": null}, "macro.dbt.default__get_rename_sql": {"name": "default__get_rename_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.default__get_rename_sql", "macro_sql": "{%- macro default__get_rename_sql(relation, new_name) -%}\n\n {%- if relation.is_view -%}\n {{ get_rename_view_sql(relation, new_name) }}\n\n {%- elif relation.is_table -%}\n {{ get_rename_table_sql(relation, new_name) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_rename_materialized_view_sql(relation, new_name) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_rename_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.get_rename_view_sql", "macro.dbt.get_rename_table_sql", "macro.dbt.get_rename_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.469887, "supported_languages": null}, "macro.dbt.rename_relation": {"name": "rename_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.rename_relation", "macro_sql": "{% macro rename_relation(from_relation, to_relation) -%}\n {{ return(adapter.dispatch('rename_relation', 'dbt')(from_relation, to_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__rename_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.47008, "supported_languages": null}, "macro.dbt.default__rename_relation": {"name": "default__rename_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.default__rename_relation", "macro_sql": "{% macro default__rename_relation(from_relation, to_relation) -%}\n {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}\n {% call statement('rename_relation') -%}\n alter table {{ from_relation }} rename to {{ target_name }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.470335, "supported_languages": null}, "macro.dbt.get_create_backup_sql": {"name": "get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_backup.sql", "original_file_path": "macros/relations/create_backup.sql", "unique_id": "macro.dbt.get_create_backup_sql", "macro_sql": "{%- macro get_create_backup_sql(relation) -%}\n {{- log('Applying CREATE BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_backup_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.470651, "supported_languages": null}, "macro.dbt.default__get_create_backup_sql": {"name": "default__get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_backup.sql", "original_file_path": "macros/relations/create_backup.sql", "unique_id": "macro.dbt.default__get_create_backup_sql", "macro_sql": "{%- macro default__get_create_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n -- drop any pre-existing backup\n {{ get_drop_sql(backup_relation) }};\n\n {{ get_rename_sql(relation, backup_relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_backup_relation", "macro.dbt.get_drop_sql", "macro.dbt.get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.470897, "supported_languages": null}, "macro.dbt.get_create_sql": {"name": "get_create_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create.sql", "original_file_path": "macros/relations/create.sql", "unique_id": "macro.dbt.get_create_sql", "macro_sql": "{%- macro get_create_sql(relation, sql) -%}\n {{- log('Applying CREATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.471328, "supported_languages": null}, "macro.dbt.default__get_create_sql": {"name": "default__get_create_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create.sql", "original_file_path": "macros/relations/create.sql", "unique_id": "macro.dbt.default__get_create_sql", "macro_sql": "{%- macro default__get_create_sql(relation, sql) -%}\n\n {%- if relation.is_view -%}\n {{ get_create_view_as_sql(relation, sql) }}\n\n {%- elif relation.is_table -%}\n {{ get_create_table_as_sql(False, relation, sql) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_create_materialized_view_as_sql(relation, sql) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_create_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.get_create_view_as_sql", "macro.dbt.get_create_table_as_sql", "macro.dbt.get_create_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4717288, "supported_languages": null}, "macro.dbt.get_rename_intermediate_sql": {"name": "get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename_intermediate.sql", "original_file_path": "macros/relations/rename_intermediate.sql", "unique_id": "macro.dbt.get_rename_intermediate_sql", "macro_sql": "{%- macro get_rename_intermediate_sql(relation) -%}\n {{- log('Applying RENAME INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_intermediate_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_rename_intermediate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.472032, "supported_languages": null}, "macro.dbt.default__get_rename_intermediate_sql": {"name": "default__get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename_intermediate.sql", "original_file_path": "macros/relations/rename_intermediate.sql", "unique_id": "macro.dbt.default__get_rename_intermediate_sql", "macro_sql": "{%- macro default__get_rename_intermediate_sql(relation) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n {{ get_rename_sql(intermediate_relation, relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_intermediate_relation", "macro.dbt.get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4722219, "supported_languages": null}, "macro.dbt.drop_materialized_view": {"name": "drop_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt.drop_materialized_view", "macro_sql": "{% macro drop_materialized_view(relation) -%}\n {{ return(adapter.dispatch('drop_materialized_view', 'dbt')(relation)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__drop_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4724789, "supported_languages": null}, "macro.dbt.default__drop_materialized_view": {"name": "default__drop_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt.default__drop_materialized_view", "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.472579, "supported_languages": null}, "macro.dbt.get_replace_materialized_view_sql": {"name": "get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/replace.sql", "original_file_path": "macros/relations/materialized_view/replace.sql", "unique_id": "macro.dbt.get_replace_materialized_view_sql", "macro_sql": "{% macro get_replace_materialized_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_materialized_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.472834, "supported_languages": null}, "macro.dbt.default__get_replace_materialized_view_sql": {"name": "default__get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/replace.sql", "original_file_path": "macros/relations/materialized_view/replace.sql", "unique_id": "macro.dbt.default__get_replace_materialized_view_sql", "macro_sql": "{% macro default__get_replace_materialized_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4729679, "supported_languages": null}, "macro.dbt.refresh_materialized_view": {"name": "refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt.refresh_materialized_view", "macro_sql": "{% macro refresh_materialized_view(relation) %}\n {{- log('Applying REFRESH to: ' ~ relation) -}}\n {{- adapter.dispatch('refresh_materialized_view', 'dbt')(relation) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__refresh_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.473252, "supported_languages": null}, "macro.dbt.default__refresh_materialized_view": {"name": "default__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt.default__refresh_materialized_view", "macro_sql": "{% macro default__refresh_materialized_view(relation) %}\n {{ exceptions.raise_compiler_error(\"`refresh_materialized_view` has not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.473616, "supported_languages": null}, "macro.dbt.get_rename_materialized_view_sql": {"name": "get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/rename.sql", "original_file_path": "macros/relations/materialized_view/rename.sql", "unique_id": "macro.dbt.get_rename_materialized_view_sql", "macro_sql": "{% macro get_rename_materialized_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_materialized_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_rename_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4738739, "supported_languages": null}, "macro.dbt.default__get_rename_materialized_view_sql": {"name": "default__get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/rename.sql", "original_file_path": "macros/relations/materialized_view/rename.sql", "unique_id": "macro.dbt.default__get_rename_materialized_view_sql", "macro_sql": "{% macro default__get_rename_materialized_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.474009, "supported_languages": null}, "macro.dbt.get_alter_materialized_view_as_sql": {"name": "get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.get_alter_materialized_view_as_sql", "macro_sql": "{% macro get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{- log('Applying ALTER to: ' ~ relation) -}}\n {{- adapter.dispatch('get_alter_materialized_view_as_sql', 'dbt')(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n ) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.47456, "supported_languages": null}, "macro.dbt.default__get_alter_materialized_view_as_sql": {"name": "default__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.default__get_alter_materialized_view_as_sql", "macro_sql": "{% macro default__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.474731, "supported_languages": null}, "macro.dbt.get_materialized_view_configuration_changes": {"name": "get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.get_materialized_view_configuration_changes", "macro_sql": "{% macro get_materialized_view_configuration_changes(existing_relation, new_config) %}\n /* {#\n It's recommended that configuration changes be formatted as follows:\n {\"\": [{\"action\": \"\", \"context\": ...}]}\n\n For example:\n {\n \"indexes\": [\n {\"action\": \"drop\", \"context\": \"index_abc\"},\n {\"action\": \"create\", \"context\": {\"columns\": [\"column_1\", \"column_2\"], \"type\": \"hash\", \"unique\": True}},\n ],\n }\n\n Either way, `get_materialized_view_configuration_changes` needs to align with `get_alter_materialized_view_as_sql`.\n #} */\n {{- log('Determining configuration changes on: ' ~ existing_relation) -}}\n {%- do return(adapter.dispatch('get_materialized_view_configuration_changes', 'dbt')(existing_relation, new_config)) -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_materialized_view_configuration_changes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.474994, "supported_languages": null}, "macro.dbt.default__get_materialized_view_configuration_changes": {"name": "default__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.default__get_materialized_view_configuration_changes", "macro_sql": "{% macro default__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.475127, "supported_languages": null}, "macro.dbt.get_create_materialized_view_as_sql": {"name": "get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt.get_create_materialized_view_as_sql", "macro_sql": "{% macro get_create_materialized_view_as_sql(relation, sql) -%}\n {{- adapter.dispatch('get_create_materialized_view_as_sql', 'dbt')(relation, sql) -}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_create_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.475372, "supported_languages": null}, "macro.dbt.default__get_create_materialized_view_as_sql": {"name": "default__get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt.default__get_create_materialized_view_as_sql", "macro_sql": "{% macro default__get_create_materialized_view_as_sql(relation, sql) -%}\n {{ exceptions.raise_compiler_error(\n \"`get_create_materialized_view_as_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4755042, "supported_languages": null}, "macro.dbt.get_table_columns_and_constraints": {"name": "get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.get_table_columns_and_constraints", "macro_sql": "{%- macro get_table_columns_and_constraints() -%}\n {{ adapter.dispatch('get_table_columns_and_constraints', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__get_table_columns_and_constraints"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.476414, "supported_languages": null}, "macro.dbt.default__get_table_columns_and_constraints": {"name": "default__get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__get_table_columns_and_constraints", "macro_sql": "{% macro default__get_table_columns_and_constraints() -%}\n {{ return(table_columns_and_constraints()) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.table_columns_and_constraints"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4765272, "supported_languages": null}, "macro.dbt.table_columns_and_constraints": {"name": "table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.table_columns_and_constraints", "macro_sql": "{% macro table_columns_and_constraints() %}\n {# loop through user_provided_columns to create DDL with data types and constraints #}\n {%- set raw_column_constraints = adapter.render_raw_columns_constraints(raw_columns=model['columns']) -%}\n {%- set raw_model_constraints = adapter.render_raw_model_constraints(raw_constraints=model['constraints']) -%}\n (\n {% for c in raw_column_constraints -%}\n {{ c }}{{ \",\" if not loop.last or raw_model_constraints }}\n {% endfor %}\n {% for c in raw_model_constraints -%}\n {{ c }}{{ \",\" if not loop.last }}\n {% endfor -%}\n )\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.477011, "supported_languages": null}, "macro.dbt.get_assert_columns_equivalent": {"name": "get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.get_assert_columns_equivalent", "macro_sql": "\n\n{%- macro get_assert_columns_equivalent(sql) -%}\n {{ adapter.dispatch('get_assert_columns_equivalent', 'dbt')(sql) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.477164, "supported_languages": null}, "macro.dbt.default__get_assert_columns_equivalent": {"name": "default__get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__get_assert_columns_equivalent", "macro_sql": "{% macro default__get_assert_columns_equivalent(sql) -%}\n {{ return(assert_columns_equivalent(sql)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4772868, "supported_languages": null}, "macro.dbt.assert_columns_equivalent": {"name": "assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.assert_columns_equivalent", "macro_sql": "{% macro assert_columns_equivalent(sql) %}\n\n {#-- First ensure the user has defined 'columns' in yaml specification --#}\n {%- set user_defined_columns = model['columns'] -%}\n {%- if not user_defined_columns -%}\n {{ exceptions.raise_contract_error([], []) }}\n {%- endif -%}\n\n {#-- Obtain the column schema provided by sql file. #}\n {%- set sql_file_provided_columns = get_column_schema_from_query(sql, config.get('sql_header', none)) -%}\n {#--Obtain the column schema provided by the schema file by generating an 'empty schema' query from the model's columns. #}\n {%- set schema_file_provided_columns = get_column_schema_from_query(get_empty_schema_sql(user_defined_columns)) -%}\n\n {#-- create dictionaries with name and formatted data type and strings for exception #}\n {%- set sql_columns = format_columns(sql_file_provided_columns) -%}\n {%- set yaml_columns = format_columns(schema_file_provided_columns) -%}\n\n {%- if sql_columns|length != yaml_columns|length -%}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n\n {%- for sql_col in sql_columns -%}\n {%- set yaml_col = [] -%}\n {%- for this_col in yaml_columns -%}\n {%- if this_col['name'] == sql_col['name'] -%}\n {%- do yaml_col.append(this_col) -%}\n {%- break -%}\n {%- endif -%}\n {%- endfor -%}\n {%- if not yaml_col -%}\n {#-- Column with name not found in yaml #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- if sql_col['formatted'] != yaml_col[0]['formatted'] -%}\n {#-- Column data types don't match #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_column_schema_from_query", "macro.dbt.get_empty_schema_sql", "macro.dbt.format_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.478511, "supported_languages": null}, "macro.dbt.format_columns": {"name": "format_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.format_columns", "macro_sql": "{% macro format_columns(columns) %}\n {% set formatted_columns = [] %}\n {% for column in columns %}\n {%- set formatted_column = adapter.dispatch('format_column', 'dbt')(column) -%}\n {%- do formatted_columns.append(formatted_column) -%}\n {% endfor %}\n {{ return(formatted_columns) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__format_column"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.478854, "supported_languages": null}, "macro.dbt.default__format_column": {"name": "default__format_column", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__format_column", "macro_sql": "{% macro default__format_column(column) -%}\n {% set data_type = column.dtype %}\n {% set formatted = column.column.lower() ~ \" \" ~ data_type %}\n {{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.479181, "supported_languages": null}, "macro.dbt.drop_table": {"name": "drop_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt.drop_table", "macro_sql": "{% macro drop_table(relation) -%}\n {{ return(adapter.dispatch('drop_table', 'dbt')(relation)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__drop_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.479448, "supported_languages": null}, "macro.dbt.default__drop_table": {"name": "default__drop_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt.default__drop_table", "macro_sql": "{% macro default__drop_table(relation) -%}\n drop table if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.479556, "supported_languages": null}, "macro.dbt.get_replace_table_sql": {"name": "get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/replace.sql", "original_file_path": "macros/relations/table/replace.sql", "unique_id": "macro.dbt.get_replace_table_sql", "macro_sql": "{% macro get_replace_table_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_table_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_replace_table_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.479826, "supported_languages": null}, "macro.dbt.default__get_replace_table_sql": {"name": "default__get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/replace.sql", "original_file_path": "macros/relations/table/replace.sql", "unique_id": "macro.dbt.default__get_replace_table_sql", "macro_sql": "{% macro default__get_replace_table_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.479958, "supported_languages": null}, "macro.dbt.get_rename_table_sql": {"name": "get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt.get_rename_table_sql", "macro_sql": "{% macro get_rename_table_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_table_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_rename_table_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.480203, "supported_languages": null}, "macro.dbt.default__get_rename_table_sql": {"name": "default__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt.default__get_rename_table_sql", "macro_sql": "{% macro default__get_rename_table_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.480335, "supported_languages": null}, "macro.dbt.get_create_table_as_sql": {"name": "get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.get_create_table_as_sql", "macro_sql": "{% macro get_create_table_as_sql(temporary, relation, sql) -%}\n {{ adapter.dispatch('get_create_table_as_sql', 'dbt')(temporary, relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_create_table_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.481104, "supported_languages": null}, "macro.dbt.default__get_create_table_as_sql": {"name": "default__get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_create_table_as_sql", "macro_sql": "{% macro default__get_create_table_as_sql(temporary, relation, sql) -%}\n {{ return(create_table_as(temporary, relation, sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4812732, "supported_languages": null}, "macro.dbt.create_table_as": {"name": "create_table_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.create_table_as", "macro_sql": "{% macro create_table_as(temporary, relation, compiled_code, language='sql') -%}\n {# backward compatibility for create_table_as that does not support language #}\n {% if language == \"sql\" %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code)}}\n {% else %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code, language) }}\n {% endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.48166, "supported_languages": null}, "macro.dbt.default__create_table_as": {"name": "default__create_table_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__create_table_as", "macro_sql": "{% macro default__create_table_as(temporary, relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create {% if temporary: -%}temporary{%- endif %} table\n {{ relation.include(database=(not temporary), schema=(not temporary)) }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced and (not temporary) %}\n {{ get_assert_columns_equivalent(sql) }}\n {{ get_table_columns_and_constraints() }}\n {%- set sql = get_select_subquery(sql) %}\n {% endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent", "macro.dbt.get_table_columns_and_constraints", "macro.dbt.get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4822888, "supported_languages": null}, "macro.dbt.default__get_column_names": {"name": "default__get_column_names", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_column_names", "macro_sql": "{% macro default__get_column_names() %}\n {#- loop through user_provided_columns to get column names -#}\n {%- set user_provided_columns = model['columns'] -%}\n {%- for i in user_provided_columns %}\n {%- set col = user_provided_columns[i] -%}\n {%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}\n {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.482707, "supported_languages": null}, "macro.dbt.get_select_subquery": {"name": "get_select_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.get_select_subquery", "macro_sql": "{% macro get_select_subquery(sql) %}\n {{ return(adapter.dispatch('get_select_subquery', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.482877, "supported_languages": null}, "macro.dbt.default__get_select_subquery": {"name": "default__get_select_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_select_subquery", "macro_sql": "{% macro default__get_select_subquery(sql) %}\n select {{ adapter.dispatch('get_column_names', 'dbt')() }}\n from (\n {{ sql }}\n ) as model_subq\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_column_names"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.483041, "supported_languages": null}, "macro.dbt.drop_view": {"name": "drop_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt.drop_view", "macro_sql": "{% macro drop_view(relation) -%}\n {{ return(adapter.dispatch('drop_view', 'dbt')(relation)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__drop_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.483288, "supported_languages": null}, "macro.dbt.default__drop_view": {"name": "default__drop_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt.default__drop_view", "macro_sql": "{% macro default__drop_view(relation) -%}\n drop view if exists {{ relation }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.483382, "supported_languages": null}, "macro.dbt.get_replace_view_sql": {"name": "get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.get_replace_view_sql", "macro_sql": "{% macro get_replace_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_replace_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.48417, "supported_languages": null}, "macro.dbt.default__get_replace_view_sql": {"name": "default__get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.default__get_replace_view_sql", "macro_sql": "{% macro default__get_replace_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.48431, "supported_languages": null}, "macro.dbt.create_or_replace_view": {"name": "create_or_replace_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.create_or_replace_view", "macro_sql": "{% macro create_or_replace_view() %}\n {%- set identifier = model['alias'] -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database,\n type='view') -%}\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n -- If there's a table with the same name and we weren't told to full refresh,\n -- that's an error. If we were told to full refresh, drop it. This behavior differs\n -- for Snowflake and BigQuery, so multiple dispatch is used.\n {%- if old_relation is not none and old_relation.is_table -%}\n {{ handle_existing_table(should_full_refresh(), old_relation) }}\n {%- endif -%}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(target_relation, sql) }}\n {%- endcall %}\n\n {% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.handle_existing_table", "macro.dbt.should_full_refresh", "macro.dbt.statement", "macro.dbt.get_create_view_as_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.485429, "supported_languages": null}, "macro.dbt.handle_existing_table": {"name": "handle_existing_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.handle_existing_table", "macro_sql": "{% macro handle_existing_table(full_refresh, old_relation) %}\n {{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__handle_existing_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.485666, "supported_languages": null}, "macro.dbt.default__handle_existing_table": {"name": "default__handle_existing_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.default__handle_existing_table", "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n {{ log(\"Dropping relation \" ~ old_relation ~ \" because it is of type \" ~ old_relation.type) }}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.485885, "supported_languages": null}, "macro.dbt.get_rename_view_sql": {"name": "get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt.get_rename_view_sql", "macro_sql": "{% macro get_rename_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_rename_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4861472, "supported_languages": null}, "macro.dbt.default__get_rename_view_sql": {"name": "default__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt.default__get_rename_view_sql", "macro_sql": "{% macro default__get_rename_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.486279, "supported_languages": null}, "macro.dbt.get_create_view_as_sql": {"name": "get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.get_create_view_as_sql", "macro_sql": "{% macro get_create_view_as_sql(relation, sql) -%}\n {{ adapter.dispatch('get_create_view_as_sql', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_create_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.486654, "supported_languages": null}, "macro.dbt.default__get_create_view_as_sql": {"name": "default__get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.default__get_create_view_as_sql", "macro_sql": "{% macro default__get_create_view_as_sql(relation, sql) -%}\n {{ return(create_view_as(relation, sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_view_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.486804, "supported_languages": null}, "macro.dbt.create_view_as": {"name": "create_view_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.create_view_as", "macro_sql": "{% macro create_view_as(relation, sql) -%}\n {{ adapter.dispatch('create_view_as', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_view_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.486965, "supported_languages": null}, "macro.dbt.default__create_view_as": {"name": "default__create_view_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.default__create_view_as", "macro_sql": "{% macro default__create_view_as(relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n create view {{ relation }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.48735, "supported_languages": null}, "macro.dbt.default__test_relationships": {"name": "default__test_relationships", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/relationships.sql", "original_file_path": "macros/generic_test_sql/relationships.sql", "unique_id": "macro.dbt.default__test_relationships", "macro_sql": "{% macro default__test_relationships(model, column_name, to, field) %}\n\nwith child as (\n select {{ column_name }} as from_field\n from {{ model }}\n where {{ column_name }} is not null\n),\n\nparent as (\n select {{ field }} as to_field\n from {{ to }}\n)\n\nselect\n from_field\n\nfrom child\nleft join parent\n on child.from_field = parent.to_field\n\nwhere parent.to_field is null\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.487681, "supported_languages": null}, "macro.dbt.default__test_not_null": {"name": "default__test_not_null", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/not_null.sql", "original_file_path": "macros/generic_test_sql/not_null.sql", "unique_id": "macro.dbt.default__test_not_null", "macro_sql": "{% macro default__test_not_null(model, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else column_name %}\n\nselect {{ column_list }}\nfrom {{ model }}\nwhere {{ column_name }} is null\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_store_failures"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.487947, "supported_languages": null}, "macro.dbt.default__test_unique": {"name": "default__test_unique", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/unique.sql", "original_file_path": "macros/generic_test_sql/unique.sql", "unique_id": "macro.dbt.default__test_unique", "macro_sql": "{% macro default__test_unique(model, column_name) %}\n\nselect\n {{ column_name }} as unique_field,\n count(*) as n_records\n\nfrom {{ model }}\nwhere {{ column_name }} is not null\ngroup by {{ column_name }}\nhaving count(*) > 1\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.488174, "supported_languages": null}, "macro.dbt.default__test_accepted_values": {"name": "default__test_accepted_values", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/accepted_values.sql", "original_file_path": "macros/generic_test_sql/accepted_values.sql", "unique_id": "macro.dbt.default__test_accepted_values", "macro_sql": "{% macro default__test_accepted_values(model, column_name, values, quote=True) %}\n\nwith all_values as (\n\n select\n {{ column_name }} as value_field,\n count(*) as n_records\n\n from {{ model }}\n group by {{ column_name }}\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n)\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.488689, "supported_languages": null}, "macro.dbt.statement": {"name": "statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.statement", "macro_sql": "\n{%- macro statement(name=None, fetch_result=False, auto_begin=True, language='sql') -%}\n {%- if execute: -%}\n {%- set compiled_code = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime {} for node \"{}\"'.format(language, model['unique_id'])) }}\n {{ write(compiled_code) }}\n {%- endif -%}\n {%- if language == 'sql'-%}\n {%- set res, table = adapter.execute(compiled_code, auto_begin=auto_begin, fetch=fetch_result) -%}\n {%- elif language == 'python' -%}\n {%- set res = submit_python_job(model, compiled_code) -%}\n {#-- TODO: What should table be for python models? --#}\n {%- set table = None -%}\n {%- else -%}\n {% do exceptions.raise_compiler_error(\"statement macro didn't get supported language\") %}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_result(name, response=res, agate_table=table) }}\n {%- endif -%}\n\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.490026, "supported_languages": null}, "macro.dbt.noop_statement": {"name": "noop_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.noop_statement", "macro_sql": "{% macro noop_statement(name=None, message=None, code=None, rows_affected=None, res=None) -%}\n {%- set sql = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime SQL for node \"{}\"'.format(model['unique_id'])) }}\n {{ write(sql) }}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_raw_result(name, message=message, code=code, rows_affected=rows_affected, agate_table=res) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.490548, "supported_languages": null}, "macro.dbt.run_query": {"name": "run_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.run_query", "macro_sql": "{% macro run_query(sql) %}\n {% call statement(\"run_query_statement\", fetch_result=true, auto_begin=false) %}\n {{ sql }}\n {% endcall %}\n\n {% do return(load_result(\"run_query_statement\").table) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.490814, "supported_languages": null}, "macro.dbt.convert_datetime": {"name": "convert_datetime", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.convert_datetime", "macro_sql": "{% macro convert_datetime(date_str, date_fmt) %}\n\n {% set error_msg -%}\n The provided partition date '{{ date_str }}' does not match the expected format '{{ date_fmt }}'\n {%- endset %}\n\n {% set res = try_or_compiler_error(error_msg, modules.datetime.datetime.strptime, date_str.strip(), date_fmt) %}\n {{ return(res) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.492416, "supported_languages": null}, "macro.dbt.dates_in_range": {"name": "dates_in_range", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.dates_in_range", "macro_sql": "{% macro dates_in_range(start_date_str, end_date_str=none, in_fmt=\"%Y%m%d\", out_fmt=\"%Y%m%d\") %}\n {% set end_date_str = start_date_str if end_date_str is none else end_date_str %}\n\n {% set start_date = convert_datetime(start_date_str, in_fmt) %}\n {% set end_date = convert_datetime(end_date_str, in_fmt) %}\n\n {% set day_count = (end_date - start_date).days %}\n {% if day_count < 0 %}\n {% set msg -%}\n Partition start date is after the end date ({{ start_date }}, {{ end_date }})\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg, model) }}\n {% endif %}\n\n {% set date_list = [] %}\n {% for i in range(0, day_count + 1) %}\n {% set the_date = (modules.datetime.timedelta(days=i) + start_date) %}\n {% if not out_fmt %}\n {% set _ = date_list.append(the_date) %}\n {% else %}\n {% set _ = date_list.append(the_date.strftime(out_fmt)) %}\n {% endif %}\n {% endfor %}\n\n {{ return(date_list) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.convert_datetime"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.493563, "supported_languages": null}, "macro.dbt.partition_range": {"name": "partition_range", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.partition_range", "macro_sql": "{% macro partition_range(raw_partition_date, date_fmt='%Y%m%d') %}\n {% set partition_range = (raw_partition_date | string).split(\",\") %}\n\n {% if (partition_range | length) == 1 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = none %}\n {% elif (partition_range | length) == 2 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = partition_range[1] %}\n {% else %}\n {{ exceptions.raise_compiler_error(\"Invalid partition time. Expected format: {Start Date}[,{End Date}]. Got: \" ~ raw_partition_date) }}\n {% endif %}\n\n {{ return(dates_in_range(start_date, end_date, in_fmt=date_fmt)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dates_in_range"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4942331, "supported_languages": null}, "macro.dbt.py_current_timestring": {"name": "py_current_timestring", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.py_current_timestring", "macro_sql": "{% macro py_current_timestring() %}\n {% set dt = modules.datetime.datetime.now() %}\n {% do return(dt.strftime(\"%Y%m%d%H%M%S%f\")) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.494445, "supported_languages": null}, "macro.dbt.except": {"name": "except", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/except.sql", "original_file_path": "macros/utils/except.sql", "unique_id": "macro.dbt.except", "macro_sql": "{% macro except() %}\n {{ return(adapter.dispatch('except', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.494653, "supported_languages": null}, "macro.dbt.default__except": {"name": "default__except", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/except.sql", "original_file_path": "macros/utils/except.sql", "unique_id": "macro.dbt.default__except", "macro_sql": "{% macro default__except() %}\n\n except\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.494721, "supported_languages": null}, "macro.dbt.get_intervals_between": {"name": "get_intervals_between", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.get_intervals_between", "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt')(start_date, end_date, datepart)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_intervals_between"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4953852, "supported_languages": null}, "macro.dbt.default__get_intervals_between": {"name": "default__get_intervals_between", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.default__get_intervals_between", "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.495911, "supported_languages": null}, "macro.dbt.date_spine": {"name": "date_spine", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.date_spine", "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt')(datepart, start_date, end_date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.496114, "supported_languages": null}, "macro.dbt.default__date_spine": {"name": "default__date_spine", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.default__date_spine", "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n {# call as follows:\n\n date_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n ) #}\n\n\n with rawdata as (\n\n {{dbt.generate_series(\n dbt.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.generate_series", "macro.dbt.get_intervals_between", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4964428, "supported_languages": null}, "macro.dbt.replace": {"name": "replace", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/replace.sql", "original_file_path": "macros/utils/replace.sql", "unique_id": "macro.dbt.replace", "macro_sql": "{% macro replace(field, old_chars, new_chars) -%}\n {{ return(adapter.dispatch('replace', 'dbt') (field, old_chars, new_chars)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__replace"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.496736, "supported_languages": null}, "macro.dbt.default__replace": {"name": "default__replace", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/replace.sql", "original_file_path": "macros/utils/replace.sql", "unique_id": "macro.dbt.default__replace", "macro_sql": "{% macro default__replace(field, old_chars, new_chars) %}\n\n replace(\n {{ field }},\n {{ old_chars }},\n {{ new_chars }}\n )\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.496886, "supported_languages": null}, "macro.dbt.concat": {"name": "concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/concat.sql", "original_file_path": "macros/utils/concat.sql", "unique_id": "macro.dbt.concat", "macro_sql": "{% macro concat(fields) -%}\n {{ return(adapter.dispatch('concat', 'dbt')(fields)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.497105, "supported_languages": null}, "macro.dbt.default__concat": {"name": "default__concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/concat.sql", "original_file_path": "macros/utils/concat.sql", "unique_id": "macro.dbt.default__concat", "macro_sql": "{% macro default__concat(fields) -%}\n {{ fields|join(' || ') }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.497219, "supported_languages": null}, "macro.dbt.get_powers_of_two": {"name": "get_powers_of_two", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.get_powers_of_two", "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.497951, "supported_languages": null}, "macro.dbt.default__get_powers_of_two": {"name": "default__get_powers_of_two", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.default__get_powers_of_two", "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.498326, "supported_languages": null}, "macro.dbt.generate_series": {"name": "generate_series", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.generate_series", "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_series"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.498497, "supported_languages": null}, "macro.dbt.default__generate_series": {"name": "default__generate_series", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.default__generate_series", "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4989572, "supported_languages": null}, "macro.dbt.length": {"name": "length", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/length.sql", "original_file_path": "macros/utils/length.sql", "unique_id": "macro.dbt.length", "macro_sql": "{% macro length(expression) -%}\n {{ return(adapter.dispatch('length', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__length"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.499187, "supported_languages": null}, "macro.dbt.default__length": {"name": "default__length", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/length.sql", "original_file_path": "macros/utils/length.sql", "unique_id": "macro.dbt.default__length", "macro_sql": "{% macro default__length(expression) %}\n\n length(\n {{ expression }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4992828, "supported_languages": null}, "macro.dbt.dateadd": {"name": "dateadd", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt.dateadd", "macro_sql": "{% macro dateadd(datepart, interval, from_date_or_timestamp) %}\n {{ return(adapter.dispatch('dateadd', 'dbt')(datepart, interval, from_date_or_timestamp)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.49959, "supported_languages": null}, "macro.dbt.default__dateadd": {"name": "default__dateadd", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt.default__dateadd", "macro_sql": "{% macro default__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_date_or_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.499739, "supported_languages": null}, "macro.dbt.intersect": {"name": "intersect", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/intersect.sql", "original_file_path": "macros/utils/intersect.sql", "unique_id": "macro.dbt.intersect", "macro_sql": "{% macro intersect() %}\n {{ return(adapter.dispatch('intersect', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__intersect"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.4999402, "supported_languages": null}, "macro.dbt.default__intersect": {"name": "default__intersect", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/intersect.sql", "original_file_path": "macros/utils/intersect.sql", "unique_id": "macro.dbt.default__intersect", "macro_sql": "{% macro default__intersect() %}\n\n intersect\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.500082, "supported_languages": null}, "macro.dbt.escape_single_quotes": {"name": "escape_single_quotes", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/escape_single_quotes.sql", "original_file_path": "macros/utils/escape_single_quotes.sql", "unique_id": "macro.dbt.escape_single_quotes", "macro_sql": "{% macro escape_single_quotes(expression) %}\n {{ return(adapter.dispatch('escape_single_quotes', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__escape_single_quotes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.500324, "supported_languages": null}, "macro.dbt.default__escape_single_quotes": {"name": "default__escape_single_quotes", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/escape_single_quotes.sql", "original_file_path": "macros/utils/escape_single_quotes.sql", "unique_id": "macro.dbt.default__escape_single_quotes", "macro_sql": "{% macro default__escape_single_quotes(expression) -%}\n{{ expression | replace(\"'\",\"''\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.500452, "supported_languages": null}, "macro.dbt.right": {"name": "right", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/right.sql", "original_file_path": "macros/utils/right.sql", "unique_id": "macro.dbt.right", "macro_sql": "{% macro right(string_text, length_expression) -%}\n {{ return(adapter.dispatch('right', 'dbt') (string_text, length_expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__right"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.500714, "supported_languages": null}, "macro.dbt.default__right": {"name": "default__right", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/right.sql", "original_file_path": "macros/utils/right.sql", "unique_id": "macro.dbt.default__right", "macro_sql": "{% macro default__right(string_text, length_expression) %}\n\n right(\n {{ string_text }},\n {{ length_expression }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.500839, "supported_languages": null}, "macro.dbt.listagg": {"name": "listagg", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt.listagg", "macro_sql": "{% macro listagg(measure, delimiter_text=\"','\", order_by_clause=none, limit_num=none) -%}\n {{ return(adapter.dispatch('listagg', 'dbt') (measure, delimiter_text, order_by_clause, limit_num)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__listagg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5014038, "supported_languages": null}, "macro.dbt.default__listagg": {"name": "default__listagg", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt.default__listagg", "macro_sql": "{% macro default__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n array_slice(\n array_agg(\n {{ measure }}\n ){% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n ,0\n ,{{ limit_num }}\n ),\n {{ delimiter_text }}\n )\n {%- else %}\n listagg(\n {{ measure }},\n {{ delimiter_text }}\n )\n {% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n {%- endif %}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.501757, "supported_languages": null}, "macro.dbt.datediff": {"name": "datediff", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt.datediff", "macro_sql": "{% macro datediff(first_date, second_date, datepart) %}\n {{ return(adapter.dispatch('datediff', 'dbt')(first_date, second_date, datepart)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.502052, "supported_languages": null}, "macro.dbt.default__datediff": {"name": "default__datediff", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt.default__datediff", "macro_sql": "{% macro default__datediff(first_date, second_date, datepart) -%}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.502201, "supported_languages": null}, "macro.dbt.safe_cast": {"name": "safe_cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt.safe_cast", "macro_sql": "{% macro safe_cast(field, type) %}\n {{ return(adapter.dispatch('safe_cast', 'dbt') (field, type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__safe_cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.502464, "supported_languages": null}, "macro.dbt.default__safe_cast": {"name": "default__safe_cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt.default__safe_cast", "macro_sql": "{% macro default__safe_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.502591, "supported_languages": null}, "macro.dbt.hash": {"name": "hash", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/hash.sql", "original_file_path": "macros/utils/hash.sql", "unique_id": "macro.dbt.hash", "macro_sql": "{% macro hash(field) -%}\n {{ return(adapter.dispatch('hash', 'dbt') (field)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__hash"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5028238, "supported_languages": null}, "macro.dbt.default__hash": {"name": "default__hash", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/hash.sql", "original_file_path": "macros/utils/hash.sql", "unique_id": "macro.dbt.default__hash", "macro_sql": "{% macro default__hash(field) -%}\n md5(cast({{ field }} as {{ api.Column.translate_type('string') }}))\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.502965, "supported_languages": null}, "macro.dbt.cast_bool_to_text": {"name": "cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast_bool_to_text.sql", "original_file_path": "macros/utils/cast_bool_to_text.sql", "unique_id": "macro.dbt.cast_bool_to_text", "macro_sql": "{% macro cast_bool_to_text(field) %}\n {{ adapter.dispatch('cast_bool_to_text', 'dbt') (field) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__cast_bool_to_text"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5031822, "supported_languages": null}, "macro.dbt.default__cast_bool_to_text": {"name": "default__cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast_bool_to_text.sql", "original_file_path": "macros/utils/cast_bool_to_text.sql", "unique_id": "macro.dbt.default__cast_bool_to_text", "macro_sql": "{% macro default__cast_bool_to_text(field) %}\n cast({{ field }} as {{ api.Column.translate_type('string') }})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.503325, "supported_languages": null}, "macro.dbt.any_value": {"name": "any_value", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/any_value.sql", "original_file_path": "macros/utils/any_value.sql", "unique_id": "macro.dbt.any_value", "macro_sql": "{% macro any_value(expression) -%}\n {{ return(adapter.dispatch('any_value', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__any_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.503545, "supported_languages": null}, "macro.dbt.default__any_value": {"name": "default__any_value", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/any_value.sql", "original_file_path": "macros/utils/any_value.sql", "unique_id": "macro.dbt.default__any_value", "macro_sql": "{% macro default__any_value(expression) -%}\n\n any_value({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.503642, "supported_languages": null}, "macro.dbt.position": {"name": "position", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/position.sql", "original_file_path": "macros/utils/position.sql", "unique_id": "macro.dbt.position", "macro_sql": "{% macro position(substring_text, string_text) -%}\n {{ return(adapter.dispatch('position', 'dbt') (substring_text, string_text)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__position"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.503894, "supported_languages": null}, "macro.dbt.default__position": {"name": "default__position", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/position.sql", "original_file_path": "macros/utils/position.sql", "unique_id": "macro.dbt.default__position", "macro_sql": "{% macro default__position(substring_text, string_text) %}\n\n position(\n {{ substring_text }} in {{ string_text }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5040178, "supported_languages": null}, "macro.dbt.string_literal": {"name": "string_literal", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/literal.sql", "original_file_path": "macros/utils/literal.sql", "unique_id": "macro.dbt.string_literal", "macro_sql": "{%- macro string_literal(value) -%}\n {{ return(adapter.dispatch('string_literal', 'dbt') (value)) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__string_literal"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.504231, "supported_languages": null}, "macro.dbt.default__string_literal": {"name": "default__string_literal", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/literal.sql", "original_file_path": "macros/utils/literal.sql", "unique_id": "macro.dbt.default__string_literal", "macro_sql": "{% macro default__string_literal(value) -%}\n '{{ value }}'\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.504384, "supported_languages": null}, "macro.dbt.type_string": {"name": "type_string", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_string", "macro_sql": "\n\n{%- macro type_string() -%}\n {{ return(adapter.dispatch('type_string', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5052228, "supported_languages": null}, "macro.dbt.default__type_string": {"name": "default__type_string", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_string", "macro_sql": "{% macro default__type_string() %}\n {{ return(api.Column.translate_type(\"string\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.50536, "supported_languages": null}, "macro.dbt.type_timestamp": {"name": "type_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_timestamp", "macro_sql": "\n\n{%- macro type_timestamp() -%}\n {{ return(adapter.dispatch('type_timestamp', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.505507, "supported_languages": null}, "macro.dbt.default__type_timestamp": {"name": "default__type_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_timestamp", "macro_sql": "{% macro default__type_timestamp() %}\n {{ return(api.Column.translate_type(\"timestamp\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.505644, "supported_languages": null}, "macro.dbt.type_float": {"name": "type_float", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_float", "macro_sql": "\n\n{%- macro type_float() -%}\n {{ return(adapter.dispatch('type_float', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_float"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.505793, "supported_languages": null}, "macro.dbt.default__type_float": {"name": "default__type_float", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_float", "macro_sql": "{% macro default__type_float() %}\n {{ return(api.Column.translate_type(\"float\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.505928, "supported_languages": null}, "macro.dbt.type_numeric": {"name": "type_numeric", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_numeric", "macro_sql": "\n\n{%- macro type_numeric() -%}\n {{ return(adapter.dispatch('type_numeric', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_numeric"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506073, "supported_languages": null}, "macro.dbt.default__type_numeric": {"name": "default__type_numeric", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_numeric", "macro_sql": "{% macro default__type_numeric() %}\n {{ return(api.Column.numeric_type(\"numeric\", 28, 6)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506233, "supported_languages": null}, "macro.dbt.type_bigint": {"name": "type_bigint", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_bigint", "macro_sql": "\n\n{%- macro type_bigint() -%}\n {{ return(adapter.dispatch('type_bigint', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_bigint"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506381, "supported_languages": null}, "macro.dbt.default__type_bigint": {"name": "default__type_bigint", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_bigint", "macro_sql": "{% macro default__type_bigint() %}\n {{ return(api.Column.translate_type(\"bigint\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506517, "supported_languages": null}, "macro.dbt.type_int": {"name": "type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_int", "macro_sql": "\n\n{%- macro type_int() -%}\n {{ return(adapter.dispatch('type_int', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_int"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5066612, "supported_languages": null}, "macro.dbt.default__type_int": {"name": "default__type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_int", "macro_sql": "{%- macro default__type_int() -%}\n {{ return(api.Column.translate_type(\"integer\")) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506793, "supported_languages": null}, "macro.dbt.type_boolean": {"name": "type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_boolean", "macro_sql": "\n\n{%- macro type_boolean() -%}\n {{ return(adapter.dispatch('type_boolean', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_boolean"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.506943, "supported_languages": null}, "macro.dbt.default__type_boolean": {"name": "default__type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_boolean", "macro_sql": "{%- macro default__type_boolean() -%}\n {{ return(api.Column.translate_type(\"boolean\")) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5070772, "supported_languages": null}, "macro.dbt.array_concat": {"name": "array_concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_concat.sql", "original_file_path": "macros/utils/array_concat.sql", "unique_id": "macro.dbt.array_concat", "macro_sql": "{% macro array_concat(array_1, array_2) -%}\n {{ return(adapter.dispatch('array_concat', 'dbt')(array_1, array_2)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__array_concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.50733, "supported_languages": null}, "macro.dbt.default__array_concat": {"name": "default__array_concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_concat.sql", "original_file_path": "macros/utils/array_concat.sql", "unique_id": "macro.dbt.default__array_concat", "macro_sql": "{% macro default__array_concat(array_1, array_2) -%}\n array_cat({{ array_1 }}, {{ array_2 }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.507453, "supported_languages": null}, "macro.dbt.bool_or": {"name": "bool_or", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/bool_or.sql", "original_file_path": "macros/utils/bool_or.sql", "unique_id": "macro.dbt.bool_or", "macro_sql": "{% macro bool_or(expression) -%}\n {{ return(adapter.dispatch('bool_or', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__bool_or"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.507673, "supported_languages": null}, "macro.dbt.default__bool_or": {"name": "default__bool_or", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/bool_or.sql", "original_file_path": "macros/utils/bool_or.sql", "unique_id": "macro.dbt.default__bool_or", "macro_sql": "{% macro default__bool_or(expression) -%}\n\n bool_or({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.507769, "supported_languages": null}, "macro.dbt.last_day": {"name": "last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.last_day", "macro_sql": "{% macro last_day(date, datepart) %}\n {{ return(adapter.dispatch('last_day', 'dbt') (date, datepart)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__last_day"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.508131, "supported_languages": null}, "macro.dbt.default_last_day": {"name": "default_last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.default_last_day", "macro_sql": "\n\n{%- macro default_last_day(date, datepart) -%}\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd(datepart, '1', dbt.date_trunc(datepart, date))\n )}}\n as date)\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.dateadd", "macro.dbt.date_trunc"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.508374, "supported_languages": null}, "macro.dbt.default__last_day": {"name": "default__last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.default__last_day", "macro_sql": "{% macro default__last_day(date, datepart) -%}\n {{dbt.default_last_day(date, datepart)}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default_last_day"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.508509, "supported_languages": null}, "macro.dbt.split_part": {"name": "split_part", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt.split_part", "macro_sql": "{% macro split_part(string_text, delimiter_text, part_number) %}\n {{ return(adapter.dispatch('split_part', 'dbt') (string_text, delimiter_text, part_number)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__split_part"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5089731, "supported_languages": null}, "macro.dbt.default__split_part": {"name": "default__split_part", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt.default__split_part", "macro_sql": "{% macro default__split_part(string_text, delimiter_text, part_number) %}\n\n split_part(\n {{ string_text }},\n {{ delimiter_text }},\n {{ part_number }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.50912, "supported_languages": null}, "macro.dbt._split_part_negative": {"name": "_split_part_negative", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt._split_part_negative", "macro_sql": "{% macro _split_part_negative(string_text, delimiter_text, part_number) %}\n\n split_part(\n {{ string_text }},\n {{ delimiter_text }},\n length({{ string_text }})\n - length(\n replace({{ string_text }}, {{ delimiter_text }}, '')\n ) + 2 + {{ part_number }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5093162, "supported_languages": null}, "macro.dbt.date_trunc": {"name": "date_trunc", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_trunc.sql", "original_file_path": "macros/utils/date_trunc.sql", "unique_id": "macro.dbt.date_trunc", "macro_sql": "{% macro date_trunc(datepart, date) -%}\n {{ return(adapter.dispatch('date_trunc', 'dbt') (datepart, date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__date_trunc"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.509562, "supported_languages": null}, "macro.dbt.default__date_trunc": {"name": "default__date_trunc", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_trunc.sql", "original_file_path": "macros/utils/date_trunc.sql", "unique_id": "macro.dbt.default__date_trunc", "macro_sql": "{% macro default__date_trunc(datepart, date) -%}\n date_trunc('{{datepart}}', {{date}})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.509683, "supported_languages": null}, "macro.dbt.array_construct": {"name": "array_construct", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_construct.sql", "original_file_path": "macros/utils/array_construct.sql", "unique_id": "macro.dbt.array_construct", "macro_sql": "{% macro array_construct(inputs=[], data_type=api.Column.translate_type('integer')) -%}\n {{ return(adapter.dispatch('array_construct', 'dbt')(inputs, data_type)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__array_construct"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.51002, "supported_languages": null}, "macro.dbt.default__array_construct": {"name": "default__array_construct", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_construct.sql", "original_file_path": "macros/utils/array_construct.sql", "unique_id": "macro.dbt.default__array_construct", "macro_sql": "{% macro default__array_construct(inputs, data_type) -%}\n {% if inputs|length > 0 %}\n array[ {{ inputs|join(' , ') }} ]\n {% else %}\n array[]::{{data_type}}[]\n {% endif %}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.510242, "supported_languages": null}, "macro.dbt.array_append": {"name": "array_append", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_append.sql", "original_file_path": "macros/utils/array_append.sql", "unique_id": "macro.dbt.array_append", "macro_sql": "{% macro array_append(array, new_element) -%}\n {{ return(adapter.dispatch('array_append', 'dbt')(array, new_element)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__array_append"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.510494, "supported_languages": null}, "macro.dbt.default__array_append": {"name": "default__array_append", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_append.sql", "original_file_path": "macros/utils/array_append.sql", "unique_id": "macro.dbt.default__array_append", "macro_sql": "{% macro default__array_append(array, new_element) -%}\n array_append({{ array }}, {{ new_element }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5106182, "supported_languages": null}, "macro.dbt.create_schema": {"name": "create_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.create_schema", "macro_sql": "{% macro create_schema(relation) -%}\n {{ adapter.dispatch('create_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__create_schema"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5109499, "supported_languages": null}, "macro.dbt.default__create_schema": {"name": "default__create_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.default__create_schema", "macro_sql": "{% macro default__create_schema(relation) -%}\n {%- call statement('create_schema') -%}\n create schema if not exists {{ relation.without_identifier() }}\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.511113, "supported_languages": null}, "macro.dbt.drop_schema": {"name": "drop_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.drop_schema", "macro_sql": "{% macro drop_schema(relation) -%}\n {{ adapter.dispatch('drop_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__drop_schema"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5112598, "supported_languages": null}, "macro.dbt.default__drop_schema": {"name": "default__drop_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.default__drop_schema", "macro_sql": "{% macro default__drop_schema(relation) -%}\n {%- call statement('drop_schema') -%}\n drop schema if exists {{ relation.without_identifier() }} cascade\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5114188, "supported_languages": null}, "macro.dbt.current_timestamp": {"name": "current_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp", "macro_sql": "{%- macro current_timestamp() -%}\n {{ adapter.dispatch('current_timestamp', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_postgres.postgres__current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5118568, "supported_languages": null}, "macro.dbt.default__current_timestamp": {"name": "default__current_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp", "macro_sql": "{% macro default__current_timestamp() -%}\n {{ exceptions.raise_not_implemented(\n 'current_timestamp macro not implemented for adapter ' + adapter.type()) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.511998, "supported_languages": null}, "macro.dbt.snapshot_get_time": {"name": "snapshot_get_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.snapshot_get_time", "macro_sql": "\n\n{%- macro snapshot_get_time() -%}\n {{ adapter.dispatch('snapshot_get_time', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_postgres.postgres__snapshot_get_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5121238, "supported_languages": null}, "macro.dbt.default__snapshot_get_time": {"name": "default__snapshot_get_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__snapshot_get_time", "macro_sql": "{% macro default__snapshot_get_time() %}\n {{ current_timestamp() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.512216, "supported_languages": null}, "macro.dbt.current_timestamp_backcompat": {"name": "current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp_backcompat", "macro_sql": "{% macro current_timestamp_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__current_timestamp_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5124328, "supported_languages": null}, "macro.dbt.default__current_timestamp_backcompat": {"name": "default__current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp_backcompat", "macro_sql": "{% macro default__current_timestamp_backcompat() %}\n current_timestamp::timestamp\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.512504, "supported_languages": null}, "macro.dbt.current_timestamp_in_utc_backcompat": {"name": "current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp_in_utc_backcompat", "macro_sql": "{% macro current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_in_utc_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.512651, "supported_languages": null}, "macro.dbt.default__current_timestamp_in_utc_backcompat": {"name": "default__current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp_in_utc_backcompat", "macro_sql": "{% macro default__current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.current_timestamp_backcompat", "macro.dbt_postgres.postgres__current_timestamp_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.512803, "supported_languages": null}, "macro.dbt.get_create_index_sql": {"name": "get_create_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_create_index_sql", "macro_sql": "{% macro get_create_index_sql(relation, index_dict) -%}\n {{ return(adapter.dispatch('get_create_index_sql', 'dbt')(relation, index_dict)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_create_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.513543, "supported_languages": null}, "macro.dbt.default__get_create_index_sql": {"name": "default__get_create_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_create_index_sql", "macro_sql": "{% macro default__get_create_index_sql(relation, index_dict) -%}\n {% do return(None) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.513669, "supported_languages": null}, "macro.dbt.create_indexes": {"name": "create_indexes", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.create_indexes", "macro_sql": "{% macro create_indexes(relation) -%}\n {{ adapter.dispatch('create_indexes', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.513815, "supported_languages": null}, "macro.dbt.default__create_indexes": {"name": "default__create_indexes", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__create_indexes", "macro_sql": "{% macro default__create_indexes(relation) -%}\n {%- set _indexes = config.get('indexes', default=[]) -%}\n\n {% for _index_dict in _indexes %}\n {% set create_index_sql = get_create_index_sql(relation, _index_dict) %}\n {% if create_index_sql %}\n {% do run_query(create_index_sql) %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_create_index_sql", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5141819, "supported_languages": null}, "macro.dbt.get_drop_index_sql": {"name": "get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_drop_index_sql", "macro_sql": "{% macro get_drop_index_sql(relation, index_name) -%}\n {{ adapter.dispatch('get_drop_index_sql', 'dbt')(relation, index_name) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_drop_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.514352, "supported_languages": null}, "macro.dbt.default__get_drop_index_sql": {"name": "default__get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_drop_index_sql", "macro_sql": "{% macro default__get_drop_index_sql(relation, index_name) -%}\n {{ exceptions.raise_compiler_error(\"`get_drop_index_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.514473, "supported_languages": null}, "macro.dbt.get_show_indexes_sql": {"name": "get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_show_indexes_sql", "macro_sql": "{% macro get_show_indexes_sql(relation) -%}\n {{ adapter.dispatch('get_show_indexes_sql', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_show_indexes_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.514615, "supported_languages": null}, "macro.dbt.default__get_show_indexes_sql": {"name": "default__get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_show_indexes_sql", "macro_sql": "{% macro default__get_show_indexes_sql(relation) -%}\n {{ exceptions.raise_compiler_error(\"`get_show_indexes_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.514729, "supported_languages": null}, "macro.dbt.make_intermediate_relation": {"name": "make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_intermediate_relation", "macro_sql": "{% macro make_intermediate_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_intermediate_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_intermediate_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.516484, "supported_languages": null}, "macro.dbt.default__make_intermediate_relation": {"name": "default__make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_intermediate_relation", "macro_sql": "{% macro default__make_intermediate_relation(base_relation, suffix) %}\n {{ return(default__make_temp_relation(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__make_temp_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.516636, "supported_languages": null}, "macro.dbt.make_temp_relation": {"name": "make_temp_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_temp_relation", "macro_sql": "{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_temp_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.516832, "supported_languages": null}, "macro.dbt.default__make_temp_relation": {"name": "default__make_temp_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_temp_relation", "macro_sql": "{% macro default__make_temp_relation(base_relation, suffix) %}\n {%- set temp_identifier = base_relation.identifier ~ suffix -%}\n {%- set temp_relation = base_relation.incorporate(\n path={\"identifier\": temp_identifier}) -%}\n\n {{ return(temp_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5171, "supported_languages": null}, "macro.dbt.make_backup_relation": {"name": "make_backup_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_backup_relation", "macro_sql": "{% macro make_backup_relation(base_relation, backup_relation_type, suffix='__dbt_backup') %}\n {{ return(adapter.dispatch('make_backup_relation', 'dbt')(base_relation, backup_relation_type, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__make_backup_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5173209, "supported_languages": null}, "macro.dbt.default__make_backup_relation": {"name": "default__make_backup_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_backup_relation", "macro_sql": "{% macro default__make_backup_relation(base_relation, backup_relation_type, suffix) %}\n {%- set backup_identifier = base_relation.identifier ~ suffix -%}\n {%- set backup_relation = base_relation.incorporate(\n path={\"identifier\": backup_identifier},\n type=backup_relation_type\n ) -%}\n {{ return(backup_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5176141, "supported_languages": null}, "macro.dbt.truncate_relation": {"name": "truncate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.truncate_relation", "macro_sql": "{% macro truncate_relation(relation) -%}\n {{ return(adapter.dispatch('truncate_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__truncate_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.51778, "supported_languages": null}, "macro.dbt.default__truncate_relation": {"name": "default__truncate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__truncate_relation", "macro_sql": "{% macro default__truncate_relation(relation) -%}\n {% call statement('truncate_relation') -%}\n truncate table {{ relation }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5179882, "supported_languages": null}, "macro.dbt.get_or_create_relation": {"name": "get_or_create_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.get_or_create_relation", "macro_sql": "{% macro get_or_create_relation(database, schema, identifier, type) -%}\n {{ return(adapter.dispatch('get_or_create_relation', 'dbt')(database, schema, identifier, type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_or_create_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.51821, "supported_languages": null}, "macro.dbt.default__get_or_create_relation": {"name": "default__get_or_create_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__get_or_create_relation", "macro_sql": "{% macro default__get_or_create_relation(database, schema, identifier, type) %}\n {%- set target_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% if target_relation %}\n {% do return([true, target_relation]) %}\n {% endif %}\n\n {%- set new_relation = api.Relation.create(\n database=database,\n schema=schema,\n identifier=identifier,\n type=type\n ) -%}\n {% do return([false, new_relation]) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.518718, "supported_languages": null}, "macro.dbt.load_cached_relation": {"name": "load_cached_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.load_cached_relation", "macro_sql": "{% macro load_cached_relation(relation) %}\n {% do return(adapter.get_relation(\n database=relation.database,\n schema=relation.schema,\n identifier=relation.identifier\n )) -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5189729, "supported_languages": null}, "macro.dbt.load_relation": {"name": "load_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.load_relation", "macro_sql": "{% macro load_relation(relation) %}\n {{ return(load_cached_relation(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.519117, "supported_languages": null}, "macro.dbt.collect_freshness": {"name": "collect_freshness", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/freshness.sql", "original_file_path": "macros/adapters/freshness.sql", "unique_id": "macro.dbt.collect_freshness", "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness', 'dbt')(source, loaded_at_field, filter))}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__collect_freshness"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.519508, "supported_languages": null}, "macro.dbt.default__collect_freshness": {"name": "default__collect_freshness", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/freshness.sql", "original_file_path": "macros/adapters/freshness.sql", "unique_id": "macro.dbt.default__collect_freshness", "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n select\n max({{ loaded_at_field }}) as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endcall %}\n {{ return(load_result('collect_freshness')) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5198872, "supported_languages": null}, "macro.dbt.validate_sql": {"name": "validate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/validate_sql.sql", "original_file_path": "macros/adapters/validate_sql.sql", "unique_id": "macro.dbt.validate_sql", "macro_sql": "{% macro validate_sql(sql) -%}\n {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__validate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.520144, "supported_languages": null}, "macro.dbt.default__validate_sql": {"name": "default__validate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/validate_sql.sql", "original_file_path": "macros/adapters/validate_sql.sql", "unique_id": "macro.dbt.default__validate_sql", "macro_sql": "{% macro default__validate_sql(sql) -%}\n {% call statement('validate_sql') -%}\n explain {{ sql }}\n {% endcall %}\n {{ return(load_result('validate_sql')) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.52035, "supported_languages": null}, "macro.dbt.copy_grants": {"name": "copy_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.copy_grants", "macro_sql": "{% macro copy_grants() %}\n {{ return(adapter.dispatch('copy_grants', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__copy_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.521884, "supported_languages": null}, "macro.dbt.default__copy_grants": {"name": "default__copy_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__copy_grants", "macro_sql": "{% macro default__copy_grants() %}\n {{ return(True) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5219898, "supported_languages": null}, "macro.dbt.support_multiple_grantees_per_dcl_statement": {"name": "support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.support_multiple_grantees_per_dcl_statement", "macro_sql": "{% macro support_multiple_grantees_per_dcl_statement() %}\n {{ return(adapter.dispatch('support_multiple_grantees_per_dcl_statement', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__support_multiple_grantees_per_dcl_statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.522143, "supported_languages": null}, "macro.dbt.default__support_multiple_grantees_per_dcl_statement": {"name": "default__support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__support_multiple_grantees_per_dcl_statement", "macro_sql": "\n\n{%- macro default__support_multiple_grantees_per_dcl_statement() -%}\n {{ return(True) }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.522243, "supported_languages": null}, "macro.dbt.should_revoke": {"name": "should_revoke", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.should_revoke", "macro_sql": "{% macro should_revoke(existing_relation, full_refresh_mode=True) %}\n\n {% if not existing_relation %}\n {#-- The table doesn't already exist, so no grants to copy over --#}\n {{ return(False) }}\n {% elif full_refresh_mode %}\n {#-- The object is being REPLACED -- whether grants are copied over depends on the value of user config --#}\n {{ return(copy_grants()) }}\n {% else %}\n {#-- The table is being merged/upserted/inserted -- grants will be carried over --#}\n {{ return(True) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.copy_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.522552, "supported_languages": null}, "macro.dbt.get_show_grant_sql": {"name": "get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_show_grant_sql", "macro_sql": "{% macro get_show_grant_sql(relation) %}\n {{ return(adapter.dispatch(\"get_show_grant_sql\", \"dbt\")(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_show_grant_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.522727, "supported_languages": null}, "macro.dbt.default__get_show_grant_sql": {"name": "default__get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_show_grant_sql", "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n show grants on {{ relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.522819, "supported_languages": null}, "macro.dbt.get_grant_sql": {"name": "get_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_grant_sql", "macro_sql": "{% macro get_grant_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_grant_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_grant_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5230231, "supported_languages": null}, "macro.dbt.default__get_grant_sql": {"name": "default__get_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_grant_sql", "macro_sql": "\n\n{%- macro default__get_grant_sql(relation, privilege, grantees) -%}\n grant {{ privilege }} on {{ relation }} to {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.52321, "supported_languages": null}, "macro.dbt.get_revoke_sql": {"name": "get_revoke_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_revoke_sql", "macro_sql": "{% macro get_revoke_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_revoke_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_revoke_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.523416, "supported_languages": null}, "macro.dbt.default__get_revoke_sql": {"name": "default__get_revoke_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_revoke_sql", "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n revoke {{ privilege }} on {{ relation }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5236669, "supported_languages": null}, "macro.dbt.get_dcl_statement_list": {"name": "get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_dcl_statement_list", "macro_sql": "{% macro get_dcl_statement_list(relation, grant_config, get_dcl_macro) %}\n {{ return(adapter.dispatch('get_dcl_statement_list', 'dbt')(relation, grant_config, get_dcl_macro)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_dcl_statement_list"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5238788, "supported_languages": null}, "macro.dbt.default__get_dcl_statement_list": {"name": "default__get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_dcl_statement_list", "macro_sql": "\n\n{%- macro default__get_dcl_statement_list(relation, grant_config, get_dcl_macro) -%}\n {#\n -- Unpack grant_config into specific privileges and the set of users who need them granted/revoked.\n -- Depending on whether this database supports multiple grantees per statement, pass in the list of\n -- all grantees per privilege, or (if not) template one statement per privilege-grantee pair.\n -- `get_dcl_macro` will be either `get_grant_sql` or `get_revoke_sql`\n #}\n {%- set dcl_statements = [] -%}\n {%- for privilege, grantees in grant_config.items() %}\n {%- if support_multiple_grantees_per_dcl_statement() and grantees -%}\n {%- set dcl = get_dcl_macro(relation, privilege, grantees) -%}\n {%- do dcl_statements.append(dcl) -%}\n {%- else -%}\n {%- for grantee in grantees -%}\n {% set dcl = get_dcl_macro(relation, privilege, [grantee]) %}\n {%- do dcl_statements.append(dcl) -%}\n {% endfor -%}\n {%- endif -%}\n {%- endfor -%}\n {{ return(dcl_statements) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.support_multiple_grantees_per_dcl_statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.524489, "supported_languages": null}, "macro.dbt.call_dcl_statements": {"name": "call_dcl_statements", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.call_dcl_statements", "macro_sql": "{% macro call_dcl_statements(dcl_statement_list) %}\n {{ return(adapter.dispatch(\"call_dcl_statements\", \"dbt\")(dcl_statement_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__call_dcl_statements"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5246642, "supported_languages": null}, "macro.dbt.default__call_dcl_statements": {"name": "default__call_dcl_statements", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__call_dcl_statements", "macro_sql": "{% macro default__call_dcl_statements(dcl_statement_list) %}\n {#\n -- By default, supply all grant + revoke statements in a single semicolon-separated block,\n -- so that they're all processed together.\n\n -- Some databases do not support this. Those adapters will need to override this macro\n -- to run each statement individually.\n #}\n {% call statement('grants') %}\n {% for dcl_statement in dcl_statement_list %}\n {{ dcl_statement }};\n {% endfor %}\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.524883, "supported_languages": null}, "macro.dbt.apply_grants": {"name": "apply_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.apply_grants", "macro_sql": "{% macro apply_grants(relation, grant_config, should_revoke) %}\n {{ return(adapter.dispatch(\"apply_grants\", \"dbt\")(relation, grant_config, should_revoke)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.525093, "supported_languages": null}, "macro.dbt.default__apply_grants": {"name": "default__apply_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__apply_grants", "macro_sql": "{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}\n {#-- If grant_config is {} or None, this is a no-op --#}\n {% if grant_config %}\n {% if should_revoke %}\n {#-- We think previous grants may have carried over --#}\n {#-- Show current grants and calculate diffs --#}\n {% set current_grants_table = run_query(get_show_grant_sql(relation)) %}\n {% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}\n {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}\n {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}\n {% if not (needs_granting or needs_revoking) %}\n {{ log('On ' ~ relation ~': All grants are in place, no revocation or granting needed.')}}\n {% endif %}\n {% else %}\n {#-- We don't think there's any chance of previous grants having carried over. --#}\n {#-- Jump straight to granting what the user has configured. --#}\n {% set needs_revoking = {} %}\n {% set needs_granting = grant_config %}\n {% endif %}\n {% if needs_granting or needs_revoking %}\n {% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}\n {% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}\n {% set dcl_statement_list = revoke_statement_list + grant_statement_list %}\n {% if dcl_statement_list %}\n {{ call_dcl_statements(dcl_statement_list) }}\n {% endif %}\n {% endif %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.get_show_grant_sql", "macro.dbt.get_dcl_statement_list", "macro.dbt.call_dcl_statements"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5261052, "supported_languages": null}, "macro.dbt.get_show_sql": {"name": "get_show_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.get_show_sql", "macro_sql": "{% macro get_show_sql(compiled_code, sql_header, limit) -%}\n {%- if sql_header -%}\n {{ sql_header }}\n {%- endif -%}\n {%- if limit is not none -%}\n {{ get_limit_subquery_sql(compiled_code, limit) }}\n {%- else -%}\n {{ compiled_code }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_limit_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5265868, "supported_languages": null}, "macro.dbt.get_limit_subquery_sql": {"name": "get_limit_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.get_limit_subquery_sql", "macro_sql": "{% macro get_limit_subquery_sql(sql, limit) %}\n {{ adapter.dispatch('get_limit_subquery_sql', 'dbt')(sql, limit) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_limit_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.526761, "supported_languages": null}, "macro.dbt.default__get_limit_subquery_sql": {"name": "default__get_limit_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.default__get_limit_subquery_sql", "macro_sql": "{% macro default__get_limit_subquery_sql(sql, limit) %}\n select *\n from (\n {{ sql }}\n ) as model_limit_subq\n limit {{ limit }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.526884, "supported_languages": null}, "macro.dbt.alter_column_comment": {"name": "alter_column_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.alter_column_comment", "macro_sql": "{% macro alter_column_comment(relation, column_dict) -%}\n {{ return(adapter.dispatch('alter_column_comment', 'dbt')(relation, column_dict)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.527488, "supported_languages": null}, "macro.dbt.default__alter_column_comment": {"name": "default__alter_column_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__alter_column_comment", "macro_sql": "{% macro default__alter_column_comment(relation, column_dict) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_column_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.527652, "supported_languages": null}, "macro.dbt.alter_relation_comment": {"name": "alter_relation_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.alter_relation_comment", "macro_sql": "{% macro alter_relation_comment(relation, relation_comment) -%}\n {{ return(adapter.dispatch('alter_relation_comment', 'dbt')(relation, relation_comment)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__alter_relation_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5278442, "supported_languages": null}, "macro.dbt.default__alter_relation_comment": {"name": "default__alter_relation_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__alter_relation_comment", "macro_sql": "{% macro default__alter_relation_comment(relation, relation_comment) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_relation_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.528003, "supported_languages": null}, "macro.dbt.persist_docs": {"name": "persist_docs", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.persist_docs", "macro_sql": "{% macro persist_docs(relation, model, for_relation=true, for_columns=true) -%}\n {{ return(adapter.dispatch('persist_docs', 'dbt')(relation, model, for_relation, for_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.528244, "supported_languages": null}, "macro.dbt.default__persist_docs": {"name": "default__persist_docs", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__persist_docs", "macro_sql": "{% macro default__persist_docs(relation, model, for_relation, for_columns) -%}\n {% if for_relation and config.persist_relation_docs() and model.description %}\n {% do run_query(alter_relation_comment(relation, model.description)) %}\n {% endif %}\n\n {% if for_columns and config.persist_column_docs() and model.columns %}\n {% do run_query(alter_column_comment(relation, model.columns)) %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.alter_relation_comment", "macro.dbt.alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.528676, "supported_languages": null}, "macro.dbt.get_catalog_relations": {"name": "get_catalog_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_catalog_relations", "macro_sql": "{% macro get_catalog_relations(information_schema, relations) -%}\n {{ return(adapter.dispatch('get_catalog_relations', 'dbt')(information_schema, relations)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_catalog_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5311759, "supported_languages": null}, "macro.dbt.default__get_catalog_relations": {"name": "default__get_catalog_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_catalog_relations", "macro_sql": "{% macro default__get_catalog_relations(information_schema, relations) -%}\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog_relations not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.531412, "supported_languages": null}, "macro.dbt.get_catalog": {"name": "get_catalog", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_catalog", "macro_sql": "{% macro get_catalog(information_schema, schemas) -%}\n {{ return(adapter.dispatch('get_catalog', 'dbt')(information_schema, schemas)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_catalog"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.531601, "supported_languages": null}, "macro.dbt.default__get_catalog": {"name": "default__get_catalog", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_catalog", "macro_sql": "{% macro default__get_catalog(information_schema, schemas) -%}\n\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.531898, "supported_languages": null}, "macro.dbt.information_schema_name": {"name": "information_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.information_schema_name", "macro_sql": "{% macro information_schema_name(database) %}\n {{ return(adapter.dispatch('information_schema_name', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__information_schema_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.532066, "supported_languages": null}, "macro.dbt.default__information_schema_name": {"name": "default__information_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__information_schema_name", "macro_sql": "{% macro default__information_schema_name(database) -%}\n {%- if database -%}\n {{ database }}.INFORMATION_SCHEMA\n {%- else -%}\n INFORMATION_SCHEMA\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.532206, "supported_languages": null}, "macro.dbt.list_schemas": {"name": "list_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.list_schemas", "macro_sql": "{% macro list_schemas(database) -%}\n {{ return(adapter.dispatch('list_schemas', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__list_schemas"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.532366, "supported_languages": null}, "macro.dbt.default__list_schemas": {"name": "default__list_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__list_schemas", "macro_sql": "{% macro default__list_schemas(database) -%}\n {% set sql %}\n select distinct schema_name\n from {{ information_schema_name(database) }}.SCHEMATA\n where catalog_name ilike '{{ database }}'\n {% endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.information_schema_name", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5325902, "supported_languages": null}, "macro.dbt.check_schema_exists": {"name": "check_schema_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.check_schema_exists", "macro_sql": "{% macro check_schema_exists(information_schema, schema) -%}\n {{ return(adapter.dispatch('check_schema_exists', 'dbt')(information_schema, schema)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__check_schema_exists"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.532777, "supported_languages": null}, "macro.dbt.default__check_schema_exists": {"name": "default__check_schema_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__check_schema_exists", "macro_sql": "{% macro default__check_schema_exists(information_schema, schema) -%}\n {% set sql -%}\n select count(*)\n from {{ information_schema.replace(information_schema_view='SCHEMATA') }}\n where catalog_name='{{ information_schema.database }}'\n and schema_name='{{ schema }}'\n {%- endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.replace", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.533052, "supported_languages": null}, "macro.dbt.list_relations_without_caching": {"name": "list_relations_without_caching", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.list_relations_without_caching", "macro_sql": "{% macro list_relations_without_caching(schema_relation) %}\n {{ return(adapter.dispatch('list_relations_without_caching', 'dbt')(schema_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__list_relations_without_caching"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5332239, "supported_languages": null}, "macro.dbt.default__list_relations_without_caching": {"name": "default__list_relations_without_caching", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__list_relations_without_caching", "macro_sql": "{% macro default__list_relations_without_caching(schema_relation) %}\n {{ exceptions.raise_not_implemented(\n 'list_relations_without_caching macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.533368, "supported_languages": null}, "macro.dbt.get_relations": {"name": "get_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_relations", "macro_sql": "{% macro get_relations() %}\n {{ return(adapter.dispatch('get_relations', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.533516, "supported_languages": null}, "macro.dbt.default__get_relations": {"name": "default__get_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_relations", "macro_sql": "{% macro default__get_relations() %}\n {{ exceptions.raise_not_implemented(\n 'get_relations macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.533655, "supported_languages": null}, "macro.dbt.get_relation_last_modified": {"name": "get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_relation_last_modified", "macro_sql": "{% macro get_relation_last_modified(information_schema, relations) %}\n {{ return(adapter.dispatch('get_relation_last_modified', 'dbt')(information_schema, relations)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_relation_last_modified"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5338418, "supported_languages": null}, "macro.dbt.default__get_relation_last_modified": {"name": "default__get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_relation_last_modified", "macro_sql": "{% macro default__get_relation_last_modified(information_schema, relations) %}\n {{ exceptions.raise_not_implemented(\n 'get_relation_last_modified macro not implemented for adapter ' + adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5340002, "supported_languages": null}, "macro.dbt.get_columns_in_relation": {"name": "get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_columns_in_relation", "macro_sql": "{% macro get_columns_in_relation(relation) -%}\n {{ return(adapter.dispatch('get_columns_in_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__get_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5360909, "supported_languages": null}, "macro.dbt.default__get_columns_in_relation": {"name": "default__get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_columns_in_relation", "macro_sql": "{% macro default__get_columns_in_relation(relation) -%}\n {{ exceptions.raise_not_implemented(\n 'get_columns_in_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.536265, "supported_languages": null}, "macro.dbt.sql_convert_columns_in_relation": {"name": "sql_convert_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.sql_convert_columns_in_relation", "macro_sql": "{% macro sql_convert_columns_in_relation(table) -%}\n {% set columns = [] %}\n {% for row in table %}\n {% do columns.append(api.Column(*row)) %}\n {% endfor %}\n {{ return(columns) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.536557, "supported_languages": null}, "macro.dbt.get_empty_subquery_sql": {"name": "get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_empty_subquery_sql", "macro_sql": "{% macro get_empty_subquery_sql(select_sql, select_sql_header=none) -%}\n {{ return(adapter.dispatch('get_empty_subquery_sql', 'dbt')(select_sql, select_sql_header)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.536758, "supported_languages": null}, "macro.dbt.default__get_empty_subquery_sql": {"name": "default__get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_empty_subquery_sql", "macro_sql": "{% macro default__get_empty_subquery_sql(select_sql, select_sql_header=none) %}\n {%- if select_sql_header is not none -%}\n {{ select_sql_header }}\n {%- endif -%}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false\n limit 0\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5369458, "supported_languages": null}, "macro.dbt.get_empty_schema_sql": {"name": "get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_empty_schema_sql", "macro_sql": "{% macro get_empty_schema_sql(columns) -%}\n {{ return(adapter.dispatch('get_empty_schema_sql', 'dbt')(columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_empty_schema_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5371132, "supported_languages": null}, "macro.dbt.default__get_empty_schema_sql": {"name": "default__get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_empty_schema_sql", "macro_sql": "{% macro default__get_empty_schema_sql(columns) %}\n {%- set col_err = [] -%}\n {%- set col_naked_numeric = [] -%}\n select\n {% for i in columns %}\n {%- set col = columns[i] -%}\n {%- if col['data_type'] is not defined -%}\n {%- do col_err.append(col['name']) -%}\n {#-- If this column's type is just 'numeric' then it is missing precision/scale, raise a warning --#}\n {%- elif col['data_type'].strip().lower() in ('numeric', 'decimal', 'number') -%}\n {%- do col_naked_numeric.append(col['name']) -%}\n {%- endif -%}\n {% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}\n cast(null as {{ col['data_type'] }}) as {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n {%- if (col_err | length) > 0 -%}\n {{ exceptions.column_type_missing(column_names=col_err) }}\n {%- elif (col_naked_numeric | length) > 0 -%}\n {{ exceptions.warn(\"Detected columns with numeric type and unspecified precision/scale, this can lead to unintended rounding: \" ~ col_naked_numeric ~ \"`\") }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.538211, "supported_languages": null}, "macro.dbt.get_column_schema_from_query": {"name": "get_column_schema_from_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_column_schema_from_query", "macro_sql": "{% macro get_column_schema_from_query(select_sql, select_sql_header=none) -%}\n {% set columns = [] %}\n {# -- Using an 'empty subquery' here to get the same schema as the given select_sql statement, without necessitating a data scan.#}\n {% set sql = get_empty_subquery_sql(select_sql, select_sql_header) %}\n {% set column_schema = adapter.get_column_schema_from_query(sql) %}\n {{ return(column_schema) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.538524, "supported_languages": null}, "macro.dbt.get_columns_in_query": {"name": "get_columns_in_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_columns_in_query", "macro_sql": "{% macro get_columns_in_query(select_sql) -%}\n {{ return(adapter.dispatch('get_columns_in_query', 'dbt')(select_sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_columns_in_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5386932, "supported_languages": null}, "macro.dbt.default__get_columns_in_query": {"name": "default__get_columns_in_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_columns_in_query", "macro_sql": "{% macro default__get_columns_in_query(select_sql) %}\n {% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}\n {{ get_empty_subquery_sql(select_sql) }}\n {% endcall %}\n {{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.539006, "supported_languages": null}, "macro.dbt.alter_column_type": {"name": "alter_column_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.alter_column_type", "macro_sql": "{% macro alter_column_type(relation, column_name, new_column_type) -%}\n {{ return(adapter.dispatch('alter_column_type', 'dbt')(relation, column_name, new_column_type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__alter_column_type"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.539215, "supported_languages": null}, "macro.dbt.default__alter_column_type": {"name": "default__alter_column_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__alter_column_type", "macro_sql": "{% macro default__alter_column_type(relation, column_name, new_column_type) -%}\n {#\n 1. Create a new column (w/ temp name and correct type)\n 2. Copy data over to it\n 3. Drop the existing column (cascade!)\n 4. Rename the new column to existing column\n #}\n {%- set tmp_column = column_name + \"__dbt_alter\" -%}\n\n {% call statement('alter_column_type') %}\n alter table {{ relation }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};\n update {{ relation }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};\n alter table {{ relation }} drop column {{ adapter.quote(column_name) }} cascade;\n alter table {{ relation }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}\n {% endcall %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5397491, "supported_languages": null}, "macro.dbt.alter_relation_add_remove_columns": {"name": "alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.alter_relation_add_remove_columns", "macro_sql": "{% macro alter_relation_add_remove_columns(relation, add_columns = none, remove_columns = none) -%}\n {{ return(adapter.dispatch('alter_relation_add_remove_columns', 'dbt')(relation, add_columns, remove_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__alter_relation_add_remove_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5399868, "supported_languages": null}, "macro.dbt.default__alter_relation_add_remove_columns": {"name": "default__alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__alter_relation_add_remove_columns", "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n {% if add_columns is none %}\n {% set add_columns = [] %}\n {% endif %}\n {% if remove_columns is none %}\n {% set remove_columns = [] %}\n {% endif %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation }}\n\n {% for column in add_columns %}\n add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n {% for column in remove_columns %}\n drop column {{ column.name }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {% do run_query(sql) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.540689, "supported_languages": null}, "macro.dbt.resolve_model_name": {"name": "resolve_model_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.resolve_model_name", "macro_sql": "{% macro resolve_model_name(input_model_name) %}\n {{ return(adapter.dispatch('resolve_model_name', 'dbt')(input_model_name)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.542167, "supported_languages": null}, "macro.dbt.default__resolve_model_name": {"name": "default__resolve_model_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.default__resolve_model_name", "macro_sql": "\n\n{%- macro default__resolve_model_name(input_model_name) -%}\n {{ input_model_name | string | replace('\"', '\\\"') }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.542308, "supported_languages": null}, "macro.dbt.build_ref_function": {"name": "build_ref_function", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_ref_function", "macro_sql": "{% macro build_ref_function(model) %}\n\n {%- set ref_dict = {} -%}\n {%- for _ref in model.refs -%}\n {% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}\n {%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}\n {%- if _ref.get('version') -%}\n {% do _ref_args.extend([\"v\" ~ _ref['version']]) %}\n {%- endif -%}\n {%- do ref_dict.update({_ref_args | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef ref(*args, **kwargs):\n refs = {{ ref_dict | tojson }}\n key = '.'.join(args)\n version = kwargs.get(\"v\") or kwargs.get(\"version\")\n if version:\n key += f\".v{version}\"\n dbt_load_df_function = kwargs.get(\"dbt_load_df_function\")\n return dbt_load_df_function(refs[key])\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.543054, "supported_languages": null}, "macro.dbt.build_source_function": {"name": "build_source_function", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_source_function", "macro_sql": "{% macro build_source_function(model) %}\n\n {%- set source_dict = {} -%}\n {%- for _source in model.sources -%}\n {%- set resolved = source(*_source) -%}\n {%- do source_dict.update({_source | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef source(*args, dbt_load_df_function):\n sources = {{ source_dict | tojson }}\n key = '.'.join(args)\n return dbt_load_df_function(sources[key])\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.543419, "supported_languages": null}, "macro.dbt.build_config_dict": {"name": "build_config_dict", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_config_dict", "macro_sql": "{% macro build_config_dict(model) %}\n {%- set config_dict = {} -%}\n {% set config_dbt_used = zip(model.config.config_keys_used, model.config.config_keys_defaults) | list %}\n {%- for key, default in config_dbt_used -%}\n {# weird type testing with enum, would be much easier to write this logic in Python! #}\n {%- if key == \"language\" -%}\n {%- set value = \"python\" -%}\n {%- endif -%}\n {%- set value = model.config.get(key, default) -%}\n {%- do config_dict.update({key: value}) -%}\n {%- endfor -%}\nconfig_dict = {{ config_dict }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.543941, "supported_languages": null}, "macro.dbt.py_script_postfix": {"name": "py_script_postfix", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.py_script_postfix", "macro_sql": "{% macro py_script_postfix(model) %}\n# This part is user provided model code\n# you will need to copy the next section to run the code\n# COMMAND ----------\n# this part is dbt logic for get ref work, do not modify\n\n{{ build_ref_function(model ) }}\n{{ build_source_function(model ) }}\n{{ build_config_dict(model) }}\n\nclass config:\n def __init__(self, *args, **kwargs):\n pass\n\n @staticmethod\n def get(key, default=None):\n return config_dict.get(key, default)\n\nclass this:\n \"\"\"dbt.this() or dbt.this.identifier\"\"\"\n database = \"{{ this.database }}\"\n schema = \"{{ this.schema }}\"\n identifier = \"{{ this.identifier }}\"\n {% set this_relation_name = resolve_model_name(this) %}\n def __repr__(self):\n return '{{ this_relation_name }}'\n\n\nclass dbtObj:\n def __init__(self, load_df_function) -> None:\n self.source = lambda *args: source(*args, dbt_load_df_function=load_df_function)\n self.ref = lambda *args, **kwargs: ref(*args, **kwargs, dbt_load_df_function=load_df_function)\n self.config = config\n self.this = this()\n self.is_incremental = {{ is_incremental() }}\n\n# COMMAND ----------\n{{py_script_comment()}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.build_ref_function", "macro.dbt.build_source_function", "macro.dbt.build_config_dict", "macro.dbt.resolve_model_name", "macro.dbt.is_incremental", "macro.dbt.py_script_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.544364, "supported_languages": null}, "macro.dbt.py_script_comment": {"name": "py_script_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.py_script_comment", "macro_sql": "{%macro py_script_comment()%}\n{%endmacro%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.54443, "supported_languages": null}, "macro.dbt.test_unique": {"name": "test_unique", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_unique", "macro_sql": "{% test unique(model, column_name) %}\n {% set macro = adapter.dispatch('test_unique', 'dbt') %}\n {{ macro(model, column_name) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_unique"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5448802, "supported_languages": null}, "macro.dbt.test_not_null": {"name": "test_not_null", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_not_null", "macro_sql": "{% test not_null(model, column_name) %}\n {% set macro = adapter.dispatch('test_not_null', 'dbt') %}\n {{ macro(model, column_name) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5450869, "supported_languages": null}, "macro.dbt.test_accepted_values": {"name": "test_accepted_values", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_accepted_values", "macro_sql": "{% test accepted_values(model, column_name, values, quote=True) %}\n {% set macro = adapter.dispatch('test_accepted_values', 'dbt') %}\n {{ macro(model, column_name, values, quote) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_accepted_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5453491, "supported_languages": null}, "macro.dbt.test_relationships": {"name": "test_relationships", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_relationships", "macro_sql": "{% test relationships(model, column_name, to, field) %}\n {% set macro = adapter.dispatch('test_relationships', 'dbt') %}\n {{ macro(model, column_name, to, field) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_relationships"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5455968, "supported_languages": null}, "macro.dbt_utils.get_url_host": {"name": "get_url_host", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_host.sql", "original_file_path": "macros/web/get_url_host.sql", "unique_id": "macro.dbt_utils.get_url_host", "macro_sql": "{% macro get_url_host(field) -%}\n {{ return(adapter.dispatch('get_url_host', 'dbt_utils')(field)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_host"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.545913, "supported_languages": null}, "macro.dbt_utils.default__get_url_host": {"name": "default__get_url_host", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_host.sql", "original_file_path": "macros/web/get_url_host.sql", "unique_id": "macro.dbt_utils.default__get_url_host", "macro_sql": "{% macro default__get_url_host(field) -%}\n\n{%- set parsed =\n dbt.split_part(\n dbt.split_part(\n dbt.replace(\n dbt.replace(\n dbt.replace(field, \"'android-app://'\", \"''\"\n ), \"'http://'\", \"''\"\n ), \"'https://'\", \"''\"\n ), \"'/'\", 1\n ), \"'?'\", 1\n )\n\n-%}\n\n\n {{ dbt.safe_cast(\n parsed,\n dbt.type_string()\n )}}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.split_part", "macro.dbt.replace", "macro.dbt.safe_cast", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.546602, "supported_languages": null}, "macro.dbt_utils.get_url_path": {"name": "get_url_path", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_path.sql", "original_file_path": "macros/web/get_url_path.sql", "unique_id": "macro.dbt_utils.get_url_path", "macro_sql": "{% macro get_url_path(field) -%}\n {{ return(adapter.dispatch('get_url_path', 'dbt_utils')(field)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_path"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.547026, "supported_languages": null}, "macro.dbt_utils.default__get_url_path": {"name": "default__get_url_path", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_path.sql", "original_file_path": "macros/web/get_url_path.sql", "unique_id": "macro.dbt_utils.default__get_url_path", "macro_sql": "{% macro default__get_url_path(field) -%}\n\n {%- set stripped_url =\n dbt.replace(\n dbt.replace(field, \"'http://'\", \"''\"), \"'https://'\", \"''\")\n -%}\n\n {%- set first_slash_pos -%}\n coalesce(\n nullif({{ dbt.position(\"'/'\", stripped_url) }}, 0),\n {{ dbt.position(\"'?'\", stripped_url) }} - 1\n )\n {%- endset -%}\n\n {%- set parsed_path =\n dbt.split_part(\n dbt.right(\n stripped_url,\n dbt.length(stripped_url) ~ \"-\" ~ first_slash_pos\n ),\n \"'?'\", 1\n )\n -%}\n\n {{ dbt.safe_cast(\n parsed_path,\n dbt.type_string()\n )}}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.replace", "macro.dbt.position", "macro.dbt.split_part", "macro.dbt.right", "macro.dbt.length", "macro.dbt.safe_cast", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5476139, "supported_languages": null}, "macro.dbt_utils.get_url_parameter": {"name": "get_url_parameter", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_parameter.sql", "original_file_path": "macros/web/get_url_parameter.sql", "unique_id": "macro.dbt_utils.get_url_parameter", "macro_sql": "{% macro get_url_parameter(field, url_parameter) -%}\n {{ return(adapter.dispatch('get_url_parameter', 'dbt_utils')(field, url_parameter)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5478961, "supported_languages": null}, "macro.dbt_utils.default__get_url_parameter": {"name": "default__get_url_parameter", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_parameter.sql", "original_file_path": "macros/web/get_url_parameter.sql", "unique_id": "macro.dbt_utils.default__get_url_parameter", "macro_sql": "{% macro default__get_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"='\" -%}\n\n{%- set split = dbt.split_part(dbt.split_part(field, formatted_url_parameter, 2), \"'&'\", 1) -%}\n\nnullif({{ split }},'')\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.split_part"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.548181, "supported_languages": null}, "macro.dbt_utils.test_fewer_rows_than": {"name": "test_fewer_rows_than", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/fewer_rows_than.sql", "original_file_path": "macros/generic_tests/fewer_rows_than.sql", "unique_id": "macro.dbt_utils.test_fewer_rows_than", "macro_sql": "{% test fewer_rows_than(model, compare_model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_fewer_rows_than', 'dbt_utils')(model, compare_model, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_fewer_rows_than"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5491588, "supported_languages": null}, "macro.dbt_utils.default__test_fewer_rows_than": {"name": "default__test_fewer_rows_than", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/fewer_rows_than.sql", "original_file_path": "macros/generic_tests/fewer_rows_than.sql", "unique_id": "macro.dbt_utils.default__test_fewer_rows_than", "macro_sql": "{% macro default__test_fewer_rows_than(model, compare_model, group_by_columns) %}\n\n{{ config(fail_calc = 'sum(coalesce(row_count_delta, 0))') }}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set join_gb_cols %}\n {% for c in group_by_columns %}\n and a.{{c}} = b.{{c}}\n {% endfor %}\n {% endset %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n{#-- We must add a fake join key in case additional grouping variables are not provided --#}\n{#-- Redshift does not allow for dynamically created join conditions (e.g. full join on 1 = 1 --#}\n{#-- The same logic is used in equal_rowcount. In case of changes, maintain consistent logic --#}\n{% set group_by_columns = ['id_dbtutils_test_fewer_rows_than'] + group_by_columns %}\n{% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n\n\nwith a as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_fewer_rows_than,\n count(*) as count_our_model \n from {{ model }}\n {{ groupby_gb_cols }}\n\n),\nb as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_fewer_rows_than,\n count(*) as count_comparison_model \n from {{ compare_model }}\n {{ groupby_gb_cols }}\n\n),\ncounts as (\n\n select\n\n {% for c in group_by_columns -%}\n a.{{c}} as {{c}}_a,\n b.{{c}} as {{c}}_b,\n {% endfor %}\n\n count_our_model,\n count_comparison_model\n from a\n full join b on \n a.id_dbtutils_test_fewer_rows_than = b.id_dbtutils_test_fewer_rows_than\n {{ join_gb_cols }}\n\n),\nfinal as (\n\n select *,\n case\n -- fail the test if we have more rows than the reference model and return the row count delta\n when count_our_model > count_comparison_model then (count_our_model - count_comparison_model)\n -- fail the test if they are the same number\n when count_our_model = count_comparison_model then 1\n -- pass the test if the delta is positive (i.e. return the number 0)\n else 0\n end as row_count_delta\n from counts\n\n)\n\nselect * from final\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.550068, "supported_languages": null}, "macro.dbt_utils.test_equal_rowcount": {"name": "test_equal_rowcount", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equal_rowcount.sql", "original_file_path": "macros/generic_tests/equal_rowcount.sql", "unique_id": "macro.dbt_utils.test_equal_rowcount", "macro_sql": "{% test equal_rowcount(model, compare_model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_equal_rowcount', 'dbt_utils')(model, compare_model, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_equal_rowcount"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.550855, "supported_languages": null}, "macro.dbt_utils.default__test_equal_rowcount": {"name": "default__test_equal_rowcount", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equal_rowcount.sql", "original_file_path": "macros/generic_tests/equal_rowcount.sql", "unique_id": "macro.dbt_utils.default__test_equal_rowcount", "macro_sql": "{% macro default__test_equal_rowcount(model, compare_model, group_by_columns) %}\n\n{#-- Needs to be set at parse time, before we return '' below --#}\n{{ config(fail_calc = 'sum(coalesce(diff_count, 0))') }}\n\n{#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n{%- if not execute -%}\n {{ return('') }}\n{% endif %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(', ') + ', ' %}\n {% set join_gb_cols %}\n {% for c in group_by_columns %}\n and a.{{c}} = b.{{c}}\n {% endfor %}\n {% endset %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n{#-- We must add a fake join key in case additional grouping variables are not provided --#}\n{#-- Redshift does not allow for dynamically created join conditions (e.g. full join on 1 = 1 --#}\n{#-- The same logic is used in fewer_rows_than. In case of changes, maintain consistent logic --#}\n{% set group_by_columns = ['id_dbtutils_test_equal_rowcount'] + group_by_columns %}\n{% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n\nwith a as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_equal_rowcount,\n count(*) as count_a \n from {{ model }}\n {{groupby_gb_cols}}\n\n\n),\nb as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_equal_rowcount,\n count(*) as count_b \n from {{ compare_model }}\n {{groupby_gb_cols}}\n\n),\nfinal as (\n\n select\n \n {% for c in group_by_columns -%}\n a.{{c}} as {{c}}_a,\n b.{{c}} as {{c}}_b,\n {% endfor %}\n\n count_a,\n count_b,\n abs(count_a - count_b) as diff_count\n\n from a\n full join b\n on\n a.id_dbtutils_test_equal_rowcount = b.id_dbtutils_test_equal_rowcount\n {{join_gb_cols}}\n\n\n)\n\nselect * from final\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5518441, "supported_languages": null}, "macro.dbt_utils.test_relationships_where": {"name": "test_relationships_where", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/relationships_where.sql", "original_file_path": "macros/generic_tests/relationships_where.sql", "unique_id": "macro.dbt_utils.test_relationships_where", "macro_sql": "{% test relationships_where(model, column_name, to, field, from_condition=\"1=1\", to_condition=\"1=1\") %}\n {{ return(adapter.dispatch('test_relationships_where', 'dbt_utils')(model, column_name, to, field, from_condition, to_condition)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_relationships_where"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.552499, "supported_languages": null}, "macro.dbt_utils.default__test_relationships_where": {"name": "default__test_relationships_where", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/relationships_where.sql", "original_file_path": "macros/generic_tests/relationships_where.sql", "unique_id": "macro.dbt_utils.default__test_relationships_where", "macro_sql": "{% macro default__test_relationships_where(model, column_name, to, field, from_condition=\"1=1\", to_condition=\"1=1\") %}\n\n{# T-SQL has no boolean data type so we use 1=1 which returns TRUE #}\n{# ref https://stackoverflow.com/a/7170753/3842610 #}\n\nwith left_table as (\n\n select\n {{column_name}} as id\n\n from {{model}}\n\n where {{column_name}} is not null\n and {{from_condition}}\n\n),\n\nright_table as (\n\n select\n {{field}} as id\n\n from {{to}}\n\n where {{field}} is not null\n and {{to_condition}}\n\n),\n\nexceptions as (\n\n select\n left_table.id,\n right_table.id as right_id\n\n from left_table\n\n left join right_table\n on left_table.id = right_table.id\n\n where right_table.id is null\n\n)\n\nselect * from exceptions\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5528178, "supported_languages": null}, "macro.dbt_utils.test_recency": {"name": "test_recency", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/recency.sql", "original_file_path": "macros/generic_tests/recency.sql", "unique_id": "macro.dbt_utils.test_recency", "macro_sql": "{% test recency(model, field, datepart, interval, ignore_time_component=False, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_recency', 'dbt_utils')(model, field, datepart, interval, ignore_time_component, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_recency"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5534651, "supported_languages": null}, "macro.dbt_utils.default__test_recency": {"name": "default__test_recency", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/recency.sql", "original_file_path": "macros/generic_tests/recency.sql", "unique_id": "macro.dbt_utils.default__test_recency", "macro_sql": "{% macro default__test_recency(model, field, datepart, interval, ignore_time_component, group_by_columns) %}\n\n{% set threshold = 'cast(' ~ dbt.dateadd(datepart, interval * -1, dbt.current_timestamp()) ~ ' as ' ~ ('date' if ignore_time_component else dbt.type_timestamp()) ~ ')' %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n\nwith recency as (\n\n select \n\n {{ select_gb_cols }}\n {% if ignore_time_component %}\n cast(max({{ field }}) as date) as most_recent\n {%- else %}\n max({{ field }}) as most_recent\n {%- endif %}\n\n from {{ model }}\n\n {{ groupby_gb_cols }}\n\n)\n\nselect\n\n {{ select_gb_cols }}\n most_recent,\n {{ threshold }} as threshold\n\nfrom recency\nwhere most_recent < {{ threshold }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dateadd", "macro.dbt.current_timestamp", "macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5542169, "supported_languages": null}, "macro.dbt_utils.test_not_constant": {"name": "test_not_constant", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_constant.sql", "original_file_path": "macros/generic_tests/not_constant.sql", "unique_id": "macro.dbt_utils.test_not_constant", "macro_sql": "{% test not_constant(model, column_name, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_not_constant', 'dbt_utils')(model, column_name, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_constant"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5546298, "supported_languages": null}, "macro.dbt_utils.default__test_not_constant": {"name": "default__test_not_constant", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_constant.sql", "original_file_path": "macros/generic_tests/not_constant.sql", "unique_id": "macro.dbt_utils.default__test_not_constant", "macro_sql": "{% macro default__test_not_constant(model, column_name, group_by_columns) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n\nselect\n {# In TSQL, subquery aggregate columns need aliases #}\n {# thus: a filler col name, 'filler_column' #}\n {{select_gb_cols}}\n count(distinct {{ column_name }}) as filler_column\n\nfrom {{ model }}\n\n {{groupby_gb_cols}}\n\nhaving count(distinct {{ column_name }}) = 1\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5550451, "supported_languages": null}, "macro.dbt_utils.test_accepted_range": {"name": "test_accepted_range", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/accepted_range.sql", "original_file_path": "macros/generic_tests/accepted_range.sql", "unique_id": "macro.dbt_utils.test_accepted_range", "macro_sql": "{% test accepted_range(model, column_name, min_value=none, max_value=none, inclusive=true) %}\n {{ return(adapter.dispatch('test_accepted_range', 'dbt_utils')(model, column_name, min_value, max_value, inclusive)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_accepted_range"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5556061, "supported_languages": null}, "macro.dbt_utils.default__test_accepted_range": {"name": "default__test_accepted_range", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/accepted_range.sql", "original_file_path": "macros/generic_tests/accepted_range.sql", "unique_id": "macro.dbt_utils.default__test_accepted_range", "macro_sql": "{% macro default__test_accepted_range(model, column_name, min_value=none, max_value=none, inclusive=true) %}\n\nwith meet_condition as(\n select *\n from {{ model }}\n),\n\nvalidation_errors as (\n select *\n from meet_condition\n where\n -- never true, defaults to an empty result set. Exists to ensure any combo of the `or` clauses below succeeds\n 1 = 2\n\n {%- if min_value is not none %}\n -- records with a value >= min_value are permitted. The `not` flips this to find records that don't meet the rule.\n or not {{ column_name }} > {{- \"=\" if inclusive }} {{ min_value }}\n {%- endif %}\n\n {%- if max_value is not none %}\n -- records with a value <= max_value are permitted. The `not` flips this to find records that don't meet the rule.\n or not {{ column_name }} < {{- \"=\" if inclusive }} {{ max_value }}\n {%- endif %}\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.556036, "supported_languages": null}, "macro.dbt_utils.test_not_accepted_values": {"name": "test_not_accepted_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_accepted_values.sql", "original_file_path": "macros/generic_tests/not_accepted_values.sql", "unique_id": "macro.dbt_utils.test_not_accepted_values", "macro_sql": "{% test not_accepted_values(model, column_name, values, quote=True) %}\n {{ return(adapter.dispatch('test_not_accepted_values', 'dbt_utils')(model, column_name, values, quote)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_accepted_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.556522, "supported_languages": null}, "macro.dbt_utils.default__test_not_accepted_values": {"name": "default__test_not_accepted_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_accepted_values.sql", "original_file_path": "macros/generic_tests/not_accepted_values.sql", "unique_id": "macro.dbt_utils.default__test_not_accepted_values", "macro_sql": "{% macro default__test_not_accepted_values(model, column_name, values, quote=True) %}\nwith all_values as (\n\n select distinct\n {{ column_name }} as value_field\n\n from {{ model }}\n\n),\n\nvalidation_errors as (\n\n select\n value_field\n\n from all_values\n where value_field in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n )\n\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5569432, "supported_languages": null}, "macro.dbt_utils.test_at_least_one": {"name": "test_at_least_one", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/at_least_one.sql", "original_file_path": "macros/generic_tests/at_least_one.sql", "unique_id": "macro.dbt_utils.test_at_least_one", "macro_sql": "{% test at_least_one(model, column_name, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_at_least_one', 'dbt_utils')(model, column_name, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_at_least_one"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.557544, "supported_languages": null}, "macro.dbt_utils.default__test_at_least_one": {"name": "default__test_at_least_one", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/at_least_one.sql", "original_file_path": "macros/generic_tests/at_least_one.sql", "unique_id": "macro.dbt_utils.default__test_at_least_one", "macro_sql": "{% macro default__test_at_least_one(model, column_name, group_by_columns) %}\n\n{% set pruned_cols = [column_name] %}\n\n{% if group_by_columns|length() > 0 %}\n\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n {% set pruned_cols = group_by_columns %}\n\n {% if column_name not in pruned_cols %}\n {% do pruned_cols.append(column_name) %}\n {% endif %}\n\n{% endif %}\n\n{% set select_pruned_cols = pruned_cols|join(' ,') %}\n\nselect *\nfrom (\n with pruned_rows as (\n select\n {{ select_pruned_cols }}\n from {{ model }}\n where {{ column_name }} is not null\n limit 1\n )\n select\n {# In TSQL, subquery aggregate columns need aliases #}\n {# thus: a filler col name, 'filler_column' #}\n {{select_gb_cols}}\n count({{ column_name }}) as filler_column\n\n from pruned_rows\n\n {{groupby_gb_cols}}\n\n having count({{ column_name }}) = 0\n\n) validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5582552, "supported_languages": null}, "macro.dbt_utils.test_unique_combination_of_columns": {"name": "test_unique_combination_of_columns", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/unique_combination_of_columns.sql", "original_file_path": "macros/generic_tests/unique_combination_of_columns.sql", "unique_id": "macro.dbt_utils.test_unique_combination_of_columns", "macro_sql": "{% test unique_combination_of_columns(model, combination_of_columns, quote_columns=false) %}\n {{ return(adapter.dispatch('test_unique_combination_of_columns', 'dbt_utils')(model, combination_of_columns, quote_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_unique_combination_of_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.558814, "supported_languages": null}, "macro.dbt_utils.default__test_unique_combination_of_columns": {"name": "default__test_unique_combination_of_columns", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/unique_combination_of_columns.sql", "original_file_path": "macros/generic_tests/unique_combination_of_columns.sql", "unique_id": "macro.dbt_utils.default__test_unique_combination_of_columns", "macro_sql": "{% macro default__test_unique_combination_of_columns(model, combination_of_columns, quote_columns=false) %}\n\n{% if not quote_columns %}\n {%- set column_list=combination_of_columns %}\n{% elif quote_columns %}\n {%- set column_list=[] %}\n {% for column in combination_of_columns -%}\n {% set column_list = column_list.append( adapter.quote(column) ) %}\n {%- endfor %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`quote_columns` argument for unique_combination_of_columns test must be one of [True, False] Got: '\" ~ quote ~\"'.'\"\n ) }}\n{% endif %}\n\n{%- set columns_csv=column_list | join(', ') %}\n\n\nwith validation_errors as (\n\n select\n {{ columns_csv }}\n from {{ model }}\n group by {{ columns_csv }}\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.559395, "supported_languages": null}, "macro.dbt_utils.test_cardinality_equality": {"name": "test_cardinality_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/cardinality_equality.sql", "original_file_path": "macros/generic_tests/cardinality_equality.sql", "unique_id": "macro.dbt_utils.test_cardinality_equality", "macro_sql": "{% test cardinality_equality(model, column_name, to, field) %}\n {{ return(adapter.dispatch('test_cardinality_equality', 'dbt_utils')(model, column_name, to, field)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_cardinality_equality"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.559911, "supported_languages": null}, "macro.dbt_utils.default__test_cardinality_equality": {"name": "default__test_cardinality_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/cardinality_equality.sql", "original_file_path": "macros/generic_tests/cardinality_equality.sql", "unique_id": "macro.dbt_utils.default__test_cardinality_equality", "macro_sql": "{% macro default__test_cardinality_equality(model, column_name, to, field) %}\n\n{# T-SQL does not let you use numbers as aliases for columns #}\n{# Thus, no \"GROUP BY 1\" #}\n\nwith table_a as (\nselect\n {{ column_name }},\n count(*) as num_rows\nfrom {{ model }}\ngroup by {{ column_name }}\n),\n\ntable_b as (\nselect\n {{ field }},\n count(*) as num_rows\nfrom {{ to }}\ngroup by {{ field }}\n),\n\nexcept_a as (\n select *\n from table_a\n {{ dbt.except() }}\n select *\n from table_b\n),\n\nexcept_b as (\n select *\n from table_b\n {{ dbt.except() }}\n select *\n from table_a\n),\n\nunioned as (\n select *\n from except_a\n union all\n select *\n from except_b\n)\n\nselect *\nfrom unioned\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.56022, "supported_languages": null}, "macro.dbt_utils.test_expression_is_true": {"name": "test_expression_is_true", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/expression_is_true.sql", "original_file_path": "macros/generic_tests/expression_is_true.sql", "unique_id": "macro.dbt_utils.test_expression_is_true", "macro_sql": "{% test expression_is_true(model, expression, column_name=None) %}\n {{ return(adapter.dispatch('test_expression_is_true', 'dbt_utils')(model, expression, column_name)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_expression_is_true"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.560582, "supported_languages": null}, "macro.dbt_utils.default__test_expression_is_true": {"name": "default__test_expression_is_true", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/expression_is_true.sql", "original_file_path": "macros/generic_tests/expression_is_true.sql", "unique_id": "macro.dbt_utils.default__test_expression_is_true", "macro_sql": "{% macro default__test_expression_is_true(model, expression, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else \"1\" %}\n\nselect\n {{ column_list }}\nfrom {{ model }}\n{% if column_name is none %}\nwhere not({{ expression }})\n{%- else %}\nwhere not({{ column_name }} {{ expression }})\n{%- endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_store_failures"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.560908, "supported_languages": null}, "macro.dbt_utils.test_not_null_proportion": {"name": "test_not_null_proportion", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_null_proportion.sql", "original_file_path": "macros/generic_tests/not_null_proportion.sql", "unique_id": "macro.dbt_utils.test_not_null_proportion", "macro_sql": "{% macro test_not_null_proportion(model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_not_null_proportion', 'dbt_utils')(model, group_by_columns, **kwargs)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_null_proportion"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.561494, "supported_languages": null}, "macro.dbt_utils.default__test_not_null_proportion": {"name": "default__test_not_null_proportion", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_null_proportion.sql", "original_file_path": "macros/generic_tests/not_null_proportion.sql", "unique_id": "macro.dbt_utils.default__test_not_null_proportion", "macro_sql": "{% macro default__test_not_null_proportion(model, group_by_columns) %}\n\n{% set column_name = kwargs.get('column_name', kwargs.get('arg')) %}\n{% set at_least = kwargs.get('at_least', kwargs.get('arg')) %}\n{% set at_most = kwargs.get('at_most', kwargs.get('arg', 1)) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\nwith validation as (\n select\n {{select_gb_cols}}\n sum(case when {{ column_name }} is null then 0 else 1 end) / cast(count(*) as numeric) as not_null_proportion\n from {{ model }}\n {{groupby_gb_cols}}\n),\nvalidation_errors as (\n select\n {{select_gb_cols}}\n not_null_proportion\n from validation\n where not_null_proportion < {{ at_least }} or not_null_proportion > {{ at_most }}\n)\nselect\n *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.562228, "supported_languages": null}, "macro.dbt_utils.test_sequential_values": {"name": "test_sequential_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/sequential_values.sql", "original_file_path": "macros/generic_tests/sequential_values.sql", "unique_id": "macro.dbt_utils.test_sequential_values", "macro_sql": "{% test sequential_values(model, column_name, interval=1, datepart=None, group_by_columns = []) %}\n\n {{ return(adapter.dispatch('test_sequential_values', 'dbt_utils')(model, column_name, interval, datepart, group_by_columns)) }}\n\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_sequential_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5630379, "supported_languages": null}, "macro.dbt_utils.default__test_sequential_values": {"name": "default__test_sequential_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/sequential_values.sql", "original_file_path": "macros/generic_tests/sequential_values.sql", "unique_id": "macro.dbt_utils.default__test_sequential_values", "macro_sql": "{% macro default__test_sequential_values(model, column_name, interval=1, datepart=None, group_by_columns = []) %}\n\n{% set previous_column_name = \"previous_\" ~ dbt_utils.slugify(column_name) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(',') + ', ' %}\n {% set partition_gb_cols = 'partition by ' + group_by_columns|join(',') %}\n{% endif %}\n\nwith windowed as (\n\n select\n {{ select_gb_cols }}\n {{ column_name }},\n lag({{ column_name }}) over (\n {{partition_gb_cols}}\n order by {{ column_name }}\n ) as {{ previous_column_name }}\n from {{ model }}\n),\n\nvalidation_errors as (\n select\n *\n from windowed\n {% if datepart %}\n where not(cast({{ column_name }} as {{ dbt.type_timestamp() }})= cast({{ dbt.dateadd(datepart, interval, previous_column_name) }} as {{ dbt.type_timestamp() }}))\n {% else %}\n where not({{ column_name }} = {{ previous_column_name }} + {{ interval }})\n {% endif %}\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.slugify", "macro.dbt.type_timestamp", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.563852, "supported_languages": null}, "macro.dbt_utils.test_equality": {"name": "test_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equality.sql", "original_file_path": "macros/generic_tests/equality.sql", "unique_id": "macro.dbt_utils.test_equality", "macro_sql": "{% test equality(model, compare_model, compare_columns=None) %}\n {{ return(adapter.dispatch('test_equality', 'dbt_utils')(model, compare_model, compare_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_equality"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.56452, "supported_languages": null}, "macro.dbt_utils.default__test_equality": {"name": "default__test_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equality.sql", "original_file_path": "macros/generic_tests/equality.sql", "unique_id": "macro.dbt_utils.default__test_equality", "macro_sql": "{% macro default__test_equality(model, compare_model, compare_columns=None) %}\n\n{% set set_diff %}\n count(*) + coalesce(abs(\n sum(case when which_diff = 'a_minus_b' then 1 else 0 end) -\n sum(case when which_diff = 'b_minus_a' then 1 else 0 end)\n ), 0)\n{% endset %}\n\n{#-- Needs to be set at parse time, before we return '' below --#}\n{{ config(fail_calc = set_diff) }}\n\n{#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n{%- if not execute -%}\n {{ return('') }}\n{% endif %}\n\n-- setup\n{%- do dbt_utils._is_relation(model, 'test_equality') -%}\n\n{#-\nIf the compare_cols arg is provided, we can run this test without querying the\ninformation schema\u00a0\u2014 this allows the model to be an ephemeral model\n-#}\n\n{%- if not compare_columns -%}\n {%- do dbt_utils._is_ephemeral(model, 'test_equality') -%}\n {%- set compare_columns = adapter.get_columns_in_relation(model) | map(attribute='quoted') -%}\n{%- endif -%}\n\n{% set compare_cols_csv = compare_columns | join(', ') %}\n\nwith a as (\n\n select * from {{ model }}\n\n),\n\nb as (\n\n select * from {{ compare_model }}\n\n),\n\na_minus_b as (\n\n select {{compare_cols_csv}} from a\n {{ dbt.except() }}\n select {{compare_cols_csv}} from b\n\n),\n\nb_minus_a as (\n\n select {{compare_cols_csv}} from b\n {{ dbt.except() }}\n select {{compare_cols_csv}} from a\n\n),\n\nunioned as (\n\n select 'a_minus_b' as which_diff, a_minus_b.* from a_minus_b\n union all\n select 'b_minus_a' as which_diff, b_minus_a.* from b_minus_a\n\n)\n\nselect * from unioned\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.565322, "supported_languages": null}, "macro.dbt_utils.test_not_empty_string": {"name": "test_not_empty_string", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_empty_string.sql", "original_file_path": "macros/generic_tests/not_empty_string.sql", "unique_id": "macro.dbt_utils.test_not_empty_string", "macro_sql": "{% test not_empty_string(model, column_name, trim_whitespace=true) %}\n\n {{ return(adapter.dispatch('test_not_empty_string', 'dbt_utils')(model, column_name, trim_whitespace)) }}\n\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_empty_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.565774, "supported_languages": null}, "macro.dbt_utils.default__test_not_empty_string": {"name": "default__test_not_empty_string", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_empty_string.sql", "original_file_path": "macros/generic_tests/not_empty_string.sql", "unique_id": "macro.dbt_utils.default__test_not_empty_string", "macro_sql": "{% macro default__test_not_empty_string(model, column_name, trim_whitespace=true) %}\n\n with\n \n all_values as (\n\n select \n\n\n {% if trim_whitespace == true -%}\n\n trim({{ column_name }}) as {{ column_name }}\n\n {%- else -%}\n\n {{ column_name }}\n\n {%- endif %}\n \n from {{ model }}\n\n ),\n\n errors as (\n\n select * from all_values\n where {{ column_name }} = ''\n\n )\n\n select * from errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.566047, "supported_languages": null}, "macro.dbt_utils.test_mutually_exclusive_ranges": {"name": "test_mutually_exclusive_ranges", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/mutually_exclusive_ranges.sql", "original_file_path": "macros/generic_tests/mutually_exclusive_ranges.sql", "unique_id": "macro.dbt_utils.test_mutually_exclusive_ranges", "macro_sql": "{% test mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed', zero_length_range_allowed=False) %}\n {{ return(adapter.dispatch('test_mutually_exclusive_ranges', 'dbt_utils')(model, lower_bound_column, upper_bound_column, partition_by, gaps, zero_length_range_allowed)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_mutually_exclusive_ranges"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.569223, "supported_languages": null}, "macro.dbt_utils.default__test_mutually_exclusive_ranges": {"name": "default__test_mutually_exclusive_ranges", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/mutually_exclusive_ranges.sql", "original_file_path": "macros/generic_tests/mutually_exclusive_ranges.sql", "unique_id": "macro.dbt_utils.default__test_mutually_exclusive_ranges", "macro_sql": "{% macro default__test_mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed', zero_length_range_allowed=False) %}\n{% if gaps == 'not_allowed' %}\n {% set allow_gaps_operator='=' %}\n {% set allow_gaps_operator_in_words='equal_to' %}\n{% elif gaps == 'allowed' %}\n {% set allow_gaps_operator='<=' %}\n {% set allow_gaps_operator_in_words='less_than_or_equal_to' %}\n{% elif gaps == 'required' %}\n {% set allow_gaps_operator='<' %}\n {% set allow_gaps_operator_in_words='less_than' %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`gaps` argument for mutually_exclusive_ranges test must be one of ['not_allowed', 'allowed', 'required'] Got: '\" ~ gaps ~\"'.'\"\n ) }}\n{% endif %}\n{% if not zero_length_range_allowed %}\n {% set allow_zero_length_operator='<' %}\n {% set allow_zero_length_operator_in_words='less_than' %}\n{% elif zero_length_range_allowed %}\n {% set allow_zero_length_operator='<=' %}\n {% set allow_zero_length_operator_in_words='less_than_or_equal_to' %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`zero_length_range_allowed` argument for mutually_exclusive_ranges test must be one of [true, false] Got: '\" ~ zero_length_range_allowed ~\"'.'\"\n ) }}\n{% endif %}\n\n{% set partition_clause=\"partition by \" ~ partition_by if partition_by else '' %}\n\nwith window_functions as (\n\n select\n {% if partition_by %}\n {{ partition_by }} as partition_by_col,\n {% endif %}\n {{ lower_bound_column }} as lower_bound,\n {{ upper_bound_column }} as upper_bound,\n\n lead({{ lower_bound_column }}) over (\n {{ partition_clause }}\n order by {{ lower_bound_column }}, {{ upper_bound_column }}\n ) as next_lower_bound,\n\n row_number() over (\n {{ partition_clause }}\n order by {{ lower_bound_column }} desc, {{ upper_bound_column }} desc\n ) = 1 as is_last_record\n\n from {{ model }}\n\n),\n\ncalc as (\n -- We want to return records where one of our assumptions fails, so we'll use\n -- the `not` function with `and` statements so we can write our assumptions more cleanly\n select\n *,\n\n -- For each record: lower_bound should be < upper_bound.\n -- Coalesce it to return an error on the null case (implicit assumption\n -- these columns are not_null)\n coalesce(\n lower_bound {{ allow_zero_length_operator }} upper_bound,\n false\n ) as lower_bound_{{ allow_zero_length_operator_in_words }}_upper_bound,\n\n -- For each record: upper_bound {{ allow_gaps_operator }} the next lower_bound.\n -- Coalesce it to handle null cases for the last record.\n coalesce(\n upper_bound {{ allow_gaps_operator }} next_lower_bound,\n is_last_record,\n false\n ) as upper_bound_{{ allow_gaps_operator_in_words }}_next_lower_bound\n\n from window_functions\n\n),\n\nvalidation_errors as (\n\n select\n *\n from calc\n\n where not(\n -- THE FOLLOWING SHOULD BE TRUE --\n lower_bound_{{ allow_zero_length_operator_in_words }}_upper_bound\n and upper_bound_{{ allow_gaps_operator_in_words }}_next_lower_bound\n )\n)\n\nselect * from validation_errors\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.570666, "supported_languages": null}, "macro.dbt_utils.pretty_log_format": {"name": "pretty_log_format", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_log_format.sql", "original_file_path": "macros/jinja_helpers/pretty_log_format.sql", "unique_id": "macro.dbt_utils.pretty_log_format", "macro_sql": "{% macro pretty_log_format(message) %}\n {{ return(adapter.dispatch('pretty_log_format', 'dbt_utils')(message)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pretty_log_format"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.570924, "supported_languages": null}, "macro.dbt_utils.default__pretty_log_format": {"name": "default__pretty_log_format", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_log_format.sql", "original_file_path": "macros/jinja_helpers/pretty_log_format.sql", "unique_id": "macro.dbt_utils.default__pretty_log_format", "macro_sql": "{% macro default__pretty_log_format(message) %}\n {{ return( dbt_utils.pretty_time() ~ ' + ' ~ message) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.pretty_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.571077, "supported_languages": null}, "macro.dbt_utils._is_relation": {"name": "_is_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/_is_relation.sql", "original_file_path": "macros/jinja_helpers/_is_relation.sql", "unique_id": "macro.dbt_utils._is_relation", "macro_sql": "{% macro _is_relation(obj, macro) %}\n {%- if not (obj is mapping and obj.get('metadata', {}).get('type', '').endswith('Relation')) -%}\n {%- do exceptions.raise_compiler_error(\"Macro \" ~ macro ~ \" expected a Relation but received the value: \" ~ obj) -%}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.571479, "supported_languages": null}, "macro.dbt_utils.pretty_time": {"name": "pretty_time", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_time.sql", "original_file_path": "macros/jinja_helpers/pretty_time.sql", "unique_id": "macro.dbt_utils.pretty_time", "macro_sql": "{% macro pretty_time(format='%H:%M:%S') %}\n {{ return(adapter.dispatch('pretty_time', 'dbt_utils')(format)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pretty_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.571734, "supported_languages": null}, "macro.dbt_utils.default__pretty_time": {"name": "default__pretty_time", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_time.sql", "original_file_path": "macros/jinja_helpers/pretty_time.sql", "unique_id": "macro.dbt_utils.default__pretty_time", "macro_sql": "{% macro default__pretty_time(format='%H:%M:%S') %}\n {{ return(modules.datetime.datetime.now().strftime(format)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.571913, "supported_languages": null}, "macro.dbt_utils.log_info": {"name": "log_info", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/log_info.sql", "original_file_path": "macros/jinja_helpers/log_info.sql", "unique_id": "macro.dbt_utils.log_info", "macro_sql": "{% macro log_info(message) %}\n {{ return(adapter.dispatch('log_info', 'dbt_utils')(message)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__log_info"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.572143, "supported_languages": null}, "macro.dbt_utils.default__log_info": {"name": "default__log_info", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/log_info.sql", "original_file_path": "macros/jinja_helpers/log_info.sql", "unique_id": "macro.dbt_utils.default__log_info", "macro_sql": "{% macro default__log_info(message) %}\n {{ log(dbt_utils.pretty_log_format(message), info=True) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.pretty_log_format"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.572298, "supported_languages": null}, "macro.dbt_utils.slugify": {"name": "slugify", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/slugify.sql", "original_file_path": "macros/jinja_helpers/slugify.sql", "unique_id": "macro.dbt_utils.slugify", "macro_sql": "{% macro slugify(string) %}\n\n{#- Lower case the string -#}\n{% set string = string | lower %}\n{#- Replace spaces and dashes with underscores -#}\n{% set string = modules.re.sub('[ -]+', '_', string) %}\n{#- Only take letters, numbers, and underscores -#}\n{% set string = modules.re.sub('[^a-z0-9_]+', '', string) %}\n{#- Prepends \"_\" if string begins with a number -#}\n{% set string = modules.re.sub('^[0-9]', '_' + string[0], string) %}\n\n{{ return(string) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5728588, "supported_languages": null}, "macro.dbt_utils._is_ephemeral": {"name": "_is_ephemeral", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/_is_ephemeral.sql", "original_file_path": "macros/jinja_helpers/_is_ephemeral.sql", "unique_id": "macro.dbt_utils._is_ephemeral", "macro_sql": "{% macro _is_ephemeral(obj, macro) %}\n {%- if obj.is_cte -%}\n {% set ephemeral_prefix = api.Relation.add_ephemeral_prefix('') %}\n {% if obj.name.startswith(ephemeral_prefix) %}\n {% set model_name = obj.name[(ephemeral_prefix|length):] %}\n {% else %}\n {% set model_name = obj.name %}\n {%- endif -%}\n {% set error_message %}\nThe `{{ macro }}` macro cannot be used with ephemeral models, as it relies on the information schema.\n\n`{{ model_name }}` is an ephemeral model. Consider making it a view or table instead.\n {% endset %}\n {%- do exceptions.raise_compiler_error(error_message) -%}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.573612, "supported_languages": null}, "macro.dbt_utils.get_intervals_between": {"name": "get_intervals_between", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.get_intervals_between", "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt_utils')(start_date, end_date, datepart)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_intervals_between"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.574247, "supported_languages": null}, "macro.dbt_utils.default__get_intervals_between": {"name": "default__get_intervals_between", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.default__get_intervals_between", "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.574782, "supported_languages": null}, "macro.dbt_utils.date_spine": {"name": "date_spine", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.date_spine", "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt_utils')(datepart, start_date, end_date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.574991, "supported_languages": null}, "macro.dbt_utils.default__date_spine": {"name": "default__date_spine", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.default__date_spine", "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n{# call as follows:\n\ndate_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n) #}\n\n\nwith rawdata as (\n\n {{dbt_utils.generate_series(\n dbt_utils.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n),\n\nall_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n),\n\nfiltered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n)\n\nselect * from filtered\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.generate_series", "macro.dbt_utils.get_intervals_between", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.575319, "supported_languages": null}, "macro.dbt_utils.safe_subtract": {"name": "safe_subtract", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_subtract.sql", "original_file_path": "macros/sql/safe_subtract.sql", "unique_id": "macro.dbt_utils.safe_subtract", "macro_sql": "{%- macro safe_subtract(field_list) -%}\n {{ return(adapter.dispatch('safe_subtract', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_subtract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.575667, "supported_languages": null}, "macro.dbt_utils.default__safe_subtract": {"name": "default__safe_subtract", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_subtract.sql", "original_file_path": "macros/sql/safe_subtract.sql", "unique_id": "macro.dbt_utils.default__safe_subtract", "macro_sql": "\n\n{%- macro default__safe_subtract(field_list) -%}\n\n{%- if field_list is not iterable or field_list is string or field_list is mapping -%}\n\n{%- set error_message = '\nWarning: the `safe_subtract` macro takes a single list argument instead of \\\nstring arguments. The {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.raise_compiler_error(error_message) -%}\n\n{%- endif -%}\n\n{% set fields = [] %}\n\n{%- for field in field_list -%}\n\n {% do fields.append(\"coalesce(\" ~ field ~ \", 0)\") %}\n\n{%- endfor -%}\n\n{{ fields|join(' -\\n ') }}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.576161, "supported_languages": null}, "macro.dbt_utils.nullcheck_table": {"name": "nullcheck_table", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck_table.sql", "original_file_path": "macros/sql/nullcheck_table.sql", "unique_id": "macro.dbt_utils.nullcheck_table", "macro_sql": "{% macro nullcheck_table(relation) %}\n {{ return(adapter.dispatch('nullcheck_table', 'dbt_utils')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__nullcheck_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.576447, "supported_languages": null}, "macro.dbt_utils.default__nullcheck_table": {"name": "default__nullcheck_table", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck_table.sql", "original_file_path": "macros/sql/nullcheck_table.sql", "unique_id": "macro.dbt_utils.default__nullcheck_table", "macro_sql": "{% macro default__nullcheck_table(relation) %}\n\n {%- do dbt_utils._is_relation(relation, 'nullcheck_table') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'nullcheck_table') -%}\n {% set cols = adapter.get_columns_in_relation(relation) %}\n\n select {{ dbt_utils.nullcheck(cols) }}\n from {{relation}}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt_utils.nullcheck"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.576758, "supported_languages": null}, "macro.dbt_utils.get_relations_by_pattern": {"name": "get_relations_by_pattern", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_pattern.sql", "original_file_path": "macros/sql/get_relations_by_pattern.sql", "unique_id": "macro.dbt_utils.get_relations_by_pattern", "macro_sql": "{% macro get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_relations_by_pattern', 'dbt_utils')(schema_pattern, table_pattern, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.577355, "supported_languages": null}, "macro.dbt_utils.default__get_relations_by_pattern": {"name": "default__get_relations_by_pattern", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_pattern.sql", "original_file_path": "macros/sql/get_relations_by_pattern.sql", "unique_id": "macro.dbt_utils.default__get_relations_by_pattern", "macro_sql": "{% macro default__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n {{ dbt_utils.get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude, database) }}\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=database,\n schema=row.table_schema,\n identifier=row.table_name,\n type=row.table_type\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_utils.get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.57821, "supported_languages": null}, "macro.dbt_utils.get_powers_of_two": {"name": "get_powers_of_two", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.get_powers_of_two", "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt_utils')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5789719, "supported_languages": null}, "macro.dbt_utils.default__get_powers_of_two": {"name": "default__get_powers_of_two", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.default__get_powers_of_two", "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5793548, "supported_languages": null}, "macro.dbt_utils.generate_series": {"name": "generate_series", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.generate_series", "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt_utils')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__generate_series"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.57953, "supported_languages": null}, "macro.dbt_utils.default__generate_series": {"name": "default__generate_series", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.default__generate_series", "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt_utils.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5799968, "supported_languages": null}, "macro.dbt_utils.get_relations_by_prefix": {"name": "get_relations_by_prefix", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_prefix.sql", "original_file_path": "macros/sql/get_relations_by_prefix.sql", "unique_id": "macro.dbt_utils.get_relations_by_prefix", "macro_sql": "{% macro get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_relations_by_prefix', 'dbt_utils')(schema, prefix, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_relations_by_prefix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.580597, "supported_languages": null}, "macro.dbt_utils.default__get_relations_by_prefix": {"name": "default__get_relations_by_prefix", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_prefix.sql", "original_file_path": "macros/sql/get_relations_by_prefix.sql", "unique_id": "macro.dbt_utils.default__get_relations_by_prefix", "macro_sql": "{% macro default__get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n {{ dbt_utils.get_tables_by_prefix_sql(schema, prefix, exclude, database) }}\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=database,\n schema=row.table_schema,\n identifier=row.table_name,\n type=row.table_type\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_utils.get_tables_by_prefix_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.581357, "supported_languages": null}, "macro.dbt_utils.get_tables_by_prefix_sql": {"name": "get_tables_by_prefix_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_prefix_sql.sql", "original_file_path": "macros/sql/get_tables_by_prefix_sql.sql", "unique_id": "macro.dbt_utils.get_tables_by_prefix_sql", "macro_sql": "{% macro get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_tables_by_prefix_sql', 'dbt_utils')(schema, prefix, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_tables_by_prefix_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.581727, "supported_languages": null}, "macro.dbt_utils.default__get_tables_by_prefix_sql": {"name": "default__get_tables_by_prefix_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_prefix_sql.sql", "original_file_path": "macros/sql/get_tables_by_prefix_sql.sql", "unique_id": "macro.dbt_utils.default__get_tables_by_prefix_sql", "macro_sql": "{% macro default__get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %}\n\n {{ dbt_utils.get_tables_by_pattern_sql(\n schema_pattern = schema,\n table_pattern = prefix ~ '%',\n exclude = exclude,\n database = database\n ) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.581989, "supported_languages": null}, "macro.dbt_utils.star": {"name": "star", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/star.sql", "original_file_path": "macros/sql/star.sql", "unique_id": "macro.dbt_utils.star", "macro_sql": "{% macro star(from, relation_alias=False, except=[], prefix='', suffix='', quote_identifiers=True) -%}\r\n {{ return(adapter.dispatch('star', 'dbt_utils')(from, relation_alias, except, prefix, suffix, quote_identifiers)) }}\r\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__star"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5830889, "supported_languages": null}, "macro.dbt_utils.default__star": {"name": "default__star", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/star.sql", "original_file_path": "macros/sql/star.sql", "unique_id": "macro.dbt_utils.default__star", "macro_sql": "{% macro default__star(from, relation_alias=False, except=[], prefix='', suffix='', quote_identifiers=True) -%}\r\n {%- do dbt_utils._is_relation(from, 'star') -%}\r\n {%- do dbt_utils._is_ephemeral(from, 'star') -%}\r\n\r\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\r\n {%- if not execute -%}\r\n {% do return('*') %}\r\n {%- endif -%}\r\n\r\n {% set cols = dbt_utils.get_filtered_columns_in_relation(from, except) %}\r\n\r\n {%- if cols|length <= 0 -%}\r\n {% if flags.WHICH == 'compile' %}\r\n {% set response %}\r\n*\r\n/* No columns were returned. Maybe the relation doesn't exist yet \r\nor all columns were excluded. This star is only output during \r\ndbt compile, and exists to keep SQLFluff happy. */\r\n {% endset %}\r\n {% do return(response) %}\r\n {% else %}\r\n {% do return(\"/* no columns returned from star() macro */\") %}\r\n {% endif %}\r\n {%- else -%}\r\n {%- for col in cols %}\r\n {%- if relation_alias %}{{ relation_alias }}.{% else %}{%- endif -%}\r\n {%- if quote_identifiers -%}\r\n {{ adapter.quote(col)|trim }} {%- if prefix!='' or suffix!='' %} as {{ adapter.quote(prefix ~ col ~ suffix)|trim }} {%- endif -%}\r\n {%- else -%}\r\n {{ col|trim }} {%- if prefix!='' or suffix!='' %} as {{ (prefix ~ col ~ suffix)|trim }} {%- endif -%}\r\n {% endif %}\r\n {%- if not loop.last %},{{ '\\n ' }}{%- endif -%}\r\n {%- endfor -%}\r\n {% endif %}\r\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt_utils.get_filtered_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5844202, "supported_languages": null}, "macro.dbt_utils.unpivot": {"name": "unpivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/unpivot.sql", "original_file_path": "macros/sql/unpivot.sql", "unique_id": "macro.dbt_utils.unpivot", "macro_sql": "{% macro unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value') -%}\n {{ return(adapter.dispatch('unpivot', 'dbt_utils')(relation, cast_to, exclude, remove, field_name, value_name)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__unpivot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.585633, "supported_languages": null}, "macro.dbt_utils.default__unpivot": {"name": "default__unpivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/unpivot.sql", "original_file_path": "macros/sql/unpivot.sql", "unique_id": "macro.dbt_utils.default__unpivot", "macro_sql": "{% macro default__unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value') -%}\n\n {% if not relation %}\n {{ exceptions.raise_compiler_error(\"Error: argument `relation` is required for `unpivot` macro.\") }}\n {% endif %}\n\n {%- set exclude = exclude if exclude is not none else [] %}\n {%- set remove = remove if remove is not none else [] %}\n\n {%- set include_cols = [] %}\n\n {%- set table_columns = {} %}\n\n {%- do table_columns.update({relation: []}) %}\n\n {%- do dbt_utils._is_relation(relation, 'unpivot') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'unpivot') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) %}\n\n {%- for col in cols -%}\n {%- if col.column.lower() not in remove|map('lower') and col.column.lower() not in exclude|map('lower') -%}\n {% do include_cols.append(col) %}\n {%- endif %}\n {%- endfor %}\n\n\n {%- for col in include_cols -%}\n select\n {%- for exclude_col in exclude %}\n {{ exclude_col }},\n {%- endfor %}\n\n cast('{{ col.column }}' as {{ dbt.type_string() }}) as {{ field_name }},\n cast( {% if col.data_type == 'boolean' %}\n {{ dbt.cast_bool_to_text(col.column) }}\n {% else %}\n {{ col.column }}\n {% endif %}\n as {{ cast_to }}) as {{ value_name }}\n\n from {{ relation }}\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n {%- endfor -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.type_string", "macro.dbt.cast_bool_to_text"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5870771, "supported_languages": null}, "macro.dbt_utils.safe_divide": {"name": "safe_divide", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_divide.sql", "original_file_path": "macros/sql/safe_divide.sql", "unique_id": "macro.dbt_utils.safe_divide", "macro_sql": "{% macro safe_divide(numerator, denominator) -%}\n {{ return(adapter.dispatch('safe_divide', 'dbt_utils')(numerator, denominator)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_divide"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.587349, "supported_languages": null}, "macro.dbt_utils.default__safe_divide": {"name": "default__safe_divide", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_divide.sql", "original_file_path": "macros/sql/safe_divide.sql", "unique_id": "macro.dbt_utils.default__safe_divide", "macro_sql": "{% macro default__safe_divide(numerator, denominator) %}\n ( {{ numerator }} ) / nullif( ( {{ denominator }} ), 0)\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.587473, "supported_languages": null}, "macro.dbt_utils.union_relations": {"name": "union_relations", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/union.sql", "original_file_path": "macros/sql/union.sql", "unique_id": "macro.dbt_utils.union_relations", "macro_sql": "{%- macro union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation', where=none) -%}\n {{ return(adapter.dispatch('union_relations', 'dbt_utils')(relations, column_override, include, exclude, source_column_name, where)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__union_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.590237, "supported_languages": null}, "macro.dbt_utils.default__union_relations": {"name": "default__union_relations", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/union.sql", "original_file_path": "macros/sql/union.sql", "unique_id": "macro.dbt_utils.default__union_relations", "macro_sql": "\n\n{%- macro default__union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation', where=none) -%}\n\n {%- if exclude and include -%}\n {{ exceptions.raise_compiler_error(\"Both an exclude and include list were provided to the `union` macro. Only one is allowed\") }}\n {%- endif -%}\n\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. -#}\n {%- if not execute %}\n {{ return('') }}\n {% endif -%}\n\n {%- set column_override = column_override if column_override is not none else {} -%}\n\n {%- set relation_columns = {} -%}\n {%- set column_superset = {} -%}\n {%- set all_excludes = [] -%}\n {%- set all_includes = [] -%}\n\n {%- if exclude -%}\n {%- for exc in exclude -%}\n {%- do all_excludes.append(exc | lower) -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- if include -%}\n {%- for inc in include -%}\n {%- do all_includes.append(inc | lower) -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- for relation in relations -%}\n\n {%- do relation_columns.update({relation: []}) -%}\n\n {%- do dbt_utils._is_relation(relation, 'union_relations') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'union_relations') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) -%}\n {%- for col in cols -%}\n\n {#- If an exclude list was provided and the column is in the list, do nothing -#}\n {%- if exclude and col.column | lower in all_excludes -%}\n\n {#- If an include list was provided and the column is not in the list, do nothing -#}\n {%- elif include and col.column | lower not in all_includes -%}\n\n {#- Otherwise add the column to the column superset -#}\n {%- else -%}\n\n {#- update the list of columns in this relation -#}\n {%- do relation_columns[relation].append(col.column) -%}\n\n {%- if col.column in column_superset -%}\n\n {%- set stored = column_superset[col.column] -%}\n {%- if col.is_string() and stored.is_string() and col.string_size() > stored.string_size() -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif %}\n\n {%- else -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif -%}\n\n {%- endif -%}\n\n {%- endfor -%}\n {%- endfor -%}\n\n {%- set ordered_column_names = column_superset.keys() -%}\n {%- set dbt_command = flags.WHICH -%}\n\n\n {% if dbt_command in ['run', 'build'] %}\n {% if (include | length > 0 or exclude | length > 0) and not column_superset.keys() %}\n {%- set relations_string -%}\n {%- for relation in relations -%}\n {{ relation.name }}\n {%- if not loop.last %}, {% endif -%}\n {%- endfor -%}\n {%- endset -%}\n\n {%- set error_message -%}\n There were no columns found to union for relations {{ relations_string }}\n {%- endset -%}\n\n {{ exceptions.raise_compiler_error(error_message) }}\n {%- endif -%}\n {%- endif -%}\n\n {%- for relation in relations %}\n\n (\n select\n\n {%- if source_column_name is not none %}\n cast({{ dbt.string_literal(relation) }} as {{ dbt.type_string() }}) as {{ source_column_name }},\n {%- endif %}\n\n {% for col_name in ordered_column_names -%}\n\n {%- set col = column_superset[col_name] %}\n {%- set col_type = column_override.get(col.column, col.data_type) %}\n {%- set col_name = adapter.quote(col_name) if col_name in relation_columns[relation] else 'null' %}\n cast({{ col_name }} as {{ col_type }}) as {{ col.quoted }} {% if not loop.last %},{% endif -%}\n\n {%- endfor %}\n\n from {{ relation }}\n\n {% if where -%}\n where {{ where }}\n {%- endif %}\n )\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n\n {%- endfor -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.string_literal", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.593363, "supported_languages": null}, "macro.dbt_utils.group_by": {"name": "group_by", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/groupby.sql", "original_file_path": "macros/sql/groupby.sql", "unique_id": "macro.dbt_utils.group_by", "macro_sql": "{%- macro group_by(n) -%}\n {{ return(adapter.dispatch('group_by', 'dbt_utils')(n)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__group_by"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5936482, "supported_languages": null}, "macro.dbt_utils.default__group_by": {"name": "default__group_by", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/groupby.sql", "original_file_path": "macros/sql/groupby.sql", "unique_id": "macro.dbt_utils.default__group_by", "macro_sql": "\n\n{%- macro default__group_by(n) -%}\n\n group by {% for i in range(1, n + 1) -%}\n {{ i }}{{ ',' if not loop.last }} \n {%- endfor -%}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.593876, "supported_languages": null}, "macro.dbt_utils.deduplicate": {"name": "deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.deduplicate", "macro_sql": "{%- macro deduplicate(relation, partition_by, order_by) -%}\n {{ return(adapter.dispatch('deduplicate', 'dbt_utils')(relation, partition_by, order_by)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.postgres__deduplicate"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.594594, "supported_languages": null}, "macro.dbt_utils.default__deduplicate": {"name": "default__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.default__deduplicate", "macro_sql": "\n\n{%- macro default__deduplicate(relation, partition_by, order_by) -%}\n\n with row_numbered as (\n select\n _inner.*,\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) as rn\n from {{ relation }} as _inner\n )\n\n select\n distinct data.*\n from {{ relation }} as data\n {#\n -- Not all DBs will support natural joins but the ones that do include:\n -- Oracle, MySQL, SQLite, Redshift, Teradata, Materialize, Databricks\n -- Apache Spark, SingleStore, Vertica\n -- Those that do not appear to support natural joins include:\n -- SQLServer, Trino, Presto, Rockset, Athena\n #}\n natural join row_numbered\n where row_numbered.rn = 1\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5947928, "supported_languages": null}, "macro.dbt_utils.redshift__deduplicate": {"name": "redshift__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.redshift__deduplicate", "macro_sql": "{% macro redshift__deduplicate(relation, partition_by, order_by) -%}\n\n {{ return(dbt_utils.default__deduplicate(relation, partition_by, order_by=order_by)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__deduplicate"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5949812, "supported_languages": null}, "macro.dbt_utils.postgres__deduplicate": {"name": "postgres__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.postgres__deduplicate", "macro_sql": "\n{%- macro postgres__deduplicate(relation, partition_by, order_by) -%}\n\n select\n distinct on ({{ partition_by }}) *\n from {{ relation }}\n order by {{ partition_by }}{{ ',' ~ order_by }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.595159, "supported_languages": null}, "macro.dbt_utils.snowflake__deduplicate": {"name": "snowflake__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.snowflake__deduplicate", "macro_sql": "\n{%- macro snowflake__deduplicate(relation, partition_by, order_by) -%}\n\n select *\n from {{ relation }}\n qualify\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) = 1\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.595312, "supported_languages": null}, "macro.dbt_utils.bigquery__deduplicate": {"name": "bigquery__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.bigquery__deduplicate", "macro_sql": "\n{%- macro bigquery__deduplicate(relation, partition_by, order_by) -%}\n\n select unique.*\n from (\n select\n array_agg (\n original\n order by {{ order_by }}\n limit 1\n )[offset(0)] unique\n from {{ relation }} original\n group by {{ partition_by }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5954711, "supported_languages": null}, "macro.dbt_utils.surrogate_key": {"name": "surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/surrogate_key.sql", "original_file_path": "macros/sql/surrogate_key.sql", "unique_id": "macro.dbt_utils.surrogate_key", "macro_sql": "{%- macro surrogate_key(field_list) -%}\n {% set frustrating_jinja_feature = varargs %}\n {{ return(adapter.dispatch('surrogate_key', 'dbt_utils')(field_list, *varargs)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__surrogate_key"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.595823, "supported_languages": null}, "macro.dbt_utils.default__surrogate_key": {"name": "default__surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/surrogate_key.sql", "original_file_path": "macros/sql/surrogate_key.sql", "unique_id": "macro.dbt_utils.default__surrogate_key", "macro_sql": "\n\n{%- macro default__surrogate_key(field_list) -%}\n\n{%- set error_message = '\nWarning: `dbt_utils.surrogate_key` has been replaced by \\\n`dbt_utils.generate_surrogate_key`. The new macro treats null values \\\ndifferently to empty strings. To restore the behaviour of the original \\\nmacro, add a global variable in dbt_project.yml called \\\n`surrogate_key_treat_nulls_as_empty_strings` to your \\\ndbt_project.yml file with a value of True. \\\nThe {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.raise_compiler_error(error_message) -%}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.596044, "supported_languages": null}, "macro.dbt_utils.safe_add": {"name": "safe_add", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_add.sql", "original_file_path": "macros/sql/safe_add.sql", "unique_id": "macro.dbt_utils.safe_add", "macro_sql": "{%- macro safe_add(field_list) -%}\n {{ return(adapter.dispatch('safe_add', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_add"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5963871, "supported_languages": null}, "macro.dbt_utils.default__safe_add": {"name": "default__safe_add", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_add.sql", "original_file_path": "macros/sql/safe_add.sql", "unique_id": "macro.dbt_utils.default__safe_add", "macro_sql": "\n\n{%- macro default__safe_add(field_list) -%}\n\n{%- if field_list is not iterable or field_list is string or field_list is mapping -%}\n\n{%- set error_message = '\nWarning: the `safe_add` macro now takes a single list argument instead of \\\nstring arguments. The {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.warn(error_message) -%}\n\n{%- endif -%}\n\n{% set fields = [] %}\n\n{%- for field in field_list -%}\n\n {% do fields.append(\"coalesce(\" ~ field ~ \", 0)\") %}\n\n{%- endfor -%}\n\n{{ fields|join(' +\\n ') }}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5968719, "supported_languages": null}, "macro.dbt_utils.nullcheck": {"name": "nullcheck", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck.sql", "original_file_path": "macros/sql/nullcheck.sql", "unique_id": "macro.dbt_utils.nullcheck", "macro_sql": "{% macro nullcheck(cols) %}\n {{ return(adapter.dispatch('nullcheck', 'dbt_utils')(cols)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__nullcheck"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5971751, "supported_languages": null}, "macro.dbt_utils.default__nullcheck": {"name": "default__nullcheck", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck.sql", "original_file_path": "macros/sql/nullcheck.sql", "unique_id": "macro.dbt_utils.default__nullcheck", "macro_sql": "{% macro default__nullcheck(cols) %}\n{%- for col in cols %}\n\n {% if col.is_string() -%}\n\n nullif({{col.name}},'') as {{col.name}}\n\n {%- else -%}\n\n {{col.name}}\n\n {%- endif -%}\n\n{%- if not loop.last -%} , {%- endif -%}\n\n{%- endfor -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.597478, "supported_languages": null}, "macro.dbt_utils.get_tables_by_pattern_sql": {"name": "get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.get_tables_by_pattern_sql", "macro_sql": "{% macro get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_tables_by_pattern_sql', 'dbt_utils')\n (schema_pattern, table_pattern, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5989592, "supported_languages": null}, "macro.dbt_utils.default__get_tables_by_pattern_sql": {"name": "default__get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.default__get_tables_by_pattern_sql", "macro_sql": "{% macro default__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n select distinct\n table_schema as {{ adapter.quote('table_schema') }},\n table_name as {{ adapter.quote('table_name') }},\n {{ dbt_utils.get_table_types_sql() }}\n from {{ database }}.information_schema.tables\n where table_schema ilike '{{ schema_pattern }}'\n and table_name ilike '{{ table_pattern }}'\n and table_name not ilike '{{ exclude }}'\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.5992918, "supported_languages": null}, "macro.dbt_utils.bigquery__get_tables_by_pattern_sql": {"name": "bigquery__get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.bigquery__get_tables_by_pattern_sql", "macro_sql": "{% macro bigquery__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {% if '%' in schema_pattern %}\n {% set schemata=dbt_utils._bigquery__get_matching_schemata(schema_pattern, database) %}\n {% else %}\n {% set schemata=[schema_pattern] %}\n {% endif %}\n\n {% set sql %}\n {% for schema in schemata %}\n select distinct\n table_schema,\n table_name,\n {{ dbt_utils.get_table_types_sql() }}\n\n from {{ adapter.quote(database) }}.{{ schema }}.INFORMATION_SCHEMA.TABLES\n where lower(table_name) like lower ('{{ table_pattern }}')\n and lower(table_name) not like lower ('{{ exclude }}')\n\n {% if not loop.last %} union all {% endif %}\n\n {% endfor %}\n {% endset %}\n\n {{ return(sql) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._bigquery__get_matching_schemata", "macro.dbt_utils.get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.60001, "supported_languages": null}, "macro.dbt_utils._bigquery__get_matching_schemata": {"name": "_bigquery__get_matching_schemata", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils._bigquery__get_matching_schemata", "macro_sql": "{% macro _bigquery__get_matching_schemata(schema_pattern, database) %}\n {% if execute %}\n\n {% set sql %}\n select schema_name from {{ adapter.quote(database) }}.INFORMATION_SCHEMA.SCHEMATA\n where lower(schema_name) like lower('{{ schema_pattern }}')\n {% endset %}\n\n {% set results=run_query(sql) %}\n\n {% set schemata=results.columns['schema_name'].values() %}\n\n {{ return(schemata) }}\n\n {% else %}\n\n {{ return([]) }}\n\n {% endif %}\n\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.600461, "supported_languages": null}, "macro.dbt_utils.get_column_values": {"name": "get_column_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_column_values.sql", "original_file_path": "macros/sql/get_column_values.sql", "unique_id": "macro.dbt_utils.get_column_values", "macro_sql": "{% macro get_column_values(table, column, order_by='count(*) desc', max_records=none, default=none, where=none) -%}\n {{ return(adapter.dispatch('get_column_values', 'dbt_utils')(table, column, order_by, max_records, default, where)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_column_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.601463, "supported_languages": null}, "macro.dbt_utils.default__get_column_values": {"name": "default__get_column_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_column_values.sql", "original_file_path": "macros/sql/get_column_values.sql", "unique_id": "macro.dbt_utils.default__get_column_values", "macro_sql": "{% macro default__get_column_values(table, column, order_by='count(*) desc', max_records=none, default=none, where=none) -%}\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n {%- if not execute -%}\n {% set default = [] if not default %}\n {{ return(default) }}\n {% endif %}\n\n {%- do dbt_utils._is_ephemeral(table, 'get_column_values') -%}\n\n {# Not all relations are tables. Renaming for internal clarity without breaking functionality for anyone using named arguments #}\n {# TODO: Change the method signature in a future 0.x.0 release #}\n {%- set target_relation = table -%}\n\n {# adapter.load_relation is a convenience wrapper to avoid building a Relation when we already have one #}\n {% set relation_exists = (load_relation(target_relation)) is not none %}\n\n {%- call statement('get_column_values', fetch_result=true) %}\n\n {%- if not relation_exists and default is none -%}\n\n {{ exceptions.raise_compiler_error(\"In get_column_values(): relation \" ~ target_relation ~ \" does not exist and no default value was provided.\") }}\n\n {%- elif not relation_exists and default is not none -%}\n\n {{ log(\"Relation \" ~ target_relation ~ \" does not exist. Returning the default value: \" ~ default) }}\n\n {{ return(default) }}\n\n {%- else -%}\n\n\n select\n {{ column }} as value\n\n from {{ target_relation }}\n\n {% if where is not none %}\n where {{ where }}\n {% endif %}\n\n group by {{ column }}\n order by {{ order_by }}\n\n {% if max_records is not none %}\n limit {{ max_records }}\n {% endif %}\n\n {% endif %}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_column_values') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values) }}\n {%- else -%}\n {{ return(default) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_ephemeral", "macro.dbt.load_relation", "macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6028109, "supported_languages": null}, "macro.dbt_utils.pivot": {"name": "pivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/pivot.sql", "original_file_path": "macros/sql/pivot.sql", "unique_id": "macro.dbt_utils.pivot", "macro_sql": "{% macro pivot(column,\n values,\n alias=True,\n agg='sum',\n cmp='=',\n prefix='',\n suffix='',\n then_value=1,\n else_value=0,\n quote_identifiers=True,\n distinct=False) %}\n {{ return(adapter.dispatch('pivot', 'dbt_utils')(column, values, alias, agg, cmp, prefix, suffix, then_value, else_value, quote_identifiers, distinct)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pivot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6037529, "supported_languages": null}, "macro.dbt_utils.default__pivot": {"name": "default__pivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/pivot.sql", "original_file_path": "macros/sql/pivot.sql", "unique_id": "macro.dbt_utils.default__pivot", "macro_sql": "{% macro default__pivot(column,\n values,\n alias=True,\n agg='sum',\n cmp='=',\n prefix='',\n suffix='',\n then_value=1,\n else_value=0,\n quote_identifiers=True,\n distinct=False) %}\n {% for value in values %}\n {{ agg }}(\n {% if distinct %} distinct {% endif %}\n case\n when {{ column }} {{ cmp }} '{{ dbt.escape_single_quotes(value) }}'\n then {{ then_value }}\n else {{ else_value }}\n end\n )\n {% if alias %}\n {% if quote_identifiers %}\n as {{ adapter.quote(prefix ~ value ~ suffix) }}\n {% else %}\n as {{ dbt_utils.slugify(prefix ~ value ~ suffix) }}\n {% endif %}\n {% endif %}\n {% if not loop.last %},{% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.escape_single_quotes", "macro.dbt_utils.slugify"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.604484, "supported_languages": null}, "macro.dbt_utils.get_filtered_columns_in_relation": {"name": "get_filtered_columns_in_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_filtered_columns_in_relation.sql", "original_file_path": "macros/sql/get_filtered_columns_in_relation.sql", "unique_id": "macro.dbt_utils.get_filtered_columns_in_relation", "macro_sql": "{% macro get_filtered_columns_in_relation(from, except=[]) -%}\n {{ return(adapter.dispatch('get_filtered_columns_in_relation', 'dbt_utils')(from, except)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_filtered_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.604907, "supported_languages": null}, "macro.dbt_utils.default__get_filtered_columns_in_relation": {"name": "default__get_filtered_columns_in_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_filtered_columns_in_relation.sql", "original_file_path": "macros/sql/get_filtered_columns_in_relation.sql", "unique_id": "macro.dbt_utils.default__get_filtered_columns_in_relation", "macro_sql": "{% macro default__get_filtered_columns_in_relation(from, except=[]) -%}\n {%- do dbt_utils._is_relation(from, 'get_filtered_columns_in_relation') -%}\n {%- do dbt_utils._is_ephemeral(from, 'get_filtered_columns_in_relation') -%}\n\n {# -- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n {%- if not execute -%}\n {{ return('') }}\n {% endif %}\n\n {%- set include_cols = [] %}\n {%- set cols = adapter.get_columns_in_relation(from) -%}\n {%- set except = except | map(\"lower\") | list %}\n {%- for col in cols -%}\n {%- if col.column|lower not in except -%}\n {% do include_cols.append(col.column) %}\n {%- endif %}\n {%- endfor %}\n\n {{ return(include_cols) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.605588, "supported_languages": null}, "macro.dbt_utils.width_bucket": {"name": "width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.width_bucket", "macro_sql": "{% macro width_bucket(expr, min_value, max_value, num_buckets) %}\n {{ return(adapter.dispatch('width_bucket', 'dbt_utils') (expr, min_value, max_value, num_buckets)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__width_bucket"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6063292, "supported_languages": null}, "macro.dbt_utils.default__width_bucket": {"name": "default__width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.default__width_bucket", "macro_sql": "{% macro default__width_bucket(expr, min_value, max_value, num_buckets) -%}\n\n {% set bin_size -%}\n (( {{ max_value }} - {{ min_value }} ) / {{ num_buckets }} )\n {%- endset %}\n (\n -- to break ties when the amount is eaxtly at the bucket egde\n case\n when\n mod(\n {{ dbt.safe_cast(expr, dbt.type_numeric() ) }},\n {{ dbt.safe_cast(bin_size, dbt.type_numeric() ) }}\n ) = 0\n then 1\n else 0\n end\n ) +\n -- Anything over max_value goes the N+1 bucket\n least(\n ceil(\n ({{ expr }} - {{ min_value }})/{{ bin_size }}\n ),\n {{ num_buckets }} + 1\n )\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.safe_cast", "macro.dbt.type_numeric"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.606754, "supported_languages": null}, "macro.dbt_utils.snowflake__width_bucket": {"name": "snowflake__width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.snowflake__width_bucket", "macro_sql": "{% macro snowflake__width_bucket(expr, min_value, max_value, num_buckets) %}\n width_bucket({{ expr }}, {{ min_value }}, {{ max_value }}, {{ num_buckets }} )\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6069288, "supported_languages": null}, "macro.dbt_utils.get_query_results_as_dict": {"name": "get_query_results_as_dict", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_query_results_as_dict.sql", "original_file_path": "macros/sql/get_query_results_as_dict.sql", "unique_id": "macro.dbt_utils.get_query_results_as_dict", "macro_sql": "{% macro get_query_results_as_dict(query) %}\n {{ return(adapter.dispatch('get_query_results_as_dict', 'dbt_utils')(query)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_query_results_as_dict"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.607286, "supported_languages": null}, "macro.dbt_utils.default__get_query_results_as_dict": {"name": "default__get_query_results_as_dict", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_query_results_as_dict.sql", "original_file_path": "macros/sql/get_query_results_as_dict.sql", "unique_id": "macro.dbt_utils.default__get_query_results_as_dict", "macro_sql": "{% macro default__get_query_results_as_dict(query) %}\n\n{# This macro returns a dictionary of the form {column_name: (tuple_of_results)} #}\n\n {%- call statement('get_query_results', fetch_result=True,auto_begin=false) -%}\n\n {{ query }}\n\n {%- endcall -%}\n\n {% set sql_results={} %}\n\n {%- if execute -%}\n {% set sql_results_table = load_result('get_query_results').table.columns %}\n {% for column_name, column in sql_results_table.items() %}\n {% do sql_results.update({column_name: column.values()}) %}\n {% endfor %}\n {%- endif -%}\n\n {{ return(sql_results) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.607818, "supported_languages": null}, "macro.dbt_utils.generate_surrogate_key": {"name": "generate_surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_surrogate_key.sql", "original_file_path": "macros/sql/generate_surrogate_key.sql", "unique_id": "macro.dbt_utils.generate_surrogate_key", "macro_sql": "{%- macro generate_surrogate_key(field_list) -%}\n {{ return(adapter.dispatch('generate_surrogate_key', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__generate_surrogate_key"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.608226, "supported_languages": null}, "macro.dbt_utils.default__generate_surrogate_key": {"name": "default__generate_surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_surrogate_key.sql", "original_file_path": "macros/sql/generate_surrogate_key.sql", "unique_id": "macro.dbt_utils.default__generate_surrogate_key", "macro_sql": "\n\n{%- macro default__generate_surrogate_key(field_list) -%}\n\n{%- if var('surrogate_key_treat_nulls_as_empty_strings', False) -%}\n {%- set default_null_value = \"\" -%}\n{%- else -%}\n {%- set default_null_value = '_dbt_utils_surrogate_key_null_' -%}\n{%- endif -%}\n\n{%- set fields = [] -%}\n\n{%- for field in field_list -%}\n\n {%- do fields.append(\n \"coalesce(cast(\" ~ field ~ \" as \" ~ dbt.type_string() ~ \"), '\" ~ default_null_value ~\"')\"\n ) -%}\n\n {%- if not loop.last %}\n {%- do fields.append(\"'-'\") -%}\n {%- endif -%}\n\n{%- endfor -%}\n\n{{ dbt.hash(dbt.concat(fields)) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.hash", "macro.dbt.concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.608791, "supported_languages": null}, "macro.dbt_utils.get_table_types_sql": {"name": "get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.get_table_types_sql", "macro_sql": "{%- macro get_table_types_sql() -%}\n {{ return(adapter.dispatch('get_table_types_sql', 'dbt_utils')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_utils.postgres__get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.609257, "supported_languages": null}, "macro.dbt_utils.default__get_table_types_sql": {"name": "default__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.default__get_table_types_sql", "macro_sql": "{% macro default__get_table_types_sql() %}\n case table_type\n when 'BASE TABLE' then 'table'\n when 'EXTERNAL TABLE' then 'external'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.609385, "supported_languages": null}, "macro.dbt_utils.postgres__get_table_types_sql": {"name": "postgres__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.postgres__get_table_types_sql", "macro_sql": "{% macro postgres__get_table_types_sql() %}\n case table_type\n when 'BASE TABLE' then 'table'\n when 'FOREIGN' then 'external'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6095092, "supported_languages": null}, "macro.dbt_utils.databricks__get_table_types_sql": {"name": "databricks__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.databricks__get_table_types_sql", "macro_sql": "{% macro databricks__get_table_types_sql() %}\n case table_type\n when 'MANAGED' then 'table'\n when 'BASE TABLE' then 'table'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.609635, "supported_languages": null}, "macro.dbt_utils.get_single_value": {"name": "get_single_value", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_single_value.sql", "original_file_path": "macros/sql/get_single_value.sql", "unique_id": "macro.dbt_utils.get_single_value", "macro_sql": "{% macro get_single_value(query, default=none) %}\n {{ return(adapter.dispatch('get_single_value', 'dbt_utils')(query, default)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_single_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.610092, "supported_languages": null}, "macro.dbt_utils.default__get_single_value": {"name": "default__get_single_value", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_single_value.sql", "original_file_path": "macros/sql/get_single_value.sql", "unique_id": "macro.dbt_utils.default__get_single_value", "macro_sql": "{% macro default__get_single_value(query, default) %}\n\n{# This macro returns the (0, 0) record in a query, i.e. the first row of the first column #}\n\n {%- call statement('get_query_result', fetch_result=True, auto_begin=false) -%}\n\n {{ query }}\n\n {%- endcall -%}\n\n {%- if execute -%}\n\n {% set r = load_result('get_query_result').table.columns[0].values() %}\n {% if r | length == 0 %}\n {% do print('Query `' ~ query ~ '` returned no rows. Using the default value: ' ~ default) %}\n {% set sql_result = default %}\n {% else %}\n {% set sql_result = r[0] %}\n {% endif %}\n \n {%- else -%}\n \n {% set sql_result = default %}\n \n {%- endif -%}\n\n {% do return(sql_result) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.610829, "supported_languages": null}, "macro.dbt_utils.degrees_to_radians": {"name": "degrees_to_radians", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.degrees_to_radians", "macro_sql": "{% macro degrees_to_radians(degrees) -%}\n acos(-1) * {{degrees}} / 180\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.611802, "supported_languages": null}, "macro.dbt_utils.haversine_distance": {"name": "haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.haversine_distance", "macro_sql": "{% macro haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n {{ return(adapter.dispatch('haversine_distance', 'dbt_utils')(lat1,lon1,lat2,lon2,unit)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__haversine_distance"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.612057, "supported_languages": null}, "macro.dbt_utils.default__haversine_distance": {"name": "default__haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.default__haversine_distance", "macro_sql": "{% macro default__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n{%- if unit == 'mi' %}\n {% set conversion_rate = 1 %}\n{% elif unit == 'km' %}\n {% set conversion_rate = 1.60934 %}\n{% else %}\n {{ exceptions.raise_compiler_error(\"unit input must be one of 'mi' or 'km'. Got \" ~ unit) }}\n{% endif %}\n\n 2 * 3961 * asin(sqrt(power((sin(radians(({{ lat2 }} - {{ lat1 }}) / 2))), 2) +\n cos(radians({{lat1}})) * cos(radians({{lat2}})) *\n power((sin(radians(({{ lon2 }} - {{ lon1 }}) / 2))), 2))) * {{ conversion_rate }}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.612561, "supported_languages": null}, "macro.dbt_utils.bigquery__haversine_distance": {"name": "bigquery__haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.bigquery__haversine_distance", "macro_sql": "{% macro bigquery__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n{% set radians_lat1 = dbt_utils.degrees_to_radians(lat1) %}\n{% set radians_lat2 = dbt_utils.degrees_to_radians(lat2) %}\n{% set radians_lon1 = dbt_utils.degrees_to_radians(lon1) %}\n{% set radians_lon2 = dbt_utils.degrees_to_radians(lon2) %}\n{%- if unit == 'mi' %}\n {% set conversion_rate = 1 %}\n{% elif unit == 'km' %}\n {% set conversion_rate = 1.60934 %}\n{% else %}\n {{ exceptions.raise_compiler_error(\"unit input must be one of 'mi' or 'km'. Got \" ~ unit) }}\n{% endif %}\n 2 * 3961 * asin(sqrt(power(sin(({{ radians_lat2 }} - {{ radians_lat1 }}) / 2), 2) +\n cos({{ radians_lat1 }}) * cos({{ radians_lat2 }}) *\n power(sin(({{ radians_lon2 }} - {{ radians_lon1 }}) / 2), 2))) * {{ conversion_rate }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.degrees_to_radians"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.61328, "supported_languages": null}, "macro.spark_utils.get_tables": {"name": "get_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_tables", "macro_sql": "{% macro get_tables(table_regex_pattern='.*') %}\n\n {% set tables = [] %}\n {% for database in spark__list_schemas('not_used') %}\n {% for table in spark__list_relations_without_caching(database[0]) %}\n {% set db_tablename = database[0] ~ \".\" ~ table[1] %}\n {% set is_match = modules.re.match(table_regex_pattern, db_tablename) %}\n {% if is_match %}\n {% call statement('table_detail', fetch_result=True) -%}\n describe extended {{ db_tablename }}\n {% endcall %}\n\n {% set table_type = load_result('table_detail').table|reverse|selectattr(0, 'in', ('type', 'TYPE', 'Type'))|first %}\n {% if table_type[1]|lower != 'view' %}\n {{ tables.append(db_tablename) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n {% endfor %}\n {{ return(tables) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.617964, "supported_languages": null}, "macro.spark_utils.get_delta_tables": {"name": "get_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_delta_tables", "macro_sql": "{% macro get_delta_tables(table_regex_pattern='.*') %}\n\n {% set delta_tables = [] %}\n {% for db_tablename in get_tables(table_regex_pattern) %}\n {% call statement('table_detail', fetch_result=True) -%}\n describe extended {{ db_tablename }}\n {% endcall %}\n\n {% set table_type = load_result('table_detail').table|reverse|selectattr(0, 'in', ('provider', 'PROVIDER', 'Provider'))|first %}\n {% if table_type[1]|lower == 'delta' %}\n {{ delta_tables.append(db_tablename) }}\n {% endif %}\n {% endfor %}\n {{ return(delta_tables) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_tables", "macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6186008, "supported_languages": null}, "macro.spark_utils.get_statistic_columns": {"name": "get_statistic_columns", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_statistic_columns", "macro_sql": "{% macro get_statistic_columns(table) %}\n\n {% call statement('input_columns', fetch_result=True) %}\n SHOW COLUMNS IN {{ table }}\n {% endcall %}\n {% set input_columns = load_result('input_columns').table %}\n\n {% set output_columns = [] %}\n {% for column in input_columns %}\n {% call statement('column_information', fetch_result=True) %}\n DESCRIBE TABLE {{ table }} `{{ column[0] }}`\n {% endcall %}\n {% if not load_result('column_information').table[1][1].startswith('struct') and not load_result('column_information').table[1][1].startswith('array') %}\n {{ output_columns.append('`' ~ column[0] ~ '`') }}\n {% endif %}\n {% endfor %}\n {{ return(output_columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6194, "supported_languages": null}, "macro.spark_utils.spark_optimize_delta_tables": {"name": "spark_optimize_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_optimize_delta_tables", "macro_sql": "{% macro spark_optimize_delta_tables(table_regex_pattern='.*') %}\n\n {% for table in get_delta_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Optimizing \" ~ table) }}\n {% do run_query(\"optimize \" ~ table) %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_delta_tables", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6200478, "supported_languages": null}, "macro.spark_utils.spark_vacuum_delta_tables": {"name": "spark_vacuum_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_vacuum_delta_tables", "macro_sql": "{% macro spark_vacuum_delta_tables(table_regex_pattern='.*') %}\n\n {% for table in get_delta_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Vacuuming \" ~ table) }}\n {% do run_query(\"vacuum \" ~ table) %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_delta_tables", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.620694, "supported_languages": null}, "macro.spark_utils.spark_analyze_tables": {"name": "spark_analyze_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_analyze_tables", "macro_sql": "{% macro spark_analyze_tables(table_regex_pattern='.*') %}\n\n {% for table in get_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set columns = get_statistic_columns(table) | join(',') %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Analyzing \" ~ table) }}\n {% if columns != '' %}\n {% do run_query(\"analyze table \" ~ table ~ \" compute statistics for columns \" ~ columns) %}\n {% endif %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_tables", "macro.spark_utils.get_statistic_columns", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.621571, "supported_languages": null}, "macro.spark_utils.spark__concat": {"name": "spark__concat", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/concat.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/concat.sql", "unique_id": "macro.spark_utils.spark__concat", "macro_sql": "{% macro spark__concat(fields) -%}\n concat({{ fields|join(', ') }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6217449, "supported_languages": null}, "macro.spark_utils.spark__type_numeric": {"name": "spark__type_numeric", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/datatypes.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/datatypes.sql", "unique_id": "macro.spark_utils.spark__type_numeric", "macro_sql": "{% macro spark__type_numeric() %}\n decimal(28, 6)\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.621846, "supported_languages": null}, "macro.spark_utils.spark__dateadd": {"name": "spark__dateadd", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/dateadd.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/dateadd.sql", "unique_id": "macro.spark_utils.spark__dateadd", "macro_sql": "{% macro spark__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n {%- set clock_component -%}\n {# make sure the dates + timestamps are real, otherwise raise an error asap #}\n to_unix_timestamp({{ spark_utils.assert_not_null('to_timestamp', from_date_or_timestamp) }})\n - to_unix_timestamp({{ spark_utils.assert_not_null('date', from_date_or_timestamp) }})\n {%- endset -%}\n\n {%- if datepart in ['day', 'week'] -%}\n \n {%- set multiplier = 7 if datepart == 'week' else 1 -%}\n\n to_timestamp(\n to_unix_timestamp(\n date_add(\n {{ spark_utils.assert_not_null('date', from_date_or_timestamp) }},\n cast({{interval}} * {{multiplier}} as int)\n )\n ) + {{clock_component}}\n )\n\n {%- elif datepart in ['month', 'quarter', 'year'] -%}\n \n {%- set multiplier -%} \n {%- if datepart == 'month' -%} 1\n {%- elif datepart == 'quarter' -%} 3\n {%- elif datepart == 'year' -%} 12\n {%- endif -%}\n {%- endset -%}\n\n to_timestamp(\n to_unix_timestamp(\n add_months(\n {{ spark_utils.assert_not_null('date', from_date_or_timestamp) }},\n cast({{interval}} * {{multiplier}} as int)\n )\n ) + {{clock_component}}\n )\n\n {%- elif datepart in ('hour', 'minute', 'second', 'millisecond', 'microsecond') -%}\n \n {%- set multiplier -%} \n {%- if datepart == 'hour' -%} 3600\n {%- elif datepart == 'minute' -%} 60\n {%- elif datepart == 'second' -%} 1\n {%- elif datepart == 'millisecond' -%} (1/1000000)\n {%- elif datepart == 'microsecond' -%} (1/1000000)\n {%- endif -%}\n {%- endset -%}\n\n to_timestamp(\n {{ spark_utils.assert_not_null('to_unix_timestamp', from_date_or_timestamp) }}\n + cast({{interval}} * {{multiplier}} as int)\n )\n\n {%- else -%}\n\n {{ exceptions.raise_compiler_error(\"macro dateadd not implemented for datepart ~ '\" ~ datepart ~ \"' ~ on Spark\") }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.624366, "supported_languages": null}, "macro.spark_utils.spark__datediff": {"name": "spark__datediff", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/datediff.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/datediff.sql", "unique_id": "macro.spark_utils.spark__datediff", "macro_sql": "{% macro spark__datediff(first_date, second_date, datepart) %}\n\n {%- if datepart in ['day', 'week', 'month', 'quarter', 'year'] -%}\n \n {# make sure the dates are real, otherwise raise an error asap #}\n {% set first_date = spark_utils.assert_not_null('date', first_date) %}\n {% set second_date = spark_utils.assert_not_null('date', second_date) %}\n \n {%- endif -%}\n \n {%- if datepart == 'day' -%}\n \n datediff({{second_date}}, {{first_date}})\n \n {%- elif datepart == 'week' -%}\n \n case when {{first_date}} < {{second_date}}\n then floor(datediff({{second_date}}, {{first_date}})/7)\n else ceil(datediff({{second_date}}, {{first_date}})/7)\n end\n \n -- did we cross a week boundary (Sunday)?\n + case\n when {{first_date}} < {{second_date}} and dayofweek({{second_date}}) < dayofweek({{first_date}}) then 1\n when {{first_date}} > {{second_date}} and dayofweek({{second_date}}) > dayofweek({{first_date}}) then -1\n else 0 end\n\n {%- elif datepart == 'month' -%}\n\n case when {{first_date}} < {{second_date}}\n then floor(months_between(date({{second_date}}), date({{first_date}})))\n else ceil(months_between(date({{second_date}}), date({{first_date}})))\n end\n \n -- did we cross a month boundary?\n + case\n when {{first_date}} < {{second_date}} and dayofmonth({{second_date}}) < dayofmonth({{first_date}}) then 1\n when {{first_date}} > {{second_date}} and dayofmonth({{second_date}}) > dayofmonth({{first_date}}) then -1\n else 0 end\n \n {%- elif datepart == 'quarter' -%}\n \n case when {{first_date}} < {{second_date}}\n then floor(months_between(date({{second_date}}), date({{first_date}}))/3)\n else ceil(months_between(date({{second_date}}), date({{first_date}}))/3)\n end\n \n -- did we cross a quarter boundary?\n + case\n when {{first_date}} < {{second_date}} and (\n (dayofyear({{second_date}}) - (quarter({{second_date}}) * 365/4))\n < (dayofyear({{first_date}}) - (quarter({{first_date}}) * 365/4))\n ) then 1\n when {{first_date}} > {{second_date}} and (\n (dayofyear({{second_date}}) - (quarter({{second_date}}) * 365/4))\n > (dayofyear({{first_date}}) - (quarter({{first_date}}) * 365/4))\n ) then -1\n else 0 end\n\n {%- elif datepart == 'year' -%}\n \n year({{second_date}}) - year({{first_date}})\n\n {%- elif datepart in ('hour', 'minute', 'second', 'millisecond', 'microsecond') -%}\n \n {%- set divisor -%} \n {%- if datepart == 'hour' -%} 3600\n {%- elif datepart == 'minute' -%} 60\n {%- elif datepart == 'second' -%} 1\n {%- elif datepart == 'millisecond' -%} (1/1000)\n {%- elif datepart == 'microsecond' -%} (1/1000000)\n {%- endif -%}\n {%- endset -%}\n\n case when {{first_date}} < {{second_date}}\n then ceil((\n {# make sure the timestamps are real, otherwise raise an error asap #}\n {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', second_date)) }}\n - {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', first_date)) }}\n ) / {{divisor}})\n else floor((\n {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', second_date)) }}\n - {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', first_date)) }}\n ) / {{divisor}})\n end\n \n {% if datepart == 'millisecond' %}\n + cast(date_format({{second_date}}, 'SSS') as int)\n - cast(date_format({{first_date}}, 'SSS') as int)\n {% endif %}\n \n {% if datepart == 'microsecond' %} \n {% set capture_str = '[0-9]{4}-[0-9]{2}-[0-9]{2}.[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]{6})' %}\n -- Spark doesn't really support microseconds, so this is a massive hack!\n -- It will only work if the timestamp-string is of the format\n -- 'yyyy-MM-dd-HH mm.ss.SSSSSS'\n + cast(regexp_extract({{second_date}}, '{{capture_str}}', 1) as int)\n - cast(regexp_extract({{first_date}}, '{{capture_str}}', 1) as int) \n {% endif %}\n\n {%- else -%}\n\n {{ exceptions.raise_compiler_error(\"macro datediff not implemented for datepart ~ '\" ~ datepart ~ \"' ~ on Spark\") }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6310039, "supported_languages": null}, "macro.spark_utils.spark__current_timestamp": {"name": "spark__current_timestamp", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "unique_id": "macro.spark_utils.spark__current_timestamp", "macro_sql": "{% macro spark__current_timestamp() %}\n current_timestamp()\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.63114, "supported_languages": null}, "macro.spark_utils.spark__current_timestamp_in_utc": {"name": "spark__current_timestamp_in_utc", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "unique_id": "macro.spark_utils.spark__current_timestamp_in_utc", "macro_sql": "{% macro spark__current_timestamp_in_utc() %}\n unix_timestamp()\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.631211, "supported_languages": null}, "macro.spark_utils.spark__split_part": {"name": "spark__split_part", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/split_part.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/split_part.sql", "unique_id": "macro.spark_utils.spark__split_part", "macro_sql": "{% macro spark__split_part(string_text, delimiter_text, part_number) %}\n\n {% set delimiter_expr %}\n \n -- escape if starts with a special character\n case when regexp_extract({{ delimiter_text }}, '([^A-Za-z0-9])(.*)', 1) != '_'\n then concat('\\\\', {{ delimiter_text }})\n else {{ delimiter_text }} end\n \n {% endset %}\n\n {% set split_part_expr %}\n \n split(\n {{ string_text }},\n {{ delimiter_expr }}\n )[({{ part_number - 1 }})]\n \n {% endset %}\n \n {{ return(split_part_expr) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6317172, "supported_languages": null}, "macro.spark_utils.spark__get_relations_by_pattern": {"name": "spark__get_relations_by_pattern", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_relations_by_pattern", "macro_sql": "{% macro spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n show table extended in {{ schema_pattern }} like '{{ table_pattern }}'\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=None,\n schema=row[0],\n identifier=row[1],\n type=('view' if 'Type: VIEW' in row[3] else 'table')\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6331332, "supported_languages": null}, "macro.spark_utils.spark__get_relations_by_prefix": {"name": "spark__get_relations_by_prefix", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_relations_by_prefix", "macro_sql": "{% macro spark__get_relations_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {% set table_pattern = table_pattern ~ '*' %}\n {{ return(spark_utils.spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.633441, "supported_languages": null}, "macro.spark_utils.spark__get_tables_by_pattern": {"name": "spark__get_tables_by_pattern", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_tables_by_pattern", "macro_sql": "{% macro spark__get_tables_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(spark_utils.spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6336992, "supported_languages": null}, "macro.spark_utils.spark__get_tables_by_prefix": {"name": "spark__get_tables_by_prefix", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_tables_by_prefix", "macro_sql": "{% macro spark__get_tables_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(spark_utils.spark__get_relations_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_prefix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.63395, "supported_languages": null}, "macro.spark_utils.assert_not_null": {"name": "assert_not_null", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/etc/assert_not_null.sql", "original_file_path": "macros/etc/assert_not_null.sql", "unique_id": "macro.spark_utils.assert_not_null", "macro_sql": "{% macro assert_not_null(function, arg) -%}\n {{ return(adapter.dispatch('assert_not_null', 'spark_utils')(function, arg)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.spark_utils.default__assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.634239, "supported_languages": null}, "macro.spark_utils.default__assert_not_null": {"name": "default__assert_not_null", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/etc/assert_not_null.sql", "original_file_path": "macros/etc/assert_not_null.sql", "unique_id": "macro.spark_utils.default__assert_not_null", "macro_sql": "{% macro default__assert_not_null(function, arg) %}\n\n coalesce({{function}}({{arg}}), nvl2({{function}}({{arg}}), assert_true({{function}}({{arg}}) is not null), null))\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.634421, "supported_languages": null}, "macro.spark_utils.spark__convert_timezone": {"name": "spark__convert_timezone", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/snowplow/convert_timezone.sql", "original_file_path": "macros/snowplow/convert_timezone.sql", "unique_id": "macro.spark_utils.spark__convert_timezone", "macro_sql": "{% macro spark__convert_timezone(in_tz, out_tz, in_timestamp) %}\n from_utc_timestamp(to_utc_timestamp({{in_timestamp}}, {{in_tz}}), {{out_tz}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.634603, "supported_languages": null}, "macro.snapchat_ads.snapchat_ads_extract_url_parameter": {"name": "snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.snapchat_ads_extract_url_parameter", "macro_sql": "{% macro snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{{ return(adapter.dispatch('snapchat_ads_extract_url_parameter', 'snapchat_ads') (field, url_parameter)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.snapchat_ads.default__snapchat_ads_extract_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6349282, "supported_languages": null}, "macro.snapchat_ads.default__snapchat_ads_extract_url_parameter": {"name": "default__snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.default__snapchat_ads_extract_url_parameter", "macro_sql": "{% macro default__snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{{ dbt_utils.get_url_parameter(field, url_parameter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.635068, "supported_languages": null}, "macro.snapchat_ads.spark__snapchat_ads_extract_url_parameter": {"name": "spark__snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.spark__snapchat_ads_extract_url_parameter", "macro_sql": "{% macro spark__snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"=([^&]+)'\" -%}\nnullif(regexp_extract({{ field }}, {{ formatted_url_parameter }}, 1), '')\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.635254, "supported_languages": null}, "macro.fivetran_utils.enabled_vars": {"name": "enabled_vars", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/enabled_vars.sql", "original_file_path": "macros/enabled_vars.sql", "unique_id": "macro.fivetran_utils.enabled_vars", "macro_sql": "{% macro enabled_vars(vars) %}\n\n{% for v in vars %}\n \n {% if var(v, True) == False %}\n {{ return(False) }}\n {% endif %}\n\n{% endfor %}\n\n{{ return(True) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.635616, "supported_languages": null}, "macro.fivetran_utils.percentile": {"name": "percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.percentile", "macro_sql": "{% macro percentile(percentile_field, partition_field, percent) -%}\n\n{{ adapter.dispatch('percentile', 'fivetran_utils') (percentile_field, partition_field, percent) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__percentile"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6364532, "supported_languages": null}, "macro.fivetran_utils.default__percentile": {"name": "default__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.default__percentile", "macro_sql": "{% macro default__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n over ( partition by {{ partition_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6366038, "supported_languages": null}, "macro.fivetran_utils.redshift__percentile": {"name": "redshift__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.redshift__percentile", "macro_sql": "{% macro redshift__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n over ( partition by {{ partition_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.636748, "supported_languages": null}, "macro.fivetran_utils.bigquery__percentile": {"name": "bigquery__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.bigquery__percentile", "macro_sql": "{% macro bigquery__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percentile_field }}, \n {{ percent }}) \n over (partition by {{ partition_field }} \n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.636893, "supported_languages": null}, "macro.fivetran_utils.postgres__percentile": {"name": "postgres__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.postgres__percentile", "macro_sql": "{% macro postgres__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n /* have to group by partition field */\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.63709, "supported_languages": null}, "macro.fivetran_utils.spark__percentile": {"name": "spark__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.spark__percentile", "macro_sql": "{% macro spark__percentile(percentile_field, partition_field, percent) %}\n\n percentile( \n {{ percentile_field }}, \n {{ percent }}) \n over (partition by {{ partition_field }} \n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.637237, "supported_languages": null}, "macro.fivetran_utils.pivot_json_extract": {"name": "pivot_json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/pivot_json_extract.sql", "original_file_path": "macros/pivot_json_extract.sql", "unique_id": "macro.fivetran_utils.pivot_json_extract", "macro_sql": "{% macro pivot_json_extract(string, list_of_properties) %}\n\n{%- for property in list_of_properties -%}\n{%- if property is mapping -%}\nreplace( {{ fivetran_utils.json_extract(string, property.name) }}, '\"', '') as {{ property.alias if property.alias else property.name | replace(' ', '_') | replace('.', '_') | lower }}\n\n{%- else -%}\nreplace( {{ fivetran_utils.json_extract(string, property) }}, '\"', '') as {{ property | replace(' ', '_') | lower }}\n\n{%- endif -%}\n{%- if not loop.last -%},{%- endif %}\n{% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.json_extract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6379478, "supported_languages": null}, "macro.fivetran_utils.persist_pass_through_columns": {"name": "persist_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/persist_pass_through_columns.sql", "original_file_path": "macros/persist_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.persist_pass_through_columns", "macro_sql": "{% macro persist_pass_through_columns(pass_through_variable, identifier=none, transform='') %}\n\n{% if var(pass_through_variable, none) %}\n {% for field in var(pass_through_variable) %}\n , {{ transform ~ '(' ~ (identifier ~ '.' if identifier else '') ~ (field.alias if field.alias else field.name) ~ ')' }} as {{ field.alias if field.alias else field.name }}\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.638535, "supported_languages": null}, "macro.fivetran_utils.json_parse": {"name": "json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.json_parse", "macro_sql": "{% macro json_parse(string, string_path) -%}\n\n{{ adapter.dispatch('json_parse', 'fivetran_utils') (string, string_path) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__json_parse"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.639734, "supported_languages": null}, "macro.fivetran_utils.default__json_parse": {"name": "default__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.default__json_parse", "macro_sql": "{% macro default__json_parse(string, string_path) %}\n\n json_extract_path_text({{string}}, {%- for s in string_path -%}'{{ s }}'{%- if not loop.last -%},{%- endif -%}{%- endfor -%} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.639963, "supported_languages": null}, "macro.fivetran_utils.redshift__json_parse": {"name": "redshift__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.redshift__json_parse", "macro_sql": "{% macro redshift__json_parse(string, string_path) %}\n\n json_extract_path_text({{string}}, {%- for s in string_path -%}'{{ s }}'{%- if not loop.last -%},{%- endif -%}{%- endfor -%} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.640192, "supported_languages": null}, "macro.fivetran_utils.bigquery__json_parse": {"name": "bigquery__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.bigquery__json_parse", "macro_sql": "{% macro bigquery__json_parse(string, string_path) %}\n\n \n json_extract_scalar({{string}}, '$.{%- for s in string_path -%}{{ s }}{%- if not loop.last -%}.{%- endif -%}{%- endfor -%} ')\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.640408, "supported_languages": null}, "macro.fivetran_utils.postgres__json_parse": {"name": "postgres__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.postgres__json_parse", "macro_sql": "{% macro postgres__json_parse(string, string_path) %}\n\n {{string}}::json #>> '{ {%- for s in string_path -%}{{ s }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%} }'\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.640624, "supported_languages": null}, "macro.fivetran_utils.snowflake__json_parse": {"name": "snowflake__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.snowflake__json_parse", "macro_sql": "{% macro snowflake__json_parse(string, string_path) %}\n\n parse_json( {{string}} ) {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.640864, "supported_languages": null}, "macro.fivetran_utils.spark__json_parse": {"name": "spark__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.spark__json_parse", "macro_sql": "{% macro spark__json_parse(string, string_path) %}\n\n {{string}} : {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6411011, "supported_languages": null}, "macro.fivetran_utils.sqlserver__json_parse": {"name": "sqlserver__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.sqlserver__json_parse", "macro_sql": "{% macro sqlserver__json_parse(string, string_path) %}\n\n json_value({{string}}, '$.{%- for s in string_path -%}{{ s }}{%- if not loop.last -%}.{%- endif -%}{%- endfor -%} ')\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.641315, "supported_languages": null}, "macro.fivetran_utils.max_bool": {"name": "max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.max_bool", "macro_sql": "{% macro max_bool(boolean_field) -%}\n\n{{ adapter.dispatch('max_bool', 'fivetran_utils') (boolean_field) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__max_bool"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.641612, "supported_languages": null}, "macro.fivetran_utils.default__max_bool": {"name": "default__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.default__max_bool", "macro_sql": "{% macro default__max_bool(boolean_field) %}\n\n bool_or( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.641705, "supported_languages": null}, "macro.fivetran_utils.snowflake__max_bool": {"name": "snowflake__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.snowflake__max_bool", "macro_sql": "{% macro snowflake__max_bool(boolean_field) %}\n\n max( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6417952, "supported_languages": null}, "macro.fivetran_utils.bigquery__max_bool": {"name": "bigquery__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.bigquery__max_bool", "macro_sql": "{% macro bigquery__max_bool(boolean_field) %}\n\n max( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6418839, "supported_languages": null}, "macro.fivetran_utils.calculated_fields": {"name": "calculated_fields", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/calculated_fields.sql", "original_file_path": "macros/calculated_fields.sql", "unique_id": "macro.fivetran_utils.calculated_fields", "macro_sql": "{% macro calculated_fields(variable) -%}\n\n{% if var(variable, none) %}\n {% for field in var(variable) %}\n , {{ field.transform_sql }} as {{ field.name }} \n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.642211, "supported_languages": null}, "macro.fivetran_utils.drop_schemas_automation": {"name": "drop_schemas_automation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/drop_schemas_automation.sql", "original_file_path": "macros/drop_schemas_automation.sql", "unique_id": "macro.fivetran_utils.drop_schemas_automation", "macro_sql": "{% macro drop_schemas_automation(drop_target_schema=true) %}\n {{ return(adapter.dispatch('drop_schemas_automation', 'fivetran_utils')(drop_target_schema)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__drop_schemas_automation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.642828, "supported_languages": null}, "macro.fivetran_utils.default__drop_schemas_automation": {"name": "default__drop_schemas_automation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/drop_schemas_automation.sql", "original_file_path": "macros/drop_schemas_automation.sql", "unique_id": "macro.fivetran_utils.default__drop_schemas_automation", "macro_sql": "{% macro default__drop_schemas_automation(drop_target_schema=true) %}\n\n{% set fetch_list_sql %}\n {% if target.type not in ('databricks', 'spark') %}\n select schema_name\n from \n {{ wrap_in_quotes(target.database) }}.INFORMATION_SCHEMA.SCHEMATA\n where lower(schema_name) like '{{ target.schema | lower }}{%- if not drop_target_schema -%}_{%- endif -%}%'\n {% else %}\n SHOW SCHEMAS LIKE '{{ target.schema }}{%- if not drop_target_schema -%}_{%- endif -%}*'\n {% endif %}\n{% endset %}\n\n{% set results = run_query(fetch_list_sql) %}\n\n{% if execute %}\n {% set results_list = results.columns[0].values() %}\n{% else %}\n {% set results_list = [] %}\n{% endif %}\n\n{% for schema_to_drop in results_list %}\n {% do adapter.drop_schema(api.Relation.create(database=target.database, schema=schema_to_drop)) %}\n {{ print('Schema ' ~ schema_to_drop ~ ' successfully dropped from the ' ~ target.database ~ ' database.\\n')}}\n{% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.wrap_in_quotes", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.643807, "supported_languages": null}, "macro.fivetran_utils.seed_data_helper": {"name": "seed_data_helper", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/seed_data_helper.sql", "original_file_path": "macros/seed_data_helper.sql", "unique_id": "macro.fivetran_utils.seed_data_helper", "macro_sql": "{% macro seed_data_helper(seed_name, warehouses) %}\n\n{% if target.type in warehouses %}\n {% for w in warehouses %}\n {% if target.type == w %}\n {{ return(ref(seed_name ~ \"_\" ~ w ~ \"\")) }}\n {% endif %}\n {% endfor %}\n{% else %}\n{{ return(ref(seed_name)) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.644334, "supported_languages": null}, "macro.fivetran_utils.fill_pass_through_columns": {"name": "fill_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_pass_through_columns.sql", "original_file_path": "macros/fill_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.fill_pass_through_columns", "macro_sql": "{% macro fill_pass_through_columns(pass_through_variable) %}\n\n{% if var(pass_through_variable) %}\n {% for field in var(pass_through_variable) %}\n {% if field is mapping %}\n {% if field.transform_sql %}\n , {{ field.transform_sql }} as {{ field.alias if field.alias else field.name }}\n {% else %}\n , {{ field.alias if field.alias else field.name }}\n {% endif %}\n {% else %}\n , {{ field }}\n {% endif %}\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.64505, "supported_languages": null}, "macro.fivetran_utils.string_agg": {"name": "string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.string_agg", "macro_sql": "{% macro string_agg(field_to_agg, delimiter) -%}\n\n{{ adapter.dispatch('string_agg', 'fivetran_utils') (field_to_agg, delimiter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__string_agg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.645493, "supported_languages": null}, "macro.fivetran_utils.default__string_agg": {"name": "default__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.default__string_agg", "macro_sql": "{% macro default__string_agg(field_to_agg, delimiter) %}\n string_agg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.645617, "supported_languages": null}, "macro.fivetran_utils.snowflake__string_agg": {"name": "snowflake__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.snowflake__string_agg", "macro_sql": "{% macro snowflake__string_agg(field_to_agg, delimiter) %}\n listagg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.645737, "supported_languages": null}, "macro.fivetran_utils.redshift__string_agg": {"name": "redshift__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.redshift__string_agg", "macro_sql": "{% macro redshift__string_agg(field_to_agg, delimiter) %}\n listagg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.645853, "supported_languages": null}, "macro.fivetran_utils.spark__string_agg": {"name": "spark__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.spark__string_agg", "macro_sql": "{% macro spark__string_agg(field_to_agg, delimiter) %}\n -- collect set will remove duplicates\n replace(replace(replace(cast( collect_set({{ field_to_agg }}) as string), '[', ''), ']', ''), ', ', {{ delimiter }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.645974, "supported_languages": null}, "macro.fivetran_utils.timestamp_diff": {"name": "timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.timestamp_diff", "macro_sql": "{% macro timestamp_diff(first_date, second_date, datepart) %}\n {{ adapter.dispatch('timestamp_diff', 'fivetran_utils')(first_date, second_date, datepart) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__timestamp_diff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.648573, "supported_languages": null}, "macro.fivetran_utils.default__timestamp_diff": {"name": "default__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.default__timestamp_diff", "macro_sql": "{% macro default__timestamp_diff(first_date, second_date, datepart) %}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.648723, "supported_languages": null}, "macro.fivetran_utils.redshift__timestamp_diff": {"name": "redshift__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.redshift__timestamp_diff", "macro_sql": "{% macro redshift__timestamp_diff(first_date, second_date, datepart) %}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.648871, "supported_languages": null}, "macro.fivetran_utils.bigquery__timestamp_diff": {"name": "bigquery__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.bigquery__timestamp_diff", "macro_sql": "{% macro bigquery__timestamp_diff(first_date, second_date, datepart) %}\n\n timestamp_diff(\n {{second_date}},\n {{first_date}},\n {{datepart}}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.649009, "supported_languages": null}, "macro.fivetran_utils.postgres__timestamp_diff": {"name": "postgres__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.postgres__timestamp_diff", "macro_sql": "{% macro postgres__timestamp_diff(first_date, second_date, datepart) %}\n\n {% if datepart == 'year' %}\n (date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))\n {% elif datepart == 'quarter' %}\n ({{ dbt.datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))\n {% elif datepart == 'month' %}\n ({{ dbt.datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))\n {% elif datepart == 'day' %}\n (({{second_date}})::date - ({{first_date}})::date)\n {% elif datepart == 'week' %}\n ({{ dbt.datediff(first_date, second_date, 'day') }} / 7 + case\n when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then\n case when {{first_date}} <= {{second_date}} then 0 else -1 end\n else\n case when {{first_date}} <= {{second_date}} then 1 else 0 end\n end)\n {% elif datepart == 'hour' %}\n ({{ dbt.datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))\n {% elif datepart == 'minute' %}\n ({{ dbt.datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))\n {% elif datepart == 'second' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))\n {% elif datepart == 'millisecond' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))\n {% elif datepart == 'microsecond' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))\n {% else %}\n {{ exceptions.raise_compiler_error(\"Unsupported datepart for macro datediff in postgres: {!r}\".format(datepart)) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.650771, "supported_languages": null}, "macro.fivetran_utils.try_cast": {"name": "try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.try_cast", "macro_sql": "{% macro try_cast(field, type) %}\n {{ adapter.dispatch('try_cast', 'fivetran_utils') (field, type) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__try_cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6516118, "supported_languages": null}, "macro.fivetran_utils.default__try_cast": {"name": "default__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.default__try_cast", "macro_sql": "{% macro default__try_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6517382, "supported_languages": null}, "macro.fivetran_utils.redshift__try_cast": {"name": "redshift__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.redshift__try_cast", "macro_sql": "{% macro redshift__try_cast(field, type) %}\n{%- if type == 'numeric' -%}\n\n case\n when trim({{field}}) ~ '^(0|[1-9][0-9]*)$' then trim({{field}})\n else null\n end::{{type}}\n\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"non-numeric datatypes are not currently supported\") }}\n\n{% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.651982, "supported_languages": null}, "macro.fivetran_utils.postgres__try_cast": {"name": "postgres__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.postgres__try_cast", "macro_sql": "{% macro postgres__try_cast(field, type) %}\n{%- if type == 'numeric' -%}\n\n case\n when replace(cast({{field}} as varchar),cast(' ' as varchar),cast('' as varchar)) ~ '^(0|[1-9][0-9]*)$' \n then replace(cast({{field}} as varchar),cast(' ' as varchar),cast('' as varchar))\n else null\n end::{{type}}\n\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"non-numeric datatypes are not currently supported\") }}\n\n{% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.652234, "supported_languages": null}, "macro.fivetran_utils.snowflake__try_cast": {"name": "snowflake__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.snowflake__try_cast", "macro_sql": "{% macro snowflake__try_cast(field, type) %}\n try_cast(cast({{field}} as varchar) as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.65235, "supported_languages": null}, "macro.fivetran_utils.bigquery__try_cast": {"name": "bigquery__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.bigquery__try_cast", "macro_sql": "{% macro bigquery__try_cast(field, type) %}\n safe_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6524649, "supported_languages": null}, "macro.fivetran_utils.spark__try_cast": {"name": "spark__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.spark__try_cast", "macro_sql": "{% macro spark__try_cast(field, type) %}\n try_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.652574, "supported_languages": null}, "macro.fivetran_utils.sqlserver__try_cast": {"name": "sqlserver__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.sqlserver__try_cast", "macro_sql": "{% macro sqlserver__try_cast(field, type) %}\n try_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.652683, "supported_languages": null}, "macro.fivetran_utils.source_relation": {"name": "source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/source_relation.sql", "original_file_path": "macros/source_relation.sql", "unique_id": "macro.fivetran_utils.source_relation", "macro_sql": "{% macro source_relation(union_schema_variable='union_schemas', union_database_variable='union_databases') -%}\n\n{{ adapter.dispatch('source_relation', 'fivetran_utils') (union_schema_variable, union_database_variable) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__source_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.653118, "supported_languages": null}, "macro.fivetran_utils.default__source_relation": {"name": "default__source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/source_relation.sql", "original_file_path": "macros/source_relation.sql", "unique_id": "macro.fivetran_utils.default__source_relation", "macro_sql": "{% macro default__source_relation(union_schema_variable, union_database_variable) %}\n\n{% if var(union_schema_variable, none) %}\n, case\n {% for schema in var(union_schema_variable) %}\n when lower(replace(replace(_dbt_source_relation,'\"',''),'`','')) like '%.{{ schema|lower }}.%' then '{{ schema|lower }}'\n {% endfor %}\n end as source_relation\n{% elif var(union_database_variable, none) %}\n, case\n {% for database in var(union_database_variable) %}\n when lower(replace(replace(_dbt_source_relation,'\"',''),'`','')) like '%{{ database|lower }}.%' then '{{ database|lower }}'\n {% endfor %}\n end as source_relation\n{% else %}\n, cast('' as {{ dbt.type_string() }}) as source_relation\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.65363, "supported_languages": null}, "macro.fivetran_utils.first_value": {"name": "first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.first_value", "macro_sql": "{% macro first_value(first_value_field, partition_field, order_by_field, order=\"asc\") -%}\n\n{{ adapter.dispatch('first_value', 'fivetran_utils') (first_value_field, partition_field, order_by_field, order) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__first_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6540842, "supported_languages": null}, "macro.fivetran_utils.default__first_value": {"name": "default__first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.default__first_value", "macro_sql": "{% macro default__first_value(first_value_field, partition_field, order_by_field, order=\"asc\") %}\n\n first_value( {{ first_value_field }} ignore nulls ) over (partition by {{ partition_field }} order by {{ order_by_field }} {{ order }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6542678, "supported_languages": null}, "macro.fivetran_utils.redshift__first_value": {"name": "redshift__first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.redshift__first_value", "macro_sql": "{% macro redshift__first_value(first_value_field, partition_field, order_by_field, order=\"asc\") %}\n\n first_value( {{ first_value_field }} ignore nulls ) over (partition by {{ partition_field }} order by {{ order_by_field }} {{ order }} , {{ partition_field }} rows unbounded preceding )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.654471, "supported_languages": null}, "macro.fivetran_utils.add_dbt_source_relation": {"name": "add_dbt_source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/add_dbt_source_relation.sql", "original_file_path": "macros/add_dbt_source_relation.sql", "unique_id": "macro.fivetran_utils.add_dbt_source_relation", "macro_sql": "{% macro add_dbt_source_relation() %}\n\n{% if var('union_schemas', none) or var('union_databases', none) %}\n, _dbt_source_relation\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6547048, "supported_languages": null}, "macro.fivetran_utils.add_pass_through_columns": {"name": "add_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/add_pass_through_columns.sql", "original_file_path": "macros/add_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.add_pass_through_columns", "macro_sql": "{% macro add_pass_through_columns(base_columns, pass_through_var) %}\n\n {% if pass_through_var %}\n\n {% for column in pass_through_var %}\n\n {% if column is mapping %}\n\n {% if column.alias %}\n\n {% do base_columns.append({ \"name\": column.name, \"alias\": column.alias, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n\n {% else %}\n\n {% do base_columns.append({ \"name\": column.name, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n \n {% endif %}\n\n {% else %}\n\n {% do base_columns.append({ \"name\": column, \"datatype\": dbt.type_string()}) %}\n\n {% endif %}\n\n {% endfor %}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.655762, "supported_languages": null}, "macro.fivetran_utils.union_relations": {"name": "union_relations", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_relations.sql", "original_file_path": "macros/union_relations.sql", "unique_id": "macro.fivetran_utils.union_relations", "macro_sql": "{%- macro union_relations(relations, aliases=none, column_override=none, include=[], exclude=[], source_column_name=none) -%}\n\n {%- if exclude and include -%}\n {{ exceptions.raise_compiler_error(\"Both an exclude and include list were provided to the `union` macro. Only one is allowed\") }}\n {%- endif -%}\n\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. -#}\n {%- if not execute %}\n {{ return('') }}\n {% endif -%}\n\n {%- set column_override = column_override if column_override is not none else {} -%}\n {%- set source_column_name = source_column_name if source_column_name is not none else '_dbt_source_relation' -%}\n\n {%- set relation_columns = {} -%}\n {%- set column_superset = {} -%}\n\n {%- for relation in relations -%}\n\n {%- do relation_columns.update({relation: []}) -%}\n\n {%- do dbt_utils._is_relation(relation, 'union_relations') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) -%}\n {%- for col in cols -%}\n\n {#- If an exclude list was provided and the column is in the list, do nothing -#}\n {%- if exclude and col.column in exclude -%}\n\n {#- If an include list was provided and the column is not in the list, do nothing -#}\n {%- elif include and col.column not in include -%}\n\n {#- Otherwise add the column to the column superset -#}\n {%- else -%}\n\n {#- update the list of columns in this relation -#}\n {%- do relation_columns[relation].append(col.column) -%}\n\n {%- if col.column in column_superset -%}\n\n {%- set stored = column_superset[col.column] -%}\n {%- if col.is_string() and stored.is_string() and col.string_size() > stored.string_size() -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif %}\n\n {%- else -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif -%}\n\n {%- endif -%}\n\n {%- endfor -%}\n {%- endfor -%}\n\n {%- set ordered_column_names = column_superset.keys() -%}\n\n {%- for relation in relations %}\n\n (\n select\n\n cast({{ dbt.string_literal(relation) }} as {{ dbt.type_string() }}) as {{ source_column_name }},\n {% for col_name in ordered_column_names -%}\n\n {%- set col = column_superset[col_name] %}\n {%- set col_type = column_override.get(col.column, col.data_type) %}\n {%- set col_name = adapter.quote(col_name) if col_name in relation_columns[relation] else 'null' %}\n cast({{ col_name }} as {{ col_type }}) as {{ col.quoted }} {% if not loop.last %},{% endif -%}\n\n {%- endfor %}\n\n from {{ aliases[loop.index0] if aliases else relation }}\n )\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n\n {%- endfor -%}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt.string_literal", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6593332, "supported_languages": null}, "macro.fivetran_utils.union_tables": {"name": "union_tables", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_relations.sql", "original_file_path": "macros/union_relations.sql", "unique_id": "macro.fivetran_utils.union_tables", "macro_sql": "{%- macro union_tables(tables, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_table') -%}\n\n {%- do exceptions.warn(\"Warning: the `union_tables` macro is no longer supported and will be deprecated in a future release of dbt-utils. Use the `union_relations` macro instead\") -%}\n\n {{ return(dbt_utils.union_relations(tables, column_override, include, exclude, source_column_name)) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils.union_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.659671, "supported_languages": null}, "macro.fivetran_utils.snowflake_seed_data": {"name": "snowflake_seed_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/snowflake_seed_data.sql", "original_file_path": "macros/snowflake_seed_data.sql", "unique_id": "macro.fivetran_utils.snowflake_seed_data", "macro_sql": "{% macro snowflake_seed_data(seed_name) %}\n\n{% if target.type == 'snowflake' %}\n{{ return(ref(seed_name ~ '_snowflake')) }}\n{% else %}\n{{ return(ref(seed_name)) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.660009, "supported_languages": null}, "macro.fivetran_utils.fill_staging_columns": {"name": "fill_staging_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_staging_columns.sql", "original_file_path": "macros/fill_staging_columns.sql", "unique_id": "macro.fivetran_utils.fill_staging_columns", "macro_sql": "{% macro fill_staging_columns(source_columns, staging_columns) -%}\n\n{%- set source_column_names = source_columns|map(attribute='name')|map('lower')|list -%}\n\n{%- for column in staging_columns %}\n {% if column.name|lower in source_column_names -%}\n {{ fivetran_utils.quote_column(column) }} as \n {%- if 'alias' in column %} {{ column.alias }} {% else %} {{ fivetran_utils.quote_column(column) }} {%- endif -%}\n {%- else -%}\n cast(null as {{ column.datatype }})\n {%- if 'alias' in column %} as {{ column.alias }} {% else %} as {{ fivetran_utils.quote_column(column) }} {% endif -%}\n {%- endif -%}\n {%- if not loop.last -%} , {% endif -%}\n{% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.quote_column"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.66139, "supported_languages": null}, "macro.fivetran_utils.quote_column": {"name": "quote_column", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_staging_columns.sql", "original_file_path": "macros/fill_staging_columns.sql", "unique_id": "macro.fivetran_utils.quote_column", "macro_sql": "{% macro quote_column(column) %}\n {% if 'quote' in column %}\n {% if column.quote %}\n {% if target.type in ('bigquery', 'spark', 'databricks') %}\n `{{ column.name }}`\n {% elif target.type == 'snowflake' %}\n \"{{ column.name | upper }}\"\n {% else %}\n \"{{ column.name }}\"\n {% endif %}\n {% else %}\n {{ column.name }}\n {% endif %}\n {% else %}\n {{ column.name }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6618938, "supported_languages": null}, "macro.fivetran_utils.json_extract": {"name": "json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.json_extract", "macro_sql": "{% macro json_extract(string, string_path) -%}\n\n{{ adapter.dispatch('json_extract', 'fivetran_utils') (string, string_path) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__json_extract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.662406, "supported_languages": null}, "macro.fivetran_utils.default__json_extract": {"name": "default__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.default__json_extract", "macro_sql": "{% macro default__json_extract(string, string_path) %}\n\n json_extract_path_text({{string}}, {{ \"'\" ~ string_path ~ \"'\" }} )\n \n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.662548, "supported_languages": null}, "macro.fivetran_utils.snowflake__json_extract": {"name": "snowflake__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.snowflake__json_extract", "macro_sql": "{% macro snowflake__json_extract(string, string_path) %}\n\n json_extract_path_text(try_parse_json( {{string}} ), {{ \"'\" ~ string_path ~ \"'\" }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6626902, "supported_languages": null}, "macro.fivetran_utils.redshift__json_extract": {"name": "redshift__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.redshift__json_extract", "macro_sql": "{% macro redshift__json_extract(string, string_path) %}\n\n case when is_valid_json( {{string}} ) then json_extract_path_text({{string}}, {{ \"'\" ~ string_path ~ \"'\" }} ) else null end\n \n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.662843, "supported_languages": null}, "macro.fivetran_utils.bigquery__json_extract": {"name": "bigquery__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.bigquery__json_extract", "macro_sql": "{% macro bigquery__json_extract(string, string_path) %}\n\n json_extract_scalar({{string}}, {{ \"'$.\" ~ string_path ~ \"'\" }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6629848, "supported_languages": null}, "macro.fivetran_utils.postgres__json_extract": {"name": "postgres__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.postgres__json_extract", "macro_sql": "{% macro postgres__json_extract(string, string_path) %}\n\n {{string}}::json->>{{\"'\" ~ string_path ~ \"'\" }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.663121, "supported_languages": null}, "macro.fivetran_utils.collect_freshness": {"name": "collect_freshness", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/collect_freshness.sql", "original_file_path": "macros/collect_freshness.sql", "unique_id": "macro.fivetran_utils.collect_freshness", "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness')(source, loaded_at_field, filter))}}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__collect_freshness"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.663865, "supported_languages": null}, "macro.fivetran_utils.default__collect_freshness": {"name": "default__collect_freshness", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/collect_freshness.sql", "original_file_path": "macros/collect_freshness.sql", "unique_id": "macro.fivetran_utils.default__collect_freshness", "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n\n {%- set enabled_array = [] -%}\n {% for node in graph.sources.values() %}\n {% if node.identifier == source.identifier %}\n {% if (node.meta['is_enabled'] | default(true)) %}\n {%- do enabled_array.append(1) -%}\n {% endif %}\n {% endif %}\n {% endfor %}\n {% set is_enabled = (enabled_array != []) %}\n\n select\n {% if is_enabled %}\n max({{ loaded_at_field }})\n {% else %} \n {{ current_timestamp() }} {% endif %} as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n\n {% if is_enabled %}\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endif %}\n\n {% endcall %}\n\n {% if dbt_version.split('.') | map('int') | list >= [1, 5, 0] %}\n {{ return(load_result('collect_freshness')) }}\n {% else %}\n {{ return(load_result('collect_freshness').table) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.665032, "supported_languages": null}, "macro.fivetran_utils.timestamp_add": {"name": "timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.timestamp_add", "macro_sql": "{% macro timestamp_add(datepart, interval, from_timestamp) -%}\n\n{{ adapter.dispatch('timestamp_add', 'fivetran_utils') (datepart, interval, from_timestamp) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.postgres__timestamp_add"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.665675, "supported_languages": null}, "macro.fivetran_utils.default__timestamp_add": {"name": "default__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.default__timestamp_add", "macro_sql": "{% macro default__timestamp_add(datepart, interval, from_timestamp) %}\n\n timestampadd(\n {{ datepart }},\n {{ interval }},\n {{ from_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6658292, "supported_languages": null}, "macro.fivetran_utils.bigquery__timestamp_add": {"name": "bigquery__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.bigquery__timestamp_add", "macro_sql": "{% macro bigquery__timestamp_add(datepart, interval, from_timestamp) %}\n\n timestamp_add({{ from_timestamp }}, interval {{ interval }} {{ datepart }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.665972, "supported_languages": null}, "macro.fivetran_utils.redshift__timestamp_add": {"name": "redshift__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.redshift__timestamp_add", "macro_sql": "{% macro redshift__timestamp_add(datepart, interval, from_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.666121, "supported_languages": null}, "macro.fivetran_utils.postgres__timestamp_add": {"name": "postgres__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.postgres__timestamp_add", "macro_sql": "{% macro postgres__timestamp_add(datepart, interval, from_timestamp) %}\n\n {{ from_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.666264, "supported_languages": null}, "macro.fivetran_utils.spark__timestamp_add": {"name": "spark__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.spark__timestamp_add", "macro_sql": "{% macro spark__timestamp_add(datepart, interval, from_timestamp) %}\n\n {{ dbt.dateadd(datepart, interval, from_timestamp) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.666431, "supported_languages": null}, "macro.fivetran_utils.ceiling": {"name": "ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.ceiling", "macro_sql": "{% macro ceiling(num) -%}\n\n{{ adapter.dispatch('ceiling', 'fivetran_utils') (num) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__ceiling"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.666666, "supported_languages": null}, "macro.fivetran_utils.default__ceiling": {"name": "default__ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.default__ceiling", "macro_sql": "{% macro default__ceiling(num) %}\n ceiling({{ num }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.666759, "supported_languages": null}, "macro.fivetran_utils.snowflake__ceiling": {"name": "snowflake__ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.snowflake__ceiling", "macro_sql": "{% macro snowflake__ceiling(num) %}\n ceil({{ num }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6668491, "supported_languages": null}, "macro.fivetran_utils.remove_prefix_from_columns": {"name": "remove_prefix_from_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/remove_prefix_from_columns.sql", "original_file_path": "macros/remove_prefix_from_columns.sql", "unique_id": "macro.fivetran_utils.remove_prefix_from_columns", "macro_sql": "{% macro remove_prefix_from_columns(columns, prefix='', exclude=[]) %}\n\n {%- for col in columns if col.name not in exclude -%}\n {%- if col.name[:prefix|length]|lower == prefix -%}\n {{ col.name }} as {{ col.name[prefix|length:] }}\n {%- else -%}\n {{ col.name }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.667422, "supported_languages": null}, "macro.fivetran_utils.fivetran_date_spine": {"name": "fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.fivetran_date_spine", "macro_sql": "{% macro fivetran_date_spine(datepart, start_date, end_date) -%}\n\n{{ return(adapter.dispatch('fivetran_date_spine', 'fivetran_utils') (datepart, start_date, end_date)) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__fivetran_date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.668618, "supported_languages": null}, "macro.fivetran_utils.default__fivetran_date_spine": {"name": "default__fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.default__fivetran_date_spine", "macro_sql": "{% macro default__fivetran_date_spine(datepart, start_date, end_date) %}\n\n {{ dbt_utils.date_spine(datepart, start_date, end_date) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.668781, "supported_languages": null}, "macro.fivetran_utils.sqlserver__fivetran_date_spine": {"name": "sqlserver__fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.sqlserver__fivetran_date_spine", "macro_sql": "{% macro sqlserver__fivetran_date_spine(datepart, start_date, end_date) -%}\n\n {% set date_spine_query %}\n with\n\n l0 as (\n\n select c\n from (select 1 union all select 1) as d(c)\n\n ),\n l1 as (\n\n select\n 1 as c\n from l0 as a\n cross join l0 as b\n\n ),\n\n l2 as (\n\n select 1 as c\n from l1 as a\n cross join l1 as b\n ),\n\n l3 as (\n\n select 1 as c\n from l2 as a\n cross join l2 as b\n ),\n\n l4 as (\n\n select 1 as c\n from l3 as a\n cross join l3 as b\n ),\n\n l5 as (\n\n select 1 as c\n from l4 as a\n cross join l4 as b\n ),\n\n nums as (\n\n select row_number() over (order by (select null)) as rownum\n from l5\n ),\n\n rawdata as (\n\n select top ({{dbt.datediff(start_date, end_date, datepart)}}) rownum -1 as n\n from nums\n order by rownum\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n 'n',\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n order by 1\n\n {% endset %}\n\n {% set results = run_query(date_spine_query) %}\n\n {% if execute %}\n\n {% set results_list = results.columns[0].values() %}\n \n {% else %}\n\n {% set results_list = [] %}\n\n {% endif %}\n\n {%- for date_field in results_list %}\n select cast('{{ date_field }}' as date) as date_{{datepart}} {{ 'union all ' if not loop.last else '' }}\n {% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff", "macro.dbt.dateadd", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6695209, "supported_languages": null}, "macro.fivetran_utils.union_data": {"name": "union_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_data.sql", "original_file_path": "macros/union_data.sql", "unique_id": "macro.fivetran_utils.union_data", "macro_sql": "{%- macro union_data(table_identifier, database_variable, schema_variable, default_database, default_schema, default_variable, union_schema_variable='union_schemas', union_database_variable='union_databases') -%}\n\n{{ adapter.dispatch('union_data', 'fivetran_utils') (\n table_identifier, \n database_variable, \n schema_variable, \n default_database, \n default_schema, \n default_variable,\n union_schema_variable,\n union_database_variable\n ) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.fivetran_utils.default__union_data"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.672642, "supported_languages": null}, "macro.fivetran_utils.default__union_data": {"name": "default__union_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_data.sql", "original_file_path": "macros/union_data.sql", "unique_id": "macro.fivetran_utils.default__union_data", "macro_sql": "{%- macro default__union_data(\n table_identifier, \n database_variable, \n schema_variable, \n default_database, \n default_schema, \n default_variable,\n union_schema_variable,\n union_database_variable\n ) -%}\n\n{%- if var(union_schema_variable, none) -%}\n\n {%- set relations = [] -%}\n \n {%- if var(union_schema_variable) is string -%}\n {%- set trimmed = var(union_schema_variable)|trim('[')|trim(']') -%}\n {%- set schemas = trimmed.split(',')|map('trim',\" \")|map('trim','\"')|map('trim',\"'\") -%}\n {%- else -%}\n {%- set schemas = var(union_schema_variable) -%}\n {%- endif -%}\n\n {%- for schema in var(union_schema_variable) -%}\n {%- set relation=adapter.get_relation(\n database=source(schema, table_identifier).database if var('has_defined_sources', false) else var(database_variable, default_database),\n schema=source(schema, table_identifier).schema if var('has_defined_sources', false) else schema,\n identifier=source(schema, table_identifier).identifier if var('has_defined_sources', false) else table_identifier\n ) -%}\n \n {%- set relation_exists=relation is not none -%}\n\n {%- if relation_exists -%}\n {%- do relations.append(relation) -%}\n {%- endif -%}\n\n {%- endfor -%}\n \n {%- if relations != [] -%}\n {{ dbt_utils.union_relations(relations) }}\n {%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n {%- endif -%}\n\n{%- elif var(union_database_variable, none) -%}\n\n {%- set relations = [] -%}\n\n {%- for database in var(union_database_variable) -%}\n {%- set relation=adapter.get_relation(\n database=source(schema, table_identifier).database if var('has_defined_sources', false) else database,\n schema=source(schema, table_identifier).schema if var('has_defined_sources', false) else var(schema_variable, default_schema),\n identifier=source(schema, table_identifier).identifier if var('has_defined_sources', false) else table_identifier\n ) -%}\n\n {%- set relation_exists=relation is not none -%}\n\n {%- if relation_exists -%}\n {%- do relations.append(relation) -%}\n {%- endif -%}\n\n {%- endfor -%}\n\n {%- if relations != [] -%}\n {{ dbt_utils.union_relations(relations) }}\n {%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n {%- endif -%}\n\n{%- else -%}\n {% set exception_schemas = {\"linkedin_company_pages\": \"linkedin_pages\", \"instagram_business_pages\": \"instagram_business\"} %}\n {% set relation = namespace(value=\"\") %}\n {% if default_schema in exception_schemas.keys() %}\n {% for corrected_schema_name in exception_schemas.items() %} \n {% if default_schema in corrected_schema_name %}\n {# In order for this macro to effectively work within upstream integration tests (mainly used by the Fivetran dbt package maintainers), this identifier variable selection is required to use the macro with different identifier names. #}\n {% set identifier_var = corrected_schema_name[1] + \"_\" + table_identifier + \"_identifier\" %}\n {%- set relation.value=adapter.get_relation(\n database=source(corrected_schema_name[1], table_identifier).database,\n schema=source(corrected_schema_name[1], table_identifier).schema,\n identifier=var(identifier_var, table_identifier)\n ) -%}\n {% endif %}\n {% endfor %}\n {% else %}\n {# In order for this macro to effectively work within upstream integration tests (mainly used by the Fivetran dbt package maintainers), this identifier variable selection is required to use the macro with different identifier names. #}\n {% set identifier_var = default_schema + \"_\" + table_identifier + \"_identifier\" %}\n {# Unfortunately the Twitter Organic identifiers were misspelled. As such, we will need to account for this in the model. This will be adjusted in the Twitter Organic package, but to ensure backwards compatibility, this needs to be included. #}\n {% if var(identifier_var, none) is none %} \n {% set identifier_var = default_schema + \"_\" + table_identifier + \"_identifer\" %}\n {% endif %}\n {%- set relation.value=adapter.get_relation(\n database=source(default_schema, table_identifier).database,\n schema=source(default_schema, table_identifier).schema,\n identifier=var(identifier_var, table_identifier)\n ) -%}\n {% endif %}\n{%- set table_exists=relation.value is not none -%}\n\n{%- if table_exists -%}\n select * \n from {{ relation.value }}\n{%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n{%- endif -%}\n{%- endif -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils.union_relations", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6769369, "supported_languages": null}, "macro.fivetran_utils.dummy_coalesce_value": {"name": "dummy_coalesce_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/dummy_coalesce_value.sql", "original_file_path": "macros/dummy_coalesce_value.sql", "unique_id": "macro.fivetran_utils.dummy_coalesce_value", "macro_sql": "{% macro dummy_coalesce_value(column) %}\n\n{% set coalesce_value = {\n 'STRING': \"'DUMMY_STRING'\",\n 'BOOLEAN': 'null',\n 'INT': 999999999,\n 'FLOAT': 999999999.99,\n 'TIMESTAMP': 'cast(\"2099-12-31\" as timestamp)',\n 'DATE': 'cast(\"2099-12-31\" as date)',\n} %}\n\n{% if column.is_float() %}\n{{ return(coalesce_value['FLOAT']) }}\n\n{% elif column.is_numeric() %}\n{{ return(coalesce_value['INT']) }}\n\n{% elif column.is_string() %}\n{{ return(coalesce_value['STRING']) }}\n\n{% elif column.data_type|lower == 'boolean' %}\n{{ return(coalesce_value['BOOLEAN']) }}\n\n{% elif 'timestamp' in column.data_type|lower %}\n{{ return(coalesce_value['TIMESTAMP']) }}\n\n{% elif 'date' in column.data_type|lower %}\n{{ return(coalesce_value['DATE']) }}\n\n{% elif 'int' in column.data_type|lower %}\n{{ return(coalesce_value['INT']) }}\n\n{% endif %}\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6782742, "supported_languages": null}, "macro.fivetran_utils.extract_url_parameter": {"name": "extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.extract_url_parameter", "macro_sql": "{% macro extract_url_parameter(field, url_parameter) -%}\n\n{{ adapter.dispatch('extract_url_parameter', 'fivetran_utils') (field, url_parameter) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__extract_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.678594, "supported_languages": null}, "macro.fivetran_utils.default__extract_url_parameter": {"name": "default__extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.default__extract_url_parameter", "macro_sql": "{% macro default__extract_url_parameter(field, url_parameter) -%}\n\n{{ dbt_utils.get_url_parameter(field, url_parameter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6787379, "supported_languages": null}, "macro.fivetran_utils.spark__extract_url_parameter": {"name": "spark__extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.spark__extract_url_parameter", "macro_sql": "{% macro spark__extract_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"=([^&]+)'\" -%}\nnullif(regexp_extract({{ field }}, {{ formatted_url_parameter }}, 1), '')\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.678921, "supported_languages": null}, "macro.fivetran_utils.wrap_in_quotes": {"name": "wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.wrap_in_quotes", "macro_sql": "{%- macro wrap_in_quotes(object_to_quote) -%}\n\n{{ return(adapter.dispatch('wrap_in_quotes', 'fivetran_utils')(object_to_quote)) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.fivetran_utils.postgres__wrap_in_quotes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.679235, "supported_languages": null}, "macro.fivetran_utils.default__wrap_in_quotes": {"name": "default__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.default__wrap_in_quotes", "macro_sql": "{%- macro default__wrap_in_quotes(object_to_quote) -%}\n{# bigquery, spark, databricks #}\n `{{ object_to_quote }}`\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.679338, "supported_languages": null}, "macro.fivetran_utils.snowflake__wrap_in_quotes": {"name": "snowflake__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.snowflake__wrap_in_quotes", "macro_sql": "{%- macro snowflake__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote | upper }}\"\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.679442, "supported_languages": null}, "macro.fivetran_utils.redshift__wrap_in_quotes": {"name": "redshift__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.redshift__wrap_in_quotes", "macro_sql": "{%- macro redshift__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote }}\"\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6795342, "supported_languages": null}, "macro.fivetran_utils.postgres__wrap_in_quotes": {"name": "postgres__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.postgres__wrap_in_quotes", "macro_sql": "{%- macro postgres__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote }}\"\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.67966, "supported_languages": null}, "macro.fivetran_utils.array_agg": {"name": "array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.array_agg", "macro_sql": "{% macro array_agg(field_to_agg) -%}\n\n{{ adapter.dispatch('array_agg', 'fivetran_utils') (field_to_agg) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__array_agg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6799622, "supported_languages": null}, "macro.fivetran_utils.default__array_agg": {"name": "default__array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.default__array_agg", "macro_sql": "{% macro default__array_agg(field_to_agg) %}\n array_agg({{ field_to_agg }})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.680068, "supported_languages": null}, "macro.fivetran_utils.redshift__array_agg": {"name": "redshift__array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.redshift__array_agg", "macro_sql": "{% macro redshift__array_agg(field_to_agg) %}\n listagg({{ field_to_agg }}, ',')\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.680164, "supported_languages": null}, "macro.fivetran_utils.empty_variable_warning": {"name": "empty_variable_warning", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/empty_variable_warning.sql", "original_file_path": "macros/empty_variable_warning.sql", "unique_id": "macro.fivetran_utils.empty_variable_warning", "macro_sql": "{% macro empty_variable_warning(variable, downstream_model) %}\n\n{% if not var(variable) %}\n{{ log(\n \"\"\"\n Warning: You have passed an empty list to the \"\"\" ~ variable ~ \"\"\".\n As a result, you won't see the history of any columns in the \"\"\" ~ downstream_model ~ \"\"\" model.\n \"\"\",\n info=True\n) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.680546, "supported_languages": null}, "macro.fivetran_utils.enabled_vars_one_true": {"name": "enabled_vars_one_true", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/enabled_vars_one_true.sql", "original_file_path": "macros/enabled_vars_one_true.sql", "unique_id": "macro.fivetran_utils.enabled_vars_one_true", "macro_sql": "{% macro enabled_vars_one_true(vars) %}\n\n{% for v in vars %}\n \n {% if var(v, False) == True %}\n {{ return(True) }}\n {% endif %}\n\n{% endfor %}\n\n{{ return(False) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6809149, "supported_languages": null}, "macro.snapchat_ads_source.get_campaign_hourly_report_columns": {"name": "get_campaign_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_campaign_hourly_report_columns.sql", "original_file_path": "macros/get_campaign_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_campaign_hourly_report_columns", "macro_sql": "{% macro get_campaign_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"campaign_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"saves\", \"datatype\": dbt.type_int()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"shares\", \"datatype\": dbt.type_int()},\n {\"name\": \"spend\", \"datatype\": dbt.type_int()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_int()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_int()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__campaign_hourly_report_passthrough_metrics')) }}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_int", "macro.dbt.type_string", "macro.dbt.type_timestamp", "macro.fivetran_utils.add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.683062, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_squad_history_columns": {"name": "get_ad_squad_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_squad_history_columns.sql", "original_file_path": "macros/get_ad_squad_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_squad_history_columns", "macro_sql": "{% macro get_ad_squad_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"campaign_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6838138, "supported_languages": null}, "macro.snapchat_ads_source.get_creative_history_columns": {"name": "get_creative_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_creative_history_columns.sql", "original_file_path": "macros/get_creative_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_creative_history_columns", "macro_sql": "{% macro get_creative_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_account_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"web_view_url\", \"datatype\": dbt.type_string()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.684612, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_hourly_report_columns": {"name": "get_ad_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_hourly_report_columns.sql", "original_file_path": "macros/get_ad_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_hourly_report_columns", "macro_sql": "{% macro get_ad_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"ad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"saves\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"shares\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"spend\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_numeric()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__ad_hourly_passthrough_metrics')) }}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_numeric", "macro.dbt.type_timestamp", "macro.fivetran_utils.add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.686686, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_squad_hourly_report_columns": {"name": "get_ad_squad_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_squad_hourly_report_columns.sql", "original_file_path": "macros/get_ad_squad_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_squad_hourly_report_columns", "macro_sql": "{% macro get_ad_squad_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"ad_squad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"saves\", \"datatype\": dbt.type_int()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"shares\", \"datatype\": dbt.type_int()},\n {\"name\": \"spend\", \"datatype\": dbt.type_int()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_int()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_int()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__ad_squad_hourly_passthrough_metrics')) }}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_int", "macro.dbt.type_timestamp", "macro.fivetran_utils.add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.68884, "supported_languages": null}, "macro.snapchat_ads_source.get_campaign_history_columns": {"name": "get_campaign_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_campaign_history_columns.sql", "original_file_path": "macros/get_campaign_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_campaign_history_columns", "macro_sql": "{% macro get_campaign_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_account_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.689613, "supported_languages": null}, "macro.snapchat_ads_source.get_creative_url_tag_history_columns": {"name": "get_creative_url_tag_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_creative_url_tag_history_columns.sql", "original_file_path": "macros/get_creative_url_tag_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_creative_url_tag_history_columns", "macro_sql": "{% macro get_creative_url_tag_history_columns() %}\n\n{% set columns = [\n {\"name\": \"creative_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"key\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"value\", \"datatype\": dbt.type_string()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.690302, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_history_columns": {"name": "get_ad_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_history_columns.sql", "original_file_path": "macros/get_ad_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_history_columns", "macro_sql": "{% macro get_ad_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_squad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"creative_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.6911879, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_account_history_columns": {"name": "get_ad_account_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_account_history_columns.sql", "original_file_path": "macros/get_ad_account_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_account_history_columns", "macro_sql": "{% macro get_ad_account_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"advertiser\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"currency\", \"datatype\": dbt.type_string()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"timezone\", \"datatype\": dbt.type_string()},\n {\"name\": \"type\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1702412293.692255, "supported_languages": null}}, "docs": {"doc.dbt.__overview__": {"name": "__overview__", "resource_type": "doc", "package_name": "dbt", "path": "overview.md", "original_file_path": "docs/overview.md", "unique_id": "doc.dbt.__overview__", "block_contents": "### Welcome!\n\nWelcome to the auto-generated documentation for your dbt project!\n\n### Navigation\n\nYou can use the `Project` and `Database` navigation tabs on the left side of the window to explore the models\nin your project.\n\n#### Project Tab\nThe `Project` tab mirrors the directory structure of your dbt project. In this tab, you can see all of the\nmodels defined in your dbt project, as well as models imported from dbt packages.\n\n#### Database Tab\nThe `Database` tab also exposes your models, but in a format that looks more like a database explorer. This view\nshows relations (tables and views) grouped into database schemas. Note that ephemeral models are _not_ shown\nin this interface, as they do not exist in the database.\n\n### Graph Exploration\nYou can click the blue icon on the bottom-right corner of the page to view the lineage graph of your models.\n\nOn model pages, you'll see the immediate parents and children of the model you're exploring. By clicking the `Expand`\nbutton at the top-right of this lineage pane, you'll be able to see all of the models that are used to build,\nor are built from, the model you're exploring.\n\nOnce expanded, you'll be able to use the `--select` and `--exclude` model selection syntax to filter the\nmodels in the graph. For more information on model selection, check out the [dbt docs](https://docs.getdbt.com/docs/model-selection-syntax).\n\nNote that you can also right-click on models to interactively filter and explore the graph.\n\n---\n\n### More information\n\n- [What is dbt](https://docs.getdbt.com/docs/introduction)?\n- Read the [dbt viewpoint](https://docs.getdbt.com/docs/viewpoint)\n- [Installation](https://docs.getdbt.com/docs/installation)\n- Join the [dbt Community](https://www.getdbt.com/community/) for questions and discussion"}, "doc.snapchat_ads_source._fivetran_synced": {"name": "_fivetran_synced", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source._fivetran_synced", "block_contents": "When the record was last synced by Fivetran."}, "doc.snapchat_ads_source.is_most_recent_record": {"name": "is_most_recent_record", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source.is_most_recent_record", "block_contents": "Boolean representing whether a record is the most recent version of that record."}, "doc.snapchat_ads_source.source_relation": {"name": "source_relation", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source.source_relation", "block_contents": "The source of the record if the unioning functionality is being used. If not this field will be empty."}}, "exposures": {}, "metrics": {}, "groups": {}, "selectors": {}, "disabled": {}, "parent_map": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": [], "model.snapchat_ads.snapchat_ads__ad_report": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "model.snapchat_ads.snapchat_ads__url_report": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__account_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__ad_squad_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__campaign_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "model.snapchat_ads.snapchat_ads__creative_history_prep": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history", "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": ["source.snapchat_ads_source.snapchat_ads.creative_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_account_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": ["source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": ["source.snapchat_ads_source.snapchat_ads.campaign_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_squad_history"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "source.snapchat_ads_source.snapchat_ads.ad_account_history": [], "source.snapchat_ads_source.snapchat_ads.ad_history": [], "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.ad_squad_history": [], "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.campaign_history": [], "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.creative_history": [], "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": []}, "child_map": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": [], "model.snapchat_ads.snapchat_ads__ad_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba", "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744", "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe"], "model.snapchat_ads.snapchat_ads__url_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07", "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78", "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de", "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6"], "model.snapchat_ads.snapchat_ads__account_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1", "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b", "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260"], "model.snapchat_ads.snapchat_ads__ad_squad_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4", "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe", "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639"], "model.snapchat_ads.snapchat_ads__campaign_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a", "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac", "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b"], "model.snapchat_ads.snapchat_ads__creative_history_prep": ["model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": ["model.snapchat_ads.snapchat_ads__ad_squad_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__campaign_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": ["model.snapchat_ads.snapchat_ads__campaign_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__campaign_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": [], "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": [], "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": [], "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": [], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": [], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": [], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": [], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": [], "source.snapchat_ads_source.snapchat_ads.ad_account_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_squad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.campaign_history": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"], "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.creative_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"], "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"]}, "group_map": {}, "saved_queries": {}, "semantic_models": {}} \ No newline at end of file +{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/manifest/v12.json", "dbt_version": "1.8.7", "generated_at": "2024-10-29T19:19:44.584596Z", "invocation_id": "f385af02-cce9-4149-b638-4efd7b534030", "env": {}, "project_name": "snapchat_ads_integration_tests", "project_id": "0eb30f7211ccca11c94be2a882f44ff0", "user_id": "2bfa9082-ea6e-467b-abdc-d0514ab111d9", "send_anonymous_usage_stats": true, "adapter_type": "bigquery"}, "nodes": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_squad_history_data.csv", "original_file_path": "seeds/snapchat_ad_squad_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_squad_history_data"], "alias": "snapchat_ad_squad_history_data", "checksum": {"name": "sha256", "checksum": "0e83ca691f2153480e7b63173f1c7ed8c38c0dc247d41a6f2fd46afc1e5963b1"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.6727538, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_ad_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_history_data.csv", "original_file_path": "seeds/snapchat_ad_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_history_data"], "alias": "snapchat_ad_history_data", "checksum": {"name": "sha256", "checksum": "839c0910ff6ff3cff2580bd9144223132dd1d87f003aeea329e47ba858a2dc23"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.6765928, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_campaign_history_data.csv", "original_file_path": "seeds/snapchat_campaign_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_campaign_history_data"], "alias": "snapchat_campaign_history_data", "checksum": {"name": "sha256", "checksum": "640eb2ec082938ad70c430a6b3441711f6fed19eb6e28d7622f03294e92e5b70"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.677879, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_ad_squad_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_squad_hourly_report_data.csv", "original_file_path": "seeds/snapchat_ad_squad_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_squad_hourly_report_data"], "alias": "snapchat_ad_squad_hourly_report_data", "checksum": {"name": "sha256", "checksum": "4bcd58c89168843edd94874f95222804c28b5b3571d66dbb194a498a0f8f85b7"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.679232, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_hourly_report_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_creative_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_creative_history_data.csv", "original_file_path": "seeds/snapchat_creative_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_creative_history_data"], "alias": "snapchat_creative_history_data", "checksum": {"name": "sha256", "checksum": "40505e1e47b59c850371007584560a03172120f078da2c81c6712aea77d868a8"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.680498, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_ad_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_hourly_report_data.csv", "original_file_path": "seeds/snapchat_ad_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_hourly_report_data"], "alias": "snapchat_ad_hourly_report_data", "checksum": {"name": "sha256", "checksum": "44942448ec2f5fdab1d102948af6724bc9d10970c6d760cd5b9eb778a16aa12b"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {"date": "timestamp"}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}", "column_types": {"date": "timestamp"}}, "created_at": 1730229541.681791, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_hourly_report_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_campaign_hourly_report_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_campaign_hourly_report_data.csv", "original_file_path": "seeds/snapchat_campaign_hourly_report_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_campaign_hourly_report_data"], "alias": "snapchat_campaign_hourly_report_data", "checksum": {"name": "sha256", "checksum": "90145700bcd091f7cfe9fa88155e2473a36b674778ec51ed934c6876ec23e91f"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.68306, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_hourly_report_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_ad_account_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_ad_account_history_data.csv", "original_file_path": "seeds/snapchat_ad_account_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_ad_account_history_data"], "alias": "snapchat_ad_account_history_data", "checksum": {"name": "sha256", "checksum": "0e1f3a58ee6a4863bb59fbd30c286606f0de77040fbb2903ab312e5d248454cb"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}"}, "created_at": 1730229541.6843112, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_account_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "snapchat_creative_url_tag_history_data", "resource_type": "seed", "package_name": "snapchat_ads_integration_tests", "path": "snapchat_creative_url_tag_history_data.csv", "original_file_path": "seeds/snapchat_creative_url_tag_history_data.csv", "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data", "fqn": ["snapchat_ads_integration_tests", "snapchat_creative_url_tag_history_data"], "alias": "snapchat_creative_url_tag_history_data", "checksum": {"name": "sha256", "checksum": "c5e8dbafad038e142209d2145532d5d5e762922bf4fe44535901b46cd9797dcc"}, "config": {"enabled": true, "alias": null, "schema": null, "database": null, "tags": [], "meta": {}, "group": null, "materialized": "seed", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {"updated_at": "timestamp"}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "delimiter": ",", "quote_columns": false}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"quote_columns": "{{ true if target.type in ('redshift', 'postgres') else false }}", "column_types": {"updated_at": "timestamp"}}, "created_at": 1730229541.685628, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_url_tag_history_data`", "raw_code": "", "root_path": "/Users/jamie.rodriguez/Desktop/dbt_repos/Ads/Snapchat_ads/dbt_snapchat_ads/integration_tests", "depends_on": {"macros": []}}, "model.snapchat_ads.snapchat_ads__ad_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__ad_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__ad_report.sql", "original_file_path": "models/snapchat_ads__ad_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__ad_report", "fqn": ["snapchat_ads", "snapchat_ads__ad_report"], "alias": "snapchat_ads__ad_report", "checksum": {"name": "sha256", "checksum": "b8c200b335e6a9bc0aad27a812b925fe064a04395fa28dde73f305c9cd1f129f"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad account.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "total_conversions": {"name": "total_conversions", "description": "The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.129369, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *,\n {% if var('snapchat_ads__conversion_fields', none) %}\n {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions\n {% else %}\n 0 as total_conversions\n {% endif %}\n from {{ var('ad_hourly_report') }}\n\n), creatives as (\n\n select *\n from {{ ref('snapchat_ads__creative_history_prep') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }}\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }}\n\n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(7) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "snapchat_ads__creative_history_prep", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.type_numeric", "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__ad_report.sql", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n split(\n base.url,\n '?'\n )[safe_offset(0)]\n \n\n as base_url,\n safe_cast(\n\n \n split(\n \n\n \n split(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n )[safe_offset(0)]\n \n\n,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_host,\n '/' || safe_cast(\n\n \n split(\n \n\n case when \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ) = 0\n then ''\n else\n substr(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n -1 * (\n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ))\n )\n end,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_source='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_medium='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_campaign='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_content='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_term='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *,\n \n conversion_purchases as total_conversions\n \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\n where is_most_recent_record = true\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as numeric), 2) as conversion_purchases_value\n\n \n\n\n\n \n \n\n\n\n \n\n\n\n \n \n \n \n , sum(coalesce(conversion_purchases, 0)) as conversion_purchases\n \n\n \n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n\n\n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [{"id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "sql": " __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n split(\n base.url,\n '?'\n )[safe_offset(0)]\n \n\n as base_url,\n safe_cast(\n\n \n split(\n \n\n \n split(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n )[safe_offset(0)]\n \n\n,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_host,\n '/' || safe_cast(\n\n \n split(\n \n\n case when \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ) = 0\n then ''\n else\n substr(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n -1 * (\n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ))\n )\n end,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_source='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_medium='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_campaign='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_content='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_term='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n)"}], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__url_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__url_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__url_report.sql", "original_file_path": "models/snapchat_ads__url_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__url_report", "fqn": ["snapchat_ads", "snapchat_ads__url_report"], "alias": "snapchat_ads__url_report", "checksum": {"name": "sha256", "checksum": "87d45159b72f1440b95f729fe41df3cc9dc77d5b57e173f30f93ecedf8b1eda6"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of Snapchat ads that leverage urls.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "base_url": {"name": "base_url", "description": "The base URL of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url_host": {"name": "url_host", "description": "The URL host of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url_path": {"name": "url_path", "description": "The URL path of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_source": {"name": "utm_source", "description": "The utm_source parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_medium": {"name": "utm_medium", "description": "The utm_medium parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_campaign": {"name": "utm_campaign", "description": "The utm_campaign parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_content": {"name": "utm_content", "description": "The utm_content parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "utm_term": {"name": "utm_term", "description": "The utm_term parameter of the ad, extracted from the web_view_url.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "total_conversions": {"name": "total_conversions", "description": "The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.133831, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__url_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *,\n {% if var('snapchat_ads__conversion_fields', none) %}\n {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions\n {% else %}\n 0 as total_conversions\n {% endif %}\n from {{ var('ad_hourly_report') }}\n\n), creatives as (\n\n select *\n from {{ ref('snapchat_ads__creative_history_prep') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n ad_squads.ad_squad_id,\n ad_squads.ad_squad_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n account.currency,\n creatives.base_url,\n creatives.url_host,\n creatives.url_path,\n creatives.utm_source,\n creatives.utm_medium,\n creatives.utm_campaign,\n creatives.utm_content,\n creatives.utm_term,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value\n \n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }}\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }}\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n\n {% if var('ad_reporting__url_report__using_null_filter', True) %}\n -- We only want utm ads to populate this report. Therefore, we filter where url ads are populated.\n where creatives.url is not null\n {% endif %}\n\n {{ dbt_utils.group_by(19) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "snapchat_ads__creative_history_prep", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.type_numeric", "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__url_report.sql", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n split(\n base.url,\n '?'\n )[safe_offset(0)]\n \n\n as base_url,\n safe_cast(\n\n \n split(\n \n\n \n split(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n )[safe_offset(0)]\n \n\n,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_host,\n '/' || safe_cast(\n\n \n split(\n \n\n case when \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ) = 0\n then ''\n else\n substr(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n -1 * (\n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ))\n )\n end,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_source='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_medium='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_campaign='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_content='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_term='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *,\n \n conversion_purchases as total_conversions\n \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n ad_squads.ad_squad_id,\n ad_squads.ad_squad_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n account.currency,\n creatives.base_url,\n creatives.url_host,\n creatives.url_path,\n creatives.utm_source,\n creatives.utm_medium,\n creatives.utm_campaign,\n creatives.utm_content,\n creatives.utm_term,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as numeric), 2) as conversion_purchases_value\n \n \n\n\n\n \n \n\n\n\n \n\n\n\n \n \n \n \n , sum(coalesce(conversion_purchases, 0)) as conversion_purchases\n \n\n \n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n\n \n -- We only want utm ads to populate this report. Therefore, we filter where url ads are populated.\n where creatives.url is not null\n \n\n group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [{"id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "sql": " __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n split(\n base.url,\n '?'\n )[safe_offset(0)]\n \n\n as base_url,\n safe_cast(\n\n \n split(\n \n\n \n split(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n )[safe_offset(0)]\n \n\n,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_host,\n '/' || safe_cast(\n\n \n split(\n \n\n case when \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ) = 0\n then ''\n else\n substr(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n -1 * (\n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ))\n )\n end,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_source='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_medium='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_campaign='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_content='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_term='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n)"}], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__account_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__account_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__account_report.sql", "original_file_path": "models/snapchat_ads__account_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__account_report", "fqn": ["snapchat_ads", "snapchat_ads__account_report"], "alias": "snapchat_ads__account_report", "checksum": {"name": "sha256", "checksum": "b1f8ee646f82a94a902428080dc066c1a5df73879a405e677c5263adfd80e187"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad account.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "total_conversions": {"name": "total_conversions", "description": "The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.1283588, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__account_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_hourly as (\n\n select *,\n {% if var('snapchat_ads__conversion_fields', none) %}\n {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions\n {% else %}\n 0 as total_conversions\n {% endif %}\n from {{ var('ad_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from {{ var('ad_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }}\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }}\n\n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n\n {{ dbt_utils.group_by(5) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.type_numeric", "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__account_report.sql", "compiled": true, "compiled_code": "\n\nwith ad_hourly as (\n\n select *,\n \n conversion_purchases as total_conversions\n \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\n\n), account as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend,\n sum(ad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_hourly.conversion_purchases_value) as numeric), 2) as conversion_purchases_value\n\n \n\n\n\n \n \n\n\n\n \n\n\n\n \n \n \n \n , sum(coalesce(conversion_purchases, 0)) as conversion_purchases\n \n\n \n\n\n\n\n \n\n\n\n\n\n \n\n\n\n\n\n\n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n\n group by 1,2,3,4,5\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__ad_squad_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__ad_squad_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__ad_squad_report.sql", "original_file_path": "models/snapchat_ads__ad_squad_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__ad_squad_report", "fqn": ["snapchat_ads", "snapchat_ads__ad_squad_report"], "alias": "snapchat_ads__ad_squad_report", "checksum": {"name": "sha256", "checksum": "ce3c64584fef4a76d391b6153123ebc53bc4397cacb99027a88425b4c93af44c"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat ad squad.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "total_conversions": {"name": "total_conversions", "description": "The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.1317608, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_squad_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith ad_squad_hourly as (\n\n select *,\n {% if var('snapchat_ads__conversion_fields', none) %}\n {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions\n {% else %}\n 0 as total_conversions\n {% endif %}\n from {{ var('ad_squad_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from {{ var('ad_squad_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_squad_hourly.source_relation,\n cast(ad_squad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n ad_squad_hourly.ad_squad_id,\n ad_squads.ad_squad_name,\n account.currency,\n sum(ad_squad_hourly.swipes) as swipes,\n sum(ad_squad_hourly.impressions) as impressions,\n round(sum(ad_squad_hourly.spend),2) as spend,\n sum(ad_squad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_squad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }}\n \n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }}\n\n from ad_squad_hourly\n left join ad_squads\n on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id\n and ad_squad_hourly.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(9) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.type_numeric", "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__ad_squad_report.sql", "compiled": true, "compiled_code": "\n\nwith ad_squad_hourly as (\n\n select *,\n \n conversion_purchases as total_conversions\n \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report`\n\n), account as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_squad_hourly.source_relation,\n cast(ad_squad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n ad_squad_hourly.ad_squad_id,\n ad_squads.ad_squad_name,\n account.currency,\n sum(ad_squad_hourly.swipes) as swipes,\n sum(ad_squad_hourly.impressions) as impressions,\n round(sum(ad_squad_hourly.spend),2) as spend,\n sum(ad_squad_hourly.total_conversions) as total_conversions,\n round(cast(sum(ad_squad_hourly.conversion_purchases_value) as numeric), 2) as conversion_purchases_value\n\n \n\n\n\n \n \n\n\n\n \n\n\n\n \n \n \n \n , sum(coalesce(conversion_purchases, 0)) as conversion_purchases\n \n\n \n\n\n\n \n \n\n\n\n\n\n \n\n\n\n\n\n\n from ad_squad_hourly\n left join ad_squads\n on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id\n and ad_squad_hourly.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7,8,9\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__campaign_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__campaign_report", "resource_type": "model", "package_name": "snapchat_ads", "path": "snapchat_ads__campaign_report.sql", "original_file_path": "models/snapchat_ads__campaign_report.sql", "unique_id": "model.snapchat_ads.snapchat_ads__campaign_report", "fqn": ["snapchat_ads", "snapchat_ads__campaign_report"], "alias": "snapchat_ads__campaign_report", "checksum": {"name": "sha256", "checksum": "ce111e14c24a3748fec1557f9c2bfe540a3e7fac7dc95cbb6d36069415ec9e13"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents the daily performance of a Snapchat campaign.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_day": {"name": "date_day", "description": "The date of the report.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "The current used by the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The spend on the ad in the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes the ad had on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases for an ad on the given day.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "total_conversions": {"name": "total_conversions", "description": "The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads://models/snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.130798, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__campaign_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith campaign_hourly as (\n\n select *,\n {% if var('snapchat_ads__conversion_fields', none) %}\n {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions\n {% else %}\n 0 as total_conversions\n {% endif %}\n from {{ var('campaign_hourly_report') }}\n\n), account as (\n\n select *\n from {{ var('ad_account_history') }}\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from {{ var('campaign_history') }}\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n campaign_hourly.source_relation,\n cast(campaign_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaign_hourly.campaign_id,\n campaigns.campaign_name,\n account.currency,\n sum(campaign_hourly.swipes) as swipes,\n sum(campaign_hourly.impressions) as impressions,\n round(sum(campaign_hourly.spend),2) as spend,\n sum(campaign_hourly.total_conversions) as total_conversions,\n round(cast(sum(campaign_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value\n\n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }}\n \n {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }}\n \n from campaign_hourly\n left join campaigns\n on campaign_hourly.campaign_id = campaigns.campaign_id\n and campaign_hourly.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n {{ dbt_utils.group_by(7) }}\n\n)\n\nselect *\nfrom aggregated", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.type_numeric", "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro.dbt_utils.group_by"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat_ads__campaign_report.sql", "compiled": true, "compiled_code": "\n\nwith campaign_hourly as (\n\n select *,\n \n conversion_purchases as total_conversions\n \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report`\n\n), account as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n campaign_hourly.source_relation,\n cast(campaign_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaign_hourly.campaign_id,\n campaigns.campaign_name,\n account.currency,\n sum(campaign_hourly.swipes) as swipes,\n sum(campaign_hourly.impressions) as impressions,\n round(sum(campaign_hourly.spend),2) as spend,\n sum(campaign_hourly.total_conversions) as total_conversions,\n round(cast(sum(campaign_hourly.conversion_purchases_value) as numeric), 2) as conversion_purchases_value\n\n \n\n\n\n \n \n\n\n\n \n\n\n\n \n \n \n \n , sum(coalesce(conversion_purchases, 0)) as conversion_purchases\n \n\n \n\n\n\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n from campaign_hourly\n left join campaigns\n on campaign_hourly.campaign_id = campaigns.campaign_id\n and campaign_hourly.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads.snapchat_ads__creative_history_prep": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "snapchat_ads__creative_history_prep", "resource_type": "model", "package_name": "snapchat_ads", "path": "intermediate/snapchat_ads__creative_history_prep.sql", "original_file_path": "models/intermediate/snapchat_ads__creative_history_prep.sql", "unique_id": "model.snapchat_ads.snapchat_ads__creative_history_prep", "fqn": ["snapchat_ads", "intermediate", "snapchat_ads__creative_history_prep"], "alias": "snapchat_ads__creative_history_prep", "checksum": {"name": "sha256", "checksum": "e3cefdb96080d7616e006c39ed116afc1bfdf99c32ae5f8cf01f72a16e86a8a6"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "ephemeral", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "ephemeral", "enabled": true}, "created_at": 1730229541.883929, "relation_name": null, "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\nwith base as (\n\n select *\n from {{ var('creative_history') }}\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from {{ var('creative_url_tag_history') }}\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n {{ dbt.split_part('base.url', \"'?'\", 1) }} as base_url,\n {{ dbt_utils.get_url_host('base.url') }} as url_host,\n '/' || {{ dbt_utils.get_url_path('base.url') }} as url_path,\n coalesce(url_tags_pivoted.utm_source, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_source') }}) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_medium') }}) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_campaign') }}) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_content') }}) as utm_content,\n coalesce(url_tags_pivoted.utm_term, {{ snapchat_ads.snapchat_ads_extract_url_parameter('base.url', 'utm_term') }}) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.split_part", "macro.dbt_utils.get_url_host", "macro.dbt_utils.get_url_path", "macro.snapchat_ads.snapchat_ads_extract_url_parameter"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history", "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads/models/intermediate/snapchat_ads__creative_history_prep.sql", "compiled": true, "compiled_code": "\nwith base as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n split(\n base.url,\n '?'\n )[safe_offset(0)]\n \n\n as base_url,\n safe_cast(\n\n \n split(\n \n\n \n split(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n )[safe_offset(0)]\n \n\n,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_host,\n '/' || safe_cast(\n\n \n split(\n \n\n case when \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ) = 0\n then ''\n else\n substr(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n -1 * (\n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/'\n\n ), 0),\n \n\n strpos(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '?'\n\n ) - 1\n ))\n )\n end,\n '?'\n )[safe_offset(0)]\n \n\n as string) as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_source='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_medium='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_campaign='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_content='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n split(\n \n\n \n split(\n base.url,\n 'utm_term='\n )[safe_offset(1)]\n \n\n,\n '&'\n )[safe_offset(0)]\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_squad_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__ad_squad_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_squad_hourly_report"], "alias": "stg_snapchat_ads__ad_squad_hourly_report", "checksum": {"name": "sha256", "checksum": "366d99f92ec72fab32286b8910ec70cba3cdcf165b35698dc4012e42a20debce"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "ID of the ad squad.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (in Ad Account's currency, converted from microcurrency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.317378, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_squad_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_squad_hourly_report_tmp')),\n staging_columns=get_ad_squad_hourly_report_columns()\n )\n }} \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_squad_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as {{ dbt.type_float() }}), 0) / 1000000.0 as conversion_purchases_value\n\n {% for conversion in var('snapchat_ads__conversion_fields', []) %}\n , coalesce(cast({{ conversion }} as {{ dbt.type_bigint() }}), 0) as {{ conversion }}\n {% endfor %}\n\n {{ snapchat_ads_fill_pass_through_columns(pass_through_fields=var('snapchat_ads__ad_squad_hourly_passthrough_metrics'), except=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n\n from fields\n)\n\nselect *\nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_squad_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.dbt.type_float", "macro.dbt.type_bigint", "macro.snapchat_ads_source.snapchat_ads_fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_squad_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report_tmp`\n),\n\nfields as (\n\n select\n \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n, \n \n \n conversion_purchases_value\n \n as \n \n conversion_purchases_value\n \n, \n \n \n conversion_purchases\n \n as \n \n conversion_purchases\n \n\n\n \n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_squad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as FLOAT64), 0) / 1000000.0 as conversion_purchases_value\n\n \n , coalesce(cast(conversion_purchases as bigint), 0) as conversion_purchases\n \n\n \n\n\n\n\n\n from fields\n)\n\nselect *\nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_history"], "alias": "stg_snapchat_ads__ad_history", "checksum": {"name": "sha256", "checksum": "c5e6d8190a234277e68501aa96b048452931369da6556021b43dfea818a276cf"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the related ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_name": {"name": "ad_name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.314671, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_history_tmp')),\n staging_columns=get_ad_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_id,\n name as ad_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n ad_squad_id,\n creative_id,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history_tmp`\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_id,\n name as ad_name,\n cast (created_at as timestamp) as created_at,\n ad_squad_id,\n creative_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_squad_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_squad_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_squad_history"], "alias": "stg_snapchat_ads__ad_squad_history", "checksum": {"name": "sha256", "checksum": "52dd01aacf5296607f2cd01a15942b091ddf6b9df5b230e11eaf8bc8305e9994"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad squad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_name": {"name": "ad_squad_name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the related campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.316597, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_squad_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_squad_history_tmp')),\n staging_columns=get_ad_squad_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_squad_id,\n name as ad_squad_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n campaign_id,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_squad_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_squad_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_squad_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history_tmp`\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_squad_id,\n name as ad_squad_name,\n cast (created_at as timestamp) as created_at,\n campaign_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__ad_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_hourly_report"], "alias": "stg_snapchat_ads__ad_hourly_report", "checksum": {"name": "sha256", "checksum": "f5f1902a449bf2f7e8f5452586d5768cf5f0234925fc0ec085327e07eaaf7b4f"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record represents an hourly performance summary for an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_id": {"name": "ad_id", "description": "The ID of the ad that the report relates to in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record converted from micros.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (in Ad Account's currency, converted from microcurrency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.3161101, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_hourly_report_tmp')),\n staging_columns=get_ad_hourly_report_columns()\n )\n }} \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as {{ dbt.type_float() }}), 0) / 1000000.0 as conversion_purchases_value\n\n {% for conversion in var('snapchat_ads__conversion_fields', []) %}\n , coalesce(cast({{ conversion }} as {{ dbt.type_bigint() }}), 0) as {{ conversion }}\n {% endfor %}\n\n {{ snapchat_ads_fill_pass_through_columns(pass_through_fields=var('snapchat_ads__ad_hourly_passthrough_metrics'), except=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.dbt.type_float", "macro.dbt.type_bigint", "macro.snapchat_ads_source.snapchat_ads_fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report_tmp`\n),\n\nfields as (\n\n select\n \n \n \n ad_id\n \n as \n \n ad_id\n \n, \n cast(null as numeric) as \n \n attachment_quartile_1\n \n , \n cast(null as numeric) as \n \n attachment_quartile_2\n \n , \n cast(null as numeric) as \n \n attachment_quartile_3\n \n , \n cast(null as numeric) as \n \n attachment_total_view_time_millis\n \n , \n cast(null as numeric) as \n \n attachment_view_completion\n \n , \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n cast(null as numeric) as \n \n quartile_1\n \n , \n cast(null as numeric) as \n \n quartile_2\n \n , \n cast(null as numeric) as \n \n quartile_3\n \n , \n cast(null as numeric) as \n \n saves\n \n , \n cast(null as numeric) as \n \n screen_time_millis\n \n , \n cast(null as numeric) as \n \n shares\n \n , \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n cast(null as numeric) as \n \n video_views\n \n , \n cast(null as numeric) as \n \n view_completion\n \n , \n cast(null as numeric) as \n \n view_time_millis\n \n , \n \n \n conversion_purchases_value\n \n as \n \n conversion_purchases_value\n \n, \n \n \n conversion_purchases\n \n as \n \n conversion_purchases\n \n\n\n \n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as FLOAT64), 0) / 1000000.0 as conversion_purchases_value\n\n \n , coalesce(cast(conversion_purchases as bigint), 0) as conversion_purchases\n \n\n \n\n\n\n\n\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__creative_history.sql", "original_file_path": "models/stg_snapchat_ads__creative_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__creative_history"], "alias": "stg_snapchat_ads__creative_history", "checksum": {"name": "sha256", "checksum": "ee8a3cbc842df2f1f73d35d75566cbc3ab7e56056cad04dab1c98fa1f6853113"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of a creative in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_name": {"name": "creative_name", "description": "The name of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "url": {"name": "url", "description": "The URL of the creative if the creative is of type 'web view'.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.319514, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__creative_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__creative_history_tmp')),\n staging_columns=get_creative_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as creative_id,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n ad_account_id,\n name as creative_name,\n web_view_url as url,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_creative_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__creative_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history_tmp`\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n , \n \n \n web_view_url\n \n as \n \n web_view_url\n \n\n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as creative_id,\n cast (created_at as timestamp) as created_at,\n ad_account_id,\n name as creative_name,\n web_view_url as url,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_url_tag_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__creative_url_tag_history.sql", "original_file_path": "models/stg_snapchat_ads__creative_url_tag_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__creative_url_tag_history"], "alias": "stg_snapchat_ads__creative_url_tag_history", "checksum": {"name": "sha256", "checksum": "92851f4b67f728a6845faca7a8f94e2851808a2fe430259b5fb8534a6212bd32"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a URL paramter key-value pair for a creative in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "param_key": {"name": "param_key", "description": "The URL parameter key, i.e. UTM_SOURCE.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "param_value": {"name": "param_value", "description": "The URL parameter value, i.e. Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.320212, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__creative_url_tag_history_tmp') }}\n\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__creative_url_tag_history_tmp')),\n staging_columns=get_creative_url_tag_history_columns()\n )\n }}\n \n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n creative_id,\n key as param_key,\n value as param_value,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, creative_id, key order by updated_at desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__creative_url_tag_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_creative_url_tag_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__creative_url_tag_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history_tmp`\n\n),\n\nfields as (\n\n select\n \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n key\n \n as \n \n key\n \n, \n \n \n updated_at\n \n as \n \n updated_at\n \n, \n \n \n value\n \n as \n \n value\n \n\n\n\n \n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n creative_id,\n key as param_key,\n value as param_value,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, creative_id, key order by updated_at desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_account_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__ad_account_history.sql", "original_file_path": "models/stg_snapchat_ads__ad_account_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__ad_account_history"], "alias": "stg_snapchat_ads__ad_account_history", "checksum": {"name": "sha256", "checksum": "038466c7ae703d4c445eb0cfb1847ae4282b0f9cdf77f9d9ec4553befcba1ee0"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad account in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_name": {"name": "ad_account_name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "advertiser": {"name": "advertiser", "description": "Name of advertiser", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "Currency used by account", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "timezone": {"name": "timezone", "description": "Account timezone", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.314144, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__ad_account_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__ad_account_history_tmp')),\n staging_columns=get_ad_account_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_account_id,\n name as ad_account_name,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n advertiser, \n currency,\n timezone,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__ad_account_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_ad_account_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__ad_account_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history_tmp`\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n cast(null as string) as \n \n advertiser\n \n , \n cast(null as timestamp) as \n \n created_at\n \n , \n cast(null as string) as \n \n currency\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as string) as \n \n timezone\n \n , \n cast(null as string) as \n \n type\n \n , \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_account_id,\n name as ad_account_name,\n cast (created_at as timestamp) as created_at,\n advertiser, \n currency,\n timezone,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_hourly_report", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__campaign_hourly_report.sql", "original_file_path": "models/stg_snapchat_ads__campaign_hourly_report.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__campaign_hourly_report"], "alias": "stg_snapchat_ads__campaign_hourly_report", "checksum": {"name": "sha256", "checksum": "b1f47ef69d58e570592e47fd4ed9874ddf3044ff816b8f21cb99b0418a32b63d"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "ID of campaign", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date_hour": {"name": "date_hour", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time": {"name": "attachment_total_view_time", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time": {"name": "screen_time", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time": {"name": "view_time", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (in Ad Account's currency, converted from microcurrency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.318679, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__campaign_hourly_report_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__campaign_hourly_report_tmp')),\n staging_columns=get_campaign_hourly_report_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n campaign_id,\n cast (date as {{ dbt.type_timestamp() }}) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as {{ dbt.type_float() }}), 0) / 1000000.0 as conversion_purchases_value\n\n {% for conversion in var('snapchat_ads__conversion_fields', []) %}\n , coalesce(cast({{ conversion }} as {{ dbt.type_bigint() }}), 0) as {{ conversion }}\n {% endfor %}\n\n {{ snapchat_ads_fill_pass_through_columns(pass_through_fields=var('snapchat_ads__campaign_hourly_report_passthrough_metrics'), except=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n \n from fields\n)\n\nselect *\nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_hourly_report_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_campaign_hourly_report_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp", "macro.dbt.type_float", "macro.dbt.type_bigint", "macro.snapchat_ads_source.snapchat_ads_fill_pass_through_columns"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__campaign_hourly_report.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report_tmp`\n),\n\nfields as (\n\n select\n \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n, \n \n \n conversion_purchases_value\n \n as \n \n conversion_purchases_value\n \n, \n \n \n conversion_purchases\n \n as \n \n conversion_purchases\n \n\n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n campaign_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes,\n coalesce(cast(conversion_purchases_value as FLOAT64), 0) / 1000000.0 as conversion_purchases_value\n\n \n , coalesce(cast(conversion_purchases as bigint), 0) as conversion_purchases\n \n\n \n\n\n\n\n \n from fields\n)\n\nselect *\nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_history", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "stg_snapchat_ads__campaign_history.sql", "original_file_path": "models/stg_snapchat_ads__campaign_history.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "fqn": ["snapchat_ads_source", "stg_snapchat_ads__campaign_history"], "alias": "stg_snapchat_ads__campaign_history", "checksum": {"name": "sha256", "checksum": "4bdc0a822494f1f1b1806407151746864f0cd31ca0393d54517cc1431dfef5f1"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "table", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "Each record in this table represents a historic version of a campaign in Snapchat.", "columns": {"source_relation": {"name": "source_relation", "description": "The source of the record if the unioning functionality is being used. If not this field will be empty.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The id of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_name": {"name": "campaign_name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "updated_at": {"name": "updated_at", "description": "Timestamp of when the record was updated.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "is_most_recent_record": {"name": "is_most_recent_record", "description": "Boolean representing whether a record is the most recent version of that record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "snapchat_ads_source://models/stg_snapchat.yml", "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "table", "enabled": true}, "created_at": 1730229542.317898, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\nwith base as (\n\n select * \n from {{ ref('stg_snapchat_ads__campaign_history_tmp') }}\n),\n\nfields as (\n\n select\n {{\n fivetran_utils.fill_staging_columns(\n source_columns=adapter.get_columns_in_relation(ref('stg_snapchat_ads__campaign_history_tmp')),\n staging_columns=get_campaign_history_columns()\n )\n }}\n \n {{ fivetran_utils.source_relation(\n union_schema_variable='snapchat_ads_union_schemas', \n union_database_variable='snapchat_ads_union_databases') \n }}\n\n from base\n),\n\nfinal as (\n\n select\n source_relation,\n id as campaign_id,\n ad_account_id,\n cast (created_at as {{ dbt.type_timestamp() }}) as created_at,\n name as campaign_name,\n cast (_fivetran_synced as {{ dbt.type_timestamp() }}) as _fivetran_synced,\n cast (updated_at as {{ dbt.type_timestamp() }}) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history_tmp", "package": null, "version": null}, {"name": "stg_snapchat_ads__campaign_history_tmp", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.snapchat_ads_source.get_campaign_history_columns", "macro.fivetran_utils.fill_staging_columns", "macro.fivetran_utils.source_relation", "macro.dbt.type_timestamp"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat_ads__campaign_history.sql", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history_tmp`\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as string) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation,\n id as campaign_id,\n ad_account_id,\n cast (created_at as timestamp) as created_at,\n name as campaign_name,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__creative_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__creative_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__creative_history_tmp"], "alias": "stg_snapchat_ads__creative_history_tmp", "checksum": {"name": "sha256", "checksum": "af71368261d6f41a42e53d8d3522dbd7c2343ef32d5d518c0740024944b005e8"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.034088, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='creative_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='creative_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "creative_history"], ["snapchat_ads", "creative_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__creative_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_account_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_account_history_tmp"], "alias": "stg_snapchat_ads__ad_account_history_tmp", "checksum": {"name": "sha256", "checksum": "ecb8114190d4e6ac289124eb4588c540a426e1d449caa958ad34bd4a7e3bf6a9"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.053459, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_account_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_account_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_account_history"], ["snapchat_ads", "ad_account_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_account_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_account_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_hourly_report_tmp"], "alias": "stg_snapchat_ads__ad_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "6c656f5f35626e2da5fb5eb5c84ec8c6a92e99832407708ed55bd0de7e5df50e"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.057514, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_hourly_report"], ["snapchat_ads", "ad_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_hourly_report_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__creative_url_tag_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__creative_url_tag_history_tmp"], "alias": "stg_snapchat_ads__creative_url_tag_history_tmp", "checksum": {"name": "sha256", "checksum": "9d7c3b09ee4cdd1b50bd4d9dcaa83506d4b92c886601a9a5b3d3eb3d64c87cb2"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.0616992, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='creative_url_tag_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='creative_url_tag_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "creative_url_tag_history"], ["snapchat_ads", "creative_url_tag_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__creative_url_tag_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_url_tag_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_squad_hourly_report_tmp"], "alias": "stg_snapchat_ads__ad_squad_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "95586bdee0fc83cd072ec0e9e53e5468e3fc125b6421d2eb7434e636c7dde0ea"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.065875, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_squad_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_squad_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_squad_hourly_report"], ["snapchat_ads", "ad_squad_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_squad_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_hourly_report_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__campaign_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__campaign_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__campaign_history_tmp"], "alias": "stg_snapchat_ads__campaign_history_tmp", "checksum": {"name": "sha256", "checksum": "77443d363898105f0e8102998dc2e60b0ba612a50f0f0db676f7c77ed9c5de5c"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.070476, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='campaign_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='campaign_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "campaign_history"], ["snapchat_ads", "campaign_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__campaign_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_history_tmp"], "alias": "stg_snapchat_ads__ad_history_tmp", "checksum": {"name": "sha256", "checksum": "ff60fd4ced1d85ba518f5a0c3566e10aed80c9201c78e51d2e95e24e814a8610"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.074489, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_history"], ["snapchat_ads", "ad_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__ad_squad_history_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__ad_squad_history_tmp"], "alias": "stg_snapchat_ads__ad_squad_history_tmp", "checksum": {"name": "sha256", "checksum": "7dd4147d6b7ee617b048090525b4578398c85fd40fb4f509efbbdefb89ed16ba"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.078537, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='ad_squad_history', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='ad_squad_history',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "ad_squad_history"], ["snapchat_ads", "ad_squad_history"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__ad_squad_history_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_history_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_snapchat_ads_dev", "name": "stg_snapchat_ads__campaign_hourly_report_tmp", "resource_type": "model", "package_name": "snapchat_ads_source", "path": "tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "original_file_path": "models/tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp", "fqn": ["snapchat_ads_source", "tmp", "stg_snapchat_ads__campaign_hourly_report_tmp"], "alias": "stg_snapchat_ads__campaign_hourly_report_tmp", "checksum": {"name": "sha256", "checksum": "25c22f93768af7aedb92b425ebe2b5756b624690741a7f333e3b2d4e5b677f66"}, "config": {"enabled": true, "alias": null, "schema": "snapchat_ads_dev", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "view", "incremental_strategy": null, "persist_docs": {}, "post-hook": [], "pre-hook": [], "quoting": {}, "column_types": {}, "full_refresh": null, "unique_key": null, "on_schema_change": "ignore", "on_configuration_change": "apply", "grants": {}, "packages": [], "docs": {"show": true, "node_color": null}, "contract": {"enforced": false, "alias_types": true}, "access": "protected"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "snapchat_ads_{{ var('directed_schema','dev') }}", "materialized": "view", "enabled": true}, "created_at": 1730229542.082527, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report_tmp`", "raw_code": "{{ config(enabled=var('ad_reporting__snapchat_ads_enabled', true)) }}\n\n{{\n fivetran_utils.union_data(\n table_identifier='campaign_hourly_report', \n database_variable='snapchat_ads_database', \n schema_variable='snapchat_ads_schema', \n default_database=target.database,\n default_schema='snapchat_ads',\n default_variable='campaign_hourly_report',\n union_schema_variable='snapchat_ads_union_schemas',\n union_database_variable='snapchat_ads_union_databases'\n )\n}}", "language": "sql", "refs": [], "sources": [["snapchat_ads", "campaign_hourly_report"], ["snapchat_ads", "campaign_hourly_report"]], "metrics": [], "depends_on": {"macros": ["macro.fivetran_utils.union_data"], "nodes": ["source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/tmp/stg_snapchat_ads__campaign_hourly_report_tmp.sql", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from `dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_hourly_report_data`", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null}, "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__account_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__account_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260", "fqn": ["snapchat_ads", "not_null_snapchat_ads__account_report_date_day"], "alias": "not_null_snapchat_ads__account_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.171625, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__account_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__account_report`\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__account_report_ad_account_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__account_report_ad_account_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b", "fqn": ["snapchat_ads", "not_null_snapchat_ads__account_report_ad_account_id"], "alias": "not_null_snapchat_ads__account_report_ad_account_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "WARN", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"severity": "WARN"}, "created_at": 1730229542.173032, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__account_report_ad_account_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__account_report`\nwhere ad_account_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_account_id", "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_account_id", "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": null}}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day"], "alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8"}, "created_at": 1730229542.1740649, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__account_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__account_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_214c2bcb5ae73bd8026704ca3c8449e8.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, date_day\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__account_report`\n group by source_relation, ad_account_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__account_report", "attached_node": "model.snapchat_ads.snapchat_ads__account_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_account_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__account_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__ad_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_report_date_day"], "alias": "not_null_snapchat_ads__ad_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.185935, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_report`\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__ad_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_report_ad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_report_ad_id"], "alias": "not_null_snapchat_ads__ad_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.18693, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_report`\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": null}}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day"], "alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1"}, "created_at": 1730229542.1879208, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_aee83389914e2784af892d88888b08c1.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_report`\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__ad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__ad_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__campaign_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__campaign_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b", "fqn": ["snapchat_ads", "not_null_snapchat_ads__campaign_report_date_day"], "alias": "not_null_snapchat_ads__campaign_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.190347, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__campaign_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__campaign_report`\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__campaign_report_campaign_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__campaign_report_campaign_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac", "fqn": ["snapchat_ads", "not_null_snapchat_ads__campaign_report_campaign_id"], "alias": "not_null_snapchat_ads__campaign_report_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.191326, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__campaign_report_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__campaign_report`\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": null}}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day"], "alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb"}, "created_at": 1730229542.1923132, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__campaign_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__campaign_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_e2e52096c5d2adfdd8022dda67d2eefb.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_day\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__campaign_report`\n group by source_relation, campaign_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__campaign_report", "attached_node": "model.snapchat_ads.snapchat_ads__campaign_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__campaign_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__ad_squad_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_squad_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_squad_report_date_day"], "alias": "not_null_snapchat_ads__ad_squad_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.1947289, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_squad_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_squad_report`\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__ad_squad_report_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__ad_squad_report_ad_squad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe", "fqn": ["snapchat_ads", "not_null_snapchat_ads__ad_squad_report_ad_squad_id"], "alias": "not_null_snapchat_ads__ad_squad_report_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.1957529, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__ad_squad_report_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_squad_report`\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": null}}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day"], "alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3"}, "created_at": 1730229542.196745, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__ad_squad_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_aae226efcde859f979c893443d7e72e3.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_day\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__ad_squad_report`\n group by source_relation, ad_squad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__ad_squad_report", "attached_node": "model.snapchat_ads.snapchat_ads__ad_squad_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__ad_squad_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_date_day.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_date_day"], "alias": "not_null_snapchat_ads__url_report_date_day", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.1993458, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_date_day.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__url_report`\nwhere date_day is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_day", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_day", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_ad_id.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_ad_id"], "alias": "not_null_snapchat_ads__url_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.200338, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__url_report`\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}}, "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_snapchat_ads__url_report_base_url", "resource_type": "test", "package_name": "snapchat_ads", "path": "not_null_snapchat_ads__url_report_base_url.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de", "fqn": ["snapchat_ads", "not_null_snapchat_ads__url_report_base_url"], "alias": "not_null_snapchat_ads__url_report_base_url", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"enabled": true}, "created_at": 1730229542.2023501, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}{{ config(enabled=True) }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/not_null_snapchat_ads__url_report_base_url.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect base_url\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__url_report`\nwhere base_url is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "base_url", "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "base_url", "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": null}}, "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day", "resource_type": "test", "package_name": "snapchat_ads", "path": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76.sql", "original_file_path": "models/snapchat.yml", "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07", "fqn": ["snapchat_ads", "dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day"], "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76"}, "created_at": 1730229542.203696, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(enabled=True,alias=\"dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76\") }}", "language": "sql", "refs": [{"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads.snapchat_ads__url_report"]}, "compiled_path": "target/compiled/snapchat_ads/models/snapchat.yml/dbt_utils_unique_combination_o_d0f023fab5dadee3873fc4a187d38b76.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`snapchat_ads__url_report`\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.snapchat_ads__url_report", "attached_node": "model.snapchat_ads.snapchat_ads__url_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_day"], "model": "{{ get_where_subquery(ref('snapchat_ads__url_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_account_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.320792, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_account_history_ad_account_id"], "alias": "not_null_stg_snapchat_ads__ad_account_history_ad_account_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.321877, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_account_history_ad_account_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\nwhere ad_account_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_account_id", "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_account_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad"}, "created_at": 1730229542.322878, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_account_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_3190b1077468dff34e96d53f9129d3ad.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, _fivetran_synced\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_account_history`\n group by source_relation, ad_account_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_account_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_account_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_account_history')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.3254, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_history_ad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_history_ad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_history_ad_id"], "alias": "not_null_stg_snapchat_ads__ad_history_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.326386, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_history_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302"}, "created_at": 1730229542.3274481, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_f0ee7dccca2fb2438166f8dca2158302.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, _fivetran_synced\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_history`\n group by source_relation, ad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_history')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_hourly_report_ad_id"], "alias": "not_null_stg_snapchat_ads__ad_hourly_report_ad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.3297741, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_hourly_report_ad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\nwhere ad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_id", "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__ad_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.330755, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour"], "alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c"}, "created_at": 1730229542.3318248, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_6555cce51f9e5f821cdfba36a30dc18c.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_hour\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_hourly_report`\n group by source_relation, ad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_hourly_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.334146, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id"], "alias": "not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.335208, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56"}, "created_at": 1730229542.336192, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_d2dca03685a09270498ff6ebadf17c56.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, _fivetran_synced\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_history`\n group by source_relation, ad_squad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_squad_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_history')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id"], "alias": "not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.338563, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report`\nwhere ad_squad_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "ad_squad_id", "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "ad_squad_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.3395479, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report`\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour"], "alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac"}, "created_at": 1730229542.340535, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__ad_squad_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_67ba47c849a8a4422b78966095415fac.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_hour\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__ad_squad_hourly_report`\n group by source_relation, ad_squad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__ad_squad_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "ad_squad_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__ad_squad_hourly_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__campaign_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.342912, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_history_campaign_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_history_campaign_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_history_campaign_id"], "alias": "not_null_stg_snapchat_ads__campaign_history_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.3438878, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_history_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014"}, "created_at": 1730229542.344866, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_2067af3e2838f3bcff0258eb157de014.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, _fivetran_synced\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_history`\n group by source_relation, campaign_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__campaign_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_history')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id"], "alias": "not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.347221, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report`\nwhere campaign_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "campaign_id", "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "campaign_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour"], "alias": "not_null_stg_snapchat_ads__campaign_hourly_report_date_hour", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.348192, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report`\nwhere date_hour is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "date_hour", "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "date_hour", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour"], "alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d"}, "created_at": 1730229542.34917, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__campaign_hourly_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_90aa9903c369415cae32db38a6fa709d.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_hour\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__campaign_hourly_report`\n group by source_relation, campaign_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__campaign_hourly_report", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "campaign_id", "date_hour"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__campaign_hourly_report')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_history__fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_history__fivetran_synced.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_history__fivetran_synced"], "alias": "not_null_stg_snapchat_ads__creative_history__fivetran_synced", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.351804, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_history__fivetran_synced.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\nwhere _fivetran_synced is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "_fivetran_synced", "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "_fivetran_synced", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_history_creative_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_history_creative_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_history_creative_id"], "alias": "not_null_stg_snapchat_ads__creative_history_creative_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.352798, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_history_creative_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\nwhere creative_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "creative_id", "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "creative_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced"], "alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da"}, "created_at": 1730229542.35378, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_fa589e52860732e2e8a9cb69701ed9da.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, _fivetran_synced\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_history`\n group by source_relation, creative_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__creative_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "creative_id", "_fivetran_synced"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_history')) }}"}, "namespace": "dbt_utils"}}, "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b", "fqn": ["snapchat_ads_source", "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id"], "alias": "not_null_stg_snapchat_ads__creative_url_tag_history_creative_id", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {}, "created_at": 1730229542.356149, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt.test_not_null", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.sql", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\nwhere creative_id is null\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "creative_id", "file_key_name": "models.stg_snapchat_ads__creative_url_tag_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "creative_id", "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_url_tag_history')) }}"}, "namespace": null}}, "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at", "resource_type": "test", "package_name": "snapchat_ads_source", "path": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16.sql", "original_file_path": "models/stg_snapchat.yml", "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a", "fqn": ["snapchat_ads_source", "dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at"], "alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"alias": "dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16"}, "created_at": 1730229542.357135, "relation_name": null, "raw_code": "{{ dbt_utils.test_unique_combination_of_columns(**_dbt_generic_test_kwargs) }}{{ config(alias=\"dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16\") }}", "language": "sql", "refs": [{"name": "stg_snapchat_ads__creative_url_tag_history", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": ["macro.dbt_utils.test_unique_combination_of_columns", "macro.dbt.get_where_subquery"], "nodes": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"]}, "compiled_path": "target/compiled/snapchat_ads_source/models/stg_snapchat.yml/dbt_utils_unique_combination_o_ee34b38641f864cf9860e2199aa29b16.sql", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, param_key, updated_at\n from `dbt-package-testing`.`snapchat_ads_tests_snapchat_ads_dev`.`stg_snapchat_ads__creative_url_tag_history`\n group by source_relation, creative_id, param_key, updated_at\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "extra_ctes_injected": true, "extra_ctes": [], "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.stg_snapchat_ads__creative_url_tag_history", "attached_node": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history", "test_metadata": {"name": "unique_combination_of_columns", "kwargs": {"combination_of_columns": ["source_relation", "creative_id", "param_key", "updated_at"], "model": "{{ get_where_subquery(ref('stg_snapchat_ads__creative_url_tag_history')) }}"}, "namespace": "dbt_utils"}}}, "sources": {"source.snapchat_ads_source.snapchat_ads.ad_account_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "ad_account_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_account_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_account_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_account_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad account in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "advertiser": {"name": "advertiser", "description": "Name of advertiser", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "currency": {"name": "currency", "description": "Currency used by account", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "timezone": {"name": "timezone", "description": "Account timezone", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_account_history_data`", "created_at": 1730229542.3614311}, "source.snapchat_ads_source.snapchat_ads.ad_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "ad_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_squad_id": {"name": "ad_squad_id", "description": "The ID of the related ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the ad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_history_data`", "created_at": 1730229542.362195}, "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "ad_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for an ad in Snapchat.", "columns": {"ad_id": {"name": "ad_id", "description": "The ID of the ad that the report relates to in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (microcurrency in Ad Account's currency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed to an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_billing": {"name": "conversion_add_billing", "description": "Total number of attributed \"ADD_BILLING\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_save": {"name": "conversion_save", "description": "Total number of attributed \"SAVE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_cart": {"name": "conversion_add_cart", "description": "Total number of attributed \"ADD_CART\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_sign_ups": {"name": "conversion_sign_ups", "description": "Total number of attributed \"SIGN_UP\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_start_checkout": {"name": "conversion_start_checkout", "description": "Total number of attributed \"START_CHECKOUT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_searches": {"name": "conversion_searches", "description": "Total number of attributed \"SEARCH\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_view_content": {"name": "conversion_view_content", "description": "Total number of attributed \"VIEW_CONTENT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_app_opens": {"name": "conversion_app_opens", "description": "Total number of attributed \"APP_OPEN\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_level_completes": {"name": "conversion_level_completes", "description": "Total number of attributed \"LEVEL_COMPLETE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_page_views": {"name": "conversion_page_views", "description": "Total number of attributed \"PAGE_VIEW\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_hourly_report_data`", "created_at": 1730229542.362357}, "source.snapchat_ads_source.snapchat_ads.ad_squad_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "ad_squad_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_squad_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_squad_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of an ad squad in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "campaign_id": {"name": "campaign_id", "description": "The ID of the related campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the ad squad in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_history_data`", "created_at": 1730229542.3624692}, "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "ad_squad_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "ad_squad_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_ad_squad_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for each ad squad.", "columns": {"ad_squad_id": {"name": "ad_squad_id", "description": "ID of the ad squad.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (microcurrency in Ad Account's currency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed to an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_billing": {"name": "conversion_add_billing", "description": "Total number of attributed \"ADD_BILLING\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_save": {"name": "conversion_save", "description": "Total number of attributed \"SAVE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_cart": {"name": "conversion_add_cart", "description": "Total number of attributed \"ADD_CART\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_sign_ups": {"name": "conversion_sign_ups", "description": "Total number of attributed \"SIGN_UP\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_start_checkout": {"name": "conversion_start_checkout", "description": "Total number of attributed \"START_CHECKOUT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_searches": {"name": "conversion_searches", "description": "Total number of attributed \"SEARCH\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_view_content": {"name": "conversion_view_content", "description": "Total number of attributed \"VIEW_CONTENT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_app_opens": {"name": "conversion_app_opens", "description": "Total number of attributed \"APP_OPEN\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_level_completes": {"name": "conversion_level_completes", "description": "Total number of attributed \"LEVEL_COMPLETE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_page_views": {"name": "conversion_page_views", "description": "Total number of attributed \"PAGE_VIEW\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_ad_squad_hourly_report_data`", "created_at": 1730229542.3626182}, "source.snapchat_ads_source.snapchat_ads.campaign_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "campaign_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "campaign_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_campaign_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of a campaign in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the campaign in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_history_data`", "created_at": 1730229542.362724}, "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "campaign_hourly_report", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report", "fqn": ["snapchat_ads_source", "snapchat_ads", "campaign_hourly_report"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_campaign_hourly_report_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record represents an hourly performance summary for each campaign.", "columns": {"campaign_id": {"name": "campaign_id", "description": "ID of campaign", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "date": {"name": "date", "description": "The hour that the report relates to.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_1": {"name": "attachment_quartile_1", "description": "Number of times your Long Form Video was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_2": {"name": "attachment_quartile_2", "description": "Number of times your Long Form Video was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_quartile_3": {"name": "attachment_quartile_3", "description": "Number of times your Long Form Video was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_total_view_time_millis": {"name": "attachment_total_view_time_millis", "description": "Total time Snapchatters spent on the attachment (HH:MM:SS)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "attachment_view_completion": {"name": "attachment_view_completion", "description": "The number of times your Long Form Video was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_1": {"name": "quartile_1", "description": "The number of times your video ad was viewed to 25%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_2": {"name": "quartile_2", "description": "The number of times your video ad was viewed to 50%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "quartile_3": {"name": "quartile_3", "description": "The number of times your video ad was viewed to 75%", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "saves": {"name": "saves", "description": "Number of times a lens/filter was saved to Memories", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "shares": {"name": "shares", "description": "Number of times a lens/filter was shared in a Chat or Story", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "screen_time_millis": {"name": "screen_time_millis", "description": "The number of milli seconds spent watching your ad across all paid impressions. Screen time starts recording as soon as the media is fully rendered on the device and the autoplay video starts", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "video_views": {"name": "video_views", "description": "The number of times your video was watched at least 2 seconds or swiped up, whichever comes first", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_completion": {"name": "view_completion", "description": "The number of times your video ad was viewed to completion (97% )", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "view_time_millis": {"name": "view_time_millis", "description": "The number of milli seconds spent watching your ad across all users reached.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "impressions": {"name": "impressions", "description": "The number of impressions for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "spend": {"name": "spend", "description": "The amount of spend in microdollars for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "swipes": {"name": "swipes", "description": "The number of swipes for an ad in the hour of the record. Swipes are when your ad was swiped up on or the CTA was tapped to view the attachment below.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases_value": {"name": "conversion_purchases_value", "description": "The total value of purchases attributed to an ad in the hour of the record (microcurrency in Ad Account's currency).", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_purchases": {"name": "conversion_purchases", "description": "The total number of purchases attributed to an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_billing": {"name": "conversion_add_billing", "description": "Total number of attributed \"ADD_BILLING\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_save": {"name": "conversion_save", "description": "Total number of attributed \"SAVE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_add_cart": {"name": "conversion_add_cart", "description": "Total number of attributed \"ADD_CART\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_sign_ups": {"name": "conversion_sign_ups", "description": "Total number of attributed \"SIGN_UP\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_start_checkout": {"name": "conversion_start_checkout", "description": "Total number of attributed \"START_CHECKOUT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_searches": {"name": "conversion_searches", "description": "Total number of attributed \"SEARCH\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_view_content": {"name": "conversion_view_content", "description": "Total number of attributed \"VIEW_CONTENT\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_app_opens": {"name": "conversion_app_opens", "description": "Total number of attributed \"APP_OPEN\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_level_completes": {"name": "conversion_level_completes", "description": "Total number of attributed \"LEVEL_COMPLETE\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "conversion_page_views": {"name": "conversion_page_views", "description": "Total number of attributed \"PAGE_VIEW\" conversion events for an ad in the hour of the record.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_campaign_hourly_report_data`", "created_at": 1730229542.362967}, "source.snapchat_ads_source.snapchat_ads.creative_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "creative_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "creative_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_creative_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a historic version of a creative in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "id": {"name": "id", "description": "The ID of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "ad_account_id": {"name": "ad_account_id", "description": "The ID of the related ad account in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "name": {"name": "name", "description": "The name of the creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "web_view_url": {"name": "web_view_url", "description": "The URL of the creative if the creative is of type 'web view'.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_history_data`", "created_at": 1730229542.363082}, "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": {"database": "dbt-package-testing", "schema": "snapchat_ads_tests", "name": "creative_url_tag_history", "resource_type": "source", "package_name": "snapchat_ads_source", "path": "models/src_snapchat.yml", "original_file_path": "models/src_snapchat.yml", "unique_id": "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history", "fqn": ["snapchat_ads_source", "snapchat_ads", "creative_url_tag_history"], "source_name": "snapchat_ads", "source_description": "", "loader": "Fivetran", "identifier": "snapchat_creative_url_tag_history_data", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": "_fivetran_synced", "freshness": {"warn_after": {"count": 48, "period": "hour"}, "error_after": {"count": 168, "period": "hour"}, "filter": null}, "external": null, "description": "Each record in this table represents a URL parameter key-value pair for a creative in Snapchat.", "columns": {"_fivetran_synced": {"name": "_fivetran_synced", "description": "When the record was last synced by Fivetran.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "creative_id": {"name": "creative_id", "description": "The ID of the related creative in Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "created_at": {"name": "created_at", "description": "Created at timestamp.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "key": {"name": "key", "description": "The URL parameter key, i.e. UTM_SOURCE.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}, "value": {"name": "value", "description": "The URL parameter value, i.e. Snapchat.", "meta": {}, "data_type": null, "constraints": [], "quote": null, "tags": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true}, "patch_path": null, "unrendered_config": {"enabled": true}, "relation_name": "`dbt-package-testing`.`snapchat_ads_tests`.`snapchat_creative_url_tag_history_data`", "created_at": 1730229542.36319}}, "macros": {"macro.dbt_bigquery.date_sharded_table": {"name": "date_sharded_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/etc.sql", "original_file_path": "macros/etc.sql", "unique_id": "macro.dbt_bigquery.date_sharded_table", "macro_sql": "{% macro date_sharded_table(base_name) %}\n {{ return(base_name ~ \"[DBT__PARTITION_DATE]\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.729213, "supported_languages": null}, "macro.dbt_bigquery.grant_access_to": {"name": "grant_access_to", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/etc.sql", "original_file_path": "macros/etc.sql", "unique_id": "macro.dbt_bigquery.grant_access_to", "macro_sql": "{% macro grant_access_to(entity, entity_type, role, grant_target_dict) -%}\n {% do adapter.grant_access_to(entity, entity_type, role, grant_target_dict) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.729451, "supported_languages": null}, "macro.dbt_bigquery.get_partitions_metadata": {"name": "get_partitions_metadata", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/etc.sql", "original_file_path": "macros/etc.sql", "unique_id": "macro.dbt_bigquery.get_partitions_metadata", "macro_sql": "\n\n{%- macro get_partitions_metadata(table) -%}\n {%- if execute -%}\n {%- set res = adapter.get_partitions_metadata(table) -%}\n {{- return(res) -}}\n {%- endif -%}\n {{- return(None) -}}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.729747, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_table_as": {"name": "bigquery__create_table_as", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_table_as", "macro_sql": "{% macro bigquery__create_table_as(temporary, relation, compiled_code, language='sql') -%}\n {%- if language == 'sql' -%}\n {%- set raw_partition_by = config.get('partition_by', none) -%}\n {%- set raw_cluster_by = config.get('cluster_by', none) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {%- set partition_config = adapter.parse_partition_by(raw_partition_by) -%}\n {%- if partition_config.time_ingestion_partitioning -%}\n {%- set columns = get_columns_with_types_in_query_sql(sql) -%}\n {%- set table_dest_columns_csv = columns_without_partition_fields_csv(partition_config, columns) -%}\n {%- set columns = '(' ~ table_dest_columns_csv ~ ')' -%}\n {%- endif -%}\n\n {{ sql_header if sql_header is not none }}\n\n create or replace table {{ relation }}\n {%- set contract_config = config.get('contract') -%}\n {%- if contract_config.enforced -%}\n {{ get_assert_columns_equivalent(compiled_code) }}\n {{ get_table_columns_and_constraints() }}\n {%- set compiled_code = get_select_subquery(compiled_code) %}\n {% else %}\n {#-- cannot do contracts at the same time as time ingestion partitioning -#}\n {{ columns }}\n {% endif %}\n {{ partition_by(partition_config) }}\n {{ cluster_by(raw_cluster_by) }}\n\n {{ bigquery_table_options(config, model, temporary) }}\n\n {#-- PARTITION BY cannot be used with the AS query_statement clause.\n https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#partition_expression\n -#}\n {%- if not partition_config.time_ingestion_partitioning %}\n as (\n {{ compiled_code }}\n );\n {%- endif %}\n {%- elif language == 'python' -%}\n {#--\n N.B. Python models _can_ write to temp views HOWEVER they use a different session\n and have already expired by the time they need to be used (I.E. in merges for incremental models)\n\n TODO: Deep dive into spark sessions to see if we can reuse a single session for an entire\n dbt invocation.\n --#}\n\n {#-- when a user wants to change the schema of an existing relation, they must intentionally drop the table in the dataset --#}\n {%- set old_relation = adapter.get_relation(database=relation.database, schema=relation.schema, identifier=relation.identifier) -%}\n {%- if (old_relation.is_table and (should_full_refresh())) -%}\n {% do adapter.drop_relation(relation) %}\n {%- endif -%}\n {{ py_write_table(compiled_code=compiled_code, target_relation=relation.quote(database=False, schema=False, identifier=False)) }}\n {%- else -%}\n {% do exceptions.raise_compiler_error(\"bigquery__create_table_as macro didn't get supported language, it got %s\" % language) %}\n {%- endif -%}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_bigquery.get_columns_with_types_in_query_sql", "macro.dbt_bigquery.columns_without_partition_fields_csv", "macro.dbt.get_assert_columns_equivalent", "macro.dbt.get_table_columns_and_constraints", "macro.dbt.get_select_subquery", "macro.dbt_bigquery.partition_by", "macro.dbt_bigquery.cluster_by", "macro.dbt_bigquery.bigquery_table_options", "macro.dbt.should_full_refresh", "macro.dbt_bigquery.py_write_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7341828, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_view_as": {"name": "bigquery__create_view_as", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_view_as", "macro_sql": "{% macro bigquery__create_view_as(relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create or replace view {{ relation }}\n {{ bigquery_view_options(config, model) }}\n {%- set contract_config = config.get('contract') -%}\n {%- if contract_config.enforced -%}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as {{ sql }};\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery_view_options", "macro.dbt.get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.734657, "supported_languages": null}, "macro.dbt_bigquery.bigquery__drop_schema": {"name": "bigquery__drop_schema", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__drop_schema", "macro_sql": "{% macro bigquery__drop_schema(relation) -%}\n {{ adapter.drop_schema(relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.734795, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_columns_in_relation": {"name": "bigquery__get_columns_in_relation", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_columns_in_relation", "macro_sql": "{% macro bigquery__get_columns_in_relation(relation) -%}\n {{ return(adapter.get_columns_in_relation(relation)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.734955, "supported_languages": null}, "macro.dbt_bigquery.bigquery__list_relations_without_caching": {"name": "bigquery__list_relations_without_caching", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__list_relations_without_caching", "macro_sql": "{% macro bigquery__list_relations_without_caching(schema_relation) -%}\n {{ return(adapter.list_relations_without_caching(schema_relation)) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.735112, "supported_languages": null}, "macro.dbt_bigquery.bigquery__list_schemas": {"name": "bigquery__list_schemas", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__list_schemas", "macro_sql": "{% macro bigquery__list_schemas(database) -%}\n {{ return(adapter.list_schemas(database)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7352629, "supported_languages": null}, "macro.dbt_bigquery.bigquery__check_schema_exists": {"name": "bigquery__check_schema_exists", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__check_schema_exists", "macro_sql": "{% macro bigquery__check_schema_exists(information_schema, schema) %}\n {{ return(adapter.check_schema_exists(information_schema.database, schema)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7354429, "supported_languages": null}, "macro.dbt_bigquery.bigquery__persist_docs": {"name": "bigquery__persist_docs", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__persist_docs", "macro_sql": "{% macro bigquery__persist_docs(relation, model, for_relation, for_columns) -%}\n {% if for_columns and config.persist_column_docs() and model.columns %}\n {% do alter_column_comment(relation, model.columns) %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.735724, "supported_languages": null}, "macro.dbt_bigquery.bigquery__alter_column_comment": {"name": "bigquery__alter_column_comment", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__alter_column_comment", "macro_sql": "{% macro bigquery__alter_column_comment(relation, column_dict) -%}\n {% do adapter.update_columns(relation, column_dict) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.735882, "supported_languages": null}, "macro.dbt_bigquery.bigquery__alter_relation_add_columns": {"name": "bigquery__alter_relation_add_columns", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__alter_relation_add_columns", "macro_sql": "{% macro bigquery__alter_relation_add_columns(relation, add_columns) %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation }}\n {% for column in add_columns %}\n add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {{ return(run_query(sql)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.736286, "supported_languages": null}, "macro.dbt_bigquery.bigquery__alter_relation_drop_columns": {"name": "bigquery__alter_relation_drop_columns", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__alter_relation_drop_columns", "macro_sql": "{% macro bigquery__alter_relation_drop_columns(relation, drop_columns) %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation }}\n\n {% for column in drop_columns %}\n drop column {{ column.name }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {{ return(run_query(sql)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.736651, "supported_languages": null}, "macro.dbt_bigquery.bigquery__alter_column_type": {"name": "bigquery__alter_column_type", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__alter_column_type", "macro_sql": "{% macro bigquery__alter_column_type(relation, column_name, new_column_type) -%}\n {#-- Changing a column's data type using a query requires you to scan the entire table.\n The query charges can be significant if the table is very large.\n\n https://cloud.google.com/bigquery/docs/manually-changing-schemas#changing_a_columns_data_type\n #}\n {% set relation_columns = get_columns_in_relation(relation) %}\n\n {% set sql %}\n select\n {%- for col in relation_columns -%}\n {% if col.column == column_name %}\n CAST({{ col.quoted }} AS {{ new_column_type }}) AS {{ col.quoted }}\n {%- else %}\n {{ col.quoted }}\n {%- endif %}\n {%- if not loop.last %},{% endif -%}\n {%- endfor %}\n from {{ relation }}\n {% endset %}\n\n {% call statement('alter_column_type') %}\n {{ create_table_as(False, relation, sql)}}\n {%- endcall %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_columns_in_relation", "macro.dbt.statement", "macro.dbt.create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.737375, "supported_languages": null}, "macro.dbt_bigquery.bigquery__test_unique": {"name": "bigquery__test_unique", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__test_unique", "macro_sql": "{% macro bigquery__test_unique(model, column_name) %}\n\nwith dbt_test__target as (\n\n select {{ column_name }} as unique_field\n from {{ model }}\n where {{ column_name }} is not null\n\n)\n\nselect\n unique_field,\n count(*) as n_records\n\nfrom dbt_test__target\ngroup by unique_field\nhaving count(*) > 1\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.737546, "supported_languages": null}, "macro.dbt_bigquery.bigquery__upload_file": {"name": "bigquery__upload_file", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters.sql", "original_file_path": "macros/adapters.sql", "unique_id": "macro.dbt_bigquery.bigquery__upload_file", "macro_sql": "{% macro bigquery__upload_file(local_file_path, database, table_schema, table_name) %}\n\n {{ log(\"kwargs: \" ~ kwargs) }}\n\n {% do adapter.upload_file(local_file_path, database, table_schema, table_name, kwargs=kwargs) %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.737817, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_csv_table": {"name": "bigquery__create_csv_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/seed.sql", "original_file_path": "macros/materializations/seed.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_csv_table", "macro_sql": "{% macro bigquery__create_csv_table(model, agate_table) %}\n -- no-op\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.738198, "supported_languages": null}, "macro.dbt_bigquery.bigquery__reset_csv_table": {"name": "bigquery__reset_csv_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/seed.sql", "original_file_path": "macros/materializations/seed.sql", "unique_id": "macro.dbt_bigquery.bigquery__reset_csv_table", "macro_sql": "{% macro bigquery__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.738354, "supported_languages": null}, "macro.dbt_bigquery.bigquery__load_csv_rows": {"name": "bigquery__load_csv_rows", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/seed.sql", "original_file_path": "macros/materializations/seed.sql", "unique_id": "macro.dbt_bigquery.bigquery__load_csv_rows", "macro_sql": "{% macro bigquery__load_csv_rows(model, agate_table) %}\n\n {%- set column_override = model['config'].get('column_types', {}) -%}\n {{ adapter.load_dataframe(model['database'], model['schema'], model['alias'],\n \t\t\t\t\t\t\tagate_table, column_override) }}\n\n {% call statement() %}\n alter table {{ this.render() }} set {{ bigquery_table_options(config, model) }}\n {% endcall %}\n\n {% if config.persist_relation_docs() and 'description' in model %}\n\n \t{{ adapter.update_table_description(model['database'], model['schema'], model['alias'], model['description']) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_bigquery.bigquery_table_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.739091, "supported_languages": null}, "macro.dbt_bigquery.bigquery__handle_existing_table": {"name": "bigquery__handle_existing_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/view.sql", "original_file_path": "macros/materializations/view.sql", "unique_id": "macro.dbt_bigquery.bigquery__handle_existing_table", "macro_sql": "{% macro bigquery__handle_existing_table(full_refresh, old_relation) %}\n {%- if full_refresh -%}\n {{ adapter.drop_relation(old_relation) }}\n {%- else -%}\n {{ exceptions.relation_wrong_type(old_relation, 'view') }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7396638, "supported_languages": null}, "macro.dbt_bigquery.materialization_view_bigquery": {"name": "materialization_view_bigquery", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/view.sql", "original_file_path": "macros/materializations/view.sql", "unique_id": "macro.dbt_bigquery.materialization_view_bigquery", "macro_sql": "{% materialization view, adapter='bigquery' -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n {% set to_return = bigquery__create_or_replace_view() %}\n\n {% set target_relation = this.incorporate(type='view') %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if config.get('grant_access_to') %}\n {% for grant_target_dict in config.get('grant_access_to') %}\n {% do adapter.grant_access_to(this, 'view', None, grant_target_dict) %}\n {% endfor %}\n {% endif %}\n\n {% do return(to_return) %}\n\n{%- endmaterialization %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_or_replace_view", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7403038, "supported_languages": ["sql"]}, "macro.dbt_bigquery.materialization_table_bigquery": {"name": "materialization_table_bigquery", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/table.sql", "original_file_path": "macros/materializations/table.sql", "unique_id": "macro.dbt_bigquery.materialization_table_bigquery", "macro_sql": "{% materialization table, adapter='bigquery', supported_languages=['sql', 'python']-%}\n\n {%- set language = model['language'] -%}\n {%- set identifier = model['alias'] -%}\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_not_as_table = (old_relation is not none and not old_relation.is_table) -%}\n {%- set target_relation = api.Relation.create(database=database, schema=schema, identifier=identifier, type='table') -%}\n\n -- grab current tables grants config for comparision later on\n {%- set grant_config = config.get('grants') -%}\n\n {{ run_hooks(pre_hooks) }}\n\n {#\n We only need to drop this thing if it is not a table.\n If it _is_ already a table, then we can overwrite it without downtime\n Unlike table -> view, no need for `--full-refresh`: dropping a view is no big deal\n #}\n {%- if exists_not_as_table -%}\n {{ adapter.drop_relation(old_relation) }}\n {%- endif -%}\n\n -- build model\n {%- set raw_partition_by = config.get('partition_by', none) -%}\n {%- set partition_by = adapter.parse_partition_by(raw_partition_by) -%}\n {%- set cluster_by = config.get('cluster_by', none) -%}\n {% if not adapter.is_replaceable(old_relation, partition_by, cluster_by) %}\n {% do log(\"Hard refreshing \" ~ old_relation ~ \" because it is not replaceable\") %}\n {% do adapter.drop_relation(old_relation) %}\n {% endif %}\n\n -- build model\n {%- call statement('main', language=language) -%}\n {{ create_table_as(False, target_relation, compiled_code, language) }}\n {%- endcall -%}\n\n {{ run_hooks(post_hooks) }}\n\n {% set should_revoke = should_revoke(old_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt.create_table_as", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.744459, "supported_languages": ["sql", "python"]}, "macro.dbt_bigquery.py_write_table": {"name": "py_write_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/table.sql", "original_file_path": "macros/materializations/table.sql", "unique_id": "macro.dbt_bigquery.py_write_table", "macro_sql": "{% macro py_write_table(compiled_code, target_relation) %}\nfrom pyspark.sql import SparkSession\n{%- set raw_partition_by = config.get('partition_by', none) -%}\n{%- set raw_cluster_by = config.get('cluster_by', none) -%}\n{%- set enable_list_inference = config.get('enable_list_inference', true) -%}\n{%- set intermediate_format = config.get('intermediate_format', none) -%}\n\n{%- set partition_config = adapter.parse_partition_by(raw_partition_by) %}\n\nspark = SparkSession.builder.appName('smallTest').getOrCreate()\n\nspark.conf.set(\"viewsEnabled\",\"true\")\nspark.conf.set(\"temporaryGcsBucket\",\"{{target.gcs_bucket}}\")\nspark.conf.set(\"enableListInference\", \"{{ enable_list_inference }}\")\n{% if intermediate_format %}\nspark.conf.set(\"intermediateFormat\", \"{{ intermediate_format }}\")\n{% endif %}\n\n{{ compiled_code }}\ndbt = dbtObj(spark.read.format(\"bigquery\").load)\ndf = model(dbt, spark)\n\n# COMMAND ----------\n# this is materialization code dbt generated, please do not modify\n\nimport pyspark\n# make sure pandas exists before using it\ntry:\n import pandas\n pandas_available = True\nexcept ImportError:\n pandas_available = False\n\n# make sure pyspark.pandas exists before using it\ntry:\n import pyspark.pandas\n pyspark_pandas_api_available = True\nexcept ImportError:\n pyspark_pandas_api_available = False\n\n# make sure databricks.koalas exists before using it\ntry:\n import databricks.koalas\n koalas_available = True\nexcept ImportError:\n koalas_available = False\n\n# preferentially convert pandas DataFrames to pandas-on-Spark or Koalas DataFrames first\n# since they know how to convert pandas DataFrames better than `spark.createDataFrame(df)`\n# and converting from pandas-on-Spark to Spark DataFrame has no overhead\nif pyspark_pandas_api_available and pandas_available and isinstance(df, pandas.core.frame.DataFrame):\n df = pyspark.pandas.frame.DataFrame(df)\nelif koalas_available and pandas_available and isinstance(df, pandas.core.frame.DataFrame):\n df = databricks.koalas.frame.DataFrame(df)\n\n# convert to pyspark.sql.dataframe.DataFrame\nif isinstance(df, pyspark.sql.dataframe.DataFrame):\n pass # since it is already a Spark DataFrame\nelif pyspark_pandas_api_available and isinstance(df, pyspark.pandas.frame.DataFrame):\n df = df.to_spark()\nelif koalas_available and isinstance(df, databricks.koalas.frame.DataFrame):\n df = df.to_spark()\nelif pandas_available and isinstance(df, pandas.core.frame.DataFrame):\n df = spark.createDataFrame(df)\nelse:\n msg = f\"{type(df)} is not a supported type for dbt Python materialization\"\n raise Exception(msg)\n\ndf.write \\\n .mode(\"overwrite\") \\\n .format(\"bigquery\") \\\n .option(\"writeMethod\", \"indirect\").option(\"writeDisposition\", 'WRITE_TRUNCATE') \\\n {%- if partition_config is not none %}\n {%- if partition_config.data_type | lower in ('date','timestamp','datetime') %}\n .option(\"partitionField\", \"{{- partition_config.field -}}\") \\\n {%- if partition_config.granularity is not none %}\n .option(\"partitionType\", \"{{- partition_config.granularity| upper -}}\") \\\n {%- endif %}\n {%- endif %}\n {%- endif %}\n {%- if raw_cluster_by is not none %}\n .option(\"clusteredFields\", \"{{- raw_cluster_by | join(',') -}}\") \\\n {%- endif %}\n .save(\"{{target_relation}}\")\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.745662, "supported_languages": null}, "macro.dbt_bigquery.materialization_copy_bigquery": {"name": "materialization_copy_bigquery", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/copy.sql", "original_file_path": "macros/materializations/copy.sql", "unique_id": "macro.dbt_bigquery.materialization_copy_bigquery", "macro_sql": "{% materialization copy, adapter='bigquery' -%}\n\n {# Setup #}\n {{ run_hooks(pre_hooks) }}\n\n {% set destination = this.incorporate(type='table') %}\n\n {# there can be several ref() or source() according to BQ copy API docs #}\n {# cycle over ref() and source() to create source tables array #}\n {% set source_array = [] %}\n {% for ref_table in model.refs %}\n {{ source_array.append(ref(ref_table.get('package'), ref_table.name, version=ref_table.get('version'))) }}\n {% endfor %}\n\n {% for src_table in model.sources %}\n {{ source_array.append(source(*src_table)) }}\n {% endfor %}\n\n {# Call adapter copy_table function #}\n {%- set result_str = adapter.copy_table(\n source_array,\n destination,\n config.get('copy_materialization', default = 'table')) -%}\n\n {{ store_result('main', response=result_str) }}\n\n {# Clean up #}\n {{ run_hooks(post_hooks) }}\n {%- do apply_grants(target_relation, grant_config) -%}\n {{ adapter.commit() }}\n\n {{ return({'relations': [destination]}) }}\n{%- endmaterialization %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.746932, "supported_languages": ["sql"]}, "macro.dbt_bigquery.dbt_bigquery_validate_get_incremental_strategy": {"name": "dbt_bigquery_validate_get_incremental_strategy", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental.sql", "original_file_path": "macros/materializations/incremental.sql", "unique_id": "macro.dbt_bigquery.dbt_bigquery_validate_get_incremental_strategy", "macro_sql": "{% macro dbt_bigquery_validate_get_incremental_strategy(config) %}\n {#-- Find and validate the incremental strategy #}\n {%- set strategy = config.get(\"incremental_strategy\") or 'merge' -%}\n\n {% set invalid_strategy_msg -%}\n Invalid incremental strategy provided: {{ strategy }}\n Expected one of: 'merge', 'insert_overwrite'\n {%- endset %}\n {% if strategy not in ['merge', 'insert_overwrite'] %}\n {% do exceptions.raise_compiler_error(invalid_strategy_msg) %}\n {% endif %}\n\n {% do return(strategy) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.749024, "supported_languages": null}, "macro.dbt_bigquery.source_sql_with_partition": {"name": "source_sql_with_partition", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental.sql", "original_file_path": "macros/materializations/incremental.sql", "unique_id": "macro.dbt_bigquery.source_sql_with_partition", "macro_sql": "{% macro source_sql_with_partition(partition_by, source_sql) %}\n\n {%- if partition_by.time_ingestion_partitioning %}\n {{ return(wrap_with_time_ingestion_partitioning_sql(partition_by, source_sql, False)) }}\n {% else %}\n {{ return(source_sql) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7493062, "supported_languages": null}, "macro.dbt_bigquery.bq_create_table_as": {"name": "bq_create_table_as", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental.sql", "original_file_path": "macros/materializations/incremental.sql", "unique_id": "macro.dbt_bigquery.bq_create_table_as", "macro_sql": "{% macro bq_create_table_as(partition_by, temporary, relation, compiled_code, language='sql') %}\n {%- set _dbt_max_partition = declare_dbt_max_partition(this, partition_by, compiled_code, language) -%}\n {% if partition_by.time_ingestion_partitioning and language == 'python' %}\n {% do exceptions.raise_compiler_error(\n \"Python models do not support ingestion time partitioning\"\n ) %}\n {% elif partition_by.time_ingestion_partitioning and language == 'sql' %}\n {#-- Create the table before inserting data as ingestion time partitioned tables can't be created with the transformed data --#}\n {% do run_query(create_table_as(temporary, relation, compiled_code)) %}\n {{ return(_dbt_max_partition + bq_insert_into_ingestion_time_partitioned_table_sql(relation, compiled_code)) }}\n {% else %}\n {{ return(_dbt_max_partition + create_table_as(temporary, relation, compiled_code, language)) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.declare_dbt_max_partition", "macro.dbt.run_query", "macro.dbt.create_table_as", "macro.dbt_bigquery.bq_insert_into_ingestion_time_partitioned_table_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7500281, "supported_languages": null}, "macro.dbt_bigquery.bq_generate_incremental_build_sql": {"name": "bq_generate_incremental_build_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental.sql", "original_file_path": "macros/materializations/incremental.sql", "unique_id": "macro.dbt_bigquery.bq_generate_incremental_build_sql", "macro_sql": "{% macro bq_generate_incremental_build_sql(\n strategy, tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions, incremental_predicates\n) %}\n {#-- if partitioned, use BQ scripting to get the range of partition values to be updated --#}\n {% if strategy == 'insert_overwrite' %}\n\n {% set build_sql = bq_generate_incremental_insert_overwrite_build_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions\n ) %}\n\n {% else %} {# strategy == 'merge' #}\n\n {% set build_sql = bq_generate_incremental_merge_build_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, incremental_predicates\n ) %}\n\n {% endif %}\n\n {{ return(build_sql) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bq_generate_incremental_insert_overwrite_build_sql", "macro.dbt_bigquery.bq_generate_incremental_merge_build_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7506402, "supported_languages": null}, "macro.dbt_bigquery.materialization_incremental_bigquery": {"name": "materialization_incremental_bigquery", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental.sql", "original_file_path": "macros/materializations/incremental.sql", "unique_id": "macro.dbt_bigquery.materialization_incremental_bigquery", "macro_sql": "{% materialization incremental, adapter='bigquery', supported_languages=['sql', 'python'] -%}\n\n {%- set unique_key = config.get('unique_key') -%}\n {%- set full_refresh_mode = (should_full_refresh()) -%}\n {%- set language = model['language'] %}\n\n {%- set target_relation = this %}\n {%- set existing_relation = load_relation(this) %}\n {%- set tmp_relation = make_temp_relation(this) %}\n\n {#-- Validate early so we don't run SQL if the strategy is invalid --#}\n {% set strategy = dbt_bigquery_validate_get_incremental_strategy(config) -%}\n\n {%- set raw_partition_by = config.get('partition_by', none) -%}\n {%- set partition_by = adapter.parse_partition_by(raw_partition_by) -%}\n {%- set partitions = config.get('partitions', none) -%}\n {%- set cluster_by = config.get('cluster_by', none) -%}\n\n {% set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') %}\n {% set incremental_predicates = config.get('predicates', default=none) or config.get('incremental_predicates', default=none) %}\n\n -- grab current tables grants config for comparison later on\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n {% if partition_by.copy_partitions is true and strategy != 'insert_overwrite' %} {#-- We can't copy partitions with merge strategy --#}\n {% set wrong_strategy_msg -%}\n The 'copy_partitions' option requires the 'incremental_strategy' option to be set to 'insert_overwrite'.\n {%- endset %}\n {% do exceptions.raise_compiler_error(wrong_strategy_msg) %}\n\n {% elif existing_relation is none %}\n {%- call statement('main', language=language) -%}\n {{ bq_create_table_as(partition_by, False, target_relation, compiled_code, language) }}\n {%- endcall -%}\n\n {% elif existing_relation.is_view %}\n {#-- There's no way to atomically replace a view with a table on BQ --#}\n {{ adapter.drop_relation(existing_relation) }}\n {%- call statement('main', language=language) -%}\n {{ bq_create_table_as(partition_by, False, target_relation, compiled_code, language) }}\n {%- endcall -%}\n\n {% elif full_refresh_mode %}\n {#-- If the partition/cluster config has changed, then we must drop and recreate --#}\n {% if not adapter.is_replaceable(existing_relation, partition_by, cluster_by) %}\n {% do log(\"Hard refreshing \" ~ existing_relation ~ \" because it is not replaceable\") %}\n {{ adapter.drop_relation(existing_relation) }}\n {% endif %}\n {%- call statement('main', language=language) -%}\n {{ bq_create_table_as(partition_by, False, target_relation, compiled_code, language) }}\n {%- endcall -%}\n\n {% else %}\n {%- if language == 'python' and strategy == 'insert_overwrite' -%}\n {#-- This lets us move forward assuming no python will be directly templated into a query --#}\n {%- set python_unsupported_msg -%}\n The 'insert_overwrite' strategy is not yet supported for python models.\n {%- endset %}\n {% do exceptions.raise_compiler_error(python_unsupported_msg) %}\n {%- endif -%}\n\n {% set tmp_relation_exists = false %}\n {% if on_schema_change != 'ignore' or language == 'python' %}\n {#-- Check first, since otherwise we may not build a temp table --#}\n {#-- Python always needs to create a temp table --#}\n {%- call statement('create_tmp_relation', language=language) -%}\n {{ bq_create_table_as(partition_by, True, tmp_relation, compiled_code, language) }}\n {%- endcall -%}\n {% set tmp_relation_exists = true %}\n {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n {% set dest_columns = process_schema_changes(on_schema_change, tmp_relation, existing_relation) %}\n {% endif %}\n\n {% if not dest_columns %}\n {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n {% endif %}\n {#-- Add time ingestion pseudo column to destination column as not part of the 'schema' but still need it for actual data insertion --#}\n {% if partition_by.time_ingestion_partitioning %}\n {% set dest_columns = adapter.add_time_ingestion_partition_column(partition_by, dest_columns) %}\n {% endif %}\n\n {% set build_sql = bq_generate_incremental_build_sql(\n strategy, tmp_relation, target_relation, compiled_code, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, partition_by.copy_partitions, incremental_predicates\n ) %}\n\n {%- call statement('main') -%}\n {{ build_sql }}\n {% endcall %}\n\n {%- if language == 'python' and tmp_relation -%}\n {{ adapter.drop_relation(tmp_relation) }}\n {%- endif -%}\n\n {% endif %}\n\n {{ run_hooks(post_hooks) }}\n\n {% set target_relation = this.incorporate(type='table') %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh", "macro.dbt.load_relation", "macro.dbt.make_temp_relation", "macro.dbt_bigquery.dbt_bigquery_validate_get_incremental_strategy", "macro.dbt.incremental_validate_on_schema_change", "macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt_bigquery.bq_create_table_as", "macro.dbt.process_schema_changes", "macro.dbt_bigquery.bq_generate_incremental_build_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.754445, "supported_languages": ["sql", "python"]}, "macro.dbt_bigquery.bigquery__snapshot_hash_arguments": {"name": "bigquery__snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/snapshot.sql", "original_file_path": "macros/materializations/snapshot.sql", "unique_id": "macro.dbt_bigquery.bigquery__snapshot_hash_arguments", "macro_sql": "{% macro bigquery__snapshot_hash_arguments(args) -%}\n to_hex(md5(concat({%- for arg in args -%}\n coalesce(cast({{ arg }} as string), ''){% if not loop.last %}, '|',{% endif -%}\n {%- endfor -%}\n )))\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.754848, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_columns": {"name": "bigquery__create_columns", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/snapshot.sql", "original_file_path": "macros/materializations/snapshot.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_columns", "macro_sql": "{% macro bigquery__create_columns(relation, columns) %}\n {{ adapter.alter_table_add_columns(relation, columns) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.754999, "supported_languages": null}, "macro.dbt_bigquery.bigquery__post_snapshot": {"name": "bigquery__post_snapshot", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/snapshot.sql", "original_file_path": "macros/materializations/snapshot.sql", "unique_id": "macro.dbt_bigquery.bigquery__post_snapshot", "macro_sql": "{% macro bigquery__post_snapshot(staging_relation) %}\n -- Clean up the snapshot temp table\n {% do drop_relation(staging_relation) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.drop_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7551339, "supported_languages": null}, "macro.dbt_bigquery.bigquery__can_clone_table": {"name": "bigquery__can_clone_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/clone.sql", "original_file_path": "macros/materializations/clone.sql", "unique_id": "macro.dbt_bigquery.bigquery__can_clone_table", "macro_sql": "{% macro bigquery__can_clone_table() %}\n {{ return(True) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.75533, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_or_replace_clone": {"name": "bigquery__create_or_replace_clone", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/clone.sql", "original_file_path": "macros/materializations/clone.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_or_replace_clone", "macro_sql": "{% macro bigquery__create_or_replace_clone(this_relation, defer_relation) %}\n create or replace\n table {{ this_relation }}\n clone {{ defer_relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7554612, "supported_languages": null}, "macro.dbt_bigquery.bq_generate_incremental_merge_build_sql": {"name": "bq_generate_incremental_merge_build_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/merge.sql", "original_file_path": "macros/materializations/incremental_strategy/merge.sql", "unique_id": "macro.dbt_bigquery.bq_generate_incremental_merge_build_sql", "macro_sql": "{% macro bq_generate_incremental_merge_build_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, incremental_predicates\n) %}\n {%- set source_sql -%}\n {%- if tmp_relation_exists -%}\n (\n select\n {% if partition_by.time_ingestion_partitioning -%}\n {{ partition_by.insertable_time_partitioning_field() }},\n {%- endif -%}\n * from {{ tmp_relation }}\n )\n {%- else -%} {#-- wrap sql in parens to make it a subquery --#}\n (\n {%- if partition_by.time_ingestion_partitioning -%}\n {{ wrap_with_time_ingestion_partitioning_sql(partition_by, sql, True) }}\n {%- else -%}\n {{sql}}\n {%- endif %}\n )\n {%- endif -%}\n {%- endset -%}\n\n {%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}\n {%- set avoid_require_partition_filter = predicate_for_avoid_require_partition_filter() -%}\n {%- if avoid_require_partition_filter is not none -%}\n {% do predicates.append(avoid_require_partition_filter) %}\n {%- endif -%}\n\n {% set build_sql = get_merge_sql(target_relation, source_sql, unique_key, dest_columns, predicates) %}\n\n {{ return(build_sql) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql", "macro.dbt_bigquery.predicate_for_avoid_require_partition_filter", "macro.dbt.get_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.756706, "supported_languages": null}, "macro.dbt_bigquery.declare_dbt_max_partition": {"name": "declare_dbt_max_partition", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/common.sql", "original_file_path": "macros/materializations/incremental_strategy/common.sql", "unique_id": "macro.dbt_bigquery.declare_dbt_max_partition", "macro_sql": "{% macro declare_dbt_max_partition(relation, partition_by, compiled_code, language='sql') %}\n\n {#-- TODO: revisit partitioning with python models --#}\n {%- if '_dbt_max_partition' in compiled_code and language == 'sql' -%}\n\n declare _dbt_max_partition {{ partition_by.data_type_for_partition() }} default (\n select max({{ partition_by.field }}) from {{ this }}\n where {{ partition_by.field }} is not null\n );\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.757508, "supported_languages": null}, "macro.dbt_bigquery.predicate_for_avoid_require_partition_filter": {"name": "predicate_for_avoid_require_partition_filter", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/common.sql", "original_file_path": "macros/materializations/incremental_strategy/common.sql", "unique_id": "macro.dbt_bigquery.predicate_for_avoid_require_partition_filter", "macro_sql": "{% macro predicate_for_avoid_require_partition_filter(target='DBT_INTERNAL_DEST') %}\n\n {%- set raw_partition_by = config.get('partition_by', none) -%}\n {%- set partition_config = adapter.parse_partition_by(raw_partition_by) -%}\n {%- set predicate = none -%}\n\n {% if partition_config and config.get('require_partition_filter') -%}\n {%- set partition_field = partition_config.time_partitioning_field() if partition_config.time_ingestion_partitioning else partition_config.field -%}\n {% set predicate %}\n (\n `{{ target }}`.`{{ partition_field }}` is null\n or `{{ target }}`.`{{ partition_field }}` is not null\n )\n {% endset %}\n {%- endif -%}\n\n {{ return(predicate) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.758097, "supported_languages": null}, "macro.dbt_bigquery.bq_generate_incremental_insert_overwrite_build_sql": {"name": "bq_generate_incremental_insert_overwrite_build_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_generate_incremental_insert_overwrite_build_sql", "macro_sql": "{% macro bq_generate_incremental_insert_overwrite_build_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions\n) %}\n {% if partition_by is none %}\n {% set missing_partition_msg -%}\n The 'insert_overwrite' strategy requires the `partition_by` config.\n {%- endset %}\n {% do exceptions.raise_compiler_error(missing_partition_msg) %}\n {% endif %}\n\n {% set build_sql = bq_insert_overwrite_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions\n ) %}\n\n {{ return(build_sql) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bq_insert_overwrite_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.760972, "supported_languages": null}, "macro.dbt_bigquery.bq_copy_partitions": {"name": "bq_copy_partitions", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_copy_partitions", "macro_sql": "{% macro bq_copy_partitions(tmp_relation, target_relation, partitions, partition_by) %}\n\n {% for partition in partitions %}\n {% if partition_by.data_type == 'int64' %}\n {% set partition = partition | as_text %}\n {% elif partition_by.granularity == 'hour' %}\n {% set partition = partition.strftime(\"%Y%m%d%H\") %}\n {% elif partition_by.granularity == 'day' %}\n {% set partition = partition.strftime(\"%Y%m%d\") %}\n {% elif partition_by.granularity == 'month' %}\n {% set partition = partition.strftime(\"%Y%m\") %}\n {% elif partition_by.granularity == 'year' %}\n {% set partition = partition.strftime(\"%Y\") %}\n {% endif %}\n {% set tmp_relation_partitioned = api.Relation.create(database=tmp_relation.database, schema=tmp_relation.schema, identifier=tmp_relation.table ~ '$' ~ partition, type=tmp_relation.type) %}\n {% set target_relation_partitioned = api.Relation.create(database=target_relation.database, schema=target_relation.schema, identifier=target_relation.table ~ '$' ~ partition, type=target_relation.type) %}\n {% do adapter.copy_table(tmp_relation_partitioned, target_relation_partitioned, \"table\") %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.762223, "supported_languages": null}, "macro.dbt_bigquery.bq_insert_overwrite_sql": {"name": "bq_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_insert_overwrite_sql", "macro_sql": "{% macro bq_insert_overwrite_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions\n) %}\n {% if partitions is not none and partitions != [] %} {# static #}\n {{ bq_static_insert_overwrite_sql(tmp_relation, target_relation, sql, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions) }}\n {% else %} {# dynamic #}\n {{ bq_dynamic_insert_overwrite_sql(tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, copy_partitions) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bq_static_insert_overwrite_sql", "macro.dbt_bigquery.bq_dynamic_insert_overwrite_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7627652, "supported_languages": null}, "macro.dbt_bigquery.bq_static_insert_overwrite_sql": {"name": "bq_static_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_static_insert_overwrite_sql", "macro_sql": "{% macro bq_static_insert_overwrite_sql(\n tmp_relation, target_relation, sql, partition_by, partitions, dest_columns, tmp_relation_exists, copy_partitions\n) %}\n\n {% set predicate -%}\n {{ partition_by.render_wrapped(alias='DBT_INTERNAL_DEST') }} in (\n {{ partitions | join (', ') }}\n )\n {%- endset %}\n\n {%- set source_sql -%}\n (\n {% if partition_by.time_ingestion_partitioning and tmp_relation_exists -%}\n select\n {{ partition_by.insertable_time_partitioning_field() }},\n * from {{ tmp_relation }}\n {% elif tmp_relation_exists -%}\n select\n * from {{ tmp_relation }}\n {%- elif partition_by.time_ingestion_partitioning -%}\n {{ wrap_with_time_ingestion_partitioning_sql(partition_by, sql, True) }}\n {%- else -%}\n {{sql}}\n {%- endif %}\n\n )\n {%- endset -%}\n\n {% if copy_partitions %}\n {% do bq_copy_partitions(tmp_relation, target_relation, partitions, partition_by) %}\n {% else %}\n\n {#-- In case we're putting the model SQL _directly_ into the MERGE statement,\n we need to prepend the MERGE statement with the user-configured sql_header,\n which may be needed to resolve that model SQL (e.g. referencing a variable or UDF in the header)\n in the \"temporary table exists\" case, we save the model SQL result as a temp table first, wherein the\n sql_header is included by the create_table_as macro.\n #}\n -- 1. run the merge statement\n {{ get_insert_overwrite_merge_sql(target_relation, source_sql, dest_columns, [predicate], include_sql_header = not tmp_relation_exists) }};\n\n {%- if tmp_relation_exists -%}\n -- 2. clean up the temp table\n drop table if exists {{ tmp_relation }};\n {%- endif -%}\n\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql", "macro.dbt_bigquery.bq_copy_partitions", "macro.dbt.get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7637188, "supported_languages": null}, "macro.dbt_bigquery.bq_dynamic_copy_partitions_insert_overwrite_sql": {"name": "bq_dynamic_copy_partitions_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_dynamic_copy_partitions_insert_overwrite_sql", "macro_sql": "{% macro bq_dynamic_copy_partitions_insert_overwrite_sql(\n tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, copy_partitions\n ) %}\n {%- if tmp_relation_exists is false -%}\n {# We run temp table creation in a separated script to move to partitions copy if it doesn't already exist #}\n {%- call statement('create_tmp_relation_for_copy', language='sql') -%}\n {{ bq_create_table_as(partition_by, True, tmp_relation, sql, 'sql')\n }}\n {%- endcall %}\n {%- endif -%}\n {%- set partitions_sql -%}\n select distinct {{ partition_by.render_wrapped() }}\n from {{ tmp_relation }}\n {%- endset -%}\n {%- set partitions = run_query(partitions_sql).columns[0].values() -%}\n {# We copy the partitions #}\n {%- do bq_copy_partitions(tmp_relation, target_relation, partitions, partition_by) -%}\n -- Clean up the temp table\n drop table if exists {{ tmp_relation }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_bigquery.bq_create_table_as", "macro.dbt.run_query", "macro.dbt_bigquery.bq_copy_partitions"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.764383, "supported_languages": null}, "macro.dbt_bigquery.bq_dynamic_insert_overwrite_sql": {"name": "bq_dynamic_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "original_file_path": "macros/materializations/incremental_strategy/insert_overwrite.sql", "unique_id": "macro.dbt_bigquery.bq_dynamic_insert_overwrite_sql", "macro_sql": "{% macro bq_dynamic_insert_overwrite_sql(tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, copy_partitions) %}\n {%- if copy_partitions is true %}\n {{ bq_dynamic_copy_partitions_insert_overwrite_sql(tmp_relation, target_relation, sql, unique_key, partition_by, dest_columns, tmp_relation_exists, copy_partitions) }}\n {% else -%}\n {% set predicate -%}\n {{ partition_by.render_wrapped(alias='DBT_INTERNAL_DEST') }} in unnest(dbt_partitions_for_replacement)\n {%- endset %}\n\n {%- set source_sql -%}\n (\n select\n {% if partition_by.time_ingestion_partitioning -%}\n {{ partition_by.insertable_time_partitioning_field() }},\n {%- endif -%}\n * from {{ tmp_relation }}\n )\n {%- endset -%}\n\n -- generated script to merge partitions into {{ target_relation }}\n declare dbt_partitions_for_replacement array<{{ partition_by.data_type_for_partition() }}>;\n\n {# have we already created the temp table to check for schema changes? #}\n {% if not tmp_relation_exists %}\n -- 1. create a temp table with model data\n {{ bq_create_table_as(partition_by, True, tmp_relation, sql, 'sql') }}\n {% else %}\n -- 1. temp table already exists, we used it to check for schema changes\n {% endif %}\n {%- set partition_field = partition_by.time_partitioning_field() if partition_by.time_ingestion_partitioning else partition_by.render_wrapped() -%}\n\n -- 2. define partitions to update\n set (dbt_partitions_for_replacement) = (\n select as struct\n -- IGNORE NULLS: this needs to be aligned to _dbt_max_partition, which ignores null\n array_agg(distinct {{ partition_field }} IGNORE NULLS)\n from {{ tmp_relation }}\n );\n\n -- 3. run the merge statement\n {{ get_insert_overwrite_merge_sql(target_relation, source_sql, dest_columns, [predicate]) }};\n\n -- 4. clean up the temp table\n drop table if exists {{ tmp_relation }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bq_dynamic_copy_partitions_insert_overwrite_sql", "macro.dbt_bigquery.bq_create_table_as", "macro.dbt.get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.765461, "supported_languages": null}, "macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql": {"name": "wrap_with_time_ingestion_partitioning_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "original_file_path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "unique_id": "macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql", "macro_sql": "{% macro wrap_with_time_ingestion_partitioning_sql(partition_by, sql, is_nested) %}\n\n select TIMESTAMP({{ partition_by.field }}) as {{ partition_by.insertable_time_partitioning_field() }}, * EXCEPT({{ partition_by.field }}) from (\n {{ sql }}\n ){%- if not is_nested -%};{%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.766861, "supported_languages": null}, "macro.dbt_bigquery.get_quoted_with_types_csv": {"name": "get_quoted_with_types_csv", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "original_file_path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "unique_id": "macro.dbt_bigquery.get_quoted_with_types_csv", "macro_sql": "{% macro get_quoted_with_types_csv(columns) %}\n {% set quoted = [] %}\n {% for col in columns -%}\n {%- do quoted.append(adapter.quote(col.name) ~ \" \" ~ col.data_type) -%}\n {%- endfor %}\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7672498, "supported_languages": null}, "macro.dbt_bigquery.columns_without_partition_fields_csv": {"name": "columns_without_partition_fields_csv", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "original_file_path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "unique_id": "macro.dbt_bigquery.columns_without_partition_fields_csv", "macro_sql": "{% macro columns_without_partition_fields_csv(partition_config, columns) -%}\n {%- set columns_no_partition = partition_config.reject_partition_field_column(columns) -%}\n {% set columns_names = get_quoted_with_types_csv(columns_no_partition) %}\n {{ return(columns_names) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_bigquery.get_quoted_with_types_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.767494, "supported_languages": null}, "macro.dbt_bigquery.bq_insert_into_ingestion_time_partitioned_table_sql": {"name": "bq_insert_into_ingestion_time_partitioned_table_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "original_file_path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "unique_id": "macro.dbt_bigquery.bq_insert_into_ingestion_time_partitioned_table_sql", "macro_sql": "{% macro bq_insert_into_ingestion_time_partitioned_table_sql(target_relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n {{ sql_header if sql_header is not none }}\n {%- set raw_partition_by = config.get('partition_by', none) -%}\n {%- set partition_by = adapter.parse_partition_by(raw_partition_by) -%}\n {% set dest_columns = adapter.get_columns_in_relation(target_relation) %}\n {%- set dest_columns_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n insert into {{ target_relation }} ({{ partition_by.insertable_time_partitioning_field() }}, {{ dest_columns_csv }})\n {{ wrap_with_time_ingestion_partitioning_sql(partition_by, sql, False) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.get_quoted_csv", "macro.dbt_bigquery.wrap_with_time_ingestion_partitioning_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.768118, "supported_languages": null}, "macro.dbt_bigquery.get_columns_with_types_in_query_sql": {"name": "get_columns_with_types_in_query_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "original_file_path": "macros/materializations/incremental_strategy/time_ingestion_tables.sql", "unique_id": "macro.dbt_bigquery.get_columns_with_types_in_query_sql", "macro_sql": "{% macro get_columns_with_types_in_query_sql(select_sql) %}\n {% set sql %}\n {%- set sql_header = config.get('sql_header', none) -%}\n {{ sql_header if sql_header is not none }}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false\n limit 0\n {% endset %}\n {{ return(adapter.get_columns_in_select_sql(sql)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.768447, "supported_languages": null}, "macro.dbt_bigquery.bigquery__drop_relation": {"name": "bigquery__drop_relation", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt_bigquery.bigquery__drop_relation", "macro_sql": "{% macro bigquery__drop_relation(relation) -%}\n {% do adapter.drop_relation(relation) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.76862, "supported_languages": null}, "macro.dbt_bigquery.bigquery_options": {"name": "bigquery_options", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/options.sql", "original_file_path": "macros/relations/options.sql", "unique_id": "macro.dbt_bigquery.bigquery_options", "macro_sql": "{% macro bigquery_options(opts) %}\n {% set options -%}\n OPTIONS({% for opt_key, opt_val in opts.items() %}\n {{ opt_key }}={{ opt_val }}{{ \",\" if not loop.last }}\n {% endfor %})\n {%- endset %}\n {%- do return(options) -%}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7690518, "supported_languages": null}, "macro.dbt_bigquery.cluster_by": {"name": "cluster_by", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/cluster.sql", "original_file_path": "macros/relations/cluster.sql", "unique_id": "macro.dbt_bigquery.cluster_by", "macro_sql": "{% macro cluster_by(raw_cluster_by) %}\n {%- if raw_cluster_by is not none -%}\n cluster by {% if raw_cluster_by is string -%}\n {% set raw_cluster_by = [raw_cluster_by] %}\n {%- endif -%}\n {%- for cluster in raw_cluster_by -%}\n {{ cluster }}\n {%- if not loop.last -%}, {% endif -%}\n {%- endfor -%}\n\n {% endif %}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.769514, "supported_languages": null}, "macro.dbt_bigquery.bigquery__rename_relation": {"name": "bigquery__rename_relation", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt_bigquery.bigquery__rename_relation", "macro_sql": "{% macro bigquery__rename_relation(from_relation, to_relation) -%}\n {% do adapter.rename_relation(from_relation, to_relation) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.769702, "supported_languages": null}, "macro.dbt_bigquery.partition_by": {"name": "partition_by", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/partition.sql", "original_file_path": "macros/relations/partition.sql", "unique_id": "macro.dbt_bigquery.partition_by", "macro_sql": "{% macro partition_by(partition_config) -%}\n {%- if partition_config is none -%}\n {% do return('') %}\n {%- elif partition_config.time_ingestion_partitioning -%}\n partition by {{ partition_config.render_wrapped() }}\n {%- elif partition_config.data_type | lower in ('date','timestamp','datetime') -%}\n partition by {{ partition_config.render() }}\n {%- elif partition_config.data_type | lower in ('int64') -%}\n {%- set range = partition_config.range -%}\n partition by range_bucket(\n {{ partition_config.field }},\n generate_array({{ range.start}}, {{ range.end }}, {{ range.interval }})\n )\n {%- endif -%}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7705228, "supported_languages": null}, "macro.dbt_bigquery.bigquery__drop_materialized_view": {"name": "bigquery__drop_materialized_view", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt_bigquery.bigquery__drop_materialized_view", "macro_sql": "{% macro bigquery__drop_materialized_view(relation) %}\n drop materialized view if exists {{ relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.770664, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_replace_materialized_view_as_sql": {"name": "bigquery__get_replace_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/replace.sql", "original_file_path": "macros/relations/materialized_view/replace.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_replace_materialized_view_as_sql", "macro_sql": "{% macro bigquery__get_replace_materialized_view_as_sql(relation, sql) %}\n\n {%- set materialized_view = adapter.Relation.materialized_view_from_relation_config(config.model) -%}\n\n create or replace materialized view if not exists {{ relation }}\n {% if materialized_view.partition %}{{ partition_by(materialized_view.partition) }}{% endif %}\n {% if materialized_view.cluster %}{{ cluster_by(materialized_view.cluster.fields) }}{% endif %}\n {{ bigquery_options(materialized_view.options.as_ddl_dict()) }}\n as {{ sql }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.partition_by", "macro.dbt_bigquery.cluster_by", "macro.dbt_bigquery.bigquery_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7712572, "supported_languages": null}, "macro.dbt_bigquery.bigquery__refresh_materialized_view": {"name": "bigquery__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt_bigquery.bigquery__refresh_materialized_view", "macro_sql": "{% macro bigquery__refresh_materialized_view(relation) %}\n call bq.refresh_materialized_view('{{ relation.database }}.{{ relation.schema }}.{{ relation.identifier }}')\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.771469, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_alter_materialized_view_as_sql": {"name": "bigquery__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_alter_materialized_view_as_sql", "macro_sql": "{% macro bigquery__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n\n {% if configuration_changes.requires_full_refresh %}\n {{ get_replace_sql(existing_relation, relation, sql) }}\n {% else %}\n\n alter materialized view {{ relation }}\n set {{ bigquery_options(configuration_changes.options.context.as_ddl_dict()) }}\n\n {%- endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_replace_sql", "macro.dbt_bigquery.bigquery_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.772042, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_materialized_view_configuration_changes": {"name": "bigquery__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_materialized_view_configuration_changes", "macro_sql": "{% macro bigquery__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {% set _existing_materialized_view = adapter.describe_relation(existing_relation) %}\n {% set _configuration_changes = existing_relation.materialized_view_config_changeset(_existing_materialized_view, new_config.model) %}\n {% do return(_configuration_changes) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.772337, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_create_materialized_view_as_sql": {"name": "bigquery__get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_create_materialized_view_as_sql", "macro_sql": "{% macro bigquery__get_create_materialized_view_as_sql(relation, sql) %}\n\n {%- set materialized_view = adapter.Relation.materialized_view_from_relation_config(config.model) -%}\n\n create materialized view if not exists {{ relation }}\n {% if materialized_view.partition %}{{ partition_by(materialized_view.partition) }}{% endif %}\n {% if materialized_view.cluster %}{{ cluster_by(materialized_view.cluster.fields) }}{% endif %}\n {{ bigquery_options(materialized_view.options.as_ddl_dict()) }}\n as {{ sql }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.partition_by", "macro.dbt_bigquery.cluster_by", "macro.dbt_bigquery.bigquery_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.772937, "supported_languages": null}, "macro.dbt_bigquery.bigquery__drop_table": {"name": "bigquery__drop_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt_bigquery.bigquery__drop_table", "macro_sql": "{% macro bigquery__drop_table(relation) %}\n drop table if exists {{ relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.773071, "supported_languages": null}, "macro.dbt_bigquery.bigquery_table_options": {"name": "bigquery_table_options", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/table/options.sql", "original_file_path": "macros/relations/table/options.sql", "unique_id": "macro.dbt_bigquery.bigquery_table_options", "macro_sql": "{% macro bigquery_table_options(config, node, temporary) %}\n {% set opts = adapter.get_table_options(config, node, temporary) %}\n {%- do return(bigquery_options(opts)) -%}\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.773354, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_rename_table_sql": {"name": "bigquery__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_rename_table_sql", "macro_sql": "{%- macro bigquery__get_rename_table_sql(relation, new_name) -%}\n alter table {{ relation }} rename to {{ new_name }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.773518, "supported_languages": null}, "macro.dbt_bigquery.bigquery__drop_view": {"name": "bigquery__drop_view", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt_bigquery.bigquery__drop_view", "macro_sql": "{% macro bigquery__drop_view(relation) %}\n drop view if exists {{ relation }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7737222, "supported_languages": null}, "macro.dbt_bigquery.bigquery__create_or_replace_view": {"name": "bigquery__create_or_replace_view", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt_bigquery.bigquery__create_or_replace_view", "macro_sql": "{% macro bigquery__create_or_replace_view() %}\n {%- set identifier = model['alias'] -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database,\n type='view') -%}\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n -- If there's a table with the same name and we weren't told to full refresh,\n -- that's an error. If we were told to full refresh, drop it. This behavior differs\n -- for Snowflake and BigQuery, so multiple dispatch is used.\n {%- if old_relation is not none and not old_relation.is_view -%}\n {{ handle_existing_table(should_full_refresh(), old_relation) }}\n {%- endif -%}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(target_relation, sql) }}\n {%- endcall %}\n\n {% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt_bigquery.handle_existing_table", "macro.dbt.should_full_refresh", "macro.dbt.statement", "macro.dbt.get_create_view_as_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.775394, "supported_languages": null}, "macro.dbt_bigquery.handle_existing_table": {"name": "handle_existing_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt_bigquery.handle_existing_table", "macro_sql": "{% macro handle_existing_table(full_refresh, old_relation) %}\n {{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__handle_existing_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.775587, "supported_languages": null}, "macro.dbt_bigquery.default__handle_existing_table": {"name": "default__handle_existing_table", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt_bigquery.default__handle_existing_table", "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n {{ log(\"Dropping relation \" ~ old_relation ~ \" because it is of type \" ~ old_relation.type) }}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7758021, "supported_languages": null}, "macro.dbt_bigquery.bigquery_view_options": {"name": "bigquery_view_options", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/options.sql", "original_file_path": "macros/relations/view/options.sql", "unique_id": "macro.dbt_bigquery.bigquery_view_options", "macro_sql": "{% macro bigquery_view_options(config, node) %}\n {% set opts = adapter.get_view_options(config, node) %}\n {%- do return(bigquery_options(opts)) -%}\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7760682, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_rename_view_sql": {"name": "bigquery__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_rename_view_sql", "macro_sql": "{%- macro bigquery__get_rename_view_sql(relation, new_name) -%}\n alter view {{ relation }} rename to {{ new_name }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.776235, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_catalog_relations": {"name": "bigquery__get_catalog_relations", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/by_relation.sql", "original_file_path": "macros/catalog/by_relation.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_catalog_relations", "macro_sql": "{% macro bigquery__get_catalog_relations(information_schema, relations) -%}\n\n {%- if (relations | length) == 0 -%}\n {# Hopefully nothing cares about the columns we return when there are no rows #}\n {%- set query = \"select 1 as id limit 0\" -%}\n\n {%- else -%}\n {%- set query -%}\n with\n table_shards_stage as ({{ _bigquery__get_table_shards_sql(information_schema) }}),\n table_shards as (\n select * from table_shards_stage\n where (\n {%- for relation in relations -%}\n (\n upper(table_schema) = upper('{{ relation.schema }}')\n and upper(table_name) = upper('{{ relation.identifier }}')\n )\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n )\n ),\n tables as ({{ _bigquery__get_tables_sql() }}),\n table_stats as ({{ _bigquery__get_table_stats_sql() }}),\n\n columns as ({{ _bigquery__get_columns_sql(information_schema) }}),\n column_stats as ({{ _bigquery__get_column_stats_sql() }})\n\n {{ _bigquery__get_extended_catalog_sql() }}\n {%- endset -%}\n\n {%- endif -%}\n\n {{ return(run_query(query)) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery._bigquery__get_table_shards_sql", "macro.dbt_bigquery._bigquery__get_tables_sql", "macro.dbt_bigquery._bigquery__get_table_stats_sql", "macro.dbt_bigquery._bigquery__get_columns_sql", "macro.dbt_bigquery._bigquery__get_column_stats_sql", "macro.dbt_bigquery._bigquery__get_extended_catalog_sql", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.777589, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_table_shards_sql": {"name": "_bigquery__get_table_shards_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_table_shards_sql", "macro_sql": "{% macro _bigquery__get_table_shards_sql(information_schema) %}\n select\n tables.project_id as table_catalog,\n tables.dataset_id as table_schema,\n coalesce(REGEXP_EXTRACT(tables.table_id, '^(.+)[0-9]{8}$'), tables.table_id) as table_name,\n tables.table_id as shard_name,\n REGEXP_EXTRACT(tables.table_id, '^.+([0-9]{8})$') as shard_index,\n REGEXP_CONTAINS(tables.table_id, '^.+[0-9]{8}$') and tables.type = 1 as is_date_shard,\n case\n when materialized_views.table_name is not null then 'materialized view'\n when tables.type = 1 then 'table'\n when tables.type = 2 then 'view'\n else 'external'\n end as table_type,\n tables.type = 1 as is_table,\n JSON_VALUE(table_description.option_value) as table_comment,\n tables.size_bytes,\n tables.row_count\n from {{ information_schema.replace(information_schema_view='__TABLES__') }} tables\n left join {{ information_schema.replace(information_schema_view='MATERIALIZED_VIEWS') }} materialized_views\n on materialized_views.table_catalog = tables.project_id\n and materialized_views.table_schema = tables.dataset_id\n and materialized_views.table_name = tables.table_id\n left join {{ information_schema.replace(information_schema_view='TABLE_OPTIONS') }} table_description\n on table_description.table_catalog = tables.project_id\n and table_description.table_schema = tables.dataset_id\n and table_description.table_name = tables.table_id\n and table_description.option_name = 'description'\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.replace"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.780376, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_tables_sql": {"name": "_bigquery__get_tables_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_tables_sql", "macro_sql": "{% macro _bigquery__get_tables_sql() %}\n select distinct\n table_catalog,\n table_schema,\n table_name,\n is_date_shard,\n table_type,\n is_table,\n table_comment\n from table_shards\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7804642, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_table_stats_sql": {"name": "_bigquery__get_table_stats_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_table_stats_sql", "macro_sql": "{% macro _bigquery__get_table_stats_sql() %}\n select\n table_catalog,\n table_schema,\n table_name,\n max(shard_name) as latest_shard_name,\n min(shard_index) as shard_min,\n max(shard_index) as shard_max,\n count(shard_index) as shard_count,\n sum(size_bytes) as size_bytes,\n sum(row_count) as row_count\n from table_shards\n group by 1, 2, 3\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.780559, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_columns_sql": {"name": "_bigquery__get_columns_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_columns_sql", "macro_sql": "{% macro _bigquery__get_columns_sql(information_schema) %}\n select\n columns.table_catalog,\n columns.table_schema,\n columns.table_name as shard_name,\n coalesce(paths.field_path, '') as column_name,\n -- invent a row number to account for nested fields\n -- BQ does not treat these nested properties as independent fields\n row_number() over (\n partition by\n columns.table_catalog,\n columns.table_schema,\n columns.table_name\n order by\n columns.ordinal_position,\n paths.field_path\n ) as column_index,\n coalesce(paths.data_type, '') as column_type,\n paths.description as column_comment,\n case when columns.is_partitioning_column = 'YES' then 1 else 0 end as is_partitioning_column,\n case when columns.is_partitioning_column = 'YES' then paths.field_path end as partition_column,\n case when columns.clustering_ordinal_position is not null then 1 else 0 end as is_clustering_column,\n case when columns.clustering_ordinal_position is not null then paths.field_path end as cluster_column,\n columns.clustering_ordinal_position\n from {{ information_schema.replace(information_schema_view='COLUMNS') }} columns\n join {{ information_schema.replace(information_schema_view='COLUMN_FIELD_PATHS') }} paths\n on paths.table_catalog = columns.table_catalog\n and paths.table_schema = columns.table_schema\n and paths.table_name = columns.table_name\n and paths.column_name = columns.column_name\n where columns.ordinal_position is not null\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.replace"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7808352, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_column_stats_sql": {"name": "_bigquery__get_column_stats_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_column_stats_sql", "macro_sql": "{% macro _bigquery__get_column_stats_sql() %}\n select\n table_catalog,\n table_schema,\n shard_name,\n max(is_partitioning_column) = 1 as is_partitioned,\n max(partition_column) as partition_column,\n max(is_clustering_column) = 1 as is_clustered,\n array_to_string(\n array_agg(\n cluster_column ignore nulls\n order by clustering_ordinal_position\n ), ', '\n ) as clustering_columns\n from columns\n group by 1, 2, 3\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.780938, "supported_languages": null}, "macro.dbt_bigquery._bigquery__get_extended_catalog_sql": {"name": "_bigquery__get_extended_catalog_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/catalog.sql", "original_file_path": "macros/catalog/catalog.sql", "unique_id": "macro.dbt_bigquery._bigquery__get_extended_catalog_sql", "macro_sql": "{% macro _bigquery__get_extended_catalog_sql() %}\n select\n tables.table_catalog as table_database,\n tables.table_schema,\n case\n when tables.is_date_shard then concat(tables.table_name, '*')\n else tables.table_name\n end as table_name,\n tables.table_type,\n tables.table_comment,\n -- coalesce column metadata fields to ensure they are non-null for catalog generation\n -- external table columns are not present in COLUMN_FIELD_PATHS\n coalesce(columns.column_name, '') as column_name,\n coalesce(columns.column_index, 1) as column_index,\n coalesce(columns.column_type, '') as column_type,\n coalesce(columns.column_comment, '') as column_comment,\n\n 'Shard count' as `stats__date_shards__label`,\n table_stats.shard_count as `stats__date_shards__value`,\n 'The number of date shards in this table' as `stats__date_shards__description`,\n tables.is_date_shard as `stats__date_shards__include`,\n\n 'Shard (min)' as `stats__date_shard_min__label`,\n table_stats.shard_min as `stats__date_shard_min__value`,\n 'The first date shard in this table' as `stats__date_shard_min__description`,\n tables.is_date_shard as `stats__date_shard_min__include`,\n\n 'Shard (max)' as `stats__date_shard_max__label`,\n table_stats.shard_max as `stats__date_shard_max__value`,\n 'The last date shard in this table' as `stats__date_shard_max__description`,\n tables.is_date_shard as `stats__date_shard_max__include`,\n\n '# Rows' as `stats__num_rows__label`,\n table_stats.row_count as `stats__num_rows__value`,\n 'Approximate count of rows in this table' as `stats__num_rows__description`,\n tables.is_table as `stats__num_rows__include`,\n\n 'Approximate Size' as `stats__num_bytes__label`,\n table_stats.size_bytes as `stats__num_bytes__value`,\n 'Approximate size of table as reported by BigQuery' as `stats__num_bytes__description`,\n tables.is_table as `stats__num_bytes__include`,\n\n 'Partitioned By' as `stats__partitioning_type__label`,\n column_stats.partition_column as `stats__partitioning_type__value`,\n 'The partitioning column for this table' as `stats__partitioning_type__description`,\n column_stats.is_partitioned as `stats__partitioning_type__include`,\n\n 'Clustered By' as `stats__clustering_fields__label`,\n column_stats.clustering_columns as `stats__clustering_fields__value`,\n 'The clustering columns for this table' as `stats__clustering_fields__description`,\n column_stats.is_clustered as `stats__clustering_fields__include`\n\n from tables\n join table_stats\n on table_stats.table_catalog = tables.table_catalog\n and table_stats.table_schema = tables.table_schema\n and table_stats.table_name = tables.table_name\n left join column_stats\n on column_stats.table_catalog = tables.table_catalog\n and column_stats.table_schema = tables.table_schema\n and column_stats.shard_name = table_stats.latest_shard_name\n left join columns\n on columns.table_catalog = tables.table_catalog\n and columns.table_schema = tables.table_schema\n and columns.shard_name = table_stats.latest_shard_name\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.781203, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_catalog": {"name": "bigquery__get_catalog", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/catalog/by_schema.sql", "original_file_path": "macros/catalog/by_schema.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_catalog", "macro_sql": "{% macro bigquery__get_catalog(information_schema, schemas) -%}\n\n {%- if (schemas | length) == 0 -%}\n {# Hopefully nothing cares about the columns we return when there are no rows #}\n {%- set query = \"select 1 as id limit 0\" -%}\n\n {%- else -%}\n {%- set query -%}\n with\n table_shards as (\n {{ _bigquery__get_table_shards_sql(information_schema) }}\n where (\n {%- for schema in schemas -%}\n upper(tables.dataset_id) = upper('{{ schema }}')\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n )\n ),\n tables as ({{ _bigquery__get_tables_sql() }}),\n table_stats as ({{ _bigquery__get_table_stats_sql() }}),\n\n columns as ({{ _bigquery__get_columns_sql(information_schema) }}),\n column_stats as ({{ _bigquery__get_column_stats_sql() }})\n\n {{ _bigquery__get_extended_catalog_sql() }}\n {%- endset -%}\n\n {%- endif -%}\n\n {{ return(run_query(query)) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery._bigquery__get_table_shards_sql", "macro.dbt_bigquery._bigquery__get_tables_sql", "macro.dbt_bigquery._bigquery__get_table_stats_sql", "macro.dbt_bigquery._bigquery__get_columns_sql", "macro.dbt_bigquery._bigquery__get_column_stats_sql", "macro.dbt_bigquery._bigquery__get_extended_catalog_sql", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7823622, "supported_languages": null}, "macro.dbt_bigquery.bigquery__except": {"name": "bigquery__except", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/except.sql", "original_file_path": "macros/utils/except.sql", "unique_id": "macro.dbt_bigquery.bigquery__except", "macro_sql": "{% macro bigquery__except() %}\n\n except distinct\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.782469, "supported_languages": null}, "macro.dbt_bigquery.bigquery__dateadd": {"name": "bigquery__dateadd", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt_bigquery.bigquery__dateadd", "macro_sql": "{% macro bigquery__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n datetime_add(\n cast( {{ from_date_or_timestamp }} as datetime),\n interval {{ interval }} {{ datepart }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.782687, "supported_languages": null}, "macro.dbt_bigquery.bigquery__current_timestamp": {"name": "bigquery__current_timestamp", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/timestamps.sql", "original_file_path": "macros/utils/timestamps.sql", "unique_id": "macro.dbt_bigquery.bigquery__current_timestamp", "macro_sql": "{% macro bigquery__current_timestamp() -%}\n current_timestamp()\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7828531, "supported_languages": null}, "macro.dbt_bigquery.bigquery__snapshot_string_as_time": {"name": "bigquery__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/timestamps.sql", "original_file_path": "macros/utils/timestamps.sql", "unique_id": "macro.dbt_bigquery.bigquery__snapshot_string_as_time", "macro_sql": "{% macro bigquery__snapshot_string_as_time(timestamp) -%}\n {%- set result = 'TIMESTAMP(\"' ~ timestamp ~ '\")' -%}\n {{ return(result) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.783028, "supported_languages": null}, "macro.dbt_bigquery.bigquery__current_timestamp_backcompat": {"name": "bigquery__current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/timestamps.sql", "original_file_path": "macros/utils/timestamps.sql", "unique_id": "macro.dbt_bigquery.bigquery__current_timestamp_backcompat", "macro_sql": "{% macro bigquery__current_timestamp_backcompat() -%}\n current_timestamp\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7831051, "supported_languages": null}, "macro.dbt_bigquery.bigquery__intersect": {"name": "bigquery__intersect", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/intersect.sql", "original_file_path": "macros/utils/intersect.sql", "unique_id": "macro.dbt_bigquery.bigquery__intersect", "macro_sql": "{% macro bigquery__intersect() %}\n\n intersect distinct\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.783206, "supported_languages": null}, "macro.dbt_bigquery.bigquery__escape_single_quotes": {"name": "bigquery__escape_single_quotes", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/escape_single_quotes.sql", "original_file_path": "macros/utils/escape_single_quotes.sql", "unique_id": "macro.dbt_bigquery.bigquery__escape_single_quotes", "macro_sql": "{% macro bigquery__escape_single_quotes(expression) -%}\n{{ expression | replace(\"'\", \"\\\\'\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7834508, "supported_languages": null}, "macro.dbt_bigquery.bigquery__format_column": {"name": "bigquery__format_column", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/get_columns_spec_ddl.sql", "original_file_path": "macros/utils/get_columns_spec_ddl.sql", "unique_id": "macro.dbt_bigquery.bigquery__format_column", "macro_sql": "{% macro bigquery__format_column(column) -%}\n {% set data_type = column.data_type %}\n {% set formatted = column.column.lower() ~ \" \" ~ data_type %}\n {{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.784292, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_empty_schema_sql": {"name": "bigquery__get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/get_columns_spec_ddl.sql", "original_file_path": "macros/utils/get_columns_spec_ddl.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_empty_schema_sql", "macro_sql": "{% macro bigquery__get_empty_schema_sql(columns) %}\n {%- set col_err = [] -%}\n {% for col in columns.values() %}\n {%- if col['data_type'] is not defined -%}\n {{ col_err.append(col['name']) }}\n {%- endif -%}\n {%- endfor -%}\n {%- if (col_err | length) > 0 -%}\n {{ exceptions.column_type_missing(column_names=col_err) }}\n {%- endif -%}\n\n {%- set columns = adapter.nest_column_data_types(columns) -%}\n {{ return(dbt.default__get_empty_schema_sql(columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_empty_schema_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.784859, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_select_subquery": {"name": "bigquery__get_select_subquery", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/get_columns_spec_ddl.sql", "original_file_path": "macros/utils/get_columns_spec_ddl.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_select_subquery", "macro_sql": "{% macro bigquery__get_select_subquery(sql) %}\n select {{ adapter.dispatch('get_column_names')() }}\n from (\n {{ sql }}\n ) as model_subq\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_column_names"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.785026, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_column_names": {"name": "bigquery__get_column_names", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/get_columns_spec_ddl.sql", "original_file_path": "macros/utils/get_columns_spec_ddl.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_column_names", "macro_sql": "{% macro bigquery__get_column_names() %}\n {#- loop through nested user_provided_columns to get column names -#}\n {%- set user_provided_columns = adapter.nest_column_data_types(model['columns']) -%}\n {%- for i in user_provided_columns %}\n {%- set col = user_provided_columns[i] -%}\n {%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}\n {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.785493, "supported_languages": null}, "macro.dbt_bigquery.bigquery__right": {"name": "bigquery__right", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/right.sql", "original_file_path": "macros/utils/right.sql", "unique_id": "macro.dbt_bigquery.bigquery__right", "macro_sql": "{% macro bigquery__right(string_text, length_expression) %}\n\n case when {{ length_expression }} = 0\n then ''\n else\n substr(\n {{ string_text }},\n -1 * ({{ length_expression }})\n )\n end\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7857301, "supported_languages": null}, "macro.dbt_bigquery.bigquery__listagg": {"name": "bigquery__listagg", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt_bigquery.bigquery__listagg", "macro_sql": "{% macro bigquery__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n string_agg(\n {{ measure }},\n {{ delimiter_text }}\n {% if order_by_clause -%}\n {{ order_by_clause }}\n {%- endif %}\n {% if limit_num -%}\n limit {{ limit_num }}\n {%- endif %}\n )\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.786125, "supported_languages": null}, "macro.dbt_bigquery.bigquery__datediff": {"name": "bigquery__datediff", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt_bigquery.bigquery__datediff", "macro_sql": "{% macro bigquery__datediff(first_date, second_date, datepart) -%}\n\n {% if dbt_version[0] == 1 and dbt_version[2] >= 2 %}\n {{ return(dbt.datediff(first_date, second_date, datepart)) }}\n {% else %}\n\n datetime_diff(\n cast({{second_date}} as datetime),\n cast({{first_date}} as datetime),\n {{datepart}}\n )\n\n {% endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.786603, "supported_languages": null}, "macro.dbt_bigquery.bigquery__safe_cast": {"name": "bigquery__safe_cast", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt_bigquery.bigquery__safe_cast", "macro_sql": "{% macro bigquery__safe_cast(field, type) %}\n{%- if type.lower().startswith('array') and field is iterable and (field is not string and field is not mapping) and field | length > 0 -%}\n {#-- Extract nested type from 'array' --#}\n {% set nested_type = type.lower()[6:-1] %}\n {#-- BigQuery does not support direct casts to arrays. instead, each element must be cast individually + reaggregated into an array --#}\n {%- if cast_from_string_unsupported_for(nested_type) %}\n (select array_agg(safe_cast(i as {{ nested_type }})) from unnest([\n {%- for nested_field in field %}\n {{ nested_field.strip('\"').strip(\"'\") }}{{ ',' if not loop.last }}\n {%- endfor %}\n ]) i)\n {%- else -%}\n (select array_agg(safe_cast(i as {{nested_type}})) from unnest({{field}}) i)\n {%- endif -%}\n\n{%- elif type.lower() == 'json' and field is mapping -%}\n safe_cast(json {{ dbt.string_literal(tojson(field)) }} as json)\n{%- elif cast_from_string_unsupported_for(type) and field is string -%}\n safe_cast({{field.strip('\"').strip(\"'\")}} as {{type}})\n{%- else -%}\n safe_cast({{field}} as {{type}})\n{%- endif -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.cast_from_string_unsupported_for", "macro.dbt.string_literal"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.788078, "supported_languages": null}, "macro.dbt_bigquery.cast_from_string_unsupported_for": {"name": "cast_from_string_unsupported_for", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt_bigquery.cast_from_string_unsupported_for", "macro_sql": "{% macro cast_from_string_unsupported_for(type) %}\n {{ return(type.lower().startswith('struct') or type.lower() == 'geography') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.788297, "supported_languages": null}, "macro.dbt_bigquery.bigquery__hash": {"name": "bigquery__hash", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/hash.sql", "original_file_path": "macros/utils/hash.sql", "unique_id": "macro.dbt_bigquery.bigquery__hash", "macro_sql": "{% macro bigquery__hash(field) -%}\n to_hex({{dbt.default__hash(field)}})\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__hash"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.788461, "supported_languages": null}, "macro.dbt_bigquery.bigquery__position": {"name": "bigquery__position", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/position.sql", "original_file_path": "macros/utils/position.sql", "unique_id": "macro.dbt_bigquery.bigquery__position", "macro_sql": "{% macro bigquery__position(substring_text, string_text) %}\n\n strpos(\n {{ string_text }},\n {{ substring_text }}\n\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.788647, "supported_languages": null}, "macro.dbt_bigquery.bigquery__string_literal": {"name": "bigquery__string_literal", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/string_literal.sql", "original_file_path": "macros/utils/string_literal.sql", "unique_id": "macro.dbt_bigquery.bigquery__string_literal", "macro_sql": "{%- macro bigquery__string_literal(value) -%}\n '''{{ value }}'''\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7887738, "supported_languages": null}, "macro.dbt_bigquery.bigquery__array_concat": {"name": "bigquery__array_concat", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/array_concat.sql", "original_file_path": "macros/utils/array_concat.sql", "unique_id": "macro.dbt_bigquery.bigquery__array_concat", "macro_sql": "{% macro bigquery__array_concat(array_1, array_2) -%}\n array_concat({{ array_1 }}, {{ array_2 }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7889369, "supported_languages": null}, "macro.dbt_bigquery.bigquery__bool_or": {"name": "bigquery__bool_or", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/bool_or.sql", "original_file_path": "macros/utils/bool_or.sql", "unique_id": "macro.dbt_bigquery.bigquery__bool_or", "macro_sql": "{% macro bigquery__bool_or(expression) -%}\n\n logical_or({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.789066, "supported_languages": null}, "macro.dbt_bigquery.bigquery__split_part": {"name": "bigquery__split_part", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt_bigquery.bigquery__split_part", "macro_sql": "{% macro bigquery__split_part(string_text, delimiter_text, part_number) %}\n\n {% if part_number >= 0 %}\n split(\n {{ string_text }},\n {{ delimiter_text }}\n )[safe_offset({{ part_number - 1 }})]\n {% else %}\n split(\n {{ string_text }},\n {{ delimiter_text }}\n )[safe_offset(\n length({{ string_text }})\n - length(\n replace({{ string_text }}, {{ delimiter_text }}, '')\n ) + 1 + {{ part_number }}\n )]\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7896771, "supported_languages": null}, "macro.dbt_bigquery.bigquery__date_trunc": {"name": "bigquery__date_trunc", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/date_trunc.sql", "original_file_path": "macros/utils/date_trunc.sql", "unique_id": "macro.dbt_bigquery.bigquery__date_trunc", "macro_sql": "{% macro bigquery__date_trunc(datepart, date) -%}\n timestamp_trunc(\n cast({{date}} as timestamp),\n {{datepart}}\n )\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.789852, "supported_languages": null}, "macro.dbt_bigquery.bigquery__array_construct": {"name": "bigquery__array_construct", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/array_construct.sql", "original_file_path": "macros/utils/array_construct.sql", "unique_id": "macro.dbt_bigquery.bigquery__array_construct", "macro_sql": "{% macro bigquery__array_construct(inputs, data_type) -%}\n {% if inputs|length > 0 %}\n [ {{ inputs|join(' , ') }} ]\n {% else %}\n ARRAY<{{data_type}}>[]\n {% endif %}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.790153, "supported_languages": null}, "macro.dbt_bigquery.bigquery__array_append": {"name": "bigquery__array_append", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/utils/array_append.sql", "original_file_path": "macros/utils/array_append.sql", "unique_id": "macro.dbt_bigquery.bigquery__array_append", "macro_sql": "{% macro bigquery__array_append(array, new_element) -%}\n {{ array_concat(array, array_construct([new_element])) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.array_concat", "macro.dbt.array_construct"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7903638, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_show_grant_sql": {"name": "bigquery__get_show_grant_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_show_grant_sql", "macro_sql": "{% macro bigquery__get_show_grant_sql(relation) %}\n {% set location = adapter.get_dataset_location(relation) %}\n {% set relation = relation.incorporate(location=location) %}\n\n select privilege_type, grantee\n from {{ relation.information_schema(\"OBJECT_PRIVILEGES\") }}\n where object_schema = \"{{ relation.dataset }}\"\n and object_name = \"{{ relation.identifier }}\"\n -- filter out current user\n and split(grantee, ':')[offset(1)] != session_user()\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.791136, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_grant_sql": {"name": "bigquery__get_grant_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_grant_sql", "macro_sql": "\n\n\n{%- macro bigquery__get_grant_sql(relation, privilege, grantee) -%}\n grant `{{ privilege }}` on {{ relation.type }} {{ relation }} to {{ '\\\"' + grantee|join('\\\", \\\"') + '\\\"' }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.791373, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_revoke_sql": {"name": "bigquery__get_revoke_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_revoke_sql", "macro_sql": "{%- macro bigquery__get_revoke_sql(relation, privilege, grantee) -%}\n revoke `{{ privilege }}` on {{ relation.type }} {{ relation }} from {{ '\\\"' + grantee|join('\\\", \\\"') + '\\\"' }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.791605, "supported_languages": null}, "macro.dbt_bigquery.bigquery__get_empty_subquery_sql": {"name": "bigquery__get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt_bigquery.bigquery__get_empty_subquery_sql", "macro_sql": "{% macro bigquery__get_empty_subquery_sql(select_sql, select_sql_header=none) %}\n {%- if select_sql_header is not none -%}\n {{ select_sql_header }}\n {%- endif -%}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false and current_timestamp() = current_timestamp()\n limit 0\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.791884, "supported_languages": null}, "macro.dbt_bigquery.bigquery__resolve_model_name": {"name": "bigquery__resolve_model_name", "resource_type": "macro", "package_name": "dbt_bigquery", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt_bigquery.bigquery__resolve_model_name", "macro_sql": "{% macro bigquery__resolve_model_name(input_model_name) -%}\n {{ input_model_name | string | replace('`', '') | replace('\"', '\\\"') }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7921128, "supported_languages": null}, "macro.dbt.run_hooks": {"name": "run_hooks", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.run_hooks", "macro_sql": "{% macro run_hooks(hooks, inside_transaction=True) %}\n {% for hook in hooks | selectattr('transaction', 'equalto', inside_transaction) %}\n {% if not inside_transaction and loop.first %}\n {% call statement(auto_begin=inside_transaction) %}\n commit;\n {% endcall %}\n {% endif %}\n {% set rendered = render(hook.get('sql')) | trim %}\n {% if (rendered | length) > 0 %}\n {% call statement(auto_begin=inside_transaction) %}\n {{ rendered }}\n {% endcall %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7931688, "supported_languages": null}, "macro.dbt.make_hook_config": {"name": "make_hook_config", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.make_hook_config", "macro_sql": "{% macro make_hook_config(sql, inside_transaction) %}\n {{ tojson({\"sql\": sql, \"transaction\": inside_transaction}) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.793362, "supported_languages": null}, "macro.dbt.before_begin": {"name": "before_begin", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.before_begin", "macro_sql": "{% macro before_begin(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.793508, "supported_languages": null}, "macro.dbt.in_transaction": {"name": "in_transaction", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.in_transaction", "macro_sql": "{% macro in_transaction(sql) %}\n {{ make_hook_config(sql, inside_transaction=True) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.793647, "supported_languages": null}, "macro.dbt.after_commit": {"name": "after_commit", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/hooks.sql", "original_file_path": "macros/materializations/hooks.sql", "unique_id": "macro.dbt.after_commit", "macro_sql": "{% macro after_commit(sql) %}\n {{ make_hook_config(sql, inside_transaction=False) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_hook_config"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.793783, "supported_languages": null}, "macro.dbt.set_sql_header": {"name": "set_sql_header", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.set_sql_header", "macro_sql": "{% macro set_sql_header(config) -%}\n {{ config.set('sql_header', caller()) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.794153, "supported_languages": null}, "macro.dbt.should_full_refresh": {"name": "should_full_refresh", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.should_full_refresh", "macro_sql": "{% macro should_full_refresh() %}\n {% set config_full_refresh = config.get('full_refresh') %}\n {% if config_full_refresh is none %}\n {% set config_full_refresh = flags.FULL_REFRESH %}\n {% endif %}\n {% do return(config_full_refresh) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.794442, "supported_languages": null}, "macro.dbt.should_store_failures": {"name": "should_store_failures", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/configs.sql", "original_file_path": "macros/materializations/configs.sql", "unique_id": "macro.dbt.should_store_failures", "macro_sql": "{% macro should_store_failures() %}\n {% set config_store_failures = config.get('store_failures') %}\n {% if config_store_failures is none %}\n {% set config_store_failures = flags.STORE_FAILURES %}\n {% endif %}\n {% do return(config_store_failures) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.79473, "supported_languages": null}, "macro.dbt.snapshot_merge_sql": {"name": "snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot_merge.sql", "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", "unique_id": "macro.dbt.snapshot_merge_sql", "macro_sql": "{% macro snapshot_merge_sql(target, source, insert_cols) -%}\n {{ adapter.dispatch('snapshot_merge_sql', 'dbt')(target, source, insert_cols) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__snapshot_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7954218, "supported_languages": null}, "macro.dbt.default__snapshot_merge_sql": {"name": "default__snapshot_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot_merge.sql", "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql", "unique_id": "macro.dbt.default__snapshot_merge_sql", "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n {%- set columns = config.get(\"snapshot_table_column_names\") or get_snapshot_table_column_names() -%}\n\n merge into {{ target.render() }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }} = DBT_INTERNAL_DEST.{{ columns.dbt_scd_id }}\n\n when matched\n {% if config.get(\"dbt_valid_to_current\") %}\n and (DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or\n DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null)\n {% else %}\n and DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null\n {% endif %}\n and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n then update\n set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}\n\n when not matched\n and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n then insert ({{ insert_cols_csv }})\n values ({{ insert_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_snapshot_table_column_names"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.796093, "supported_languages": null}, "macro.dbt.strategy_dispatch": {"name": "strategy_dispatch", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.strategy_dispatch", "macro_sql": "{% macro strategy_dispatch(name) -%}\n{% set original_name = name %}\n {% if '.' in name %}\n {% set package_name, name = name.split(\".\", 1) %}\n {% else %}\n {% set package_name = none %}\n {% endif %}\n\n {% if package_name is none %}\n {% set package_context = context %}\n {% elif package_name in context %}\n {% set package_context = context[package_name] %}\n {% else %}\n {% set error_msg %}\n Could not find package '{{package_name}}', called with '{{original_name}}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n\n {%- set search_name = 'snapshot_' ~ name ~ '_strategy' -%}\n\n {% if search_name not in package_context %}\n {% set error_msg %}\n The specified strategy macro '{{name}}' was not found in package '{{ package_name }}'\n {% endset %}\n {{ exceptions.raise_compiler_error(error_msg | trim) }}\n {% endif %}\n {{ return(package_context[search_name]) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.799359, "supported_languages": null}, "macro.dbt.snapshot_hash_arguments": {"name": "snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_hash_arguments", "macro_sql": "{% macro snapshot_hash_arguments(args) -%}\n {{ adapter.dispatch('snapshot_hash_arguments', 'dbt')(args) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7995882, "supported_languages": null}, "macro.dbt.default__snapshot_hash_arguments": {"name": "default__snapshot_hash_arguments", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.default__snapshot_hash_arguments", "macro_sql": "{% macro default__snapshot_hash_arguments(args) -%}\n md5({%- for arg in args -%}\n coalesce(cast({{ arg }} as varchar ), '')\n {% if not loop.last %} || '|' || {% endif %}\n {%- endfor -%})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.7998059, "supported_languages": null}, "macro.dbt.snapshot_timestamp_strategy": {"name": "snapshot_timestamp_strategy", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_timestamp_strategy", "macro_sql": "{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}\n {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}\n {% set primary_key = config.get('unique_key') %}\n {% set updated_at = config.get('updated_at') %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}\n {% set columns = config.get(\"snapshot_table_column_names\") or get_snapshot_table_column_names() %}\n\n {#/*\n The snapshot relation might not have an {{ updated_at }} value if the\n snapshot strategy is changed from `check` to `timestamp`. We\n should use a dbt-created column for the comparison in the snapshot\n table instead of assuming that the user-supplied {{ updated_at }}\n will be present in the historical data.\n\n See https://github.com/dbt-labs/dbt-core/issues/2350\n */ #}\n {% set row_changed_expr -%}\n ({{ snapshotted_rel }}.{{ columns.dbt_valid_from }} < {{ current_rel }}.{{ updated_at }})\n {%- endset %}\n\n {% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}\n {% set scd_id_expr = snapshot_hash_arguments(scd_args) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_snapshot_table_column_names", "macro.dbt.snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.800695, "supported_languages": null}, "macro.dbt.snapshot_string_as_time": {"name": "snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_string_as_time", "macro_sql": "{% macro snapshot_string_as_time(timestamp) -%}\n {{ adapter.dispatch('snapshot_string_as_time', 'dbt')(timestamp) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__snapshot_string_as_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.800859, "supported_languages": null}, "macro.dbt.default__snapshot_string_as_time": {"name": "default__snapshot_string_as_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.default__snapshot_string_as_time", "macro_sql": "{% macro default__snapshot_string_as_time(timestamp) %}\n {% do exceptions.raise_not_implemented(\n 'snapshot_string_as_time macro not implemented for adapter '+adapter.type()\n ) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.801022, "supported_languages": null}, "macro.dbt.snapshot_check_all_get_existing_columns": {"name": "snapshot_check_all_get_existing_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_check_all_get_existing_columns", "macro_sql": "{% macro snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) -%}\n {%- if not target_exists -%}\n {#-- no table yet -> return whatever the query does --#}\n {{ return((false, query_columns)) }}\n {%- endif -%}\n\n {#-- handle any schema changes --#}\n {%- set target_relation = adapter.get_relation(database=node.database, schema=node.schema, identifier=node.alias) -%}\n\n {% if check_cols_config == 'all' %}\n {%- set query_columns = get_columns_in_query(node['compiled_code']) -%}\n\n {% elif check_cols_config is iterable and (check_cols_config | length) > 0 %}\n {#-- query for proper casing/quoting, to support comparison below --#}\n {%- set select_check_cols_from_target -%}\n {#-- N.B. The whitespace below is necessary to avoid edge case issue with comments --#}\n {#-- See: https://github.com/dbt-labs/dbt-core/issues/6781 --#}\n select {{ check_cols_config | join(', ') }} from (\n {{ node['compiled_code'] }}\n ) subq\n {%- endset -%}\n {% set query_columns = get_columns_in_query(select_check_cols_from_target) %}\n\n {% else %}\n {% do exceptions.raise_compiler_error(\"Invalid value for 'check_cols': \" ~ check_cols_config) %}\n {% endif %}\n\n {%- set existing_cols = adapter.get_columns_in_relation(target_relation) | map(attribute = 'name') | list -%}\n {%- set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}\n {%- set ns.column_added = false -%}\n\n {%- set intersection = [] -%}\n {%- for col in query_columns -%}\n {%- if col in existing_cols -%}\n {%- do intersection.append(adapter.quote(col)) -%}\n {%- else -%}\n {% set ns.column_added = true %}\n {%- endif -%}\n {%- endfor -%}\n {{ return((ns.column_added, intersection)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_columns_in_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.802374, "supported_languages": null}, "macro.dbt.snapshot_check_strategy": {"name": "snapshot_check_strategy", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/strategies.sql", "original_file_path": "macros/materializations/snapshots/strategies.sql", "unique_id": "macro.dbt.snapshot_check_strategy", "macro_sql": "{% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}\n {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}\n {% set check_cols_config = config.get('check_cols') %}\n {% set primary_key = config.get('unique_key') %}\n {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}\n {% set updated_at = config.get('updated_at') or snapshot_get_time() %}\n\n {% set column_added = false %}\n\n {% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}\n\n {%- set row_changed_expr -%}\n (\n {%- if column_added -%}\n {{ get_true_sql() }}\n {%- else -%}\n {%- for col in check_cols -%}\n {{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}\n or\n (\n (({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))\n or\n ((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))\n )\n {%- if not loop.last %} or {% endif -%}\n {%- endfor -%}\n {%- endif -%}\n )\n {%- endset %}\n\n {% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}\n {% set scd_id_expr = snapshot_hash_arguments(scd_args) %}\n\n {% do return({\n \"unique_key\": primary_key,\n \"updated_at\": updated_at,\n \"row_changed\": row_changed_expr,\n \"scd_id\": scd_id_expr,\n \"invalidate_hard_deletes\": invalidate_hard_deletes\n }) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.snapshot_get_time", "macro.dbt.snapshot_check_all_get_existing_columns", "macro.dbt.get_true_sql", "macro.dbt.snapshot_hash_arguments"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8037472, "supported_languages": null}, "macro.dbt.create_columns": {"name": "create_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.create_columns", "macro_sql": "{% macro create_columns(relation, columns) %}\n {{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.811342, "supported_languages": null}, "macro.dbt.default__create_columns": {"name": "default__create_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__create_columns", "macro_sql": "{% macro default__create_columns(relation, columns) %}\n {% for column in columns %}\n {% call statement() %}\n alter table {{ relation.render() }} add column \"{{ column.name }}\" {{ column.data_type }};\n {% endcall %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8116338, "supported_languages": null}, "macro.dbt.post_snapshot": {"name": "post_snapshot", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.post_snapshot", "macro_sql": "{% macro post_snapshot(staging_relation) %}\n {{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__post_snapshot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8117929, "supported_languages": null}, "macro.dbt.default__post_snapshot": {"name": "default__post_snapshot", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__post_snapshot", "macro_sql": "{% macro default__post_snapshot(staging_relation) %}\n {# no-op #}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.811883, "supported_languages": null}, "macro.dbt.get_true_sql": {"name": "get_true_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.get_true_sql", "macro_sql": "{% macro get_true_sql() %}\n {{ adapter.dispatch('get_true_sql', 'dbt')() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_true_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.812028, "supported_languages": null}, "macro.dbt.default__get_true_sql": {"name": "default__get_true_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__get_true_sql", "macro_sql": "{% macro default__get_true_sql() %}\n {{ return('TRUE') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.812143, "supported_languages": null}, "macro.dbt.snapshot_staging_table": {"name": "snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.snapshot_staging_table", "macro_sql": "{% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}\n {{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__snapshot_staging_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.812344, "supported_languages": null}, "macro.dbt.get_snapshot_table_column_names": {"name": "get_snapshot_table_column_names", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.get_snapshot_table_column_names", "macro_sql": "{% macro get_snapshot_table_column_names() %}\n {{ return({'dbt_valid_to': 'dbt_valid_to', 'dbt_valid_from': 'dbt_valid_from', 'dbt_scd_id': 'dbt_scd_id', 'dbt_updated_at': 'dbt_updated_at'}) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.812566, "supported_languages": null}, "macro.dbt.default__snapshot_staging_table": {"name": "default__snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__snapshot_staging_table", "macro_sql": "{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}\n {% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}\n\n with snapshot_query as (\n\n {{ source_sql }}\n\n ),\n\n snapshotted_data as (\n\n select *, {{ unique_key_fields(strategy.unique_key) }}\n from {{ target_relation }}\n where\n {% if config.get('dbt_valid_to_current') %}\n {# Check for either dbt_valid_to_current OR null, in order to correctly update records with nulls #}\n ( {{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or {{ columns.dbt_valid_to }} is null)\n {% else %}\n {{ columns.dbt_valid_to }} is null\n {% endif %}\n\n ),\n\n insertions_source_data as (\n\n select *, {{ unique_key_fields(strategy.unique_key) }},\n {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},\n {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},\n {{ get_dbt_valid_to_current(strategy, columns) }},\n {{ strategy.scd_id }} as {{ columns.dbt_scd_id }}\n\n from snapshot_query\n ),\n\n updates_source_data as (\n\n select *, {{ unique_key_fields(strategy.unique_key) }},\n {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},\n {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},\n {{ strategy.updated_at }} as {{ columns.dbt_valid_to }}\n\n from snapshot_query\n ),\n\n {%- if strategy.invalidate_hard_deletes %}\n\n deletes_source_data as (\n\n select *, {{ unique_key_fields(strategy.unique_key) }}\n from snapshot_query\n ),\n {% endif %}\n\n insertions as (\n\n select\n 'insert' as dbt_change_type,\n source_data.*\n\n from insertions_source_data as source_data\n left outer join snapshotted_data\n on {{ unique_key_join_on(strategy.unique_key, \"snapshotted_data\", \"source_data\") }}\n where {{ unique_key_is_null(strategy.unique_key, \"snapshotted_data\") }}\n or ({{ unique_key_is_not_null(strategy.unique_key, \"snapshotted_data\") }} and ({{ strategy.row_changed }})\n\n )\n\n ),\n\n updates as (\n\n select\n 'update' as dbt_change_type,\n source_data.*,\n snapshotted_data.{{ columns.dbt_scd_id }}\n\n from updates_source_data as source_data\n join snapshotted_data\n on {{ unique_key_join_on(strategy.unique_key, \"snapshotted_data\", \"source_data\") }}\n where (\n {{ strategy.row_changed }}\n )\n )\n\n {%- if strategy.invalidate_hard_deletes -%}\n ,\n\n deletes as (\n\n select\n 'delete' as dbt_change_type,\n source_data.*,\n {{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},\n {{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},\n {{ snapshot_get_time() }} as {{ columns.dbt_valid_to }},\n snapshotted_data.{{ columns.dbt_scd_id }}\n\n from snapshotted_data\n left join deletes_source_data as source_data\n on {{ unique_key_join_on(strategy.unique_key, \"snapshotted_data\", \"source_data\") }}\n where {{ unique_key_is_null(strategy.unique_key, \"source_data\") }}\n )\n {%- endif %}\n\n select * from insertions\n union all\n select * from updates\n {%- if strategy.invalidate_hard_deletes %}\n union all\n select * from deletes\n {%- endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_snapshot_table_column_names", "macro.dbt.unique_key_fields", "macro.dbt.get_dbt_valid_to_current", "macro.dbt.unique_key_join_on", "macro.dbt.unique_key_is_null", "macro.dbt.unique_key_is_not_null", "macro.dbt.snapshot_get_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8144681, "supported_languages": null}, "macro.dbt.build_snapshot_table": {"name": "build_snapshot_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.build_snapshot_table", "macro_sql": "{% macro build_snapshot_table(strategy, sql) -%}\n {{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__build_snapshot_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.814661, "supported_languages": null}, "macro.dbt.default__build_snapshot_table": {"name": "default__build_snapshot_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.default__build_snapshot_table", "macro_sql": "{% macro default__build_snapshot_table(strategy, sql) %}\n {% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}\n\n select *,\n {{ strategy.scd_id }} as {{ columns.dbt_scd_id }},\n {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},\n {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},\n {{ get_dbt_valid_to_current(strategy, columns) }}\n from (\n {{ sql }}\n ) sbq\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_snapshot_table_column_names", "macro.dbt.get_dbt_valid_to_current"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.815066, "supported_languages": null}, "macro.dbt.build_snapshot_staging_table": {"name": "build_snapshot_staging_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.build_snapshot_staging_table", "macro_sql": "{% macro build_snapshot_staging_table(strategy, sql, target_relation) %}\n {% set temp_relation = make_temp_relation(target_relation) %}\n\n {% set select = snapshot_staging_table(strategy, sql, target_relation) %}\n\n {% call statement('build_snapshot_staging_relation') %}\n {{ create_table_as(True, temp_relation, select) }}\n {% endcall %}\n\n {% do return(temp_relation) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.make_temp_relation", "macro.dbt.snapshot_staging_table", "macro.dbt.statement", "macro.dbt.create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8154812, "supported_languages": null}, "macro.dbt.get_updated_at_column_data_type": {"name": "get_updated_at_column_data_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.get_updated_at_column_data_type", "macro_sql": "{% macro get_updated_at_column_data_type(snapshot_sql) %}\n {% set snapshot_sql_column_schema = get_column_schema_from_query(snapshot_sql) %}\n {% set dbt_updated_at_data_type = null %}\n {% set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}\n {% set ns.dbt_updated_at_data_type = null -%}\n {% for column in snapshot_sql_column_schema %}\n {% if ((column.column == 'dbt_updated_at') or (column.column == 'DBT_UPDATED_AT')) %}\n {% set ns.dbt_updated_at_data_type = column.dtype %}\n {% endif %}\n {% endfor %}\n {{ return(ns.dbt_updated_at_data_type or none) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_column_schema_from_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.816055, "supported_languages": null}, "macro.dbt.check_time_data_types": {"name": "check_time_data_types", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.check_time_data_types", "macro_sql": "{% macro check_time_data_types(sql) %}\n {% set dbt_updated_at_data_type = get_updated_at_column_data_type(sql) %}\n {% set snapshot_get_time_data_type = get_snapshot_get_time_data_type() %}\n {% if snapshot_get_time_data_type is not none and dbt_updated_at_data_type is not none and snapshot_get_time_data_type != dbt_updated_at_data_type %}\n {% if exceptions.warn_snapshot_timestamp_data_types %}\n {{ exceptions.warn_snapshot_timestamp_data_types(snapshot_get_time_data_type, dbt_updated_at_data_type) }}\n {% endif %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_updated_at_column_data_type", "macro.dbt.get_snapshot_get_time_data_type"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.816469, "supported_languages": null}, "macro.dbt.get_dbt_valid_to_current": {"name": "get_dbt_valid_to_current", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.get_dbt_valid_to_current", "macro_sql": "{% macro get_dbt_valid_to_current(strategy, columns) %}\n {% set dbt_valid_to_current = config.get('dbt_valid_to_current') or \"null\" %}\n coalesce(nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}), {{dbt_valid_to_current}})\n as {{ columns.dbt_valid_to }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8167381, "supported_languages": null}, "macro.dbt.unique_key_fields": {"name": "unique_key_fields", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.unique_key_fields", "macro_sql": "{% macro unique_key_fields(unique_key) %}\n {% if unique_key | is_list %}\n {% for key in unique_key %}\n {{ key }} as dbt_unique_key_{{ loop.index }}\n {%- if not loop.last %} , {%- endif %}\n {% endfor %}\n {% else %}\n {{ unique_key }} as dbt_unique_key\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.817064, "supported_languages": null}, "macro.dbt.unique_key_join_on": {"name": "unique_key_join_on", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.unique_key_join_on", "macro_sql": "{% macro unique_key_join_on(unique_key, identifier, from_identifier) %}\n {% if unique_key | is_list %}\n {% for key in unique_key %}\n {{ identifier }}.dbt_unique_key_{{ loop.index }} = {{ from_identifier }}.dbt_unique_key_{{ loop.index }}\n {%- if not loop.last %} and {%- endif %}\n {% endfor %}\n {% else %}\n {{ identifier }}.dbt_unique_key = {{ from_identifier }}.dbt_unique_key\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.817472, "supported_languages": null}, "macro.dbt.unique_key_is_null": {"name": "unique_key_is_null", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.unique_key_is_null", "macro_sql": "{% macro unique_key_is_null(unique_key, identifier) %}\n {% if unique_key | is_list %}\n {{ identifier }}.dbt_unique_key_1 is null\n {% else %}\n {{ identifier }}.dbt_unique_key is null\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.817675, "supported_languages": null}, "macro.dbt.unique_key_is_not_null": {"name": "unique_key_is_not_null", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/helpers.sql", "original_file_path": "macros/materializations/snapshots/helpers.sql", "unique_id": "macro.dbt.unique_key_is_not_null", "macro_sql": "{% macro unique_key_is_not_null(unique_key, identifier) %}\n {% if unique_key | is_list %}\n {{ identifier }}.dbt_unique_key_1 is not null\n {% else %}\n {{ identifier }}.dbt_unique_key is not null\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.817878, "supported_languages": null}, "macro.dbt.materialization_snapshot_default": {"name": "materialization_snapshot_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/snapshots/snapshot.sql", "original_file_path": "macros/materializations/snapshots/snapshot.sql", "unique_id": "macro.dbt.materialization_snapshot_default", "macro_sql": "{% materialization snapshot, default %}\n\n {%- set target_table = model.get('alias', model.get('name')) -%}\n\n {%- set strategy_name = config.get('strategy') -%}\n {%- set unique_key = config.get('unique_key') %}\n -- grab current tables grants config for comparision later on\n {%- set grant_config = config.get('grants') -%}\n\n {% set target_relation_exists, target_relation = get_or_create_relation(\n database=model.database,\n schema=model.schema,\n identifier=target_table,\n type='table') -%}\n\n {%- if not target_relation.is_table -%}\n {% do exceptions.relation_wrong_type(target_relation, 'table') %}\n {%- endif -%}\n\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set strategy_macro = strategy_dispatch(strategy_name) %}\n {# The model['config'] parameter below is no longer used, but passing anyway for compatibility #}\n {# It was a dictionary of config, instead of the config object from the context #}\n {% set strategy = strategy_macro(model, \"snapshotted_data\", \"source_data\", model['config'], target_relation_exists) %}\n\n {% if not target_relation_exists %}\n\n {% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}\n {% set build_or_select_sql = build_sql %}\n {% set final_sql = create_table_as(False, target_relation, build_sql) %}\n\n {% else %}\n\n {% set columns = config.get(\"snapshot_table_column_names\") or get_snapshot_table_column_names() %}\n\n {{ adapter.valid_snapshot_target(target_relation, columns) }}\n\n {% set build_or_select_sql = snapshot_staging_table(strategy, sql, target_relation) %}\n {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}\n\n -- this may no-op if the database does not require column expansion\n {% do adapter.expand_target_column_types(from_relation=staging_table,\n to_relation=target_relation) %}\n\n {% set remove_columns = ['dbt_change_type', 'DBT_CHANGE_TYPE', 'dbt_unique_key', 'DBT_UNIQUE_KEY'] %}\n {% if unique_key | is_list %}\n {% for key in strategy.unique_key %}\n {{ remove_columns.append('dbt_unique_key_' + loop.index|string) }}\n {{ remove_columns.append('DBT_UNIQUE_KEY_' + loop.index|string) }}\n {% endfor %}\n {% endif %}\n\n {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)\n | rejectattr('name', 'in', remove_columns)\n | list %}\n\n {% do create_columns(target_relation, missing_columns) %}\n\n {% set source_columns = adapter.get_columns_in_relation(staging_table)\n | rejectattr('name', 'in', remove_columns)\n | list %}\n\n {% set quoted_source_columns = [] %}\n {% for column in source_columns %}\n {% do quoted_source_columns.append(adapter.quote(column.name)) %}\n {% endfor %}\n\n {% set final_sql = snapshot_merge_sql(\n target = target_relation,\n source = staging_table,\n insert_cols = quoted_source_columns\n )\n %}\n\n {% endif %}\n\n\n {{ check_time_data_types(build_or_select_sql) }}\n\n {% call statement('main') %}\n {{ final_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if not target_relation_exists %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {% if staging_table is defined %}\n {% do post_snapshot(staging_table) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.get_or_create_relation", "macro.dbt.run_hooks", "macro.dbt.strategy_dispatch", "macro.dbt.build_snapshot_table", "macro.dbt.create_table_as", "macro.dbt.get_snapshot_table_column_names", "macro.dbt.snapshot_staging_table", "macro.dbt.build_snapshot_staging_table", "macro.dbt.create_columns", "macro.dbt.snapshot_merge_sql", "macro.dbt.check_time_data_types", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes", "macro.dbt.post_snapshot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.823544, "supported_languages": ["sql"]}, "macro.dbt.materialization_test_default": {"name": "materialization_test_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/test.sql", "original_file_path": "macros/materializations/tests/test.sql", "unique_id": "macro.dbt.materialization_test_default", "macro_sql": "{%- materialization test, default -%}\n\n {% set relations = [] %}\n\n {% if should_store_failures() %}\n\n {% set identifier = model['alias'] %}\n {% set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% set store_failures_as = config.get('store_failures_as') %}\n -- if `--store-failures` is invoked via command line and `store_failures_as` is not set,\n -- config.get('store_failures_as', 'table') returns None, not 'table'\n {% if store_failures_as == none %}{% set store_failures_as = 'table' %}{% endif %}\n {% if store_failures_as not in ['table', 'view'] %}\n {{ exceptions.raise_compiler_error(\n \"'\" ~ store_failures_as ~ \"' is not a valid value for `store_failures_as`. \"\n \"Accepted values are: ['ephemeral', 'table', 'view']\"\n ) }}\n {% endif %}\n\n {% set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database, type=store_failures_as) -%} %}\n\n {% if old_relation %}\n {% do adapter.drop_relation(old_relation) %}\n {% endif %}\n\n {% call statement(auto_begin=True) %}\n {{ get_create_sql(target_relation, sql) }}\n {% endcall %}\n\n {% do relations.append(target_relation) %}\n\n {% set main_sql %}\n select *\n from {{ target_relation }}\n {% endset %}\n\n {{ adapter.commit() }}\n\n {% else %}\n\n {% set main_sql = sql %}\n\n {% endif %}\n\n {% set limit = config.get('limit') %}\n {% set fail_calc = config.get('fail_calc') %}\n {% set warn_if = config.get('warn_if') %}\n {% set error_if = config.get('error_if') %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit)}}\n\n {%- endcall %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.should_store_failures", "macro.dbt.statement", "macro.dbt.get_create_sql", "macro.dbt.get_test_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.826215, "supported_languages": ["sql"]}, "macro.dbt.get_test_sql": {"name": "get_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.get_test_sql", "macro_sql": "{% macro get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n {{ adapter.dispatch('get_test_sql', 'dbt')(main_sql, fail_calc, warn_if, error_if, limit) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_test_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.827342, "supported_languages": null}, "macro.dbt.default__get_test_sql": {"name": "default__get_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.default__get_test_sql", "macro_sql": "{% macro default__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}\n select\n {{ fail_calc }} as failures,\n {{ fail_calc }} {{ warn_if }} as should_warn,\n {{ fail_calc }} {{ error_if }} as should_error\n from (\n {{ main_sql }}\n {{ \"limit \" ~ limit if limit != none }}\n ) dbt_internal_test\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.82764, "supported_languages": null}, "macro.dbt.get_unit_test_sql": {"name": "get_unit_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.get_unit_test_sql", "macro_sql": "{% macro get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n {{ adapter.dispatch('get_unit_test_sql', 'dbt')(main_sql, expected_fixture_sql, expected_column_names) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_unit_test_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.827848, "supported_languages": null}, "macro.dbt.default__get_unit_test_sql": {"name": "default__get_unit_test_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/helpers.sql", "original_file_path": "macros/materializations/tests/helpers.sql", "unique_id": "macro.dbt.default__get_unit_test_sql", "macro_sql": "{% macro default__get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}\n-- Build actual result given inputs\nwith dbt_internal_unit_test_actual as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%},{% endif %}{%- endfor -%}, {{ dbt.string_literal(\"actual\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ main_sql }}\n ) _dbt_internal_unit_test_actual\n),\n-- Build expected result\ndbt_internal_unit_test_expected as (\n select\n {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%}, {% endif %}{%- endfor -%}, {{ dbt.string_literal(\"expected\") }} as {{ adapter.quote(\"actual_or_expected\") }}\n from (\n {{ expected_fixture_sql }}\n ) _dbt_internal_unit_test_expected\n)\n-- Union actual and expected results\nselect * from dbt_internal_unit_test_actual\nunion all\nselect * from dbt_internal_unit_test_expected\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.string_literal"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.828434, "supported_languages": null}, "macro.dbt.get_where_subquery": {"name": "get_where_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/where_subquery.sql", "original_file_path": "macros/materializations/tests/where_subquery.sql", "unique_id": "macro.dbt.get_where_subquery", "macro_sql": "{% macro get_where_subquery(relation) -%}\n {% do return(adapter.dispatch('get_where_subquery', 'dbt')(relation)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_where_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8288121, "supported_languages": null}, "macro.dbt.default__get_where_subquery": {"name": "default__get_where_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/where_subquery.sql", "original_file_path": "macros/materializations/tests/where_subquery.sql", "unique_id": "macro.dbt.default__get_where_subquery", "macro_sql": "{% macro default__get_where_subquery(relation) -%}\n {% set where = config.get('where', '') %}\n {% if where %}\n {%- set filtered -%}\n (select * from {{ relation }} where {{ where }}) dbt_subquery\n {%- endset -%}\n {% do return(filtered) %}\n {%- else -%}\n {% do return(relation) %}\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.829178, "supported_languages": null}, "macro.dbt.materialization_unit_default": {"name": "materialization_unit_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/tests/unit.sql", "original_file_path": "macros/materializations/tests/unit.sql", "unique_id": "macro.dbt.materialization_unit_default", "macro_sql": "{%- materialization unit, default -%}\n\n {% set relations = [] %}\n\n {% set expected_rows = config.get('expected_rows') %}\n {% set expected_sql = config.get('expected_sql') %}\n {% set tested_expected_column_names = expected_rows[0].keys() if (expected_rows | length ) > 0 else get_columns_in_query(sql) %} %}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {% do run_query(get_create_table_as_sql(True, temp_relation, get_empty_subquery_sql(sql))) %}\n {%- set columns_in_relation = adapter.get_columns_in_relation(temp_relation) -%}\n {%- set column_name_to_data_types = {} -%}\n {%- for column in columns_in_relation -%}\n {%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n {%- endfor -%}\n\n {% if not expected_sql %}\n {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types) %}\n {% endif %}\n {% set unit_test_sql = get_unit_test_sql(sql, expected_sql, tested_expected_column_names) %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {{ unit_test_sql }}\n\n {%- endcall %}\n\n {% do adapter.drop_relation(temp_relation) %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.get_columns_in_query", "macro.dbt.make_temp_relation", "macro.dbt.run_query", "macro.dbt.get_create_table_as_sql", "macro.dbt.get_empty_subquery_sql", "macro.dbt.get_expected_sql", "macro.dbt.get_unit_test_sql", "macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.830879, "supported_languages": ["sql"]}, "macro.dbt.materialization_materialized_view_default": {"name": "materialization_materialized_view_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialization_materialized_view_default", "macro_sql": "{% materialization materialized_view, default %}\n {% set existing_relation = load_cached_relation(this) %}\n {% set target_relation = this.incorporate(type=this.MaterializedView) %}\n {% set intermediate_relation = make_intermediate_relation(target_relation) %}\n {% set backup_relation_type = target_relation.MaterializedView if existing_relation is none else existing_relation.type %}\n {% set backup_relation = make_backup_relation(target_relation, backup_relation_type) %}\n\n {{ materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) }}\n\n {% set build_sql = materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% if build_sql == '' %}\n {{ materialized_view_execute_no_op(target_relation) }}\n {% else %}\n {{ materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) }}\n {% endif %}\n\n {{ materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.materialized_view_setup", "macro.dbt.materialized_view_get_build_sql", "macro.dbt.materialized_view_execute_no_op", "macro.dbt.materialized_view_execute_build_sql", "macro.dbt.materialized_view_teardown"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.835868, "supported_languages": ["sql"]}, "macro.dbt.materialized_view_setup": {"name": "materialized_view_setup", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_setup", "macro_sql": "{% macro materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) %}\n\n -- backup_relation and intermediate_relation should not already exist in the database\n -- it's possible these exist because of a previous run that exited unexpectedly\n {% set preexisting_backup_relation = load_cached_relation(backup_relation) %}\n {% set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8362439, "supported_languages": null}, "macro.dbt.materialized_view_teardown": {"name": "materialized_view_teardown", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_teardown", "macro_sql": "{% macro materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) %}\n\n -- drop the temp relations if they exist to leave the database clean for the next run\n {{ drop_relation_if_exists(backup_relation) }}\n {{ drop_relation_if_exists(intermediate_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8364851, "supported_languages": null}, "macro.dbt.materialized_view_get_build_sql": {"name": "materialized_view_get_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_get_build_sql", "macro_sql": "{% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n {% set full_refresh_mode = should_full_refresh() %}\n\n -- determine the scenario we're in: create, full_refresh, alter, refresh data\n {% if existing_relation is none %}\n {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n {% else %}\n\n -- get config options\n {% set on_configuration_change = config.get('on_configuration_change') %}\n {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n {% if configuration_changes is none %}\n {% set build_sql = refresh_materialized_view(target_relation) %}\n\n {% elif on_configuration_change == 'apply' %}\n {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n {% elif on_configuration_change == 'continue' %}\n {% set build_sql = '' %}\n {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation.render() ~ \"`\") }}\n {% elif on_configuration_change == 'fail' %}\n {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation.render() ~ \"`\") }}\n\n {% else %}\n -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n {% endif %}\n\n {% endif %}\n\n {% do return(build_sql) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh", "macro.dbt.get_create_materialized_view_as_sql", "macro.dbt.get_replace_sql", "macro.dbt.get_materialized_view_configuration_changes", "macro.dbt.refresh_materialized_view", "macro.dbt.get_alter_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.837785, "supported_languages": null}, "macro.dbt.materialized_view_execute_no_op": {"name": "materialized_view_execute_no_op", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_execute_no_op", "macro_sql": "{% macro materialized_view_execute_no_op(target_relation) %}\n {% do store_raw_result(\n name=\"main\",\n message=\"skip \" ~ target_relation,\n code=\"skip\",\n rows_affected=\"-1\"\n ) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8380108, "supported_languages": null}, "macro.dbt.materialized_view_execute_build_sql": {"name": "materialized_view_execute_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/materialized_view.sql", "original_file_path": "macros/materializations/models/materialized_view.sql", "unique_id": "macro.dbt.materialized_view_execute_build_sql", "macro_sql": "{% macro materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set grant_config = config.get('grants') %}\n\n {% call statement(name=\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8386428, "supported_languages": null}, "macro.dbt.materialization_view_default": {"name": "materialization_view_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/view.sql", "original_file_path": "macros/materializations/models/view.sql", "unique_id": "macro.dbt.materialization_view_default", "macro_sql": "{%- materialization view, default -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='view') -%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n This relation (probably) doesn't exist yet. If it does exist, it's a leftover from\n a previous run, and we're going to try to drop it immediately. At the end of this\n materialization, we're going to rename the \"existing_relation\" to this identifier,\n and then we're going to drop it. In order to make sure we run the correct one of:\n - drop view ...\n - drop table ...\n\n We need to set the type of this relation to be the type of the existing_relation, if it exists,\n or else \"view\" as a sane default if it does not. Note that if the existing_relation does not\n exist, then there is nothing to move out of the way and subsequentally drop. In that case,\n this relation will be effectively unused.\n */\n {%- set backup_relation_type = 'view' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n -- move the existing view out of the way\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {{ adapter.commit() }}\n\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.run_hooks", "macro.dbt.drop_relation_if_exists", "macro.dbt.statement", "macro.dbt.get_create_view_as_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.841415, "supported_languages": ["sql"]}, "macro.dbt.materialization_table_default": {"name": "materialization_table_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/table.sql", "original_file_path": "macros/materializations/models/table.sql", "unique_id": "macro.dbt.materialization_table_default", "macro_sql": "{% materialization table, default %}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') %}\n {%- set intermediate_relation = make_intermediate_relation(target_relation) -%}\n -- the intermediate_relation should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}\n /*\n See ../view/view.sql for more information about this relation.\n */\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n -- as above, the backup_relation should not already exist\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n\n -- drop the temp relations if they exist already in the database\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_table_as_sql(False, intermediate_relation, sql) }}\n {%- endcall %}\n\n -- cleanup\n {% if existing_relation is not none %}\n /* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped\n since the variable was first set. */\n {% set existing_relation = load_cached_relation(existing_relation) %}\n {% if existing_relation is not none %}\n {{ adapter.rename_relation(existing_relation, backup_relation) }}\n {% endif %}\n {% endif %}\n\n {{ adapter.rename_relation(intermediate_relation, target_relation) }}\n\n {% do create_indexes(target_relation) %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n -- finally, drop the existing/backup relation after the commit\n {{ drop_relation_if_exists(backup_relation) }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks", "macro.dbt.statement", "macro.dbt.get_create_table_as_sql", "macro.dbt.create_indexes", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.844209, "supported_languages": ["sql"]}, "macro.dbt.get_quoted_csv": {"name": "get_quoted_csv", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.get_quoted_csv", "macro_sql": "{% macro get_quoted_csv(column_names) %}\n\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote(col)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.845833, "supported_languages": null}, "macro.dbt.diff_columns": {"name": "diff_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.diff_columns", "macro_sql": "{% macro diff_columns(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% set source_names = source_columns | map(attribute = 'column') | list %}\n {% set target_names = target_columns | map(attribute = 'column') | list %}\n\n {# --check whether the name attribute exists in the target - this does not perform a data type check #}\n {% for sc in source_columns %}\n {% if sc.name not in target_names %}\n {{ result.append(sc) }}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.846355, "supported_languages": null}, "macro.dbt.diff_column_data_types": {"name": "diff_column_data_types", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.diff_column_data_types", "macro_sql": "{% macro diff_column_data_types(source_columns, target_columns) %}\n\n {% set result = [] %}\n {% for sc in source_columns %}\n {% set tc = target_columns | selectattr(\"name\", \"equalto\", sc.name) | list | first %}\n {% if tc %}\n {% if sc.data_type != tc.data_type and not sc.can_expand_to(other_column=tc) %}\n {{ result.append( { 'column_name': tc.name, 'new_type': sc.data_type } ) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n\n {{ return(result) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8469918, "supported_languages": null}, "macro.dbt.get_merge_update_columns": {"name": "get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.get_merge_update_columns", "macro_sql": "{% macro get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {{ return(adapter.dispatch('get_merge_update_columns', 'dbt')(merge_update_columns, merge_exclude_columns, dest_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_merge_update_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8472252, "supported_languages": null}, "macro.dbt.default__get_merge_update_columns": {"name": "default__get_merge_update_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/column_helpers.sql", "original_file_path": "macros/materializations/models/incremental/column_helpers.sql", "unique_id": "macro.dbt.default__get_merge_update_columns", "macro_sql": "{% macro default__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}\n {%- set default_cols = dest_columns | map(attribute=\"quoted\") | list -%}\n\n {%- if merge_update_columns and merge_exclude_columns -%}\n {{ exceptions.raise_compiler_error(\n 'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config'\n )}}\n {%- elif merge_update_columns -%}\n {%- set update_columns = merge_update_columns -%}\n {%- elif merge_exclude_columns -%}\n {%- set update_columns = [] -%}\n {%- for column in dest_columns -%}\n {% if column.column | lower not in merge_exclude_columns | map(\"lower\") | list %}\n {%- do update_columns.append(column.quoted) -%}\n {% endif %}\n {%- endfor -%}\n {%- else -%}\n {%- set update_columns = default_cols -%}\n {%- endif -%}\n\n {{ return(update_columns) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.847915, "supported_languages": null}, "macro.dbt.get_merge_sql": {"name": "get_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_merge_sql", "macro_sql": "{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n -- back compat for old kwarg name\n {% set incremental_predicates = kwargs.get('predicates', incremental_predicates) %}\n {{ adapter.dispatch('get_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.85476, "supported_languages": null}, "macro.dbt.default__get_merge_sql": {"name": "default__get_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_merge_sql", "macro_sql": "{% macro default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}\n {%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set merge_update_columns = config.get('merge_update_columns') -%}\n {%- set merge_exclude_columns = config.get('merge_exclude_columns') -%}\n {%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not mapping and unique_key is not string %}\n {% for key in unique_key %}\n {% set this_key_match %}\n DBT_INTERNAL_SOURCE.{{ key }} = DBT_INTERNAL_DEST.{{ key }}\n {% endset %}\n {% do predicates.append(this_key_match) %}\n {% endfor %}\n {% else %}\n {% set unique_key_match %}\n DBT_INTERNAL_SOURCE.{{ unique_key }} = DBT_INTERNAL_DEST.{{ unique_key }}\n {% endset %}\n {% do predicates.append(unique_key_match) %}\n {% endif %}\n {% else %}\n {% do predicates.append('FALSE') %}\n {% endif %}\n\n {{ sql_header if sql_header is not none }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on {{\"(\" ~ predicates | join(\") and (\") ~ \")\"}}\n\n {% if unique_key %}\n when matched then update set\n {% for column_name in update_columns -%}\n {{ column_name }} = DBT_INTERNAL_SOURCE.{{ column_name }}\n {%- if not loop.last %}, {%- endif %}\n {%- endfor %}\n {% endif %}\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv", "macro.dbt.get_merge_update_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.856353, "supported_languages": null}, "macro.dbt.get_delete_insert_merge_sql": {"name": "get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_delete_insert_merge_sql", "macro_sql": "{% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n {{ adapter.dispatch('get_delete_insert_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_delete_insert_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8566122, "supported_languages": null}, "macro.dbt.default__get_delete_insert_merge_sql": {"name": "default__get_delete_insert_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_delete_insert_merge_sql", "macro_sql": "{% macro default__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n {% if unique_key %}\n {% if unique_key is sequence and unique_key is not string %}\n delete from {{target }}\n using {{ source }}\n where (\n {% for key in unique_key %}\n {{ source }}.{{ key }} = {{ target }}.{{ key }}\n {{ \"and \" if not loop.last}}\n {% endfor %}\n {% if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {% endif %}\n );\n {% else %}\n delete from {{ target }}\n where (\n {{ unique_key }}) in (\n select ({{ unique_key }})\n from {{ source }}\n )\n {%- if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {%- endif -%};\n\n {% endif %}\n {% endif %}\n\n insert into {{ target }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ source }}\n )\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.857579, "supported_languages": null}, "macro.dbt.get_insert_overwrite_merge_sql": {"name": "get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.get_insert_overwrite_merge_sql", "macro_sql": "{% macro get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header=false) -%}\n {{ adapter.dispatch('get_insert_overwrite_merge_sql', 'dbt')(target, source, dest_columns, predicates, include_sql_header) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.857846, "supported_languages": null}, "macro.dbt.default__get_insert_overwrite_merge_sql": {"name": "default__get_insert_overwrite_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/merge.sql", "original_file_path": "macros/materializations/models/incremental/merge.sql", "unique_id": "macro.dbt.default__get_insert_overwrite_merge_sql", "macro_sql": "{% macro default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) -%}\n {#-- The only time include_sql_header is True: --#}\n {#-- BigQuery + insert_overwrite strategy + \"static\" partitions config --#}\n {#-- We should consider including the sql header at the materialization level instead --#}\n\n {%- set predicates = [] if predicates is none else [] + predicates -%}\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none and include_sql_header }}\n\n merge into {{ target }} as DBT_INTERNAL_DEST\n using {{ source }} as DBT_INTERNAL_SOURCE\n on FALSE\n\n when not matched by source\n {% if predicates %} and {{ predicates | join(' and ') }} {% endif %}\n then delete\n\n when not matched then insert\n ({{ dest_cols_csv }})\n values\n ({{ dest_cols_csv }})\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.858478, "supported_languages": null}, "macro.dbt.is_incremental": {"name": "is_incremental", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/is_incremental.sql", "original_file_path": "macros/materializations/models/incremental/is_incremental.sql", "unique_id": "macro.dbt.is_incremental", "macro_sql": "{% macro is_incremental() %}\n {#-- do not run introspective queries in parsing #}\n {% if not execute %}\n {{ return(False) }}\n {% else %}\n {% set relation = adapter.get_relation(this.database, this.schema, this.table) %}\n {{ return(relation is not none\n and relation.type == 'table'\n and model.config.materialized == 'incremental'\n and not should_full_refresh()) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.859086, "supported_languages": null}, "macro.dbt.get_incremental_append_sql": {"name": "get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_append_sql", "macro_sql": "{% macro get_incremental_append_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_append_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_append_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.860189, "supported_languages": null}, "macro.dbt.default__get_incremental_append_sql": {"name": "default__get_incremental_append_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_append_sql", "macro_sql": "{% macro default__get_incremental_append_sql(arg_dict) %}\n\n {% do return(get_insert_into_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_insert_into_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.86042, "supported_languages": null}, "macro.dbt.get_incremental_delete_insert_sql": {"name": "get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_delete_insert_sql", "macro_sql": "{% macro get_incremental_delete_insert_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_delete_insert_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_delete_insert_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8606012, "supported_languages": null}, "macro.dbt.default__get_incremental_delete_insert_sql": {"name": "default__get_incremental_delete_insert_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_delete_insert_sql", "macro_sql": "{% macro default__get_incremental_delete_insert_sql(arg_dict) %}\n\n {% do return(get_delete_insert_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_delete_insert_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8608902, "supported_languages": null}, "macro.dbt.get_incremental_merge_sql": {"name": "get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_merge_sql", "macro_sql": "{% macro get_incremental_merge_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.861071, "supported_languages": null}, "macro.dbt.default__get_incremental_merge_sql": {"name": "default__get_incremental_merge_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_merge_sql", "macro_sql": "{% macro default__get_incremental_merge_sql(arg_dict) %}\n\n {% do return(get_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"unique_key\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8613582, "supported_languages": null}, "macro.dbt.get_incremental_insert_overwrite_sql": {"name": "get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_insert_overwrite_sql", "macro_sql": "{% macro get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_insert_overwrite_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_insert_overwrite_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.861541, "supported_languages": null}, "macro.dbt.default__get_incremental_insert_overwrite_sql": {"name": "default__get_incremental_insert_overwrite_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_insert_overwrite_sql", "macro_sql": "{% macro default__get_incremental_insert_overwrite_sql(arg_dict) %}\n\n {% do return(get_insert_overwrite_merge_sql(arg_dict[\"target_relation\"], arg_dict[\"temp_relation\"], arg_dict[\"dest_columns\"], arg_dict[\"incremental_predicates\"])) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_insert_overwrite_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.861793, "supported_languages": null}, "macro.dbt.get_incremental_default_sql": {"name": "get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_default_sql", "macro_sql": "{% macro get_incremental_default_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_default_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_default_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.861973, "supported_languages": null}, "macro.dbt.default__get_incremental_default_sql": {"name": "default__get_incremental_default_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_default_sql", "macro_sql": "{% macro default__get_incremental_default_sql(arg_dict) %}\n\n {% do return(get_incremental_append_sql(arg_dict)) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_incremental_append_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.862118, "supported_languages": null}, "macro.dbt.get_incremental_microbatch_sql": {"name": "get_incremental_microbatch_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_incremental_microbatch_sql", "macro_sql": "{% macro get_incremental_microbatch_sql(arg_dict) %}\n\n {{ return(adapter.dispatch('get_incremental_microbatch_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_incremental_microbatch_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.862294, "supported_languages": null}, "macro.dbt.default__get_incremental_microbatch_sql": {"name": "default__get_incremental_microbatch_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.default__get_incremental_microbatch_sql", "macro_sql": "{% macro default__get_incremental_microbatch_sql(arg_dict) %}\n\n {{ exceptions.raise_not_implemented('microbatch materialization strategy not implemented for adapter ' + adapter.type()) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8624508, "supported_languages": null}, "macro.dbt.get_insert_into_sql": {"name": "get_insert_into_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/strategies.sql", "original_file_path": "macros/materializations/models/incremental/strategies.sql", "unique_id": "macro.dbt.get_insert_into_sql", "macro_sql": "{% macro get_insert_into_sql(target_relation, temp_relation, dest_columns) %}\n\n {%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute=\"name\")) -%}\n\n insert into {{ target_relation }} ({{ dest_cols_csv }})\n (\n select {{ dest_cols_csv }}\n from {{ temp_relation }}\n )\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_quoted_csv"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8627179, "supported_languages": null}, "macro.dbt.materialization_incremental_default": {"name": "materialization_incremental_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/incremental.sql", "original_file_path": "macros/materializations/models/incremental/incremental.sql", "unique_id": "macro.dbt.materialization_incremental_default", "macro_sql": "{% materialization incremental, default -%}\n\n -- relations\n {%- set existing_relation = load_cached_relation(this) -%}\n {%- set target_relation = this.incorporate(type='table') -%}\n {%- set temp_relation = make_temp_relation(target_relation)-%}\n {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n -- configs\n {%- set unique_key = config.get('unique_key') -%}\n {%- set full_refresh_mode = (should_full_refresh() or existing_relation.is_view) -%}\n {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n -- the temp_ and backup_ relations should not already exist in the database; get_relation\n -- will return None in that case. Otherwise, we get a relation that we can drop\n -- later, before we try to use this name for the current operation. This has to happen before\n -- BEGIN, in a separate transaction\n {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n -- grab current tables grants config for comparision later on\n {% set grant_config = config.get('grants') %}\n {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n {% set to_drop = [] %}\n\n {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n\n {% if existing_relation is none %}\n {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n {% elif full_refresh_mode %}\n {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n {% set need_swap = true %}\n {% else %}\n {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n {% set contract_config = config.get('contract') %}\n {% if not contract_config or not contract_config.enforced %}\n {% do adapter.expand_target_column_types(\n from_relation=temp_relation,\n to_relation=target_relation) %}\n {% endif %}\n {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n {% if not dest_columns %}\n {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n {% endif %}\n\n {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n {% endif %}\n\n {% call statement(\"main\") %}\n {{ build_sql }}\n {% endcall %}\n\n {% if need_swap %}\n {% do adapter.rename_relation(target_relation, backup_relation) %}\n {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n {% do to_drop.append(backup_relation) %}\n {% endif %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {% do adapter.commit() %}\n\n {% for rel in to_drop %}\n {% do adapter.drop_relation(rel) %}\n {% endfor %}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.make_temp_relation", "macro.dbt.make_intermediate_relation", "macro.dbt.make_backup_relation", "macro.dbt.should_full_refresh", "macro.dbt.incremental_validate_on_schema_change", "macro.dbt.drop_relation_if_exists", "macro.dbt.run_hooks", "macro.dbt.get_create_table_as_sql", "macro.dbt.run_query", "macro.dbt.process_schema_changes", "macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.867809, "supported_languages": ["sql"]}, "macro.dbt.incremental_validate_on_schema_change": {"name": "incremental_validate_on_schema_change", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.incremental_validate_on_schema_change", "macro_sql": "{% macro incremental_validate_on_schema_change(on_schema_change, default='ignore') %}\n\n {% if on_schema_change not in ['sync_all_columns', 'append_new_columns', 'fail', 'ignore'] %}\n\n {% set log_message = 'Invalid value for on_schema_change (%s) specified. Setting default value of %s.' % (on_schema_change, default) %}\n {% do log(log_message) %}\n\n {{ return(default) }}\n\n {% else %}\n\n {{ return(on_schema_change) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.873626, "supported_languages": null}, "macro.dbt.check_for_schema_changes": {"name": "check_for_schema_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.check_for_schema_changes", "macro_sql": "{% macro check_for_schema_changes(source_relation, target_relation) %}\n\n {% set schema_changed = False %}\n\n {%- set source_columns = adapter.get_columns_in_relation(source_relation) -%}\n {%- set target_columns = adapter.get_columns_in_relation(target_relation) -%}\n {%- set source_not_in_target = diff_columns(source_columns, target_columns) -%}\n {%- set target_not_in_source = diff_columns(target_columns, source_columns) -%}\n\n {% set new_target_types = diff_column_data_types(source_columns, target_columns) %}\n\n {% if source_not_in_target != [] %}\n {% set schema_changed = True %}\n {% elif target_not_in_source != [] or new_target_types != [] %}\n {% set schema_changed = True %}\n {% elif new_target_types != [] %}\n {% set schema_changed = True %}\n {% endif %}\n\n {% set changes_dict = {\n 'schema_changed': schema_changed,\n 'source_not_in_target': source_not_in_target,\n 'target_not_in_source': target_not_in_source,\n 'source_columns': source_columns,\n 'target_columns': target_columns,\n 'new_target_types': new_target_types\n } %}\n\n {% set msg %}\n In {{ target_relation }}:\n Schema changed: {{ schema_changed }}\n Source columns not in target: {{ source_not_in_target }}\n Target columns not in source: {{ target_not_in_source }}\n New column types: {{ new_target_types }}\n {% endset %}\n\n {% do log(msg) %}\n\n {{ return(changes_dict) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.diff_columns", "macro.dbt.diff_column_data_types"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.874777, "supported_languages": null}, "macro.dbt.sync_column_schemas": {"name": "sync_column_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.sync_column_schemas", "macro_sql": "{% macro sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {%- set add_to_target_arr = schema_changes_dict['source_not_in_target'] -%}\n\n {%- if on_schema_change == 'append_new_columns'-%}\n {%- if add_to_target_arr | length > 0 -%}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, none) -%}\n {%- endif -%}\n\n {% elif on_schema_change == 'sync_all_columns' %}\n {%- set remove_from_target_arr = schema_changes_dict['target_not_in_source'] -%}\n {%- set new_target_types = schema_changes_dict['new_target_types'] -%}\n\n {% if add_to_target_arr | length > 0 or remove_from_target_arr | length > 0 %}\n {%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, remove_from_target_arr) -%}\n {% endif %}\n\n {% if new_target_types != [] %}\n {% for ntt in new_target_types %}\n {% set column_name = ntt['column_name'] %}\n {% set new_type = ntt['new_type'] %}\n {% do alter_column_type(target_relation, column_name, new_type) %}\n {% endfor %}\n {% endif %}\n\n {% endif %}\n\n {% set schema_change_message %}\n In {{ target_relation }}:\n Schema change approach: {{ on_schema_change }}\n Columns added: {{ add_to_target_arr }}\n Columns removed: {{ remove_from_target_arr }}\n Data types changed: {{ new_target_types }}\n {% endset %}\n\n {% do log(schema_change_message) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.alter_relation_add_remove_columns", "macro.dbt.alter_column_type"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8758988, "supported_languages": null}, "macro.dbt.process_schema_changes": {"name": "process_schema_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/incremental/on_schema_change.sql", "original_file_path": "macros/materializations/models/incremental/on_schema_change.sql", "unique_id": "macro.dbt.process_schema_changes", "macro_sql": "{% macro process_schema_changes(on_schema_change, source_relation, target_relation) %}\n\n {% if on_schema_change == 'ignore' %}\n\n {{ return({}) }}\n\n {% else %}\n\n {% set schema_changes_dict = check_for_schema_changes(source_relation, target_relation) %}\n\n {% if schema_changes_dict['schema_changed'] %}\n\n {% if on_schema_change == 'fail' %}\n\n {% set fail_msg %}\n The source and target schemas on this incremental model are out of sync!\n They can be reconciled in several ways:\n - set the `on_schema_change` config to either append_new_columns or sync_all_columns, depending on your situation.\n - Re-run the incremental model with `full_refresh: True` to update the target schema.\n - update the schema manually and re-run the process.\n\n Additional troubleshooting context:\n Source columns not in target: {{ schema_changes_dict['source_not_in_target'] }}\n Target columns not in source: {{ schema_changes_dict['target_not_in_source'] }}\n New column types: {{ schema_changes_dict['new_target_types'] }}\n {% endset %}\n\n {% do exceptions.raise_compiler_error(fail_msg) %}\n\n {# -- unless we ignore, run the sync operation per the config #}\n {% else %}\n\n {% do sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}\n\n {% endif %}\n\n {% endif %}\n\n {{ return(schema_changes_dict['source_columns']) }}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.check_for_schema_changes", "macro.dbt.sync_column_schemas"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.876707, "supported_languages": null}, "macro.dbt.can_clone_table": {"name": "can_clone_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/can_clone_table.sql", "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", "unique_id": "macro.dbt.can_clone_table", "macro_sql": "{% macro can_clone_table() %}\n {{ return(adapter.dispatch('can_clone_table', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__can_clone_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8769438, "supported_languages": null}, "macro.dbt.default__can_clone_table": {"name": "default__can_clone_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/can_clone_table.sql", "original_file_path": "macros/materializations/models/clone/can_clone_table.sql", "unique_id": "macro.dbt.default__can_clone_table", "macro_sql": "{% macro default__can_clone_table() %}\n {{ return(False) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.877058, "supported_languages": null}, "macro.dbt.create_or_replace_clone": {"name": "create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/create_or_replace_clone.sql", "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", "unique_id": "macro.dbt.create_or_replace_clone", "macro_sql": "{% macro create_or_replace_clone(this_relation, defer_relation) %}\n {{ return(adapter.dispatch('create_or_replace_clone', 'dbt')(this_relation, defer_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_or_replace_clone"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.877341, "supported_languages": null}, "macro.dbt.default__create_or_replace_clone": {"name": "default__create_or_replace_clone", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/create_or_replace_clone.sql", "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql", "unique_id": "macro.dbt.default__create_or_replace_clone", "macro_sql": "{% macro default__create_or_replace_clone(this_relation, defer_relation) %}\n create or replace table {{ this_relation.render() }} clone {{ defer_relation.render() }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.877503, "supported_languages": null}, "macro.dbt.materialization_clone_default": {"name": "materialization_clone_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/models/clone/clone.sql", "original_file_path": "macros/materializations/models/clone/clone.sql", "unique_id": "macro.dbt.materialization_clone_default", "macro_sql": "{%- materialization clone, default -%}\n\n {%- set relations = {'relations': []} -%}\n\n {%- if not defer_relation -%}\n -- nothing to do\n {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set existing_relation = load_cached_relation(this) -%}\n\n {%- if existing_relation and not flags.FULL_REFRESH -%}\n -- noop!\n {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n {{ return(relations) }}\n {%- endif -%}\n\n {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n -- Otherwise, this will be a view\n\n {% set can_clone_table = can_clone_table() %}\n\n {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n {%- set target_relation = this.incorporate(type='table') -%}\n {% if existing_relation is not none and not existing_relation.is_table %}\n {{ log(\"Dropping relation \" ~ existing_relation.render() ~ \" because it is of type \" ~ existing_relation.type) }}\n {{ drop_relation_if_exists(existing_relation) }}\n {% endif %}\n\n -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n {% call statement('main') %}\n {% if target_relation and defer_relation and target_relation == defer_relation %}\n {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation.render()) }}\n {% else %}\n {{ create_or_replace_clone(target_relation, defer_relation) }}\n {% endif %}\n\n {% endcall %}\n\n {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n {% do persist_docs(target_relation, model) %}\n\n {{ return({'relations': [target_relation]}) }}\n\n {%- else -%}\n\n {%- set target_relation = this.incorporate(type='view') -%}\n\n -- reuse the view materialization\n -- TODO: support actual dispatch for materialization macros\n -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n {% if not search_name in context %}\n {% set search_name = \"materialization_view_default\" %}\n {% endif %}\n {% set materialization_macro = context[search_name] %}\n {% set relations = materialization_macro() %}\n {{ return(relations) }}\n\n {%- endif -%}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.can_clone_table", "macro.dbt.drop_relation_if_exists", "macro.dbt.statement", "macro.dbt.create_or_replace_clone", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.88112, "supported_languages": ["sql"]}, "macro.dbt.materialization_seed_default": {"name": "materialization_seed_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/seed.sql", "original_file_path": "macros/materializations/seeds/seed.sql", "unique_id": "macro.dbt.materialization_seed_default", "macro_sql": "{% materialization seed, default %}\n\n {%- set identifier = model['alias'] -%}\n {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set grant_config = config.get('grants') -%}\n {%- set agate_table = load_agate_table() -%}\n -- grab current tables grants config for comparison later on\n\n {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n -- `BEGIN` happens here:\n {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n -- build model\n {% set create_table_sql = \"\" %}\n {% if exists_as_view %}\n {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation.render())) }}\n {% elif exists_as_table %}\n {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n {% else %}\n {% set create_table_sql = create_csv_table(model, agate_table) %}\n {% endif %}\n\n {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n {% set rows_affected = (agate_table.rows | length) %}\n {% set sql = load_csv_rows(model, agate_table) %}\n\n {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n {{ get_csv_sql(create_table_sql, sql) }};\n {% endcall %}\n\n {% set target_relation = this.incorporate(type='table') %}\n\n {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {% do persist_docs(target_relation, model) %}\n\n {% if full_refresh_mode or not exists_as_table %}\n {% do create_indexes(target_relation) %}\n {% endif %}\n\n {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n -- `COMMIT` happens here\n {{ adapter.commit() }}\n\n {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.should_full_refresh", "macro.dbt.run_hooks", "macro.dbt.reset_csv_table", "macro.dbt.create_csv_table", "macro.dbt.load_csv_rows", "macro.dbt.noop_statement", "macro.dbt.get_csv_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs", "macro.dbt.create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8842728, "supported_languages": ["sql"]}, "macro.dbt.create_csv_table": {"name": "create_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.create_csv_table", "macro_sql": "{% macro create_csv_table(model, agate_table) -%}\n {{ adapter.dispatch('create_csv_table', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8896158, "supported_languages": null}, "macro.dbt.default__create_csv_table": {"name": "default__create_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__create_csv_table", "macro_sql": "{% macro default__create_csv_table(model, agate_table) %}\n {%- set column_override = model['config'].get('column_types', {}) -%}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n\n {% set sql %}\n create table {{ this.render() }} (\n {%- for col_name in agate_table.column_names -%}\n {%- set inferred_type = adapter.convert_type(agate_table, loop.index0) -%}\n {%- set type = column_override.get(col_name, inferred_type) -%}\n {%- set column_name = (col_name | string) -%}\n {{ adapter.quote_seed_column(column_name, quote_seed_column) }} {{ type }} {%- if not loop.last -%}, {%- endif -%}\n {%- endfor -%}\n )\n {% endset %}\n\n {% call statement('_') -%}\n {{ sql }}\n {%- endcall %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.890464, "supported_languages": null}, "macro.dbt.reset_csv_table": {"name": "reset_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.reset_csv_table", "macro_sql": "{% macro reset_csv_table(model, full_refresh, old_relation, agate_table) -%}\n {{ adapter.dispatch('reset_csv_table', 'dbt')(model, full_refresh, old_relation, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__reset_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8906932, "supported_languages": null}, "macro.dbt.default__reset_csv_table": {"name": "default__reset_csv_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__reset_csv_table", "macro_sql": "{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n {% set sql = \"\" %}\n {% if full_refresh %}\n {{ adapter.drop_relation(old_relation) }}\n {% set sql = create_csv_table(model, agate_table) %}\n {% else %}\n {{ adapter.truncate_relation(old_relation) }}\n {% set sql = \"truncate table \" ~ old_relation.render() %}\n {% endif %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_csv_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8911638, "supported_languages": null}, "macro.dbt.get_csv_sql": {"name": "get_csv_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_csv_sql", "macro_sql": "{% macro get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ adapter.dispatch('get_csv_sql', 'dbt')(create_or_truncate_sql, insert_sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_csv_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.891347, "supported_languages": null}, "macro.dbt.default__get_csv_sql": {"name": "default__get_csv_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_csv_sql", "macro_sql": "{% macro default__get_csv_sql(create_or_truncate_sql, insert_sql) %}\n {{ create_or_truncate_sql }};\n -- dbt seed --\n {{ insert_sql }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.891475, "supported_languages": null}, "macro.dbt.get_binding_char": {"name": "get_binding_char", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_binding_char", "macro_sql": "{% macro get_binding_char() -%}\n {{ adapter.dispatch('get_binding_char', 'dbt')() }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_binding_char"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8916101, "supported_languages": null}, "macro.dbt.default__get_binding_char": {"name": "default__get_binding_char", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_binding_char", "macro_sql": "{% macro default__get_binding_char() %}\n {{ return('%s') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.891725, "supported_languages": null}, "macro.dbt.get_batch_size": {"name": "get_batch_size", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_batch_size", "macro_sql": "{% macro get_batch_size() -%}\n {{ return(adapter.dispatch('get_batch_size', 'dbt')()) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_batch_size"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.891881, "supported_languages": null}, "macro.dbt.default__get_batch_size": {"name": "default__get_batch_size", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__get_batch_size", "macro_sql": "{% macro default__get_batch_size() %}\n {{ return(10000) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.891995, "supported_languages": null}, "macro.dbt.get_seed_column_quoted_csv": {"name": "get_seed_column_quoted_csv", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.get_seed_column_quoted_csv", "macro_sql": "{% macro get_seed_column_quoted_csv(model, column_names) %}\n {%- set quote_seed_column = model['config'].get('quote_columns', None) -%}\n {% set quoted = [] %}\n {% for col in column_names -%}\n {%- do quoted.append(adapter.quote_seed_column(col, quote_seed_column)) -%}\n {%- endfor %}\n\n {%- set dest_cols_csv = quoted | join(', ') -%}\n {{ return(dest_cols_csv) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.89245, "supported_languages": null}, "macro.dbt.load_csv_rows": {"name": "load_csv_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.load_csv_rows", "macro_sql": "{% macro load_csv_rows(model, agate_table) -%}\n {{ adapter.dispatch('load_csv_rows', 'dbt')(model, agate_table) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__load_csv_rows"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.892629, "supported_languages": null}, "macro.dbt.default__load_csv_rows": {"name": "default__load_csv_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/seeds/helpers.sql", "original_file_path": "macros/materializations/seeds/helpers.sql", "unique_id": "macro.dbt.default__load_csv_rows", "macro_sql": "{% macro default__load_csv_rows(model, agate_table) %}\n\n {% set batch_size = get_batch_size() %}\n\n {% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}\n {% set bindings = [] %}\n\n {% set statements = [] %}\n\n {% for chunk in agate_table.rows | batch(batch_size) %}\n {% set bindings = [] %}\n\n {% for row in chunk %}\n {% do bindings.extend(row) %}\n {% endfor %}\n\n {% set sql %}\n insert into {{ this.render() }} ({{ cols_sql }}) values\n {% for row in chunk -%}\n ({%- for column in agate_table.column_names -%}\n {{ get_binding_char() }}\n {%- if not loop.last%},{%- endif %}\n {%- endfor -%})\n {%- if not loop.last%},{%- endif %}\n {%- endfor %}\n {% endset %}\n\n {% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}\n\n {% if loop.index0 == 0 %}\n {% do statements.append(sql) %}\n {% endif %}\n {% endfor %}\n\n {# Return SQL so we can render it out into the compiled files #}\n {{ return(statements[0]) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_batch_size", "macro.dbt.get_seed_column_quoted_csv", "macro.dbt.get_binding_char"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.893832, "supported_languages": null}, "macro.dbt.generate_alias_name": {"name": "generate_alias_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_alias.sql", "original_file_path": "macros/get_custom_name/get_custom_alias.sql", "unique_id": "macro.dbt.generate_alias_name", "macro_sql": "{% macro generate_alias_name(custom_alias_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_alias_name', 'dbt')(custom_alias_name, node)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_alias_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.894248, "supported_languages": null}, "macro.dbt.default__generate_alias_name": {"name": "default__generate_alias_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_alias.sql", "original_file_path": "macros/get_custom_name/get_custom_alias.sql", "unique_id": "macro.dbt.default__generate_alias_name", "macro_sql": "{% macro default__generate_alias_name(custom_alias_name=none, node=none) -%}\n\n {%- if custom_alias_name -%}\n\n {{ custom_alias_name | trim }}\n\n {%- elif node.version -%}\n\n {{ return(node.name ~ \"_v\" ~ (node.version | replace(\".\", \"_\"))) }}\n\n {%- else -%}\n\n {{ node.name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.894613, "supported_languages": null}, "macro.dbt.generate_schema_name": {"name": "generate_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.generate_schema_name", "macro_sql": "{% macro generate_schema_name(custom_schema_name=none, node=none) -%}\n {{ return(adapter.dispatch('generate_schema_name', 'dbt')(custom_schema_name, node)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_schema_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.895134, "supported_languages": null}, "macro.dbt.default__generate_schema_name": {"name": "default__generate_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.default__generate_schema_name", "macro_sql": "{% macro default__generate_schema_name(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if custom_schema_name is none -%}\n\n {{ default_schema }}\n\n {%- else -%}\n\n {{ default_schema }}_{{ custom_schema_name | trim }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8953931, "supported_languages": null}, "macro.dbt.generate_schema_name_for_env": {"name": "generate_schema_name_for_env", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_schema.sql", "original_file_path": "macros/get_custom_name/get_custom_schema.sql", "unique_id": "macro.dbt.generate_schema_name_for_env", "macro_sql": "{% macro generate_schema_name_for_env(custom_schema_name, node) -%}\n\n {%- set default_schema = target.schema -%}\n {%- if target.name == 'prod' and custom_schema_name is not none -%}\n\n {{ custom_schema_name | trim }}\n\n {%- else -%}\n\n {{ default_schema }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8956811, "supported_languages": null}, "macro.dbt.generate_database_name": {"name": "generate_database_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_database.sql", "original_file_path": "macros/get_custom_name/get_custom_database.sql", "unique_id": "macro.dbt.generate_database_name", "macro_sql": "{% macro generate_database_name(custom_database_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_database_name', 'dbt')(custom_database_name, node)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_database_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.896078, "supported_languages": null}, "macro.dbt.default__generate_database_name": {"name": "default__generate_database_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_custom_database.sql", "original_file_path": "macros/get_custom_name/get_custom_database.sql", "unique_id": "macro.dbt.default__generate_database_name", "macro_sql": "{% macro default__generate_database_name(custom_database_name=none, node=none) -%}\n {%- set default_database = target.database -%}\n {%- if custom_database_name is none -%}\n\n {{ default_database }}\n\n {%- else -%}\n\n {{ custom_database_name }}\n\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8963368, "supported_languages": null}, "macro.dbt.get_drop_sql": {"name": "get_drop_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.get_drop_sql", "macro_sql": "{%- macro get_drop_sql(relation) -%}\n {{- log('Applying DROP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.897085, "supported_languages": null}, "macro.dbt.default__get_drop_sql": {"name": "default__get_drop_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.default__get_drop_sql", "macro_sql": "{%- macro default__get_drop_sql(relation) -%}\n\n {%- if relation.is_view -%}\n {{ drop_view(relation) }}\n\n {%- elif relation.is_table -%}\n {{ drop_table(relation) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ drop_materialized_view(relation) }}\n\n {%- else -%}\n drop {{ relation.type }} if exists {{ relation.render() }} cascade\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.drop_view", "macro.dbt.drop_table", "macro.dbt.drop_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.897474, "supported_languages": null}, "macro.dbt.drop_relation": {"name": "drop_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.drop_relation", "macro_sql": "{% macro drop_relation(relation) -%}\n {{ return(adapter.dispatch('drop_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__drop_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.897665, "supported_languages": null}, "macro.dbt.default__drop_relation": {"name": "default__drop_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.default__drop_relation", "macro_sql": "{% macro default__drop_relation(relation) -%}\n {% call statement('drop_relation', auto_begin=False) -%}\n {{ get_drop_sql(relation) }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.897868, "supported_languages": null}, "macro.dbt.drop_relation_if_exists": {"name": "drop_relation_if_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop.sql", "original_file_path": "macros/relations/drop.sql", "unique_id": "macro.dbt.drop_relation_if_exists", "macro_sql": "{% macro drop_relation_if_exists(relation) %}\n {% if relation is not none %}\n {{ adapter.drop_relation(relation) }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.8980632, "supported_languages": null}, "macro.dbt.get_replace_sql": {"name": "get_replace_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/replace.sql", "original_file_path": "macros/relations/replace.sql", "unique_id": "macro.dbt.get_replace_sql", "macro_sql": "{% macro get_replace_sql(existing_relation, target_relation, sql) %}\n {{- log('Applying REPLACE to: ' ~ existing_relation) -}}\n {{- adapter.dispatch('get_replace_sql', 'dbt')(existing_relation, target_relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.898865, "supported_languages": null}, "macro.dbt.default__get_replace_sql": {"name": "default__get_replace_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/replace.sql", "original_file_path": "macros/relations/replace.sql", "unique_id": "macro.dbt.default__get_replace_sql", "macro_sql": "{% macro default__get_replace_sql(existing_relation, target_relation, sql) %}\n\n {# /* use a create or replace statement if possible */ #}\n\n {% set is_replaceable = existing_relation.type == target_relation_type and existing_relation.can_be_replaced %}\n\n {% if is_replaceable and existing_relation.is_view %}\n {{ get_replace_view_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_table %}\n {{ get_replace_table_sql(target_relation, sql) }}\n\n {% elif is_replaceable and existing_relation.is_materialized_view %}\n {{ get_replace_materialized_view_sql(target_relation, sql) }}\n\n {# /* a create or replace statement is not possible, so try to stage and/or backup to be safe */ #}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one using a backup */ #}\n {%- elif target_relation.can_be_renamed and existing_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* create target_relation as an intermediate relation, then swap it out with the existing one without using a backup */ #}\n {%- elif target_relation.can_be_renamed -%}\n {{ get_create_intermediate_sql(target_relation, sql) }};\n {{ get_drop_sql(existing_relation) }};\n {{ get_rename_intermediate_sql(target_relation) }}\n\n {# /* create target_relation in place by first backing up the existing relation */ #}\n {%- elif existing_relation.can_be_renamed -%}\n {{ get_create_backup_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }};\n {{ get_drop_backup_sql(existing_relation) }}\n\n {# /* no renaming is allowed, so just drop and create */ #}\n {%- else -%}\n {{ get_drop_sql(existing_relation) }};\n {{ get_create_sql(target_relation, sql) }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_replace_view_sql", "macro.dbt.get_replace_table_sql", "macro.dbt.get_replace_materialized_view_sql", "macro.dbt.get_create_intermediate_sql", "macro.dbt.get_create_backup_sql", "macro.dbt.get_rename_intermediate_sql", "macro.dbt.get_drop_backup_sql", "macro.dbt.get_drop_sql", "macro.dbt.get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.900158, "supported_languages": null}, "macro.dbt.get_create_intermediate_sql": {"name": "get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_intermediate.sql", "original_file_path": "macros/relations/create_intermediate.sql", "unique_id": "macro.dbt.get_create_intermediate_sql", "macro_sql": "{%- macro get_create_intermediate_sql(relation, sql) -%}\n {{- log('Applying CREATE INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_intermediate_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_intermediate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.90055, "supported_languages": null}, "macro.dbt.default__get_create_intermediate_sql": {"name": "default__get_create_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_intermediate.sql", "original_file_path": "macros/relations/create_intermediate.sql", "unique_id": "macro.dbt.default__get_create_intermediate_sql", "macro_sql": "{%- macro default__get_create_intermediate_sql(relation, sql) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n -- drop any pre-existing intermediate\n {{ get_drop_sql(intermediate_relation) }};\n\n {{ get_create_sql(intermediate_relation, sql) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_intermediate_relation", "macro.dbt.get_drop_sql", "macro.dbt.get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.900803, "supported_languages": null}, "macro.dbt.drop_schema_named": {"name": "drop_schema_named", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/schema.sql", "original_file_path": "macros/relations/schema.sql", "unique_id": "macro.dbt.drop_schema_named", "macro_sql": "{% macro drop_schema_named(schema_name) %}\n {{ return(adapter.dispatch('drop_schema_named', 'dbt') (schema_name)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__drop_schema_named"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.901081, "supported_languages": null}, "macro.dbt.default__drop_schema_named": {"name": "default__drop_schema_named", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/schema.sql", "original_file_path": "macros/relations/schema.sql", "unique_id": "macro.dbt.default__drop_schema_named", "macro_sql": "{% macro default__drop_schema_named(schema_name) %}\n {% set schema_relation = api.Relation.create(schema=schema_name) %}\n {{ adapter.drop_schema(schema_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9012969, "supported_languages": null}, "macro.dbt.get_drop_backup_sql": {"name": "get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop_backup.sql", "original_file_path": "macros/relations/drop_backup.sql", "unique_id": "macro.dbt.get_drop_backup_sql", "macro_sql": "{%- macro get_drop_backup_sql(relation) -%}\n {{- log('Applying DROP BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_drop_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_drop_backup_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.901624, "supported_languages": null}, "macro.dbt.default__get_drop_backup_sql": {"name": "default__get_drop_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/drop_backup.sql", "original_file_path": "macros/relations/drop_backup.sql", "unique_id": "macro.dbt.default__get_drop_backup_sql", "macro_sql": "{%- macro default__get_drop_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n {{ get_drop_sql(backup_relation) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_backup_relation", "macro.dbt.get_drop_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.901834, "supported_languages": null}, "macro.dbt.get_rename_sql": {"name": "get_rename_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.get_rename_sql", "macro_sql": "{%- macro get_rename_sql(relation, new_name) -%}\n {{- log('Applying RENAME to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_sql', 'dbt')(relation, new_name) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.902573, "supported_languages": null}, "macro.dbt.default__get_rename_sql": {"name": "default__get_rename_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.default__get_rename_sql", "macro_sql": "{%- macro default__get_rename_sql(relation, new_name) -%}\n\n {%- if relation.is_view -%}\n {{ get_rename_view_sql(relation, new_name) }}\n\n {%- elif relation.is_table -%}\n {{ get_rename_table_sql(relation, new_name) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_rename_materialized_view_sql(relation, new_name) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_rename_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.get_rename_view_sql", "macro.dbt.get_rename_table_sql", "macro.dbt.get_rename_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.903011, "supported_languages": null}, "macro.dbt.rename_relation": {"name": "rename_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.rename_relation", "macro_sql": "{% macro rename_relation(from_relation, to_relation) -%}\n {{ return(adapter.dispatch('rename_relation', 'dbt')(from_relation, to_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__rename_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.903222, "supported_languages": null}, "macro.dbt.default__rename_relation": {"name": "default__rename_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename.sql", "original_file_path": "macros/relations/rename.sql", "unique_id": "macro.dbt.default__rename_relation", "macro_sql": "{% macro default__rename_relation(from_relation, to_relation) -%}\n {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}\n {% call statement('rename_relation') -%}\n alter table {{ from_relation.render() }} rename to {{ target_name }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.903528, "supported_languages": null}, "macro.dbt.get_create_backup_sql": {"name": "get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_backup.sql", "original_file_path": "macros/relations/create_backup.sql", "unique_id": "macro.dbt.get_create_backup_sql", "macro_sql": "{%- macro get_create_backup_sql(relation) -%}\n {{- log('Applying CREATE BACKUP to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_backup_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_backup_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.903886, "supported_languages": null}, "macro.dbt.default__get_create_backup_sql": {"name": "default__get_create_backup_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create_backup.sql", "original_file_path": "macros/relations/create_backup.sql", "unique_id": "macro.dbt.default__get_create_backup_sql", "macro_sql": "{%- macro default__get_create_backup_sql(relation) -%}\n\n -- get the standard backup name\n {% set backup_relation = make_backup_relation(relation, relation.type) %}\n\n -- drop any pre-existing backup\n {{ get_drop_sql(backup_relation) }};\n\n {{ get_rename_sql(relation, backup_relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_backup_relation", "macro.dbt.get_drop_sql", "macro.dbt.get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.904164, "supported_languages": null}, "macro.dbt.get_create_sql": {"name": "get_create_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create.sql", "original_file_path": "macros/relations/create.sql", "unique_id": "macro.dbt.get_create_sql", "macro_sql": "{%- macro get_create_sql(relation, sql) -%}\n {{- log('Applying CREATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_create_sql', 'dbt')(relation, sql) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_create_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.904656, "supported_languages": null}, "macro.dbt.default__get_create_sql": {"name": "default__get_create_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/create.sql", "original_file_path": "macros/relations/create.sql", "unique_id": "macro.dbt.default__get_create_sql", "macro_sql": "{%- macro default__get_create_sql(relation, sql) -%}\n\n {%- if relation.is_view -%}\n {{ get_create_view_as_sql(relation, sql) }}\n\n {%- elif relation.is_table -%}\n {{ get_create_table_as_sql(False, relation, sql) }}\n\n {%- elif relation.is_materialized_view -%}\n {{ get_create_materialized_view_as_sql(relation, sql) }}\n\n {%- else -%}\n {{- exceptions.raise_compiler_error(\"`get_create_sql` has not been implemented for: \" ~ relation.type ) -}}\n\n {%- endif -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.get_create_view_as_sql", "macro.dbt.get_create_table_as_sql", "macro.dbt.get_create_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.905109, "supported_languages": null}, "macro.dbt.get_rename_intermediate_sql": {"name": "get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename_intermediate.sql", "original_file_path": "macros/relations/rename_intermediate.sql", "unique_id": "macro.dbt.get_rename_intermediate_sql", "macro_sql": "{%- macro get_rename_intermediate_sql(relation) -%}\n {{- log('Applying RENAME INTERMEDIATE to: ' ~ relation) -}}\n {{- adapter.dispatch('get_rename_intermediate_sql', 'dbt')(relation) -}}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": ["macro.dbt.default__get_rename_intermediate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9054458, "supported_languages": null}, "macro.dbt.default__get_rename_intermediate_sql": {"name": "default__get_rename_intermediate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/rename_intermediate.sql", "original_file_path": "macros/relations/rename_intermediate.sql", "unique_id": "macro.dbt.default__get_rename_intermediate_sql", "macro_sql": "{%- macro default__get_rename_intermediate_sql(relation) -%}\n\n -- get the standard intermediate name\n {% set intermediate_relation = make_intermediate_relation(relation) %}\n\n {{ get_rename_sql(intermediate_relation, relation.identifier) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.make_intermediate_relation", "macro.dbt.get_rename_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.905664, "supported_languages": null}, "macro.dbt.drop_materialized_view": {"name": "drop_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt.drop_materialized_view", "macro_sql": "{% macro drop_materialized_view(relation) -%}\n {{- adapter.dispatch('drop_materialized_view', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__drop_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.905924, "supported_languages": null}, "macro.dbt.default__drop_materialized_view": {"name": "default__drop_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/drop.sql", "original_file_path": "macros/relations/materialized_view/drop.sql", "unique_id": "macro.dbt.default__drop_materialized_view", "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n drop materialized view if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.906057, "supported_languages": null}, "macro.dbt.get_replace_materialized_view_sql": {"name": "get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/replace.sql", "original_file_path": "macros/relations/materialized_view/replace.sql", "unique_id": "macro.dbt.get_replace_materialized_view_sql", "macro_sql": "{% macro get_replace_materialized_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_materialized_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9063418, "supported_languages": null}, "macro.dbt.default__get_replace_materialized_view_sql": {"name": "default__get_replace_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/replace.sql", "original_file_path": "macros/relations/materialized_view/replace.sql", "unique_id": "macro.dbt.default__get_replace_materialized_view_sql", "macro_sql": "{% macro default__get_replace_materialized_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.90656, "supported_languages": null}, "macro.dbt.refresh_materialized_view": {"name": "refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt.refresh_materialized_view", "macro_sql": "{% macro refresh_materialized_view(relation) %}\n {{- log('Applying REFRESH to: ' ~ relation) -}}\n {{- adapter.dispatch('refresh_materialized_view', 'dbt')(relation) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__refresh_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9068758, "supported_languages": null}, "macro.dbt.default__refresh_materialized_view": {"name": "default__refresh_materialized_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/refresh.sql", "original_file_path": "macros/relations/materialized_view/refresh.sql", "unique_id": "macro.dbt.default__refresh_materialized_view", "macro_sql": "{% macro default__refresh_materialized_view(relation) %}\n {{ exceptions.raise_compiler_error(\"`refresh_materialized_view` has not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.907017, "supported_languages": null}, "macro.dbt.get_rename_materialized_view_sql": {"name": "get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/rename.sql", "original_file_path": "macros/relations/materialized_view/rename.sql", "unique_id": "macro.dbt.get_rename_materialized_view_sql", "macro_sql": "{% macro get_rename_materialized_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_materialized_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_rename_materialized_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.907302, "supported_languages": null}, "macro.dbt.default__get_rename_materialized_view_sql": {"name": "default__get_rename_materialized_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/rename.sql", "original_file_path": "macros/relations/materialized_view/rename.sql", "unique_id": "macro.dbt.default__get_rename_materialized_view_sql", "macro_sql": "{% macro default__get_rename_materialized_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_materialized_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9074519, "supported_languages": null}, "macro.dbt.get_alter_materialized_view_as_sql": {"name": "get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.get_alter_materialized_view_as_sql", "macro_sql": "{% macro get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{- log('Applying ALTER to: ' ~ relation) -}}\n {{- adapter.dispatch('get_alter_materialized_view_as_sql', 'dbt')(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n ) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_alter_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.90809, "supported_languages": null}, "macro.dbt.default__get_alter_materialized_view_as_sql": {"name": "default__get_alter_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.default__get_alter_materialized_view_as_sql", "macro_sql": "{% macro default__get_alter_materialized_view_as_sql(\n relation,\n configuration_changes,\n sql,\n existing_relation,\n backup_relation,\n intermediate_relation\n) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.908284, "supported_languages": null}, "macro.dbt.get_materialized_view_configuration_changes": {"name": "get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.get_materialized_view_configuration_changes", "macro_sql": "{% macro get_materialized_view_configuration_changes(existing_relation, new_config) %}\n /* {#\n It's recommended that configuration changes be formatted as follows:\n {\"\": [{\"action\": \"\", \"context\": ...}]}\n\n For example:\n {\n \"indexes\": [\n {\"action\": \"drop\", \"context\": \"index_abc\"},\n {\"action\": \"create\", \"context\": {\"columns\": [\"column_1\", \"column_2\"], \"type\": \"hash\", \"unique\": True}},\n ],\n }\n\n Either way, `get_materialized_view_configuration_changes` needs to align with `get_alter_materialized_view_as_sql`.\n #} */\n {{- log('Determining configuration changes on: ' ~ existing_relation) -}}\n {%- do return(adapter.dispatch('get_materialized_view_configuration_changes', 'dbt')(existing_relation, new_config)) -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_materialized_view_configuration_changes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.90858, "supported_languages": null}, "macro.dbt.default__get_materialized_view_configuration_changes": {"name": "default__get_materialized_view_configuration_changes", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/alter.sql", "original_file_path": "macros/relations/materialized_view/alter.sql", "unique_id": "macro.dbt.default__get_materialized_view_configuration_changes", "macro_sql": "{% macro default__get_materialized_view_configuration_changes(existing_relation, new_config) %}\n {{ exceptions.raise_compiler_error(\"Materialized views have not been implemented for this adapter.\") }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.908729, "supported_languages": null}, "macro.dbt.get_create_materialized_view_as_sql": {"name": "get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt.get_create_materialized_view_as_sql", "macro_sql": "{% macro get_create_materialized_view_as_sql(relation, sql) -%}\n {{- adapter.dispatch('get_create_materialized_view_as_sql', 'dbt')(relation, sql) -}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_create_materialized_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.909014, "supported_languages": null}, "macro.dbt.default__get_create_materialized_view_as_sql": {"name": "default__get_create_materialized_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/materialized_view/create.sql", "original_file_path": "macros/relations/materialized_view/create.sql", "unique_id": "macro.dbt.default__get_create_materialized_view_as_sql", "macro_sql": "{% macro default__get_create_materialized_view_as_sql(relation, sql) -%}\n {{ exceptions.raise_compiler_error(\n \"`get_create_materialized_view_as_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.909164, "supported_languages": null}, "macro.dbt.get_table_columns_and_constraints": {"name": "get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.get_table_columns_and_constraints", "macro_sql": "{%- macro get_table_columns_and_constraints() -%}\n {{ adapter.dispatch('get_table_columns_and_constraints', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__get_table_columns_and_constraints"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.910224, "supported_languages": null}, "macro.dbt.default__get_table_columns_and_constraints": {"name": "default__get_table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__get_table_columns_and_constraints", "macro_sql": "{% macro default__get_table_columns_and_constraints() -%}\n {{ return(table_columns_and_constraints()) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.table_columns_and_constraints"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9103491, "supported_languages": null}, "macro.dbt.table_columns_and_constraints": {"name": "table_columns_and_constraints", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.table_columns_and_constraints", "macro_sql": "{% macro table_columns_and_constraints() %}\n {# loop through user_provided_columns to create DDL with data types and constraints #}\n {%- set raw_column_constraints = adapter.render_raw_columns_constraints(raw_columns=model['columns']) -%}\n {%- set raw_model_constraints = adapter.render_raw_model_constraints(raw_constraints=model['constraints']) -%}\n (\n {% for c in raw_column_constraints -%}\n {{ c }}{{ \",\" if not loop.last or raw_model_constraints }}\n {% endfor %}\n {% for c in raw_model_constraints -%}\n {{ c }}{{ \",\" if not loop.last }}\n {% endfor -%}\n )\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.910893, "supported_languages": null}, "macro.dbt.get_assert_columns_equivalent": {"name": "get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.get_assert_columns_equivalent", "macro_sql": "\n\n{%- macro get_assert_columns_equivalent(sql) -%}\n {{ adapter.dispatch('get_assert_columns_equivalent', 'dbt')(sql) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.911068, "supported_languages": null}, "macro.dbt.default__get_assert_columns_equivalent": {"name": "default__get_assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__get_assert_columns_equivalent", "macro_sql": "{% macro default__get_assert_columns_equivalent(sql) -%}\n {{ return(assert_columns_equivalent(sql)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.911207, "supported_languages": null}, "macro.dbt.assert_columns_equivalent": {"name": "assert_columns_equivalent", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.assert_columns_equivalent", "macro_sql": "{% macro assert_columns_equivalent(sql) %}\n\n {#-- First ensure the user has defined 'columns' in yaml specification --#}\n {%- set user_defined_columns = model['columns'] -%}\n {%- if not user_defined_columns -%}\n {{ exceptions.raise_contract_error([], []) }}\n {%- endif -%}\n\n {#-- Obtain the column schema provided by sql file. #}\n {%- set sql_file_provided_columns = get_column_schema_from_query(sql, config.get('sql_header', none)) -%}\n {#--Obtain the column schema provided by the schema file by generating an 'empty schema' query from the model's columns. #}\n {%- set schema_file_provided_columns = get_column_schema_from_query(get_empty_schema_sql(user_defined_columns)) -%}\n\n {#-- create dictionaries with name and formatted data type and strings for exception #}\n {%- set sql_columns = format_columns(sql_file_provided_columns) -%}\n {%- set yaml_columns = format_columns(schema_file_provided_columns) -%}\n\n {%- if sql_columns|length != yaml_columns|length -%}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n\n {%- for sql_col in sql_columns -%}\n {%- set yaml_col = [] -%}\n {%- for this_col in yaml_columns -%}\n {%- if this_col['name'] == sql_col['name'] -%}\n {%- do yaml_col.append(this_col) -%}\n {%- break -%}\n {%- endif -%}\n {%- endfor -%}\n {%- if not yaml_col -%}\n {#-- Column with name not found in yaml #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- if sql_col['formatted'] != yaml_col[0]['formatted'] -%}\n {#-- Column data types don't match #}\n {%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}\n {%- endif -%}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_column_schema_from_query", "macro.dbt.get_empty_schema_sql", "macro.dbt.format_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.912739, "supported_languages": null}, "macro.dbt.format_columns": {"name": "format_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.format_columns", "macro_sql": "{% macro format_columns(columns) %}\n {% set formatted_columns = [] %}\n {% for column in columns %}\n {%- set formatted_column = adapter.dispatch('format_column', 'dbt')(column) -%}\n {%- do formatted_columns.append(formatted_column) -%}\n {% endfor %}\n {{ return(formatted_columns) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__format_column"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.913128, "supported_languages": null}, "macro.dbt.default__format_column": {"name": "default__format_column", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/column/columns_spec_ddl.sql", "original_file_path": "macros/relations/column/columns_spec_ddl.sql", "unique_id": "macro.dbt.default__format_column", "macro_sql": "{% macro default__format_column(column) -%}\n {% set data_type = column.dtype %}\n {% set formatted = column.column.lower() ~ \" \" ~ data_type %}\n {{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.913483, "supported_languages": null}, "macro.dbt.drop_table": {"name": "drop_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt.drop_table", "macro_sql": "{% macro drop_table(relation) -%}\n {{- adapter.dispatch('drop_table', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__drop_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.913741, "supported_languages": null}, "macro.dbt.default__drop_table": {"name": "default__drop_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/drop.sql", "original_file_path": "macros/relations/table/drop.sql", "unique_id": "macro.dbt.default__drop_table", "macro_sql": "{% macro default__drop_table(relation) -%}\n drop table if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.913866, "supported_languages": null}, "macro.dbt.get_replace_table_sql": {"name": "get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/replace.sql", "original_file_path": "macros/relations/table/replace.sql", "unique_id": "macro.dbt.get_replace_table_sql", "macro_sql": "{% macro get_replace_table_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_table_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_table_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.914146, "supported_languages": null}, "macro.dbt.default__get_replace_table_sql": {"name": "default__get_replace_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/replace.sql", "original_file_path": "macros/relations/table/replace.sql", "unique_id": "macro.dbt.default__get_replace_table_sql", "macro_sql": "{% macro default__get_replace_table_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.914298, "supported_languages": null}, "macro.dbt.get_rename_table_sql": {"name": "get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt.get_rename_table_sql", "macro_sql": "{% macro get_rename_table_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_table_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_rename_table_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.914575, "supported_languages": null}, "macro.dbt.default__get_rename_table_sql": {"name": "default__get_rename_table_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/rename.sql", "original_file_path": "macros/relations/table/rename.sql", "unique_id": "macro.dbt.default__get_rename_table_sql", "macro_sql": "{% macro default__get_rename_table_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_table_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.914724, "supported_languages": null}, "macro.dbt.get_create_table_as_sql": {"name": "get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.get_create_table_as_sql", "macro_sql": "{% macro get_create_table_as_sql(temporary, relation, sql) -%}\n {{ adapter.dispatch('get_create_table_as_sql', 'dbt')(temporary, relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_create_table_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.915616, "supported_languages": null}, "macro.dbt.default__get_create_table_as_sql": {"name": "default__get_create_table_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_create_table_as_sql", "macro_sql": "{% macro default__get_create_table_as_sql(temporary, relation, sql) -%}\n {{ return(create_table_as(temporary, relation, sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9158049, "supported_languages": null}, "macro.dbt.create_table_as": {"name": "create_table_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.create_table_as", "macro_sql": "{% macro create_table_as(temporary, relation, compiled_code, language='sql') -%}\n {# backward compatibility for create_table_as that does not support language #}\n {% if language == \"sql\" %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code)}}\n {% else %}\n {{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code, language) }}\n {% endif %}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_table_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.916251, "supported_languages": null}, "macro.dbt.default__create_table_as": {"name": "default__create_table_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__create_table_as", "macro_sql": "{% macro default__create_table_as(temporary, relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n\n create {% if temporary: -%}temporary{%- endif %} table\n {{ relation.include(database=(not temporary), schema=(not temporary)) }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced and (not temporary) %}\n {{ get_assert_columns_equivalent(sql) }}\n {{ get_table_columns_and_constraints() }}\n {%- set sql = get_select_subquery(sql) %}\n {% endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent", "macro.dbt.get_table_columns_and_constraints", "macro.dbt.get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.91695, "supported_languages": null}, "macro.dbt.default__get_column_names": {"name": "default__get_column_names", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_column_names", "macro_sql": "{% macro default__get_column_names() %}\n {#- loop through user_provided_columns to get column names -#}\n {%- set user_provided_columns = model['columns'] -%}\n {%- for i in user_provided_columns %}\n {%- set col = user_provided_columns[i] -%}\n {%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}\n {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.917418, "supported_languages": null}, "macro.dbt.get_select_subquery": {"name": "get_select_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.get_select_subquery", "macro_sql": "{% macro get_select_subquery(sql) %}\n {{ return(adapter.dispatch('get_select_subquery', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_select_subquery"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.917613, "supported_languages": null}, "macro.dbt.default__get_select_subquery": {"name": "default__get_select_subquery", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/table/create.sql", "original_file_path": "macros/relations/table/create.sql", "unique_id": "macro.dbt.default__get_select_subquery", "macro_sql": "{% macro default__get_select_subquery(sql) %}\n select {{ adapter.dispatch('get_column_names', 'dbt')() }}\n from (\n {{ sql }}\n ) as model_subq\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_column_names"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9177952, "supported_languages": null}, "macro.dbt.drop_view": {"name": "drop_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt.drop_view", "macro_sql": "{% macro drop_view(relation) -%}\n {{- adapter.dispatch('drop_view', 'dbt')(relation) -}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__drop_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.918049, "supported_languages": null}, "macro.dbt.default__drop_view": {"name": "default__drop_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/drop.sql", "original_file_path": "macros/relations/view/drop.sql", "unique_id": "macro.dbt.default__drop_view", "macro_sql": "{% macro default__drop_view(relation) -%}\n drop view if exists {{ relation.render() }} cascade\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.918174, "supported_languages": null}, "macro.dbt.get_replace_view_sql": {"name": "get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.get_replace_view_sql", "macro_sql": "{% macro get_replace_view_sql(relation, sql) %}\n {{- adapter.dispatch('get_replace_view_sql', 'dbt')(relation, sql) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_replace_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.919074, "supported_languages": null}, "macro.dbt.default__get_replace_view_sql": {"name": "default__get_replace_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.default__get_replace_view_sql", "macro_sql": "{% macro default__get_replace_view_sql(relation, sql) %}\n {{ exceptions.raise_compiler_error(\n \"`get_replace_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.919225, "supported_languages": null}, "macro.dbt.create_or_replace_view": {"name": "create_or_replace_view", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.create_or_replace_view", "macro_sql": "{% macro create_or_replace_view() %}\n {%- set identifier = model['alias'] -%}\n\n {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n {%- set target_relation = api.Relation.create(\n identifier=identifier, schema=schema, database=database,\n type='view') -%}\n {% set grant_config = config.get('grants') %}\n\n {{ run_hooks(pre_hooks) }}\n\n -- If there's a table with the same name and we weren't told to full refresh,\n -- that's an error. If we were told to full refresh, drop it. This behavior differs\n -- for Snowflake and BigQuery, so multiple dispatch is used.\n {%- if old_relation is not none and old_relation.is_table -%}\n {{ handle_existing_table(should_full_refresh(), old_relation) }}\n {%- endif -%}\n\n -- build model\n {% call statement('main') -%}\n {{ get_create_view_as_sql(target_relation, sql) }}\n {%- endcall %}\n\n {% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}\n {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_hooks", "macro.dbt.handle_existing_table", "macro.dbt.should_full_refresh", "macro.dbt.statement", "macro.dbt.get_create_view_as_sql", "macro.dbt.should_revoke", "macro.dbt.apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9204428, "supported_languages": null}, "macro.dbt.handle_existing_table": {"name": "handle_existing_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.handle_existing_table", "macro_sql": "{% macro handle_existing_table(full_refresh, old_relation) %}\n {{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__handle_existing_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.920647, "supported_languages": null}, "macro.dbt.default__handle_existing_table": {"name": "default__handle_existing_table", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/replace.sql", "original_file_path": "macros/relations/view/replace.sql", "unique_id": "macro.dbt.default__handle_existing_table", "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n {{ log(\"Dropping relation \" ~ old_relation.render() ~ \" because it is of type \" ~ old_relation.type) }}\n {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.920892, "supported_languages": null}, "macro.dbt.get_rename_view_sql": {"name": "get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt.get_rename_view_sql", "macro_sql": "{% macro get_rename_view_sql(relation, new_name) %}\n {{- adapter.dispatch('get_rename_view_sql', 'dbt')(relation, new_name) -}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_rename_view_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.921171, "supported_languages": null}, "macro.dbt.default__get_rename_view_sql": {"name": "default__get_rename_view_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/rename.sql", "original_file_path": "macros/relations/view/rename.sql", "unique_id": "macro.dbt.default__get_rename_view_sql", "macro_sql": "{% macro default__get_rename_view_sql(relation, new_name) %}\n {{ exceptions.raise_compiler_error(\n \"`get_rename_view_sql` has not been implemented for this adapter.\"\n ) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.921321, "supported_languages": null}, "macro.dbt.get_create_view_as_sql": {"name": "get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.get_create_view_as_sql", "macro_sql": "{% macro get_create_view_as_sql(relation, sql) -%}\n {{ adapter.dispatch('get_create_view_as_sql', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_create_view_as_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9217532, "supported_languages": null}, "macro.dbt.default__get_create_view_as_sql": {"name": "default__get_create_view_as_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.default__get_create_view_as_sql", "macro_sql": "{% macro default__get_create_view_as_sql(relation, sql) -%}\n {{ return(create_view_as(relation, sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.create_view_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9219232, "supported_languages": null}, "macro.dbt.create_view_as": {"name": "create_view_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.create_view_as", "macro_sql": "{% macro create_view_as(relation, sql) -%}\n {{ adapter.dispatch('create_view_as', 'dbt')(relation, sql) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__create_view_as"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.922112, "supported_languages": null}, "macro.dbt.default__create_view_as": {"name": "default__create_view_as", "resource_type": "macro", "package_name": "dbt", "path": "macros/relations/view/create.sql", "original_file_path": "macros/relations/view/create.sql", "unique_id": "macro.dbt.default__create_view_as", "macro_sql": "{% macro default__create_view_as(relation, sql) -%}\n {%- set sql_header = config.get('sql_header', none) -%}\n\n {{ sql_header if sql_header is not none }}\n create view {{ relation.render() }}\n {% set contract_config = config.get('contract') %}\n {% if contract_config.enforced %}\n {{ get_assert_columns_equivalent(sql) }}\n {%- endif %}\n as (\n {{ sql }}\n );\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_assert_columns_equivalent"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.922564, "supported_languages": null}, "macro.dbt.default__test_relationships": {"name": "default__test_relationships", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/relationships.sql", "original_file_path": "macros/generic_test_sql/relationships.sql", "unique_id": "macro.dbt.default__test_relationships", "macro_sql": "{% macro default__test_relationships(model, column_name, to, field) %}\n\nwith child as (\n select {{ column_name }} as from_field\n from {{ model }}\n where {{ column_name }} is not null\n),\n\nparent as (\n select {{ field }} as to_field\n from {{ to }}\n)\n\nselect\n from_field\n\nfrom child\nleft join parent\n on child.from_field = parent.to_field\n\nwhere parent.to_field is null\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.923092, "supported_languages": null}, "macro.dbt.default__test_not_null": {"name": "default__test_not_null", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/not_null.sql", "original_file_path": "macros/generic_test_sql/not_null.sql", "unique_id": "macro.dbt.default__test_not_null", "macro_sql": "{% macro default__test_not_null(model, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else column_name %}\n\nselect {{ column_list }}\nfrom {{ model }}\nwhere {{ column_name }} is null\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_store_failures"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9234262, "supported_languages": null}, "macro.dbt.default__test_unique": {"name": "default__test_unique", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/unique.sql", "original_file_path": "macros/generic_test_sql/unique.sql", "unique_id": "macro.dbt.default__test_unique", "macro_sql": "{% macro default__test_unique(model, column_name) %}\n\nselect\n {{ column_name }} as unique_field,\n count(*) as n_records\n\nfrom {{ model }}\nwhere {{ column_name }} is not null\ngroup by {{ column_name }}\nhaving count(*) > 1\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9236748, "supported_languages": null}, "macro.dbt.default__test_accepted_values": {"name": "default__test_accepted_values", "resource_type": "macro", "package_name": "dbt", "path": "macros/generic_test_sql/accepted_values.sql", "original_file_path": "macros/generic_test_sql/accepted_values.sql", "unique_id": "macro.dbt.default__test_accepted_values", "macro_sql": "{% macro default__test_accepted_values(model, column_name, values, quote=True) %}\n\nwith all_values as (\n\n select\n {{ column_name }} as value_field,\n count(*) as n_records\n\n from {{ model }}\n group by {{ column_name }}\n\n)\n\nselect *\nfrom all_values\nwhere value_field not in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n)\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.924256, "supported_languages": null}, "macro.dbt.statement": {"name": "statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.statement", "macro_sql": "\n{%- macro statement(name=None, fetch_result=False, auto_begin=True, language='sql') -%}\n {%- if execute: -%}\n {%- set compiled_code = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime {} for node \"{}\"'.format(language, model['unique_id'])) }}\n {{ write(compiled_code) }}\n {%- endif -%}\n {%- if language == 'sql'-%}\n {%- set res, table = adapter.execute(compiled_code, auto_begin=auto_begin, fetch=fetch_result) -%}\n {%- elif language == 'python' -%}\n {%- set res = submit_python_job(model, compiled_code) -%}\n {#-- TODO: What should table be for python models? --#}\n {%- set table = None -%}\n {%- else -%}\n {% do exceptions.raise_compiler_error(\"statement macro didn't get supported language\") %}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_result(name, response=res, agate_table=table) }}\n {%- endif -%}\n\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.925903, "supported_languages": null}, "macro.dbt.noop_statement": {"name": "noop_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.noop_statement", "macro_sql": "{% macro noop_statement(name=None, message=None, code=None, rows_affected=None, res=None) -%}\n {%- set sql = caller() -%}\n\n {%- if name == 'main' -%}\n {{ log('Writing runtime SQL for node \"{}\"'.format(model['unique_id'])) }}\n {{ write(sql) }}\n {%- endif -%}\n\n {%- if name is not none -%}\n {{ store_raw_result(name, message=message, code=code, rows_affected=rows_affected, agate_table=res) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.926498, "supported_languages": null}, "macro.dbt.run_query": {"name": "run_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/statement.sql", "original_file_path": "macros/etc/statement.sql", "unique_id": "macro.dbt.run_query", "macro_sql": "{% macro run_query(sql) %}\n {% call statement(\"run_query_statement\", fetch_result=true, auto_begin=false) %}\n {{ sql }}\n {% endcall %}\n\n {% do return(load_result(\"run_query_statement\").table) %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.926805, "supported_languages": null}, "macro.dbt.convert_datetime": {"name": "convert_datetime", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.convert_datetime", "macro_sql": "{% macro convert_datetime(date_str, date_fmt) %}\n\n {% set error_msg -%}\n The provided partition date '{{ date_str }}' does not match the expected format '{{ date_fmt }}'\n {%- endset %}\n\n {% set res = try_or_compiler_error(error_msg, modules.datetime.datetime.strptime, date_str.strip(), date_fmt) %}\n {{ return(res) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.928797, "supported_languages": null}, "macro.dbt.dates_in_range": {"name": "dates_in_range", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.dates_in_range", "macro_sql": "{% macro dates_in_range(start_date_str, end_date_str=none, in_fmt=\"%Y%m%d\", out_fmt=\"%Y%m%d\") %}\n {% set end_date_str = start_date_str if end_date_str is none else end_date_str %}\n\n {% set start_date = convert_datetime(start_date_str, in_fmt) %}\n {% set end_date = convert_datetime(end_date_str, in_fmt) %}\n\n {% set day_count = (end_date - start_date).days %}\n {% if day_count < 0 %}\n {% set msg -%}\n Partition start date is after the end date ({{ start_date }}, {{ end_date }})\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg, model) }}\n {% endif %}\n\n {% set date_list = [] %}\n {% for i in range(0, day_count + 1) %}\n {% set the_date = (modules.datetime.timedelta(days=i) + start_date) %}\n {% if not out_fmt %}\n {% set _ = date_list.append(the_date) %}\n {% else %}\n {% set _ = date_list.append(the_date.strftime(out_fmt)) %}\n {% endif %}\n {% endfor %}\n\n {{ return(date_list) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.convert_datetime"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.930062, "supported_languages": null}, "macro.dbt.partition_range": {"name": "partition_range", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.partition_range", "macro_sql": "{% macro partition_range(raw_partition_date, date_fmt='%Y%m%d') %}\n {% set partition_range = (raw_partition_date | string).split(\",\") %}\n\n {% if (partition_range | length) == 1 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = none %}\n {% elif (partition_range | length) == 2 %}\n {% set start_date = partition_range[0] %}\n {% set end_date = partition_range[1] %}\n {% else %}\n {{ exceptions.raise_compiler_error(\"Invalid partition time. Expected format: {Start Date}[,{End Date}]. Got: \" ~ raw_partition_date) }}\n {% endif %}\n\n {{ return(dates_in_range(start_date, end_date, in_fmt=date_fmt)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dates_in_range"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.930788, "supported_languages": null}, "macro.dbt.py_current_timestring": {"name": "py_current_timestring", "resource_type": "macro", "package_name": "dbt", "path": "macros/etc/datetime.sql", "original_file_path": "macros/etc/datetime.sql", "unique_id": "macro.dbt.py_current_timestring", "macro_sql": "{% macro py_current_timestring() %}\n {% set dt = modules.datetime.datetime.now() %}\n {% do return(dt.strftime(\"%Y%m%d%H%M%S%f\")) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.931017, "supported_languages": null}, "macro.dbt.except": {"name": "except", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/except.sql", "original_file_path": "macros/utils/except.sql", "unique_id": "macro.dbt.except", "macro_sql": "{% macro except() %}\n {{ return(adapter.dispatch('except', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.931246, "supported_languages": null}, "macro.dbt.default__except": {"name": "default__except", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/except.sql", "original_file_path": "macros/utils/except.sql", "unique_id": "macro.dbt.default__except", "macro_sql": "{% macro default__except() %}\n\n except\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.931326, "supported_languages": null}, "macro.dbt.get_intervals_between": {"name": "get_intervals_between", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.get_intervals_between", "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt')(start_date, end_date, datepart)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_intervals_between"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.932085, "supported_languages": null}, "macro.dbt.default__get_intervals_between": {"name": "default__get_intervals_between", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.default__get_intervals_between", "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.932757, "supported_languages": null}, "macro.dbt.date_spine": {"name": "date_spine", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.date_spine", "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt')(datepart, start_date, end_date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.933078, "supported_languages": null}, "macro.dbt.default__date_spine": {"name": "default__date_spine", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_spine.sql", "original_file_path": "macros/utils/date_spine.sql", "unique_id": "macro.dbt.default__date_spine", "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n {# call as follows:\n\n date_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n ) #}\n\n\n with rawdata as (\n\n {{dbt.generate_series(\n dbt.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.generate_series", "macro.dbt.get_intervals_between", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.93347, "supported_languages": null}, "macro.dbt.date": {"name": "date", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date.sql", "original_file_path": "macros/utils/date.sql", "unique_id": "macro.dbt.date", "macro_sql": "{% macro date(year, month, day) %}\n {{ return(adapter.dispatch('date', 'dbt') (year, month, day)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__date"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.933816, "supported_languages": null}, "macro.dbt.default__date": {"name": "default__date", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date.sql", "original_file_path": "macros/utils/date.sql", "unique_id": "macro.dbt.default__date", "macro_sql": "{% macro default__date(year, month, day) -%}\n {%- set dt = modules.datetime.date(year, month, day) -%}\n {%- set iso_8601_formatted_date = dt.strftime('%Y-%m-%d') -%}\n to_date('{{ iso_8601_formatted_date }}', 'YYYY-MM-DD')\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9341052, "supported_languages": null}, "macro.dbt.replace": {"name": "replace", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/replace.sql", "original_file_path": "macros/utils/replace.sql", "unique_id": "macro.dbt.replace", "macro_sql": "{% macro replace(field, old_chars, new_chars) -%}\n {{ return(adapter.dispatch('replace', 'dbt') (field, old_chars, new_chars)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__replace"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.934443, "supported_languages": null}, "macro.dbt.default__replace": {"name": "default__replace", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/replace.sql", "original_file_path": "macros/utils/replace.sql", "unique_id": "macro.dbt.default__replace", "macro_sql": "{% macro default__replace(field, old_chars, new_chars) %}\n\n replace(\n {{ field }},\n {{ old_chars }},\n {{ new_chars }}\n )\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9346108, "supported_languages": null}, "macro.dbt.concat": {"name": "concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/concat.sql", "original_file_path": "macros/utils/concat.sql", "unique_id": "macro.dbt.concat", "macro_sql": "{% macro concat(fields) -%}\n {{ return(adapter.dispatch('concat', 'dbt')(fields)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9348621, "supported_languages": null}, "macro.dbt.default__concat": {"name": "default__concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/concat.sql", "original_file_path": "macros/utils/concat.sql", "unique_id": "macro.dbt.default__concat", "macro_sql": "{% macro default__concat(fields) -%}\n {{ fields|join(' || ') }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9349911, "supported_languages": null}, "macro.dbt.get_powers_of_two": {"name": "get_powers_of_two", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.get_powers_of_two", "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.935849, "supported_languages": null}, "macro.dbt.default__get_powers_of_two": {"name": "default__get_powers_of_two", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.default__get_powers_of_two", "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.936267, "supported_languages": null}, "macro.dbt.generate_series": {"name": "generate_series", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.generate_series", "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_series"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9364579, "supported_languages": null}, "macro.dbt.default__generate_series": {"name": "default__generate_series", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/generate_series.sql", "original_file_path": "macros/utils/generate_series.sql", "unique_id": "macro.dbt.default__generate_series", "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9369652, "supported_languages": null}, "macro.dbt.length": {"name": "length", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/length.sql", "original_file_path": "macros/utils/length.sql", "unique_id": "macro.dbt.length", "macro_sql": "{% macro length(expression) -%}\n {{ return(adapter.dispatch('length', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__length"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.937222, "supported_languages": null}, "macro.dbt.default__length": {"name": "default__length", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/length.sql", "original_file_path": "macros/utils/length.sql", "unique_id": "macro.dbt.default__length", "macro_sql": "{% macro default__length(expression) %}\n\n length(\n {{ expression }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.937328, "supported_languages": null}, "macro.dbt.dateadd": {"name": "dateadd", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt.dateadd", "macro_sql": "{% macro dateadd(datepart, interval, from_date_or_timestamp) %}\n {{ return(adapter.dispatch('dateadd', 'dbt')(datepart, interval, from_date_or_timestamp)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.937674, "supported_languages": null}, "macro.dbt.default__dateadd": {"name": "default__dateadd", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/dateadd.sql", "original_file_path": "macros/utils/dateadd.sql", "unique_id": "macro.dbt.default__dateadd", "macro_sql": "{% macro default__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_date_or_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.937932, "supported_languages": null}, "macro.dbt.intersect": {"name": "intersect", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/intersect.sql", "original_file_path": "macros/utils/intersect.sql", "unique_id": "macro.dbt.intersect", "macro_sql": "{% macro intersect() %}\n {{ return(adapter.dispatch('intersect', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__intersect"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.938164, "supported_languages": null}, "macro.dbt.default__intersect": {"name": "default__intersect", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/intersect.sql", "original_file_path": "macros/utils/intersect.sql", "unique_id": "macro.dbt.default__intersect", "macro_sql": "{% macro default__intersect() %}\n\n intersect\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.938247, "supported_languages": null}, "macro.dbt.escape_single_quotes": {"name": "escape_single_quotes", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/escape_single_quotes.sql", "original_file_path": "macros/utils/escape_single_quotes.sql", "unique_id": "macro.dbt.escape_single_quotes", "macro_sql": "{% macro escape_single_quotes(expression) %}\n {{ return(adapter.dispatch('escape_single_quotes', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__escape_single_quotes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.938519, "supported_languages": null}, "macro.dbt.default__escape_single_quotes": {"name": "default__escape_single_quotes", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/escape_single_quotes.sql", "original_file_path": "macros/utils/escape_single_quotes.sql", "unique_id": "macro.dbt.default__escape_single_quotes", "macro_sql": "{% macro default__escape_single_quotes(expression) -%}\n{{ expression | replace(\"'\",\"''\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9386702, "supported_languages": null}, "macro.dbt.right": {"name": "right", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/right.sql", "original_file_path": "macros/utils/right.sql", "unique_id": "macro.dbt.right", "macro_sql": "{% macro right(string_text, length_expression) -%}\n {{ return(adapter.dispatch('right', 'dbt') (string_text, length_expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__right"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.93898, "supported_languages": null}, "macro.dbt.default__right": {"name": "default__right", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/right.sql", "original_file_path": "macros/utils/right.sql", "unique_id": "macro.dbt.default__right", "macro_sql": "{% macro default__right(string_text, length_expression) %}\n\n right(\n {{ string_text }},\n {{ length_expression }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.939127, "supported_languages": null}, "macro.dbt.listagg": {"name": "listagg", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt.listagg", "macro_sql": "{% macro listagg(measure, delimiter_text=\"','\", order_by_clause=none, limit_num=none) -%}\n {{ return(adapter.dispatch('listagg', 'dbt') (measure, delimiter_text, order_by_clause, limit_num)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__listagg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.939811, "supported_languages": null}, "macro.dbt.default__listagg": {"name": "default__listagg", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/listagg.sql", "original_file_path": "macros/utils/listagg.sql", "unique_id": "macro.dbt.default__listagg", "macro_sql": "{% macro default__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}\n\n {% if limit_num -%}\n array_to_string(\n array_slice(\n array_agg(\n {{ measure }}\n ){% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n ,0\n ,{{ limit_num }}\n ),\n {{ delimiter_text }}\n )\n {%- else %}\n listagg(\n {{ measure }},\n {{ delimiter_text }}\n )\n {% if order_by_clause -%}\n within group ({{ order_by_clause }})\n {%- endif %}\n {%- endif %}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9402182, "supported_languages": null}, "macro.dbt.datediff": {"name": "datediff", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt.datediff", "macro_sql": "{% macro datediff(first_date, second_date, datepart) %}\n {{ return(adapter.dispatch('datediff', 'dbt')(first_date, second_date, datepart)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9405692, "supported_languages": null}, "macro.dbt.default__datediff": {"name": "default__datediff", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/datediff.sql", "original_file_path": "macros/utils/datediff.sql", "unique_id": "macro.dbt.default__datediff", "macro_sql": "{% macro default__datediff(first_date, second_date, datepart) -%}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9407392, "supported_languages": null}, "macro.dbt.safe_cast": {"name": "safe_cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt.safe_cast", "macro_sql": "{% macro safe_cast(field, type) %}\n {{ return(adapter.dispatch('safe_cast', 'dbt') (field, type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__safe_cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.941032, "supported_languages": null}, "macro.dbt.default__safe_cast": {"name": "default__safe_cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/safe_cast.sql", "original_file_path": "macros/utils/safe_cast.sql", "unique_id": "macro.dbt.default__safe_cast", "macro_sql": "{% macro default__safe_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.941178, "supported_languages": null}, "macro.dbt.hash": {"name": "hash", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/hash.sql", "original_file_path": "macros/utils/hash.sql", "unique_id": "macro.dbt.hash", "macro_sql": "{% macro hash(field) -%}\n {{ return(adapter.dispatch('hash', 'dbt') (field)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__hash"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.941443, "supported_languages": null}, "macro.dbt.default__hash": {"name": "default__hash", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/hash.sql", "original_file_path": "macros/utils/hash.sql", "unique_id": "macro.dbt.default__hash", "macro_sql": "{% macro default__hash(field) -%}\n md5(cast({{ field }} as {{ api.Column.translate_type('string') }}))\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.941611, "supported_languages": null}, "macro.dbt.cast_bool_to_text": {"name": "cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast_bool_to_text.sql", "original_file_path": "macros/utils/cast_bool_to_text.sql", "unique_id": "macro.dbt.cast_bool_to_text", "macro_sql": "{% macro cast_bool_to_text(field) %}\n {{ adapter.dispatch('cast_bool_to_text', 'dbt') (field) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__cast_bool_to_text"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9418619, "supported_languages": null}, "macro.dbt.default__cast_bool_to_text": {"name": "default__cast_bool_to_text", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast_bool_to_text.sql", "original_file_path": "macros/utils/cast_bool_to_text.sql", "unique_id": "macro.dbt.default__cast_bool_to_text", "macro_sql": "{% macro default__cast_bool_to_text(field) %}\n cast({{ field }} as {{ api.Column.translate_type('string') }})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.942025, "supported_languages": null}, "macro.dbt.cast": {"name": "cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast.sql", "original_file_path": "macros/utils/cast.sql", "unique_id": "macro.dbt.cast", "macro_sql": "{% macro cast(field, type) %}\n {{ return(adapter.dispatch('cast', 'dbt') (field, type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.942306, "supported_languages": null}, "macro.dbt.default__cast": {"name": "default__cast", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/cast.sql", "original_file_path": "macros/utils/cast.sql", "unique_id": "macro.dbt.default__cast", "macro_sql": "{% macro default__cast(field, type) %}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.942445, "supported_languages": null}, "macro.dbt.any_value": {"name": "any_value", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/any_value.sql", "original_file_path": "macros/utils/any_value.sql", "unique_id": "macro.dbt.any_value", "macro_sql": "{% macro any_value(expression) -%}\n {{ return(adapter.dispatch('any_value', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__any_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.942703, "supported_languages": null}, "macro.dbt.default__any_value": {"name": "default__any_value", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/any_value.sql", "original_file_path": "macros/utils/any_value.sql", "unique_id": "macro.dbt.default__any_value", "macro_sql": "{% macro default__any_value(expression) -%}\n\n any_value({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.942888, "supported_languages": null}, "macro.dbt.position": {"name": "position", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/position.sql", "original_file_path": "macros/utils/position.sql", "unique_id": "macro.dbt.position", "macro_sql": "{% macro position(substring_text, string_text) -%}\n {{ return(adapter.dispatch('position', 'dbt') (substring_text, string_text)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__position"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9431832, "supported_languages": null}, "macro.dbt.default__position": {"name": "default__position", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/position.sql", "original_file_path": "macros/utils/position.sql", "unique_id": "macro.dbt.default__position", "macro_sql": "{% macro default__position(substring_text, string_text) %}\n\n position(\n {{ substring_text }} in {{ string_text }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9433239, "supported_languages": null}, "macro.dbt.string_literal": {"name": "string_literal", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/literal.sql", "original_file_path": "macros/utils/literal.sql", "unique_id": "macro.dbt.string_literal", "macro_sql": "{%- macro string_literal(value) -%}\n {{ return(adapter.dispatch('string_literal', 'dbt') (value)) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__string_literal"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.943572, "supported_languages": null}, "macro.dbt.default__string_literal": {"name": "default__string_literal", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/literal.sql", "original_file_path": "macros/utils/literal.sql", "unique_id": "macro.dbt.default__string_literal", "macro_sql": "{% macro default__string_literal(value) -%}\n '{{ value }}'\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.943679, "supported_languages": null}, "macro.dbt.type_string": {"name": "type_string", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_string", "macro_sql": "\n\n{%- macro type_string() -%}\n {{ return(adapter.dispatch('type_string', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.944617, "supported_languages": null}, "macro.dbt.default__type_string": {"name": "default__type_string", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_string", "macro_sql": "{% macro default__type_string() %}\n {{ return(api.Column.translate_type(\"string\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.944771, "supported_languages": null}, "macro.dbt.type_timestamp": {"name": "type_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_timestamp", "macro_sql": "\n\n{%- macro type_timestamp() -%}\n {{ return(adapter.dispatch('type_timestamp', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.944941, "supported_languages": null}, "macro.dbt.default__type_timestamp": {"name": "default__type_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_timestamp", "macro_sql": "{% macro default__type_timestamp() %}\n {{ return(api.Column.translate_type(\"timestamp\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945096, "supported_languages": null}, "macro.dbt.type_float": {"name": "type_float", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_float", "macro_sql": "\n\n{%- macro type_float() -%}\n {{ return(adapter.dispatch('type_float', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_float"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945261, "supported_languages": null}, "macro.dbt.default__type_float": {"name": "default__type_float", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_float", "macro_sql": "{% macro default__type_float() %}\n {{ return(api.Column.translate_type(\"float\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945418, "supported_languages": null}, "macro.dbt.type_numeric": {"name": "type_numeric", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_numeric", "macro_sql": "\n\n{%- macro type_numeric() -%}\n {{ return(adapter.dispatch('type_numeric', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_numeric"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945584, "supported_languages": null}, "macro.dbt.default__type_numeric": {"name": "default__type_numeric", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_numeric", "macro_sql": "{% macro default__type_numeric() %}\n {{ return(api.Column.numeric_type(\"numeric\", 28, 6)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945764, "supported_languages": null}, "macro.dbt.type_bigint": {"name": "type_bigint", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_bigint", "macro_sql": "\n\n{%- macro type_bigint() -%}\n {{ return(adapter.dispatch('type_bigint', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_bigint"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.945926, "supported_languages": null}, "macro.dbt.default__type_bigint": {"name": "default__type_bigint", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_bigint", "macro_sql": "{% macro default__type_bigint() %}\n {{ return(api.Column.translate_type(\"bigint\")) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946081, "supported_languages": null}, "macro.dbt.type_int": {"name": "type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_int", "macro_sql": "\n\n{%- macro type_int() -%}\n {{ return(adapter.dispatch('type_int', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_int"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946243, "supported_languages": null}, "macro.dbt.default__type_int": {"name": "default__type_int", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_int", "macro_sql": "{%- macro default__type_int() -%}\n {{ return(api.Column.translate_type(\"integer\")) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946388, "supported_languages": null}, "macro.dbt.type_boolean": {"name": "type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.type_boolean", "macro_sql": "\n\n{%- macro type_boolean() -%}\n {{ return(adapter.dispatch('type_boolean', 'dbt')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__type_boolean"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946552, "supported_languages": null}, "macro.dbt.default__type_boolean": {"name": "default__type_boolean", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/data_types.sql", "original_file_path": "macros/utils/data_types.sql", "unique_id": "macro.dbt.default__type_boolean", "macro_sql": "{%- macro default__type_boolean() -%}\n {{ return(api.Column.translate_type(\"boolean\")) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946697, "supported_languages": null}, "macro.dbt.array_concat": {"name": "array_concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_concat.sql", "original_file_path": "macros/utils/array_concat.sql", "unique_id": "macro.dbt.array_concat", "macro_sql": "{% macro array_concat(array_1, array_2) -%}\n {{ return(adapter.dispatch('array_concat', 'dbt')(array_1, array_2)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__array_concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.946978, "supported_languages": null}, "macro.dbt.default__array_concat": {"name": "default__array_concat", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_concat.sql", "original_file_path": "macros/utils/array_concat.sql", "unique_id": "macro.dbt.default__array_concat", "macro_sql": "{% macro default__array_concat(array_1, array_2) -%}\n array_cat({{ array_1 }}, {{ array_2 }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.94718, "supported_languages": null}, "macro.dbt.bool_or": {"name": "bool_or", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/bool_or.sql", "original_file_path": "macros/utils/bool_or.sql", "unique_id": "macro.dbt.bool_or", "macro_sql": "{% macro bool_or(expression) -%}\n {{ return(adapter.dispatch('bool_or', 'dbt') (expression)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__bool_or"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9474251, "supported_languages": null}, "macro.dbt.default__bool_or": {"name": "default__bool_or", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/bool_or.sql", "original_file_path": "macros/utils/bool_or.sql", "unique_id": "macro.dbt.default__bool_or", "macro_sql": "{% macro default__bool_or(expression) -%}\n\n bool_or({{ expression }})\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.947528, "supported_languages": null}, "macro.dbt.last_day": {"name": "last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.last_day", "macro_sql": "{% macro last_day(date, datepart) %}\n {{ return(adapter.dispatch('last_day', 'dbt') (date, datepart)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__last_day"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.947881, "supported_languages": null}, "macro.dbt.default_last_day": {"name": "default_last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.default_last_day", "macro_sql": "\n\n{%- macro default_last_day(date, datepart) -%}\n cast(\n {{dbt.dateadd('day', '-1',\n dbt.dateadd(datepart, '1', dbt.date_trunc(datepart, date))\n )}}\n as date)\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.dateadd", "macro.dbt.date_trunc"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9481559, "supported_languages": null}, "macro.dbt.default__last_day": {"name": "default__last_day", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/last_day.sql", "original_file_path": "macros/utils/last_day.sql", "unique_id": "macro.dbt.default__last_day", "macro_sql": "{% macro default__last_day(date, datepart) -%}\n {{dbt.default_last_day(date, datepart)}}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default_last_day"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9483058, "supported_languages": null}, "macro.dbt.split_part": {"name": "split_part", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt.split_part", "macro_sql": "{% macro split_part(string_text, delimiter_text, part_number) %}\n {{ return(adapter.dispatch('split_part', 'dbt') (string_text, delimiter_text, part_number)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__split_part"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.948857, "supported_languages": null}, "macro.dbt.default__split_part": {"name": "default__split_part", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt.default__split_part", "macro_sql": "{% macro default__split_part(string_text, delimiter_text, part_number) %}\n\n split_part(\n {{ string_text }},\n {{ delimiter_text }},\n {{ part_number }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.949024, "supported_languages": null}, "macro.dbt._split_part_negative": {"name": "_split_part_negative", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/split_part.sql", "original_file_path": "macros/utils/split_part.sql", "unique_id": "macro.dbt._split_part_negative", "macro_sql": "{% macro _split_part_negative(string_text, delimiter_text, part_number) %}\n\n split_part(\n {{ string_text }},\n {{ delimiter_text }},\n length({{ string_text }})\n - length(\n replace({{ string_text }}, {{ delimiter_text }}, '')\n ) + 2 + {{ part_number }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.949257, "supported_languages": null}, "macro.dbt.date_trunc": {"name": "date_trunc", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_trunc.sql", "original_file_path": "macros/utils/date_trunc.sql", "unique_id": "macro.dbt.date_trunc", "macro_sql": "{% macro date_trunc(datepart, date) -%}\n {{ return(adapter.dispatch('date_trunc', 'dbt') (datepart, date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__date_trunc"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.949541, "supported_languages": null}, "macro.dbt.default__date_trunc": {"name": "default__date_trunc", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/date_trunc.sql", "original_file_path": "macros/utils/date_trunc.sql", "unique_id": "macro.dbt.default__date_trunc", "macro_sql": "{% macro default__date_trunc(datepart, date) -%}\n date_trunc('{{datepart}}', {{date}})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.949673, "supported_languages": null}, "macro.dbt.array_construct": {"name": "array_construct", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_construct.sql", "original_file_path": "macros/utils/array_construct.sql", "unique_id": "macro.dbt.array_construct", "macro_sql": "{% macro array_construct(inputs=[], data_type=api.Column.translate_type('integer')) -%}\n {{ return(adapter.dispatch('array_construct', 'dbt')(inputs, data_type)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__array_construct"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.950052, "supported_languages": null}, "macro.dbt.default__array_construct": {"name": "default__array_construct", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_construct.sql", "original_file_path": "macros/utils/array_construct.sql", "unique_id": "macro.dbt.default__array_construct", "macro_sql": "{% macro default__array_construct(inputs, data_type) -%}\n {% if inputs|length > 0 %}\n array[ {{ inputs|join(' , ') }} ]\n {% else %}\n array[]::{{data_type}}[]\n {% endif %}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.950302, "supported_languages": null}, "macro.dbt.array_append": {"name": "array_append", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_append.sql", "original_file_path": "macros/utils/array_append.sql", "unique_id": "macro.dbt.array_append", "macro_sql": "{% macro array_append(array, new_element) -%}\n {{ return(adapter.dispatch('array_append', 'dbt')(array, new_element)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__array_append"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9505842, "supported_languages": null}, "macro.dbt.default__array_append": {"name": "default__array_append", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/array_append.sql", "original_file_path": "macros/utils/array_append.sql", "unique_id": "macro.dbt.default__array_append", "macro_sql": "{% macro default__array_append(array, new_element) -%}\n array_append({{ array }}, {{ new_element }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.95072, "supported_languages": null}, "macro.dbt.create_schema": {"name": "create_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.create_schema", "macro_sql": "{% macro create_schema(relation) -%}\n {{ adapter.dispatch('create_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_schema"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.951104, "supported_languages": null}, "macro.dbt.default__create_schema": {"name": "default__create_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.default__create_schema", "macro_sql": "{% macro default__create_schema(relation) -%}\n {%- call statement('create_schema') -%}\n create schema if not exists {{ relation.without_identifier() }}\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.951283, "supported_languages": null}, "macro.dbt.drop_schema": {"name": "drop_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.drop_schema", "macro_sql": "{% macro drop_schema(relation) -%}\n {{ adapter.dispatch('drop_schema', 'dbt')(relation) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__drop_schema"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9514399, "supported_languages": null}, "macro.dbt.default__drop_schema": {"name": "default__drop_schema", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/schema.sql", "original_file_path": "macros/adapters/schema.sql", "unique_id": "macro.dbt.default__drop_schema", "macro_sql": "{% macro default__drop_schema(relation) -%}\n {%- call statement('drop_schema') -%}\n drop schema if exists {{ relation.without_identifier() }} cascade\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.95162, "supported_languages": null}, "macro.dbt.current_timestamp": {"name": "current_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp", "macro_sql": "{%- macro current_timestamp() -%}\n {{ adapter.dispatch('current_timestamp', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.952422, "supported_languages": null}, "macro.dbt.default__current_timestamp": {"name": "default__current_timestamp", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp", "macro_sql": "{% macro default__current_timestamp() -%}\n {{ exceptions.raise_not_implemented(\n 'current_timestamp macro not implemented for adapter ' + adapter.type()) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.952679, "supported_languages": null}, "macro.dbt.snapshot_get_time": {"name": "snapshot_get_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.snapshot_get_time", "macro_sql": "\n\n{%- macro snapshot_get_time() -%}\n {{ adapter.dispatch('snapshot_get_time', 'dbt')() }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__snapshot_get_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.952842, "supported_languages": null}, "macro.dbt.default__snapshot_get_time": {"name": "default__snapshot_get_time", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__snapshot_get_time", "macro_sql": "{% macro default__snapshot_get_time() %}\n {{ current_timestamp() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9529622, "supported_languages": null}, "macro.dbt.get_snapshot_get_time_data_type": {"name": "get_snapshot_get_time_data_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.get_snapshot_get_time_data_type", "macro_sql": "{% macro get_snapshot_get_time_data_type() %}\n {% set snapshot_time = adapter.dispatch('snapshot_get_time', 'dbt')() %}\n {% set time_data_type_sql = 'select ' ~ snapshot_time ~ ' as dbt_snapshot_time' %}\n {% set snapshot_time_column_schema = get_column_schema_from_query(time_data_type_sql) %}\n {% set time_data_type = snapshot_time_column_schema[0].dtype %}\n {{ return(time_data_type or none) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.snapshot_get_time", "macro.dbt.default__snapshot_get_time", "macro.dbt.get_column_schema_from_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.953401, "supported_languages": null}, "macro.dbt.current_timestamp_backcompat": {"name": "current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp_backcompat", "macro_sql": "{% macro current_timestamp_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__current_timestamp_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.953588, "supported_languages": null}, "macro.dbt.default__current_timestamp_backcompat": {"name": "default__current_timestamp_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp_backcompat", "macro_sql": "{% macro default__current_timestamp_backcompat() %}\n current_timestamp::timestamp\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.953675, "supported_languages": null}, "macro.dbt.current_timestamp_in_utc_backcompat": {"name": "current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.current_timestamp_in_utc_backcompat", "macro_sql": "{% macro current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_in_utc_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__current_timestamp_in_utc_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.953849, "supported_languages": null}, "macro.dbt.default__current_timestamp_in_utc_backcompat": {"name": "default__current_timestamp_in_utc_backcompat", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/timestamps.sql", "original_file_path": "macros/adapters/timestamps.sql", "unique_id": "macro.dbt.default__current_timestamp_in_utc_backcompat", "macro_sql": "{% macro default__current_timestamp_in_utc_backcompat() %}\n {{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.current_timestamp_backcompat", "macro.dbt_bigquery.bigquery__current_timestamp_backcompat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.954027, "supported_languages": null}, "macro.dbt.get_create_index_sql": {"name": "get_create_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_create_index_sql", "macro_sql": "{% macro get_create_index_sql(relation, index_dict) -%}\n {{ return(adapter.dispatch('get_create_index_sql', 'dbt')(relation, index_dict)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_create_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9549341, "supported_languages": null}, "macro.dbt.default__get_create_index_sql": {"name": "default__get_create_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_create_index_sql", "macro_sql": "{% macro default__get_create_index_sql(relation, index_dict) -%}\n {% do return(None) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.95508, "supported_languages": null}, "macro.dbt.create_indexes": {"name": "create_indexes", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.create_indexes", "macro_sql": "{% macro create_indexes(relation) -%}\n {{ adapter.dispatch('create_indexes', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__create_indexes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9552472, "supported_languages": null}, "macro.dbt.default__create_indexes": {"name": "default__create_indexes", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__create_indexes", "macro_sql": "{% macro default__create_indexes(relation) -%}\n {%- set _indexes = config.get('indexes', default=[]) -%}\n\n {% for _index_dict in _indexes %}\n {% set create_index_sql = get_create_index_sql(relation, _index_dict) %}\n {% if create_index_sql %}\n {% do run_query(create_index_sql) %}\n {% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_create_index_sql", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.955658, "supported_languages": null}, "macro.dbt.get_drop_index_sql": {"name": "get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_drop_index_sql", "macro_sql": "{% macro get_drop_index_sql(relation, index_name) -%}\n {{ adapter.dispatch('get_drop_index_sql', 'dbt')(relation, index_name) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_drop_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9558551, "supported_languages": null}, "macro.dbt.default__get_drop_index_sql": {"name": "default__get_drop_index_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_drop_index_sql", "macro_sql": "{% macro default__get_drop_index_sql(relation, index_name) -%}\n {{ exceptions.raise_compiler_error(\"`get_drop_index_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.956001, "supported_languages": null}, "macro.dbt.get_show_indexes_sql": {"name": "get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.get_show_indexes_sql", "macro_sql": "{% macro get_show_indexes_sql(relation) -%}\n {{ adapter.dispatch('get_show_indexes_sql', 'dbt')(relation) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_show_indexes_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.956168, "supported_languages": null}, "macro.dbt.default__get_show_indexes_sql": {"name": "default__get_show_indexes_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/indexes.sql", "original_file_path": "macros/adapters/indexes.sql", "unique_id": "macro.dbt.default__get_show_indexes_sql", "macro_sql": "{% macro default__get_show_indexes_sql(relation) -%}\n {{ exceptions.raise_compiler_error(\"`get_show_indexes_sql has not been implemented for this adapter.\") }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.956295, "supported_languages": null}, "macro.dbt.make_intermediate_relation": {"name": "make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_intermediate_relation", "macro_sql": "{% macro make_intermediate_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_intermediate_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__make_intermediate_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.958335, "supported_languages": null}, "macro.dbt.default__make_intermediate_relation": {"name": "default__make_intermediate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_intermediate_relation", "macro_sql": "{% macro default__make_intermediate_relation(base_relation, suffix) %}\n {{ return(default__make_temp_relation(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__make_temp_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9585001, "supported_languages": null}, "macro.dbt.make_temp_relation": {"name": "make_temp_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_temp_relation", "macro_sql": "{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}\n {{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__make_temp_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.958712, "supported_languages": null}, "macro.dbt.default__make_temp_relation": {"name": "default__make_temp_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_temp_relation", "macro_sql": "{% macro default__make_temp_relation(base_relation, suffix) %}\n {%- set temp_identifier = base_relation.identifier ~ suffix -%}\n {%- set temp_relation = base_relation.incorporate(\n path={\"identifier\": temp_identifier}) -%}\n\n {{ return(temp_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9590678, "supported_languages": null}, "macro.dbt.make_backup_relation": {"name": "make_backup_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.make_backup_relation", "macro_sql": "{% macro make_backup_relation(base_relation, backup_relation_type, suffix='__dbt_backup') %}\n {{ return(adapter.dispatch('make_backup_relation', 'dbt')(base_relation, backup_relation_type, suffix)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__make_backup_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.959305, "supported_languages": null}, "macro.dbt.default__make_backup_relation": {"name": "default__make_backup_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__make_backup_relation", "macro_sql": "{% macro default__make_backup_relation(base_relation, backup_relation_type, suffix) %}\n {%- set backup_identifier = base_relation.identifier ~ suffix -%}\n {%- set backup_relation = base_relation.incorporate(\n path={\"identifier\": backup_identifier},\n type=backup_relation_type\n ) -%}\n {{ return(backup_relation) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9596229, "supported_languages": null}, "macro.dbt.truncate_relation": {"name": "truncate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.truncate_relation", "macro_sql": "{% macro truncate_relation(relation) -%}\n {{ return(adapter.dispatch('truncate_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__truncate_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9598122, "supported_languages": null}, "macro.dbt.default__truncate_relation": {"name": "default__truncate_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__truncate_relation", "macro_sql": "{% macro default__truncate_relation(relation) -%}\n {% call statement('truncate_relation') -%}\n truncate table {{ relation.render() }}\n {%- endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.959998, "supported_languages": null}, "macro.dbt.get_or_create_relation": {"name": "get_or_create_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.get_or_create_relation", "macro_sql": "{% macro get_or_create_relation(database, schema, identifier, type) -%}\n {{ return(adapter.dispatch('get_or_create_relation', 'dbt')(database, schema, identifier, type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_or_create_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.960257, "supported_languages": null}, "macro.dbt.default__get_or_create_relation": {"name": "default__get_or_create_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.default__get_or_create_relation", "macro_sql": "{% macro default__get_or_create_relation(database, schema, identifier, type) %}\n {%- set target_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}\n\n {% if target_relation %}\n {% do return([true, target_relation]) %}\n {% endif %}\n\n {%- set new_relation = api.Relation.create(\n database=database,\n schema=schema,\n identifier=identifier,\n type=type\n ) -%}\n {% do return([false, new_relation]) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.960822, "supported_languages": null}, "macro.dbt.load_cached_relation": {"name": "load_cached_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.load_cached_relation", "macro_sql": "{% macro load_cached_relation(relation) %}\n {% do return(adapter.get_relation(\n database=relation.database,\n schema=relation.schema,\n identifier=relation.identifier\n )) -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.961057, "supported_languages": null}, "macro.dbt.load_relation": {"name": "load_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/relation.sql", "original_file_path": "macros/adapters/relation.sql", "unique_id": "macro.dbt.load_relation", "macro_sql": "{% macro load_relation(relation) %}\n {{ return(load_cached_relation(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.961208, "supported_languages": null}, "macro.dbt.collect_freshness": {"name": "collect_freshness", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/freshness.sql", "original_file_path": "macros/adapters/freshness.sql", "unique_id": "macro.dbt.collect_freshness", "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness', 'dbt')(source, loaded_at_field, filter))}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__collect_freshness"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.961638, "supported_languages": null}, "macro.dbt.default__collect_freshness": {"name": "default__collect_freshness", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/freshness.sql", "original_file_path": "macros/adapters/freshness.sql", "unique_id": "macro.dbt.default__collect_freshness", "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n select\n max({{ loaded_at_field }}) as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endcall %}\n {{ return(load_result('collect_freshness')) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.962244, "supported_languages": null}, "macro.dbt.validate_sql": {"name": "validate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/validate_sql.sql", "original_file_path": "macros/adapters/validate_sql.sql", "unique_id": "macro.dbt.validate_sql", "macro_sql": "{% macro validate_sql(sql) -%}\n {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__validate_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9626508, "supported_languages": null}, "macro.dbt.default__validate_sql": {"name": "default__validate_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/validate_sql.sql", "original_file_path": "macros/adapters/validate_sql.sql", "unique_id": "macro.dbt.default__validate_sql", "macro_sql": "{% macro default__validate_sql(sql) -%}\n {% call statement('validate_sql') -%}\n explain {{ sql }}\n {% endcall %}\n {{ return(load_result('validate_sql')) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.962909, "supported_languages": null}, "macro.dbt.copy_grants": {"name": "copy_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.copy_grants", "macro_sql": "{% macro copy_grants() %}\n {{ return(adapter.dispatch('copy_grants', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__copy_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.964897, "supported_languages": null}, "macro.dbt.default__copy_grants": {"name": "default__copy_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__copy_grants", "macro_sql": "{% macro default__copy_grants() %}\n {{ return(True) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.965039, "supported_languages": null}, "macro.dbt.support_multiple_grantees_per_dcl_statement": {"name": "support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.support_multiple_grantees_per_dcl_statement", "macro_sql": "{% macro support_multiple_grantees_per_dcl_statement() %}\n {{ return(adapter.dispatch('support_multiple_grantees_per_dcl_statement', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__support_multiple_grantees_per_dcl_statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.965226, "supported_languages": null}, "macro.dbt.default__support_multiple_grantees_per_dcl_statement": {"name": "default__support_multiple_grantees_per_dcl_statement", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__support_multiple_grantees_per_dcl_statement", "macro_sql": "\n\n{%- macro default__support_multiple_grantees_per_dcl_statement() -%}\n {{ return(True) }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9653618, "supported_languages": null}, "macro.dbt.should_revoke": {"name": "should_revoke", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.should_revoke", "macro_sql": "{% macro should_revoke(existing_relation, full_refresh_mode=True) %}\n\n {% if not existing_relation %}\n {#-- The table doesn't already exist, so no grants to copy over --#}\n {{ return(False) }}\n {% elif full_refresh_mode %}\n {#-- The object is being REPLACED -- whether grants are copied over depends on the value of user config --#}\n {{ return(copy_grants()) }}\n {% else %}\n {#-- The table is being merged/upserted/inserted -- grants will be carried over --#}\n {{ return(True) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.copy_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.96574, "supported_languages": null}, "macro.dbt.get_show_grant_sql": {"name": "get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_show_grant_sql", "macro_sql": "{% macro get_show_grant_sql(relation) %}\n {{ return(adapter.dispatch(\"get_show_grant_sql\", \"dbt\")(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_show_grant_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.96594, "supported_languages": null}, "macro.dbt.default__get_show_grant_sql": {"name": "default__get_show_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_show_grant_sql", "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n show grants on {{ relation.render() }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.966069, "supported_languages": null}, "macro.dbt.get_grant_sql": {"name": "get_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_grant_sql", "macro_sql": "{% macro get_grant_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_grant_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_grant_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9664152, "supported_languages": null}, "macro.dbt.default__get_grant_sql": {"name": "default__get_grant_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_grant_sql", "macro_sql": "\n\n{%- macro default__get_grant_sql(relation, privilege, grantees) -%}\n grant {{ privilege }} on {{ relation.render() }} to {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.966634, "supported_languages": null}, "macro.dbt.get_revoke_sql": {"name": "get_revoke_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_revoke_sql", "macro_sql": "{% macro get_revoke_sql(relation, privilege, grantees) %}\n {{ return(adapter.dispatch('get_revoke_sql', 'dbt')(relation, privilege, grantees)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_revoke_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9668748, "supported_languages": null}, "macro.dbt.default__get_revoke_sql": {"name": "default__get_revoke_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_revoke_sql", "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n revoke {{ privilege }} on {{ relation.render() }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.96709, "supported_languages": null}, "macro.dbt.get_dcl_statement_list": {"name": "get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.get_dcl_statement_list", "macro_sql": "{% macro get_dcl_statement_list(relation, grant_config, get_dcl_macro) %}\n {{ return(adapter.dispatch('get_dcl_statement_list', 'dbt')(relation, grant_config, get_dcl_macro)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_dcl_statement_list"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9673321, "supported_languages": null}, "macro.dbt.default__get_dcl_statement_list": {"name": "default__get_dcl_statement_list", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__get_dcl_statement_list", "macro_sql": "\n\n{%- macro default__get_dcl_statement_list(relation, grant_config, get_dcl_macro) -%}\n {#\n -- Unpack grant_config into specific privileges and the set of users who need them granted/revoked.\n -- Depending on whether this database supports multiple grantees per statement, pass in the list of\n -- all grantees per privilege, or (if not) template one statement per privilege-grantee pair.\n -- `get_dcl_macro` will be either `get_grant_sql` or `get_revoke_sql`\n #}\n {%- set dcl_statements = [] -%}\n {%- for privilege, grantees in grant_config.items() %}\n {%- if support_multiple_grantees_per_dcl_statement() and grantees -%}\n {%- set dcl = get_dcl_macro(relation, privilege, grantees) -%}\n {%- do dcl_statements.append(dcl) -%}\n {%- else -%}\n {%- for grantee in grantees -%}\n {% set dcl = get_dcl_macro(relation, privilege, [grantee]) %}\n {%- do dcl_statements.append(dcl) -%}\n {% endfor -%}\n {%- endif -%}\n {%- endfor -%}\n {{ return(dcl_statements) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.support_multiple_grantees_per_dcl_statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9681332, "supported_languages": null}, "macro.dbt.call_dcl_statements": {"name": "call_dcl_statements", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.call_dcl_statements", "macro_sql": "{% macro call_dcl_statements(dcl_statement_list) %}\n {{ return(adapter.dispatch(\"call_dcl_statements\", \"dbt\")(dcl_statement_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__call_dcl_statements"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.968346, "supported_languages": null}, "macro.dbt.default__call_dcl_statements": {"name": "default__call_dcl_statements", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__call_dcl_statements", "macro_sql": "{% macro default__call_dcl_statements(dcl_statement_list) %}\n {#\n -- By default, supply all grant + revoke statements in a single semicolon-separated block,\n -- so that they're all processed together.\n\n -- Some databases do not support this. Those adapters will need to override this macro\n -- to run each statement individually.\n #}\n {% call statement('grants') %}\n {% for dcl_statement in dcl_statement_list %}\n {{ dcl_statement }};\n {% endfor %}\n {% endcall %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9686038, "supported_languages": null}, "macro.dbt.apply_grants": {"name": "apply_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.apply_grants", "macro_sql": "{% macro apply_grants(relation, grant_config, should_revoke) %}\n {{ return(adapter.dispatch(\"apply_grants\", \"dbt\")(relation, grant_config, should_revoke)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__apply_grants"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.968883, "supported_languages": null}, "macro.dbt.default__apply_grants": {"name": "default__apply_grants", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/apply_grants.sql", "original_file_path": "macros/adapters/apply_grants.sql", "unique_id": "macro.dbt.default__apply_grants", "macro_sql": "{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}\n {#-- If grant_config is {} or None, this is a no-op --#}\n {% if grant_config %}\n {% if should_revoke %}\n {#-- We think previous grants may have carried over --#}\n {#-- Show current grants and calculate diffs --#}\n {% set current_grants_table = run_query(get_show_grant_sql(relation)) %}\n {% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}\n {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}\n {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}\n {% if not (needs_granting or needs_revoking) %}\n {{ log('On ' ~ relation.render() ~': All grants are in place, no revocation or granting needed.')}}\n {% endif %}\n {% else %}\n {#-- We don't think there's any chance of previous grants having carried over. --#}\n {#-- Jump straight to granting what the user has configured. --#}\n {% set needs_revoking = {} %}\n {% set needs_granting = grant_config %}\n {% endif %}\n {% if needs_granting or needs_revoking %}\n {% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}\n {% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}\n {% set dcl_statement_list = revoke_statement_list + grant_statement_list %}\n {% if dcl_statement_list %}\n {{ call_dcl_statements(dcl_statement_list) }}\n {% endif %}\n {% endif %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.get_show_grant_sql", "macro.dbt.get_dcl_statement_list", "macro.dbt.call_dcl_statements"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.970227, "supported_languages": null}, "macro.dbt.get_show_sql": {"name": "get_show_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.get_show_sql", "macro_sql": "{% macro get_show_sql(compiled_code, sql_header, limit) -%}\n {%- if sql_header is not none -%}\n {{ sql_header }}\n {%- endif %}\n {{ get_limit_subquery_sql(compiled_code, limit) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_limit_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9706619, "supported_languages": null}, "macro.dbt.get_limit_subquery_sql": {"name": "get_limit_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.get_limit_subquery_sql", "macro_sql": "\n{%- macro get_limit_subquery_sql(sql, limit) -%}\n {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__get_limit_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.97085, "supported_languages": null}, "macro.dbt.default__get_limit_sql": {"name": "default__get_limit_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/show.sql", "original_file_path": "macros/adapters/show.sql", "unique_id": "macro.dbt.default__get_limit_sql", "macro_sql": "{% macro default__get_limit_sql(sql, limit) %}\n {{ compiled_code }}\n {% if limit is not none %}\n limit {{ limit }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.971039, "supported_languages": null}, "macro.dbt.alter_column_comment": {"name": "alter_column_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.alter_column_comment", "macro_sql": "{% macro alter_column_comment(relation, column_dict) -%}\n {{ return(adapter.dispatch('alter_column_comment', 'dbt')(relation, column_dict)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.971968, "supported_languages": null}, "macro.dbt.default__alter_column_comment": {"name": "default__alter_column_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__alter_column_comment", "macro_sql": "{% macro default__alter_column_comment(relation, column_dict) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_column_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.972159, "supported_languages": null}, "macro.dbt.alter_relation_comment": {"name": "alter_relation_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.alter_relation_comment", "macro_sql": "{% macro alter_relation_comment(relation, relation_comment) -%}\n {{ return(adapter.dispatch('alter_relation_comment', 'dbt')(relation, relation_comment)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__alter_relation_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.972378, "supported_languages": null}, "macro.dbt.default__alter_relation_comment": {"name": "default__alter_relation_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__alter_relation_comment", "macro_sql": "{% macro default__alter_relation_comment(relation, relation_comment) -%}\n {{ exceptions.raise_not_implemented(\n 'alter_relation_comment macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.972558, "supported_languages": null}, "macro.dbt.persist_docs": {"name": "persist_docs", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.persist_docs", "macro_sql": "{% macro persist_docs(relation, model, for_relation=true, for_columns=true) -%}\n {{ return(adapter.dispatch('persist_docs', 'dbt')(relation, model, for_relation, for_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9728389, "supported_languages": null}, "macro.dbt.default__persist_docs": {"name": "default__persist_docs", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.default__persist_docs", "macro_sql": "{% macro default__persist_docs(relation, model, for_relation, for_columns) -%}\n {% if for_relation and config.persist_relation_docs() and model.description %}\n {% do run_query(alter_relation_comment(relation, model.description)) %}\n {% endif %}\n\n {% if for_columns and config.persist_column_docs() and model.columns %}\n {% do run_query(alter_column_comment(relation, model.columns)) %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.alter_relation_comment", "macro.dbt.alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.973427, "supported_languages": null}, "macro.dbt.get_catalog_relations": {"name": "get_catalog_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_catalog_relations", "macro_sql": "{% macro get_catalog_relations(information_schema, relations) -%}\n {{ return(adapter.dispatch('get_catalog_relations', 'dbt')(information_schema, relations)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_catalog_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9775958, "supported_languages": null}, "macro.dbt.default__get_catalog_relations": {"name": "default__get_catalog_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_catalog_relations", "macro_sql": "{% macro default__get_catalog_relations(information_schema, relations) -%}\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog_relations not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9779, "supported_languages": null}, "macro.dbt.get_catalog": {"name": "get_catalog", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_catalog", "macro_sql": "{% macro get_catalog(information_schema, schemas) -%}\n {{ return(adapter.dispatch('get_catalog', 'dbt')(information_schema, schemas)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_catalog"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9781241, "supported_languages": null}, "macro.dbt.default__get_catalog": {"name": "default__get_catalog", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_catalog", "macro_sql": "{% macro default__get_catalog(information_schema, schemas) -%}\n\n {% set typename = adapter.type() %}\n {% set msg -%}\n get_catalog not implemented for {{ typename }}\n {%- endset %}\n\n {{ exceptions.raise_compiler_error(msg) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.978388, "supported_languages": null}, "macro.dbt.information_schema_name": {"name": "information_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.information_schema_name", "macro_sql": "{% macro information_schema_name(database) %}\n {{ return(adapter.dispatch('information_schema_name', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__information_schema_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.978585, "supported_languages": null}, "macro.dbt.default__information_schema_name": {"name": "default__information_schema_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__information_schema_name", "macro_sql": "{% macro default__information_schema_name(database) -%}\n {%- if database -%}\n {{ database }}.INFORMATION_SCHEMA\n {%- else -%}\n INFORMATION_SCHEMA\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9787478, "supported_languages": null}, "macro.dbt.list_schemas": {"name": "list_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.list_schemas", "macro_sql": "{% macro list_schemas(database) -%}\n {{ return(adapter.dispatch('list_schemas', 'dbt')(database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__list_schemas"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.978934, "supported_languages": null}, "macro.dbt.default__list_schemas": {"name": "default__list_schemas", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__list_schemas", "macro_sql": "{% macro default__list_schemas(database) -%}\n {% set sql %}\n select distinct schema_name\n from {{ information_schema_name(database) }}.SCHEMATA\n where catalog_name ilike '{{ database }}'\n {% endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.information_schema_name", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.979181, "supported_languages": null}, "macro.dbt.check_schema_exists": {"name": "check_schema_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.check_schema_exists", "macro_sql": "{% macro check_schema_exists(information_schema, schema) -%}\n {{ return(adapter.dispatch('check_schema_exists', 'dbt')(information_schema, schema)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__check_schema_exists"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9793978, "supported_languages": null}, "macro.dbt.default__check_schema_exists": {"name": "default__check_schema_exists", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__check_schema_exists", "macro_sql": "{% macro default__check_schema_exists(information_schema, schema) -%}\n {% set sql -%}\n select count(*)\n from {{ information_schema.replace(information_schema_view='SCHEMATA') }}\n where catalog_name='{{ information_schema.database }}'\n and schema_name='{{ schema }}'\n {%- endset %}\n {{ return(run_query(sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.replace", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.979715, "supported_languages": null}, "macro.dbt.list_relations_without_caching": {"name": "list_relations_without_caching", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.list_relations_without_caching", "macro_sql": "{% macro list_relations_without_caching(schema_relation) %}\n {{ return(adapter.dispatch('list_relations_without_caching', 'dbt')(schema_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__list_relations_without_caching"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.979903, "supported_languages": null}, "macro.dbt.default__list_relations_without_caching": {"name": "default__list_relations_without_caching", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__list_relations_without_caching", "macro_sql": "{% macro default__list_relations_without_caching(schema_relation) %}\n {{ exceptions.raise_not_implemented(\n 'list_relations_without_caching macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9800682, "supported_languages": null}, "macro.dbt.get_catalog_for_single_relation": {"name": "get_catalog_for_single_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_catalog_for_single_relation", "macro_sql": "{% macro get_catalog_for_single_relation(relation) %}\n {{ return(adapter.dispatch('get_catalog_for_single_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_catalog_for_single_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.980261, "supported_languages": null}, "macro.dbt.default__get_catalog_for_single_relation": {"name": "default__get_catalog_for_single_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_catalog_for_single_relation", "macro_sql": "{% macro default__get_catalog_for_single_relation(relation) %}\n {{ exceptions.raise_not_implemented(\n 'get_catalog_for_single_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.980436, "supported_languages": null}, "macro.dbt.get_relations": {"name": "get_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_relations", "macro_sql": "{% macro get_relations() %}\n {{ return(adapter.dispatch('get_relations', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.980601, "supported_languages": null}, "macro.dbt.default__get_relations": {"name": "default__get_relations", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_relations", "macro_sql": "{% macro default__get_relations() %}\n {{ exceptions.raise_not_implemented(\n 'get_relations macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9807491, "supported_languages": null}, "macro.dbt.get_relation_last_modified": {"name": "get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.get_relation_last_modified", "macro_sql": "{% macro get_relation_last_modified(information_schema, relations) %}\n {{ return(adapter.dispatch('get_relation_last_modified', 'dbt')(information_schema, relations)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_relation_last_modified"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9809558, "supported_languages": null}, "macro.dbt.default__get_relation_last_modified": {"name": "default__get_relation_last_modified", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/metadata.sql", "original_file_path": "macros/adapters/metadata.sql", "unique_id": "macro.dbt.default__get_relation_last_modified", "macro_sql": "{% macro default__get_relation_last_modified(information_schema, relations) %}\n {{ exceptions.raise_not_implemented(\n 'get_relation_last_modified macro not implemented for adapter ' + adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.981211, "supported_languages": null}, "macro.dbt.get_columns_in_relation": {"name": "get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_columns_in_relation", "macro_sql": "{% macro get_columns_in_relation(relation) -%}\n {{ return(adapter.dispatch('get_columns_in_relation', 'dbt')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9841259, "supported_languages": null}, "macro.dbt.default__get_columns_in_relation": {"name": "default__get_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_columns_in_relation", "macro_sql": "{% macro default__get_columns_in_relation(relation) -%}\n {{ exceptions.raise_not_implemented(\n 'get_columns_in_relation macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.984344, "supported_languages": null}, "macro.dbt.sql_convert_columns_in_relation": {"name": "sql_convert_columns_in_relation", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.sql_convert_columns_in_relation", "macro_sql": "{% macro sql_convert_columns_in_relation(table) -%}\n {% set columns = [] %}\n {% for row in table %}\n {% do columns.append(api.Column(*row)) %}\n {% endfor %}\n {{ return(columns) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.984688, "supported_languages": null}, "macro.dbt.get_empty_subquery_sql": {"name": "get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_empty_subquery_sql", "macro_sql": "{% macro get_empty_subquery_sql(select_sql, select_sql_header=none) -%}\n {{ return(adapter.dispatch('get_empty_subquery_sql', 'dbt')(select_sql, select_sql_header)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.98493, "supported_languages": null}, "macro.dbt.default__get_empty_subquery_sql": {"name": "default__get_empty_subquery_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_empty_subquery_sql", "macro_sql": "{% macro default__get_empty_subquery_sql(select_sql, select_sql_header=none) %}\n {%- if select_sql_header is not none -%}\n {{ select_sql_header }}\n {%- endif -%}\n select * from (\n {{ select_sql }}\n ) as __dbt_sbq\n where false\n limit 0\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.985152, "supported_languages": null}, "macro.dbt.get_empty_schema_sql": {"name": "get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_empty_schema_sql", "macro_sql": "{% macro get_empty_schema_sql(columns) -%}\n {{ return(adapter.dispatch('get_empty_schema_sql', 'dbt')(columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__get_empty_schema_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9853451, "supported_languages": null}, "macro.dbt.default__get_empty_schema_sql": {"name": "default__get_empty_schema_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_empty_schema_sql", "macro_sql": "{% macro default__get_empty_schema_sql(columns) %}\n {%- set col_err = [] -%}\n {%- set col_naked_numeric = [] -%}\n select\n {% for i in columns %}\n {%- set col = columns[i] -%}\n {%- if col['data_type'] is not defined -%}\n {%- do col_err.append(col['name']) -%}\n {#-- If this column's type is just 'numeric' then it is missing precision/scale, raise a warning --#}\n {%- elif col['data_type'].strip().lower() in ('numeric', 'decimal', 'number') -%}\n {%- do col_naked_numeric.append(col['name']) -%}\n {%- endif -%}\n {% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}\n {{ cast('null', col['data_type']) }} as {{ col_name }}{{ \", \" if not loop.last }}\n {%- endfor -%}\n {%- if (col_err | length) > 0 -%}\n {{ exceptions.column_type_missing(column_names=col_err) }}\n {%- elif (col_naked_numeric | length) > 0 -%}\n {{ exceptions.warn(\"Detected columns with numeric type and unspecified precision/scale, this can lead to unintended rounding: \" ~ col_naked_numeric ~ \"`\") }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9865751, "supported_languages": null}, "macro.dbt.get_column_schema_from_query": {"name": "get_column_schema_from_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_column_schema_from_query", "macro_sql": "{% macro get_column_schema_from_query(select_sql, select_sql_header=none) -%}\n {% set columns = [] %}\n {# -- Using an 'empty subquery' here to get the same schema as the given select_sql statement, without necessitating a data scan.#}\n {% set sql = get_empty_subquery_sql(select_sql, select_sql_header) %}\n {% set column_schema = adapter.get_column_schema_from_query(sql) %}\n {{ return(column_schema) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.986938, "supported_languages": null}, "macro.dbt.get_columns_in_query": {"name": "get_columns_in_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_columns_in_query", "macro_sql": "{% macro get_columns_in_query(select_sql) -%}\n {{ return(adapter.dispatch('get_columns_in_query', 'dbt')(select_sql)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_columns_in_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.987133, "supported_languages": null}, "macro.dbt.default__get_columns_in_query": {"name": "default__get_columns_in_query", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__get_columns_in_query", "macro_sql": "{% macro default__get_columns_in_query(select_sql) %}\n {% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}\n {{ get_empty_subquery_sql(select_sql) }}\n {% endcall %}\n {{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.get_empty_subquery_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.987492, "supported_languages": null}, "macro.dbt.alter_column_type": {"name": "alter_column_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.alter_column_type", "macro_sql": "{% macro alter_column_type(relation, column_name, new_column_type) -%}\n {{ return(adapter.dispatch('alter_column_type', 'dbt')(relation, column_name, new_column_type)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__alter_column_type"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.987735, "supported_languages": null}, "macro.dbt.default__alter_column_type": {"name": "default__alter_column_type", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__alter_column_type", "macro_sql": "{% macro default__alter_column_type(relation, column_name, new_column_type) -%}\n {#\n 1. Create a new column (w/ temp name and correct type)\n 2. Copy data over to it\n 3. Drop the existing column (cascade!)\n 4. Rename the new column to existing column\n #}\n {%- set tmp_column = column_name + \"__dbt_alter\" -%}\n\n {% call statement('alter_column_type') %}\n alter table {{ relation.render() }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};\n update {{ relation.render() }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};\n alter table {{ relation.render() }} drop column {{ adapter.quote(column_name) }} cascade;\n alter table {{ relation.render() }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}\n {% endcall %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.988412, "supported_languages": null}, "macro.dbt.alter_relation_add_remove_columns": {"name": "alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.alter_relation_add_remove_columns", "macro_sql": "{% macro alter_relation_add_remove_columns(relation, add_columns = none, remove_columns = none) -%}\n {{ return(adapter.dispatch('alter_relation_add_remove_columns', 'dbt')(relation, add_columns, remove_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__alter_relation_add_remove_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.988683, "supported_languages": null}, "macro.dbt.default__alter_relation_add_remove_columns": {"name": "default__alter_relation_add_remove_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.default__alter_relation_add_remove_columns", "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n {% if add_columns is none %}\n {% set add_columns = [] %}\n {% endif %}\n {% if remove_columns is none %}\n {% set remove_columns = [] %}\n {% endif %}\n\n {% set sql -%}\n\n alter {{ relation.type }} {{ relation.render() }}\n\n {% for column in add_columns %}\n add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n {% for column in remove_columns %}\n drop column {{ column.name }}{{ ',' if not loop.last }}\n {% endfor %}\n\n {%- endset -%}\n\n {% do run_query(sql) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.98958, "supported_languages": null}, "macro.dbt.get_fixture_sql": {"name": "get_fixture_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/unit_test_sql/get_fixture_sql.sql", "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", "unique_id": "macro.dbt.get_fixture_sql", "macro_sql": "{% macro get_fixture_sql(rows, column_name_to_data_types) %}\n-- Fixture for {{ model.name }}\n{% set default_row = {} %}\n\n{%- if not column_name_to_data_types -%}\n{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}\n{%- set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}\n{%- set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}\n\n{%- set column_name_to_data_types = {} -%}\n{%- for column in columns_in_relation -%}\n{#-- This needs to be a case-insensitive comparison --#}\n{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%- endfor -%}\n{%- endif -%}\n\n{%- if not column_name_to_data_types -%}\n {{ exceptions.raise_compiler_error(\"Not able to get columns for unit test '\" ~ model.name ~ \"' from relation \" ~ this ~ \" because the relation doesn't exist\") }}\n{%- endif -%}\n\n{%- for column_name, column_type in column_name_to_data_types.items() -%}\n {%- do default_row.update({column_name: (safe_cast(\"null\", column_type) | trim )}) -%}\n{%- endfor -%}\n\n{{ validate_fixture_rows(rows, row_number) }}\n\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\n{%- set default_row_copy = default_row.copy() -%}\n{%- do default_row_copy.update(formatted_row) -%}\nselect\n{%- for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n\n{%- if (rows | length) == 0 -%}\n select\n {%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%},{%- endif %}\n {%- endfor %}\n limit 0\n{%- endif -%}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.load_relation", "macro.dbt.safe_cast", "macro.dbt.validate_fixture_rows", "macro.dbt.format_row"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.993185, "supported_languages": null}, "macro.dbt.get_expected_sql": {"name": "get_expected_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/unit_test_sql/get_fixture_sql.sql", "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", "unique_id": "macro.dbt.get_expected_sql", "macro_sql": "{% macro get_expected_sql(rows, column_name_to_data_types) %}\n\n{%- if (rows | length) == 0 -%}\n select * from dbt_internal_unit_test_actual\n limit 0\n{%- else -%}\n{%- for row in rows -%}\n{%- set formatted_row = format_row(row, column_name_to_data_types) -%}\nselect\n{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%- endfor %}\n{%- if not loop.last %}\nunion all\n{% endif %}\n{%- endfor -%}\n{%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.format_row"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.993917, "supported_languages": null}, "macro.dbt.format_row": {"name": "format_row", "resource_type": "macro", "package_name": "dbt", "path": "macros/unit_test_sql/get_fixture_sql.sql", "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", "unique_id": "macro.dbt.format_row", "macro_sql": "\n\n{%- macro format_row(row, column_name_to_data_types) -%}\n {#-- generate case-insensitive formatted row --#}\n {% set formatted_row = {} %}\n {%- for column_name, column_value in row.items() -%}\n {% set column_name = column_name|lower %}\n\n {%- if column_name not in column_name_to_data_types %}\n {#-- if user-provided row contains column name that relation does not contain, raise an error --#}\n {% set fixture_name = \"expected output\" if model.resource_type == 'unit_test' else (\"'\" ~ model.name ~ \"'\") %}\n {{ exceptions.raise_compiler_error(\n \"Invalid column name: '\" ~ column_name ~ \"' in unit test fixture for \" ~ fixture_name ~ \".\"\n \"\\nAccepted columns for \" ~ fixture_name ~ \" are: \" ~ (column_name_to_data_types.keys()|list)\n ) }}\n {%- endif -%}\n\n {%- set column_type = column_name_to_data_types[column_name] %}\n\n {#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}\n {%- set column_value_clean = column_value -%}\n {%- if column_value is string -%}\n {%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}\n {%- elif column_value is none -%}\n {%- set column_value_clean = 'null' -%}\n {%- endif -%}\n\n {%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}\n {%- do formatted_row.update(row_update) -%}\n {%- endfor -%}\n {{ return(formatted_row) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.string_literal", "macro.dbt.escape_single_quotes", "macro.dbt.safe_cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.995123, "supported_languages": null}, "macro.dbt.validate_fixture_rows": {"name": "validate_fixture_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/unit_test_sql/get_fixture_sql.sql", "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", "unique_id": "macro.dbt.validate_fixture_rows", "macro_sql": "{%- macro validate_fixture_rows(rows, row_number) -%}\n {{ return(adapter.dispatch('validate_fixture_rows', 'dbt')(rows, row_number)) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt.default__validate_fixture_rows"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9953558, "supported_languages": null}, "macro.dbt.default__validate_fixture_rows": {"name": "default__validate_fixture_rows", "resource_type": "macro", "package_name": "dbt", "path": "macros/unit_test_sql/get_fixture_sql.sql", "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql", "unique_id": "macro.dbt.default__validate_fixture_rows", "macro_sql": "{%- macro default__validate_fixture_rows(rows, row_number) -%}\n {# This is an abstract method for adapter overrides as needed #}\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.995462, "supported_languages": null}, "macro.dbt.resolve_model_name": {"name": "resolve_model_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.resolve_model_name", "macro_sql": "{% macro resolve_model_name(input_model_name) %}\n {{ return(adapter.dispatch('resolve_model_name', 'dbt')(input_model_name)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.997216, "supported_languages": null}, "macro.dbt.default__resolve_model_name": {"name": "default__resolve_model_name", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.default__resolve_model_name", "macro_sql": "\n\n{%- macro default__resolve_model_name(input_model_name) -%}\n {{ input_model_name | string | replace('\"', '\\\"') }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.997386, "supported_languages": null}, "macro.dbt.build_ref_function": {"name": "build_ref_function", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_ref_function", "macro_sql": "{% macro build_ref_function(model) %}\n\n {%- set ref_dict = {} -%}\n {%- for _ref in model.refs -%}\n {% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}\n {%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}\n {%- if _ref.get('version') -%}\n {% do _ref_args.extend([\"v\" ~ _ref['version']]) %}\n {%- endif -%}\n {%- do ref_dict.update({_ref_args | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef ref(*args, **kwargs):\n refs = {{ ref_dict | tojson }}\n key = '.'.join(args)\n version = kwargs.get(\"v\") or kwargs.get(\"version\")\n if version:\n key += f\".v{version}\"\n dbt_load_df_function = kwargs.get(\"dbt_load_df_function\")\n return dbt_load_df_function(refs[key])\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9982169, "supported_languages": null}, "macro.dbt.build_source_function": {"name": "build_source_function", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_source_function", "macro_sql": "{% macro build_source_function(model) %}\n\n {%- set source_dict = {} -%}\n {%- for _source in model.sources -%}\n {%- set resolved = source(*_source) -%}\n {%- do source_dict.update({_source | join('.'): resolve_model_name(resolved)}) -%}\n {%- endfor -%}\n\ndef source(*args, dbt_load_df_function):\n sources = {{ source_dict | tojson }}\n key = '.'.join(args)\n return dbt_load_df_function(sources[key])\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.resolve_model_name"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.9986649, "supported_languages": null}, "macro.dbt.build_config_dict": {"name": "build_config_dict", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.build_config_dict", "macro_sql": "{% macro build_config_dict(model) %}\n {%- set config_dict = {} -%}\n {% set config_dbt_used = zip(model.config.config_keys_used, model.config.config_keys_defaults) | list %}\n {%- for key, default in config_dbt_used -%}\n {# weird type testing with enum, would be much easier to write this logic in Python! #}\n {%- if key == \"language\" -%}\n {%- set value = \"python\" -%}\n {%- endif -%}\n {%- set value = model.config.get(key, default) -%}\n {%- do config_dict.update({key: value}) -%}\n {%- endfor -%}\nconfig_dict = {{ config_dict }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229540.999458, "supported_languages": null}, "macro.dbt.py_script_postfix": {"name": "py_script_postfix", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.py_script_postfix", "macro_sql": "{% macro py_script_postfix(model) %}\n# This part is user provided model code\n# you will need to copy the next section to run the code\n# COMMAND ----------\n# this part is dbt logic for get ref work, do not modify\n\n{{ build_ref_function(model ) }}\n{{ build_source_function(model ) }}\n{{ build_config_dict(model) }}\n\nclass config:\n def __init__(self, *args, **kwargs):\n pass\n\n @staticmethod\n def get(key, default=None):\n return config_dict.get(key, default)\n\nclass this:\n \"\"\"dbt.this() or dbt.this.identifier\"\"\"\n database = \"{{ this.database }}\"\n schema = \"{{ this.schema }}\"\n identifier = \"{{ this.identifier }}\"\n {% set this_relation_name = resolve_model_name(this) %}\n def __repr__(self):\n return '{{ this_relation_name }}'\n\n\nclass dbtObj:\n def __init__(self, load_df_function) -> None:\n self.source = lambda *args: source(*args, dbt_load_df_function=load_df_function)\n self.ref = lambda *args, **kwargs: ref(*args, **kwargs, dbt_load_df_function=load_df_function)\n self.config = config\n self.this = this()\n self.is_incremental = {{ is_incremental() }}\n\n# COMMAND ----------\n{{py_script_comment()}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.build_ref_function", "macro.dbt.build_source_function", "macro.dbt.build_config_dict", "macro.dbt.resolve_model_name", "macro.dbt.is_incremental", "macro.dbt.py_script_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.000001, "supported_languages": null}, "macro.dbt.py_script_comment": {"name": "py_script_comment", "resource_type": "macro", "package_name": "dbt", "path": "macros/python_model/python.sql", "original_file_path": "macros/python_model/python.sql", "unique_id": "macro.dbt.py_script_comment", "macro_sql": "{%macro py_script_comment()%}\n{%endmacro%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0000892, "supported_languages": null}, "macro.dbt.test_unique": {"name": "test_unique", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_unique", "macro_sql": "{% test unique(model, column_name) %}\n {% set macro = adapter.dispatch('test_unique', 'dbt') %}\n {{ macro(model, column_name) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_bigquery.bigquery__test_unique"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.000659, "supported_languages": null}, "macro.dbt.test_not_null": {"name": "test_not_null", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_not_null", "macro_sql": "{% test not_null(model, column_name) %}\n {% set macro = adapter.dispatch('test_not_null', 'dbt') %}\n {{ macro(model, column_name) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.000917, "supported_languages": null}, "macro.dbt.test_accepted_values": {"name": "test_accepted_values", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_accepted_values", "macro_sql": "{% test accepted_values(model, column_name, values, quote=True) %}\n {% set macro = adapter.dispatch('test_accepted_values', 'dbt') %}\n {{ macro(model, column_name, values, quote) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_accepted_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.00124, "supported_languages": null}, "macro.dbt.test_relationships": {"name": "test_relationships", "resource_type": "macro", "package_name": "dbt", "path": "tests/generic/builtin.sql", "original_file_path": "tests/generic/builtin.sql", "unique_id": "macro.dbt.test_relationships", "macro_sql": "{% test relationships(model, column_name, to, field) %}\n {% set macro = adapter.dispatch('test_relationships', 'dbt') %}\n {{ macro(model, column_name, to, field) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt.default__test_relationships"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.001544, "supported_languages": null}, "macro.dbt_utils.get_url_host": {"name": "get_url_host", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_host.sql", "original_file_path": "macros/web/get_url_host.sql", "unique_id": "macro.dbt_utils.get_url_host", "macro_sql": "{% macro get_url_host(field) -%}\n {{ return(adapter.dispatch('get_url_host', 'dbt_utils')(field)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_host"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.001915, "supported_languages": null}, "macro.dbt_utils.default__get_url_host": {"name": "default__get_url_host", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_host.sql", "original_file_path": "macros/web/get_url_host.sql", "unique_id": "macro.dbt_utils.default__get_url_host", "macro_sql": "{% macro default__get_url_host(field) -%}\n\n{%- set parsed =\n dbt.split_part(\n dbt.split_part(\n dbt.replace(\n dbt.replace(\n dbt.replace(field, \"'android-app://'\", \"''\"\n ), \"'http://'\", \"''\"\n ), \"'https://'\", \"''\"\n ), \"'/'\", 1\n ), \"'?'\", 1\n )\n\n-%}\n\n\n {{ dbt.safe_cast(\n parsed,\n dbt.type_string()\n )}}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.split_part", "macro.dbt.replace", "macro.dbt.safe_cast", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0027, "supported_languages": null}, "macro.dbt_utils.get_url_path": {"name": "get_url_path", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_path.sql", "original_file_path": "macros/web/get_url_path.sql", "unique_id": "macro.dbt_utils.get_url_path", "macro_sql": "{% macro get_url_path(field) -%}\n {{ return(adapter.dispatch('get_url_path', 'dbt_utils')(field)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_path"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.003221, "supported_languages": null}, "macro.dbt_utils.default__get_url_path": {"name": "default__get_url_path", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_path.sql", "original_file_path": "macros/web/get_url_path.sql", "unique_id": "macro.dbt_utils.default__get_url_path", "macro_sql": "{% macro default__get_url_path(field) -%}\n\n {%- set stripped_url =\n dbt.replace(\n dbt.replace(field, \"'http://'\", \"''\"), \"'https://'\", \"''\")\n -%}\n\n {%- set first_slash_pos -%}\n coalesce(\n nullif({{ dbt.position(\"'/'\", stripped_url) }}, 0),\n {{ dbt.position(\"'?'\", stripped_url) }} - 1\n )\n {%- endset -%}\n\n {%- set parsed_path =\n dbt.split_part(\n dbt.right(\n stripped_url,\n dbt.length(stripped_url) ~ \"-\" ~ first_slash_pos\n ),\n \"'?'\", 1\n )\n -%}\n\n {{ dbt.safe_cast(\n parsed_path,\n dbt.type_string()\n )}}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.replace", "macro.dbt.position", "macro.dbt.split_part", "macro.dbt.right", "macro.dbt.length", "macro.dbt.safe_cast", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.003894, "supported_languages": null}, "macro.dbt_utils.get_url_parameter": {"name": "get_url_parameter", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_parameter.sql", "original_file_path": "macros/web/get_url_parameter.sql", "unique_id": "macro.dbt_utils.get_url_parameter", "macro_sql": "{% macro get_url_parameter(field, url_parameter) -%}\n {{ return(adapter.dispatch('get_url_parameter', 'dbt_utils')(field, url_parameter)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0042062, "supported_languages": null}, "macro.dbt_utils.default__get_url_parameter": {"name": "default__get_url_parameter", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/web/get_url_parameter.sql", "original_file_path": "macros/web/get_url_parameter.sql", "unique_id": "macro.dbt_utils.default__get_url_parameter", "macro_sql": "{% macro default__get_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"='\" -%}\n\n{%- set split = dbt.split_part(dbt.split_part(field, formatted_url_parameter, 2), \"'&'\", 1) -%}\n\nnullif({{ split }},'')\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.split_part"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0045161, "supported_languages": null}, "macro.dbt_utils.test_fewer_rows_than": {"name": "test_fewer_rows_than", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/fewer_rows_than.sql", "original_file_path": "macros/generic_tests/fewer_rows_than.sql", "unique_id": "macro.dbt_utils.test_fewer_rows_than", "macro_sql": "{% test fewer_rows_than(model, compare_model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_fewer_rows_than', 'dbt_utils')(model, compare_model, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_fewer_rows_than"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0056052, "supported_languages": null}, "macro.dbt_utils.default__test_fewer_rows_than": {"name": "default__test_fewer_rows_than", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/fewer_rows_than.sql", "original_file_path": "macros/generic_tests/fewer_rows_than.sql", "unique_id": "macro.dbt_utils.default__test_fewer_rows_than", "macro_sql": "{% macro default__test_fewer_rows_than(model, compare_model, group_by_columns) %}\n\n{{ config(fail_calc = 'sum(coalesce(row_count_delta, 0))') }}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set join_gb_cols %}\n {% for c in group_by_columns %}\n and a.{{c}} = b.{{c}}\n {% endfor %}\n {% endset %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n{#-- We must add a fake join key in case additional grouping variables are not provided --#}\n{#-- Redshift does not allow for dynamically created join conditions (e.g. full join on 1 = 1 --#}\n{#-- The same logic is used in equal_rowcount. In case of changes, maintain consistent logic --#}\n{% set group_by_columns = ['id_dbtutils_test_fewer_rows_than'] + group_by_columns %}\n{% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n\n\nwith a as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_fewer_rows_than,\n count(*) as count_our_model \n from {{ model }}\n {{ groupby_gb_cols }}\n\n),\nb as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_fewer_rows_than,\n count(*) as count_comparison_model \n from {{ compare_model }}\n {{ groupby_gb_cols }}\n\n),\ncounts as (\n\n select\n\n {% for c in group_by_columns -%}\n a.{{c}} as {{c}}_a,\n b.{{c}} as {{c}}_b,\n {% endfor %}\n\n count_our_model,\n count_comparison_model\n from a\n full join b on \n a.id_dbtutils_test_fewer_rows_than = b.id_dbtutils_test_fewer_rows_than\n {{ join_gb_cols }}\n\n),\nfinal as (\n\n select *,\n case\n -- fail the test if we have more rows than the reference model and return the row count delta\n when count_our_model > count_comparison_model then (count_our_model - count_comparison_model)\n -- fail the test if they are the same number\n when count_our_model = count_comparison_model then 1\n -- pass the test if the delta is positive (i.e. return the number 0)\n else 0\n end as row_count_delta\n from counts\n\n)\n\nselect * from final\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.006588, "supported_languages": null}, "macro.dbt_utils.test_equal_rowcount": {"name": "test_equal_rowcount", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equal_rowcount.sql", "original_file_path": "macros/generic_tests/equal_rowcount.sql", "unique_id": "macro.dbt_utils.test_equal_rowcount", "macro_sql": "{% test equal_rowcount(model, compare_model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_equal_rowcount', 'dbt_utils')(model, compare_model, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_equal_rowcount"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.007431, "supported_languages": null}, "macro.dbt_utils.default__test_equal_rowcount": {"name": "default__test_equal_rowcount", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equal_rowcount.sql", "original_file_path": "macros/generic_tests/equal_rowcount.sql", "unique_id": "macro.dbt_utils.default__test_equal_rowcount", "macro_sql": "{% macro default__test_equal_rowcount(model, compare_model, group_by_columns) %}\n\n{#-- Needs to be set at parse time, before we return '' below --#}\n{{ config(fail_calc = 'sum(coalesce(diff_count, 0))') }}\n\n{#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n{%- if not execute -%}\n {{ return('') }}\n{% endif %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(', ') + ', ' %}\n {% set join_gb_cols %}\n {% for c in group_by_columns %}\n and a.{{c}} = b.{{c}}\n {% endfor %}\n {% endset %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n{#-- We must add a fake join key in case additional grouping variables are not provided --#}\n{#-- Redshift does not allow for dynamically created join conditions (e.g. full join on 1 = 1 --#}\n{#-- The same logic is used in fewer_rows_than. In case of changes, maintain consistent logic --#}\n{% set group_by_columns = ['id_dbtutils_test_equal_rowcount'] + group_by_columns %}\n{% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n\nwith a as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_equal_rowcount,\n count(*) as count_a \n from {{ model }}\n {{groupby_gb_cols}}\n\n\n),\nb as (\n\n select \n {{select_gb_cols}}\n 1 as id_dbtutils_test_equal_rowcount,\n count(*) as count_b \n from {{ compare_model }}\n {{groupby_gb_cols}}\n\n),\nfinal as (\n\n select\n \n {% for c in group_by_columns -%}\n a.{{c}} as {{c}}_a,\n b.{{c}} as {{c}}_b,\n {% endfor %}\n\n count_a,\n count_b,\n abs(count_a - count_b) as diff_count\n\n from a\n full join b\n on\n a.id_dbtutils_test_equal_rowcount = b.id_dbtutils_test_equal_rowcount\n {{join_gb_cols}}\n\n\n)\n\nselect * from final\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0084548, "supported_languages": null}, "macro.dbt_utils.test_relationships_where": {"name": "test_relationships_where", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/relationships_where.sql", "original_file_path": "macros/generic_tests/relationships_where.sql", "unique_id": "macro.dbt_utils.test_relationships_where", "macro_sql": "{% test relationships_where(model, column_name, to, field, from_condition=\"1=1\", to_condition=\"1=1\") %}\n {{ return(adapter.dispatch('test_relationships_where', 'dbt_utils')(model, column_name, to, field, from_condition, to_condition)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_relationships_where"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.009085, "supported_languages": null}, "macro.dbt_utils.default__test_relationships_where": {"name": "default__test_relationships_where", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/relationships_where.sql", "original_file_path": "macros/generic_tests/relationships_where.sql", "unique_id": "macro.dbt_utils.default__test_relationships_where", "macro_sql": "{% macro default__test_relationships_where(model, column_name, to, field, from_condition=\"1=1\", to_condition=\"1=1\") %}\n\n{# T-SQL has no boolean data type so we use 1=1 which returns TRUE #}\n{# ref https://stackoverflow.com/a/7170753/3842610 #}\n\nwith left_table as (\n\n select\n {{column_name}} as id\n\n from {{model}}\n\n where {{column_name}} is not null\n and {{from_condition}}\n\n),\n\nright_table as (\n\n select\n {{field}} as id\n\n from {{to}}\n\n where {{field}} is not null\n and {{to_condition}}\n\n),\n\nexceptions as (\n\n select\n left_table.id,\n right_table.id as right_id\n\n from left_table\n\n left join right_table\n on left_table.id = right_table.id\n\n where right_table.id is null\n\n)\n\nselect * from exceptions\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0094159, "supported_languages": null}, "macro.dbt_utils.test_recency": {"name": "test_recency", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/recency.sql", "original_file_path": "macros/generic_tests/recency.sql", "unique_id": "macro.dbt_utils.test_recency", "macro_sql": "{% test recency(model, field, datepart, interval, ignore_time_component=False, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_recency', 'dbt_utils')(model, field, datepart, interval, ignore_time_component, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_recency"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.010126, "supported_languages": null}, "macro.dbt_utils.default__test_recency": {"name": "default__test_recency", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/recency.sql", "original_file_path": "macros/generic_tests/recency.sql", "unique_id": "macro.dbt_utils.default__test_recency", "macro_sql": "{% macro default__test_recency(model, field, datepart, interval, ignore_time_component, group_by_columns) %}\n\n{% set threshold = 'cast(' ~ dbt.dateadd(datepart, interval * -1, dbt.current_timestamp()) ~ ' as ' ~ ('date' if ignore_time_component else dbt.type_timestamp()) ~ ')' %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n\nwith recency as (\n\n select \n\n {{ select_gb_cols }}\n {% if ignore_time_component %}\n cast(max({{ field }}) as date) as most_recent\n {%- else %}\n max({{ field }}) as most_recent\n {%- endif %}\n\n from {{ model }}\n\n {{ groupby_gb_cols }}\n\n)\n\nselect\n\n {{ select_gb_cols }}\n most_recent,\n {{ threshold }} as threshold\n\nfrom recency\nwhere most_recent < {{ threshold }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dateadd", "macro.dbt.current_timestamp", "macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0109582, "supported_languages": null}, "macro.dbt_utils.test_not_constant": {"name": "test_not_constant", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_constant.sql", "original_file_path": "macros/generic_tests/not_constant.sql", "unique_id": "macro.dbt_utils.test_not_constant", "macro_sql": "{% test not_constant(model, column_name, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_not_constant', 'dbt_utils')(model, column_name, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_constant"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.011405, "supported_languages": null}, "macro.dbt_utils.default__test_not_constant": {"name": "default__test_not_constant", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_constant.sql", "original_file_path": "macros/generic_tests/not_constant.sql", "unique_id": "macro.dbt_utils.default__test_not_constant", "macro_sql": "{% macro default__test_not_constant(model, column_name, group_by_columns) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\n\nselect\n {# In TSQL, subquery aggregate columns need aliases #}\n {# thus: a filler col name, 'filler_column' #}\n {{select_gb_cols}}\n count(distinct {{ column_name }}) as filler_column\n\nfrom {{ model }}\n\n {{groupby_gb_cols}}\n\nhaving count(distinct {{ column_name }}) = 1\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.011869, "supported_languages": null}, "macro.dbt_utils.test_accepted_range": {"name": "test_accepted_range", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/accepted_range.sql", "original_file_path": "macros/generic_tests/accepted_range.sql", "unique_id": "macro.dbt_utils.test_accepted_range", "macro_sql": "{% test accepted_range(model, column_name, min_value=none, max_value=none, inclusive=true) %}\n {{ return(adapter.dispatch('test_accepted_range', 'dbt_utils')(model, column_name, min_value, max_value, inclusive)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_accepted_range"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0124831, "supported_languages": null}, "macro.dbt_utils.default__test_accepted_range": {"name": "default__test_accepted_range", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/accepted_range.sql", "original_file_path": "macros/generic_tests/accepted_range.sql", "unique_id": "macro.dbt_utils.default__test_accepted_range", "macro_sql": "{% macro default__test_accepted_range(model, column_name, min_value=none, max_value=none, inclusive=true) %}\n\nwith meet_condition as(\n select *\n from {{ model }}\n),\n\nvalidation_errors as (\n select *\n from meet_condition\n where\n -- never true, defaults to an empty result set. Exists to ensure any combo of the `or` clauses below succeeds\n 1 = 2\n\n {%- if min_value is not none %}\n -- records with a value >= min_value are permitted. The `not` flips this to find records that don't meet the rule.\n or not {{ column_name }} > {{- \"=\" if inclusive }} {{ min_value }}\n {%- endif %}\n\n {%- if max_value is not none %}\n -- records with a value <= max_value are permitted. The `not` flips this to find records that don't meet the rule.\n or not {{ column_name }} < {{- \"=\" if inclusive }} {{ max_value }}\n {%- endif %}\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0129652, "supported_languages": null}, "macro.dbt_utils.test_not_accepted_values": {"name": "test_not_accepted_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_accepted_values.sql", "original_file_path": "macros/generic_tests/not_accepted_values.sql", "unique_id": "macro.dbt_utils.test_not_accepted_values", "macro_sql": "{% test not_accepted_values(model, column_name, values, quote=True) %}\n {{ return(adapter.dispatch('test_not_accepted_values', 'dbt_utils')(model, column_name, values, quote)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_accepted_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.013673, "supported_languages": null}, "macro.dbt_utils.default__test_not_accepted_values": {"name": "default__test_not_accepted_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_accepted_values.sql", "original_file_path": "macros/generic_tests/not_accepted_values.sql", "unique_id": "macro.dbt_utils.default__test_not_accepted_values", "macro_sql": "{% macro default__test_not_accepted_values(model, column_name, values, quote=True) %}\nwith all_values as (\n\n select distinct\n {{ column_name }} as value_field\n\n from {{ model }}\n\n),\n\nvalidation_errors as (\n\n select\n value_field\n\n from all_values\n where value_field in (\n {% for value in values -%}\n {% if quote -%}\n '{{ value }}'\n {%- else -%}\n {{ value }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {%- endfor %}\n )\n\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0142899, "supported_languages": null}, "macro.dbt_utils.test_at_least_one": {"name": "test_at_least_one", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/at_least_one.sql", "original_file_path": "macros/generic_tests/at_least_one.sql", "unique_id": "macro.dbt_utils.test_at_least_one", "macro_sql": "{% test at_least_one(model, column_name, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_at_least_one', 'dbt_utils')(model, column_name, group_by_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_at_least_one"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.015269, "supported_languages": null}, "macro.dbt_utils.default__test_at_least_one": {"name": "default__test_at_least_one", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/at_least_one.sql", "original_file_path": "macros/generic_tests/at_least_one.sql", "unique_id": "macro.dbt_utils.default__test_at_least_one", "macro_sql": "{% macro default__test_at_least_one(model, column_name, group_by_columns) %}\n\n{% set pruned_cols = [column_name] %}\n\n{% if group_by_columns|length() > 0 %}\n\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n {% set pruned_cols = group_by_columns %}\n\n {% if column_name not in pruned_cols %}\n {% do pruned_cols.append(column_name) %}\n {% endif %}\n\n{% endif %}\n\n{% set select_pruned_cols = pruned_cols|join(' ,') %}\n\nselect *\nfrom (\n with pruned_rows as (\n select\n {{ select_pruned_cols }}\n from {{ model }}\n {% if group_by_columns|length() == 0 %}\n where {{ column_name }} is not null\n limit 1\n {% endif %}\n )\n select\n {# In TSQL, subquery aggregate columns need aliases #}\n {# thus: a filler col name, 'filler_column' #}\n {{select_gb_cols}}\n count({{ column_name }}) as filler_column\n\n from pruned_rows\n\n {{groupby_gb_cols}}\n\n having count({{ column_name }}) = 0\n\n) validation_errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.01615, "supported_languages": null}, "macro.dbt_utils.test_unique_combination_of_columns": {"name": "test_unique_combination_of_columns", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/unique_combination_of_columns.sql", "original_file_path": "macros/generic_tests/unique_combination_of_columns.sql", "unique_id": "macro.dbt_utils.test_unique_combination_of_columns", "macro_sql": "{% test unique_combination_of_columns(model, combination_of_columns, quote_columns=false) %}\n {{ return(adapter.dispatch('test_unique_combination_of_columns', 'dbt_utils')(model, combination_of_columns, quote_columns)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_unique_combination_of_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.016823, "supported_languages": null}, "macro.dbt_utils.default__test_unique_combination_of_columns": {"name": "default__test_unique_combination_of_columns", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/unique_combination_of_columns.sql", "original_file_path": "macros/generic_tests/unique_combination_of_columns.sql", "unique_id": "macro.dbt_utils.default__test_unique_combination_of_columns", "macro_sql": "{% macro default__test_unique_combination_of_columns(model, combination_of_columns, quote_columns=false) %}\n\n{% if not quote_columns %}\n {%- set column_list=combination_of_columns %}\n{% elif quote_columns %}\n {%- set column_list=[] %}\n {% for column in combination_of_columns -%}\n {% set column_list = column_list.append( adapter.quote(column) ) %}\n {%- endfor %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`quote_columns` argument for unique_combination_of_columns test must be one of [True, False] Got: '\" ~ quote ~\"'.'\"\n ) }}\n{% endif %}\n\n{%- set columns_csv=column_list | join(', ') %}\n\n\nwith validation_errors as (\n\n select\n {{ columns_csv }}\n from {{ model }}\n group by {{ columns_csv }}\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0174851, "supported_languages": null}, "macro.dbt_utils.test_cardinality_equality": {"name": "test_cardinality_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/cardinality_equality.sql", "original_file_path": "macros/generic_tests/cardinality_equality.sql", "unique_id": "macro.dbt_utils.test_cardinality_equality", "macro_sql": "{% test cardinality_equality(model, column_name, to, field) %}\n {{ return(adapter.dispatch('test_cardinality_equality', 'dbt_utils')(model, column_name, to, field)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_cardinality_equality"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.018044, "supported_languages": null}, "macro.dbt_utils.default__test_cardinality_equality": {"name": "default__test_cardinality_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/cardinality_equality.sql", "original_file_path": "macros/generic_tests/cardinality_equality.sql", "unique_id": "macro.dbt_utils.default__test_cardinality_equality", "macro_sql": "{% macro default__test_cardinality_equality(model, column_name, to, field) %}\n\n{# T-SQL does not let you use numbers as aliases for columns #}\n{# Thus, no \"GROUP BY 1\" #}\n\nwith table_a as (\nselect\n {{ column_name }},\n count(*) as num_rows\nfrom {{ model }}\ngroup by {{ column_name }}\n),\n\ntable_b as (\nselect\n {{ field }},\n count(*) as num_rows\nfrom {{ to }}\ngroup by {{ field }}\n),\n\nexcept_a as (\n select *\n from table_a\n {{ dbt.except() }}\n select *\n from table_b\n),\n\nexcept_b as (\n select *\n from table_b\n {{ dbt.except() }}\n select *\n from table_a\n),\n\nunioned as (\n select *\n from except_a\n union all\n select *\n from except_b\n)\n\nselect *\nfrom unioned\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.018394, "supported_languages": null}, "macro.dbt_utils.test_expression_is_true": {"name": "test_expression_is_true", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/expression_is_true.sql", "original_file_path": "macros/generic_tests/expression_is_true.sql", "unique_id": "macro.dbt_utils.test_expression_is_true", "macro_sql": "{% test expression_is_true(model, expression, column_name=None) %}\n {{ return(adapter.dispatch('test_expression_is_true', 'dbt_utils')(model, expression, column_name)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_expression_is_true"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.018799, "supported_languages": null}, "macro.dbt_utils.default__test_expression_is_true": {"name": "default__test_expression_is_true", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/expression_is_true.sql", "original_file_path": "macros/generic_tests/expression_is_true.sql", "unique_id": "macro.dbt_utils.default__test_expression_is_true", "macro_sql": "{% macro default__test_expression_is_true(model, expression, column_name) %}\n\n{% set column_list = '*' if should_store_failures() else \"1\" %}\n\nselect\n {{ column_list }}\nfrom {{ model }}\n{% if column_name is none %}\nwhere not({{ expression }})\n{%- else %}\nwhere not({{ column_name }} {{ expression }})\n{%- endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.should_store_failures"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.019167, "supported_languages": null}, "macro.dbt_utils.test_not_null_proportion": {"name": "test_not_null_proportion", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_null_proportion.sql", "original_file_path": "macros/generic_tests/not_null_proportion.sql", "unique_id": "macro.dbt_utils.test_not_null_proportion", "macro_sql": "{% macro test_not_null_proportion(model, group_by_columns = []) %}\n {{ return(adapter.dispatch('test_not_null_proportion', 'dbt_utils')(model, group_by_columns, **kwargs)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_null_proportion"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.019914, "supported_languages": null}, "macro.dbt_utils.default__test_not_null_proportion": {"name": "default__test_not_null_proportion", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_null_proportion.sql", "original_file_path": "macros/generic_tests/not_null_proportion.sql", "unique_id": "macro.dbt_utils.default__test_not_null_proportion", "macro_sql": "{% macro default__test_not_null_proportion(model, group_by_columns) %}\n\n{% set column_name = kwargs.get('column_name', kwargs.get('arg')) %}\n{% set at_least = kwargs.get('at_least', kwargs.get('arg')) %}\n{% set at_most = kwargs.get('at_most', kwargs.get('arg', 1)) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(' ,') + ', ' %}\n {% set groupby_gb_cols = 'group by ' + group_by_columns|join(',') %}\n{% endif %}\n\nwith validation as (\n select\n {{select_gb_cols}}\n sum(case when {{ column_name }} is null then 0 else 1 end) / cast(count(*) as {{ dbt.type_numeric() }}) as not_null_proportion\n from {{ model }}\n {{groupby_gb_cols}}\n),\nvalidation_errors as (\n select\n {{select_gb_cols}}\n not_null_proportion\n from validation\n where not_null_proportion < {{ at_least }} or not_null_proportion > {{ at_most }}\n)\nselect\n *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_numeric"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.020767, "supported_languages": null}, "macro.dbt_utils.test_sequential_values": {"name": "test_sequential_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/sequential_values.sql", "original_file_path": "macros/generic_tests/sequential_values.sql", "unique_id": "macro.dbt_utils.test_sequential_values", "macro_sql": "{% test sequential_values(model, column_name, interval=1, datepart=None, group_by_columns = []) %}\n\n {{ return(adapter.dispatch('test_sequential_values', 'dbt_utils')(model, column_name, interval, datepart, group_by_columns)) }}\n\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_sequential_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.021719, "supported_languages": null}, "macro.dbt_utils.default__test_sequential_values": {"name": "default__test_sequential_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/sequential_values.sql", "original_file_path": "macros/generic_tests/sequential_values.sql", "unique_id": "macro.dbt_utils.default__test_sequential_values", "macro_sql": "{% macro default__test_sequential_values(model, column_name, interval=1, datepart=None, group_by_columns = []) %}\n\n{% set previous_column_name = \"previous_\" ~ dbt_utils.slugify(column_name) %}\n\n{% if group_by_columns|length() > 0 %}\n {% set select_gb_cols = group_by_columns|join(',') + ', ' %}\n {% set partition_gb_cols = 'partition by ' + group_by_columns|join(',') %}\n{% endif %}\n\nwith windowed as (\n\n select\n {{ select_gb_cols }}\n {{ column_name }},\n lag({{ column_name }}) over (\n {{partition_gb_cols}}\n order by {{ column_name }}\n ) as {{ previous_column_name }}\n from {{ model }}\n),\n\nvalidation_errors as (\n select\n *\n from windowed\n {% if datepart %}\n where not(cast({{ column_name }} as {{ dbt.type_timestamp() }})= cast({{ dbt.dateadd(datepart, interval, previous_column_name) }} as {{ dbt.type_timestamp() }}))\n {% else %}\n where not({{ column_name }} = {{ previous_column_name }} + {{ interval }})\n {% endif %}\n)\n\nselect *\nfrom validation_errors\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.slugify", "macro.dbt.type_timestamp", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.022628, "supported_languages": null}, "macro.dbt_utils.test_equality": {"name": "test_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equality.sql", "original_file_path": "macros/generic_tests/equality.sql", "unique_id": "macro.dbt_utils.test_equality", "macro_sql": "{% test equality(model, compare_model, compare_columns=None, exclude_columns=None, precision = None) %}\n {{ return(adapter.dispatch('test_equality', 'dbt_utils')(model, compare_model, compare_columns, exclude_columns, precision)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_equality"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0248399, "supported_languages": null}, "macro.dbt_utils.default__test_equality": {"name": "default__test_equality", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/equality.sql", "original_file_path": "macros/generic_tests/equality.sql", "unique_id": "macro.dbt_utils.default__test_equality", "macro_sql": "{% macro default__test_equality(model, compare_model, compare_columns=None, exclude_columns=None, precision = None) %}\n\n{%- if compare_columns and exclude_columns -%}\n {{ exceptions.raise_compiler_error(\"Both a compare and an ignore list were provided to the `equality` macro. Only one is allowed\") }}\n{%- endif -%}\n\n{% set set_diff %}\n count(*) + coalesce(abs(\n sum(case when which_diff = 'a_minus_b' then 1 else 0 end) -\n sum(case when which_diff = 'b_minus_a' then 1 else 0 end)\n ), 0)\n{% endset %}\n\n{#-- Needs to be set at parse time, before we return '' below --#}\n{{ config(fail_calc = set_diff) }}\n\n{#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n{%- if not execute -%}\n {{ return('') }}\n{% endif %}\n\n\n\n-- setup\n{%- do dbt_utils._is_relation(model, 'test_equality') -%}\n\n{# Ensure there are no extra columns in the compare_model vs model #}\n{%- if not compare_columns -%}\n {%- do dbt_utils._is_ephemeral(model, 'test_equality') -%}\n {%- do dbt_utils._is_ephemeral(compare_model, 'test_equality') -%}\n\n {%- set model_columns = adapter.get_columns_in_relation(model) -%}\n {%- set compare_model_columns = adapter.get_columns_in_relation(compare_model) -%}\n\n\n {%- if exclude_columns -%}\n {#-- Lower case ignore columns for easier comparison --#}\n {%- set exclude_columns = exclude_columns | map(\"lower\") | list %}\n\n {# Filter out the excluded columns #}\n {%- set include_columns = [] %}\n {%- set include_model_columns = [] %}\n {%- for column in model_columns -%}\n {%- if column.name | lower not in exclude_columns -%}\n {% do include_columns.append(column) %}\n {%- endif %}\n {%- endfor %}\n {%- for column in compare_model_columns -%}\n {%- if column.name | lower not in exclude_columns -%}\n {% do include_model_columns.append(column) %}\n {%- endif %}\n {%- endfor %}\n\n {%- set compare_columns_set = set(include_columns | map(attribute='quoted') | map(\"lower\")) %}\n {%- set compare_model_columns_set = set(include_model_columns | map(attribute='quoted') | map(\"lower\")) %}\n {%- else -%}\n {%- set compare_columns_set = set(model_columns | map(attribute='quoted') | map(\"lower\")) %}\n {%- set compare_model_columns_set = set(compare_model_columns | map(attribute='quoted') | map(\"lower\")) %}\n {%- endif -%}\n\n {% if compare_columns_set != compare_model_columns_set %}\n {{ exceptions.raise_compiler_error(compare_model ~\" has less columns than \" ~ model ~ \", please ensure they have the same columns or use the `compare_columns` or `exclude_columns` arguments to subset them.\") }}\n {% endif %}\n\n\n{% endif %}\n\n{%- if not precision -%}\n {%- if not compare_columns -%}\n {# \n You cannot get the columns in an ephemeral model (due to not existing in the information schema),\n so if the user does not provide an explicit list of columns we must error in the case it is ephemeral\n #}\n {%- do dbt_utils._is_ephemeral(model, 'test_equality') -%}\n {%- set compare_columns = adapter.get_columns_in_relation(model)-%}\n\n {%- if exclude_columns -%}\n {#-- Lower case ignore columns for easier comparison --#}\n {%- set exclude_columns = exclude_columns | map(\"lower\") | list %}\n\n {# Filter out the excluded columns #}\n {%- set include_columns = [] %}\n {%- for column in compare_columns -%}\n {%- if column.name | lower not in exclude_columns -%}\n {% do include_columns.append(column) %}\n {%- endif %}\n {%- endfor %}\n\n {%- set compare_columns = include_columns | map(attribute='quoted') %}\n {%- else -%} {# Compare columns provided #}\n {%- set compare_columns = compare_columns | map(attribute='quoted') %}\n {%- endif -%}\n {%- endif -%}\n\n {% set compare_cols_csv = compare_columns | join(', ') %}\n\n{% else %} {# Precision required #}\n {#-\n If rounding is required, we need to get the types, so it cannot be ephemeral even if they provide column names\n -#}\n {%- do dbt_utils._is_ephemeral(model, 'test_equality') -%}\n {%- set columns = adapter.get_columns_in_relation(model) -%}\n\n {% set columns_list = [] %}\n {%- for col in columns -%}\n {%- if (\n (col.name|lower in compare_columns|map('lower') or not compare_columns) and\n (col.name|lower not in exclude_columns|map('lower') or not exclude_columns)\n ) -%}\n {# Databricks double type is not picked up by any number type checks in dbt #}\n {%- if col.is_float() or col.is_numeric() or col.data_type == 'double' -%}\n {# Cast is required due to postgres not having round for a double precision number #}\n {%- do columns_list.append('round(cast(' ~ col.quoted ~ ' as ' ~ dbt.type_numeric() ~ '),' ~ precision ~ ') as ' ~ col.quoted) -%}\n {%- else -%} {# Non-numeric type #}\n {%- do columns_list.append(col.quoted) -%}\n {%- endif -%}\n {% endif %}\n {%- endfor -%}\n\n {% set compare_cols_csv = columns_list | join(', ') %}\n\n{% endif %}\n\nwith a as (\n\n select * from {{ model }}\n\n),\n\nb as (\n\n select * from {{ compare_model }}\n\n),\n\na_minus_b as (\n\n select {{compare_cols_csv}} from a\n {{ dbt.except() }}\n select {{compare_cols_csv}} from b\n\n),\n\nb_minus_a as (\n\n select {{compare_cols_csv}} from b\n {{ dbt.except() }}\n select {{compare_cols_csv}} from a\n\n),\n\nunioned as (\n\n select 'a_minus_b' as which_diff, a_minus_b.* from a_minus_b\n union all\n select 'b_minus_a' as which_diff, b_minus_a.* from b_minus_a\n\n)\n\nselect * from unioned\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.type_numeric", "macro.dbt.except"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0290072, "supported_languages": null}, "macro.dbt_utils.test_not_empty_string": {"name": "test_not_empty_string", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_empty_string.sql", "original_file_path": "macros/generic_tests/not_empty_string.sql", "unique_id": "macro.dbt_utils.test_not_empty_string", "macro_sql": "{% test not_empty_string(model, column_name, trim_whitespace=true) %}\n\n {{ return(adapter.dispatch('test_not_empty_string', 'dbt_utils')(model, column_name, trim_whitespace)) }}\n\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_not_empty_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.02955, "supported_languages": null}, "macro.dbt_utils.default__test_not_empty_string": {"name": "default__test_not_empty_string", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/not_empty_string.sql", "original_file_path": "macros/generic_tests/not_empty_string.sql", "unique_id": "macro.dbt_utils.default__test_not_empty_string", "macro_sql": "{% macro default__test_not_empty_string(model, column_name, trim_whitespace=true) %}\n\n with\n \n all_values as (\n\n select \n\n\n {% if trim_whitespace == true -%}\n\n trim({{ column_name }}) as {{ column_name }}\n\n {%- else -%}\n\n {{ column_name }}\n\n {%- endif %}\n \n from {{ model }}\n\n ),\n\n errors as (\n\n select * from all_values\n where {{ column_name }} = ''\n\n )\n\n select * from errors\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.02986, "supported_languages": null}, "macro.dbt_utils.test_mutually_exclusive_ranges": {"name": "test_mutually_exclusive_ranges", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/mutually_exclusive_ranges.sql", "original_file_path": "macros/generic_tests/mutually_exclusive_ranges.sql", "unique_id": "macro.dbt_utils.test_mutually_exclusive_ranges", "macro_sql": "{% test mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed', zero_length_range_allowed=False) %}\n {{ return(adapter.dispatch('test_mutually_exclusive_ranges', 'dbt_utils')(model, lower_bound_column, upper_bound_column, partition_by, gaps, zero_length_range_allowed)) }}\n{% endtest %}", "depends_on": {"macros": ["macro.dbt_utils.default__test_mutually_exclusive_ranges"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.033477, "supported_languages": null}, "macro.dbt_utils.default__test_mutually_exclusive_ranges": {"name": "default__test_mutually_exclusive_ranges", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/generic_tests/mutually_exclusive_ranges.sql", "original_file_path": "macros/generic_tests/mutually_exclusive_ranges.sql", "unique_id": "macro.dbt_utils.default__test_mutually_exclusive_ranges", "macro_sql": "{% macro default__test_mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed', zero_length_range_allowed=False) %}\n{% if gaps == 'not_allowed' %}\n {% set allow_gaps_operator='=' %}\n {% set allow_gaps_operator_in_words='equal_to' %}\n{% elif gaps == 'allowed' %}\n {% set allow_gaps_operator='<=' %}\n {% set allow_gaps_operator_in_words='less_than_or_equal_to' %}\n{% elif gaps == 'required' %}\n {% set allow_gaps_operator='<' %}\n {% set allow_gaps_operator_in_words='less_than' %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`gaps` argument for mutually_exclusive_ranges test must be one of ['not_allowed', 'allowed', 'required'] Got: '\" ~ gaps ~\"'.'\"\n ) }}\n{% endif %}\n{% if not zero_length_range_allowed %}\n {% set allow_zero_length_operator='<' %}\n {% set allow_zero_length_operator_in_words='less_than' %}\n{% elif zero_length_range_allowed %}\n {% set allow_zero_length_operator='<=' %}\n {% set allow_zero_length_operator_in_words='less_than_or_equal_to' %}\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"`zero_length_range_allowed` argument for mutually_exclusive_ranges test must be one of [true, false] Got: '\" ~ zero_length_range_allowed ~\"'.'\"\n ) }}\n{% endif %}\n\n{% set partition_clause=\"partition by \" ~ partition_by if partition_by else '' %}\n\nwith window_functions as (\n\n select\n {% if partition_by %}\n {{ partition_by }} as partition_by_col,\n {% endif %}\n {{ lower_bound_column }} as lower_bound,\n {{ upper_bound_column }} as upper_bound,\n\n lead({{ lower_bound_column }}) over (\n {{ partition_clause }}\n order by {{ lower_bound_column }}, {{ upper_bound_column }}\n ) as next_lower_bound,\n\n row_number() over (\n {{ partition_clause }}\n order by {{ lower_bound_column }} desc, {{ upper_bound_column }} desc\n ) = 1 as is_last_record\n\n from {{ model }}\n\n),\n\ncalc as (\n -- We want to return records where one of our assumptions fails, so we'll use\n -- the `not` function with `and` statements so we can write our assumptions more cleanly\n select\n *,\n\n -- For each record: lower_bound should be < upper_bound.\n -- Coalesce it to return an error on the null case (implicit assumption\n -- these columns are not_null)\n coalesce(\n lower_bound {{ allow_zero_length_operator }} upper_bound,\n false\n ) as lower_bound_{{ allow_zero_length_operator_in_words }}_upper_bound,\n\n -- For each record: upper_bound {{ allow_gaps_operator }} the next lower_bound.\n -- Coalesce it to handle null cases for the last record.\n coalesce(\n upper_bound {{ allow_gaps_operator }} next_lower_bound,\n is_last_record,\n false\n ) as upper_bound_{{ allow_gaps_operator_in_words }}_next_lower_bound\n\n from window_functions\n\n),\n\nvalidation_errors as (\n\n select\n *\n from calc\n\n where not(\n -- THE FOLLOWING SHOULD BE TRUE --\n lower_bound_{{ allow_zero_length_operator_in_words }}_upper_bound\n and upper_bound_{{ allow_gaps_operator_in_words }}_next_lower_bound\n )\n)\n\nselect * from validation_errors\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.035291, "supported_languages": null}, "macro.dbt_utils.pretty_log_format": {"name": "pretty_log_format", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_log_format.sql", "original_file_path": "macros/jinja_helpers/pretty_log_format.sql", "unique_id": "macro.dbt_utils.pretty_log_format", "macro_sql": "{% macro pretty_log_format(message) %}\n {{ return(adapter.dispatch('pretty_log_format', 'dbt_utils')(message)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pretty_log_format"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.03565, "supported_languages": null}, "macro.dbt_utils.default__pretty_log_format": {"name": "default__pretty_log_format", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_log_format.sql", "original_file_path": "macros/jinja_helpers/pretty_log_format.sql", "unique_id": "macro.dbt_utils.default__pretty_log_format", "macro_sql": "{% macro default__pretty_log_format(message) %}\n {{ return( dbt_utils.pretty_time() ~ ' + ' ~ message) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.pretty_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.035836, "supported_languages": null}, "macro.dbt_utils._is_relation": {"name": "_is_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/_is_relation.sql", "original_file_path": "macros/jinja_helpers/_is_relation.sql", "unique_id": "macro.dbt_utils._is_relation", "macro_sql": "{% macro _is_relation(obj, macro) %}\n {%- if not (obj is mapping and obj.get('metadata', {}).get('type', '').endswith('Relation')) -%}\n {%- do exceptions.raise_compiler_error(\"Macro \" ~ macro ~ \" expected a Relation but received the value: \" ~ obj) -%}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.036312, "supported_languages": null}, "macro.dbt_utils.pretty_time": {"name": "pretty_time", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_time.sql", "original_file_path": "macros/jinja_helpers/pretty_time.sql", "unique_id": "macro.dbt_utils.pretty_time", "macro_sql": "{% macro pretty_time(format='%H:%M:%S') %}\n {{ return(adapter.dispatch('pretty_time', 'dbt_utils')(format)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pretty_time"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.036629, "supported_languages": null}, "macro.dbt_utils.default__pretty_time": {"name": "default__pretty_time", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/pretty_time.sql", "original_file_path": "macros/jinja_helpers/pretty_time.sql", "unique_id": "macro.dbt_utils.default__pretty_time", "macro_sql": "{% macro default__pretty_time(format='%H:%M:%S') %}\n {{ return(modules.datetime.datetime.now().strftime(format)) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.036831, "supported_languages": null}, "macro.dbt_utils.log_info": {"name": "log_info", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/log_info.sql", "original_file_path": "macros/jinja_helpers/log_info.sql", "unique_id": "macro.dbt_utils.log_info", "macro_sql": "{% macro log_info(message) %}\n {{ return(adapter.dispatch('log_info', 'dbt_utils')(message)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__log_info"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.037098, "supported_languages": null}, "macro.dbt_utils.default__log_info": {"name": "default__log_info", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/log_info.sql", "original_file_path": "macros/jinja_helpers/log_info.sql", "unique_id": "macro.dbt_utils.default__log_info", "macro_sql": "{% macro default__log_info(message) %}\n {{ log(dbt_utils.pretty_log_format(message), info=True) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.pretty_log_format"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.03728, "supported_languages": null}, "macro.dbt_utils.slugify": {"name": "slugify", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/slugify.sql", "original_file_path": "macros/jinja_helpers/slugify.sql", "unique_id": "macro.dbt_utils.slugify", "macro_sql": "{% macro slugify(string) %}\n\n{% if not string %}\n{{ return('') }}\n{% endif %}\n\n{#- Lower case the string -#}\n{% set string = string | lower %}\n{#- Replace spaces and dashes with underscores -#}\n{% set string = modules.re.sub('[ -]+', '_', string) %}\n{#- Only take letters, numbers, and underscores -#}\n{% set string = modules.re.sub('[^a-z0-9_]+', '', string) %}\n{#- Prepends \"_\" if string begins with a number -#}\n{% set string = modules.re.sub('^[0-9]', '_' + string[0], string) %}\n\n{{ return(string) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.038039, "supported_languages": null}, "macro.dbt_utils._is_ephemeral": {"name": "_is_ephemeral", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/jinja_helpers/_is_ephemeral.sql", "original_file_path": "macros/jinja_helpers/_is_ephemeral.sql", "unique_id": "macro.dbt_utils._is_ephemeral", "macro_sql": "{% macro _is_ephemeral(obj, macro) %}\n {%- if obj.is_cte -%}\n {% set ephemeral_prefix = api.Relation.add_ephemeral_prefix('') %}\n {% if obj.name.startswith(ephemeral_prefix) %}\n {% set model_name = obj.name[(ephemeral_prefix|length):] %}\n {% else %}\n {% set model_name = obj.name %}\n {%- endif -%}\n {% set error_message %}\nThe `{{ macro }}` macro cannot be used with ephemeral models, as it relies on the information schema.\n\n`{{ model_name }}` is an ephemeral model. Consider making it a view or table instead.\n {% endset %}\n {%- do exceptions.raise_compiler_error(error_message) -%}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.039032, "supported_languages": null}, "macro.dbt_utils.get_intervals_between": {"name": "get_intervals_between", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.get_intervals_between", "macro_sql": "{% macro get_intervals_between(start_date, end_date, datepart) -%}\n {{ return(adapter.dispatch('get_intervals_between', 'dbt_utils')(start_date, end_date, datepart)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_intervals_between"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0397508, "supported_languages": null}, "macro.dbt_utils.default__get_intervals_between": {"name": "default__get_intervals_between", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.default__get_intervals_between", "macro_sql": "{% macro default__get_intervals_between(start_date, end_date, datepart) -%}\n {%- call statement('get_intervals_between', fetch_result=True) %}\n\n select {{ dbt.datediff(start_date, end_date, datepart) }}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_intervals_between') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values[0]) }}\n {%- else -%}\n {{ return(1) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0403368, "supported_languages": null}, "macro.dbt_utils.date_spine": {"name": "date_spine", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.date_spine", "macro_sql": "{% macro date_spine(datepart, start_date, end_date) %}\n {{ return(adapter.dispatch('date_spine', 'dbt_utils')(datepart, start_date, end_date)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.040567, "supported_languages": null}, "macro.dbt_utils.default__date_spine": {"name": "default__date_spine", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/date_spine.sql", "original_file_path": "macros/sql/date_spine.sql", "unique_id": "macro.dbt_utils.default__date_spine", "macro_sql": "{% macro default__date_spine(datepart, start_date, end_date) %}\n\n\n{# call as follows:\n\ndate_spine(\n \"day\",\n \"to_date('01/01/2016', 'mm/dd/yyyy')\",\n \"dbt.dateadd(week, 1, current_date)\"\n) #}\n\n\nwith rawdata as (\n\n {{dbt_utils.generate_series(\n dbt_utils.get_intervals_between(start_date, end_date, datepart)\n )}}\n\n),\n\nall_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n \"row_number() over (order by 1) - 1\",\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n\n),\n\nfiltered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n)\n\nselect * from filtered\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.generate_series", "macro.dbt_utils.get_intervals_between", "macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0409238, "supported_languages": null}, "macro.dbt_utils.safe_subtract": {"name": "safe_subtract", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_subtract.sql", "original_file_path": "macros/sql/safe_subtract.sql", "unique_id": "macro.dbt_utils.safe_subtract", "macro_sql": "{%- macro safe_subtract(field_list) -%}\n {{ return(adapter.dispatch('safe_subtract', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_subtract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.041302, "supported_languages": null}, "macro.dbt_utils.default__safe_subtract": {"name": "default__safe_subtract", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_subtract.sql", "original_file_path": "macros/sql/safe_subtract.sql", "unique_id": "macro.dbt_utils.default__safe_subtract", "macro_sql": "\n\n{%- macro default__safe_subtract(field_list) -%}\n\n{%- if field_list is not iterable or field_list is string or field_list is mapping -%}\n\n{%- set error_message = '\nWarning: the `safe_subtract` macro takes a single list argument instead of \\\nstring arguments. The {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.raise_compiler_error(error_message) -%}\n\n{%- endif -%}\n\n{% set fields = [] %}\n\n{%- for field in field_list -%}\n\n {% do fields.append(\"coalesce(\" ~ field ~ \", 0)\") %}\n\n{%- endfor -%}\n\n{{ fields|join(' -\\n ') }}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.041913, "supported_languages": null}, "macro.dbt_utils.nullcheck_table": {"name": "nullcheck_table", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck_table.sql", "original_file_path": "macros/sql/nullcheck_table.sql", "unique_id": "macro.dbt_utils.nullcheck_table", "macro_sql": "{% macro nullcheck_table(relation) %}\n {{ return(adapter.dispatch('nullcheck_table', 'dbt_utils')(relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__nullcheck_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.042222, "supported_languages": null}, "macro.dbt_utils.default__nullcheck_table": {"name": "default__nullcheck_table", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck_table.sql", "original_file_path": "macros/sql/nullcheck_table.sql", "unique_id": "macro.dbt_utils.default__nullcheck_table", "macro_sql": "{% macro default__nullcheck_table(relation) %}\n\n {%- do dbt_utils._is_relation(relation, 'nullcheck_table') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'nullcheck_table') -%}\n {% set cols = adapter.get_columns_in_relation(relation) %}\n\n select {{ dbt_utils.nullcheck(cols) }}\n from {{relation}}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt_utils.nullcheck"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.04256, "supported_languages": null}, "macro.dbt_utils.get_relations_by_pattern": {"name": "get_relations_by_pattern", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_pattern.sql", "original_file_path": "macros/sql/get_relations_by_pattern.sql", "unique_id": "macro.dbt_utils.get_relations_by_pattern", "macro_sql": "{% macro get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_relations_by_pattern', 'dbt_utils')(schema_pattern, table_pattern, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.043253, "supported_languages": null}, "macro.dbt_utils.default__get_relations_by_pattern": {"name": "default__get_relations_by_pattern", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_pattern.sql", "original_file_path": "macros/sql/get_relations_by_pattern.sql", "unique_id": "macro.dbt_utils.default__get_relations_by_pattern", "macro_sql": "{% macro default__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n {{ dbt_utils.get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude, database) }}\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=database,\n schema=row.table_schema,\n identifier=row.table_name,\n type=row.table_type\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_utils.get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.04423, "supported_languages": null}, "macro.dbt_utils.get_powers_of_two": {"name": "get_powers_of_two", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.get_powers_of_two", "macro_sql": "{% macro get_powers_of_two(upper_bound) %}\n {{ return(adapter.dispatch('get_powers_of_two', 'dbt_utils')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0451672, "supported_languages": null}, "macro.dbt_utils.default__get_powers_of_two": {"name": "default__get_powers_of_two", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.default__get_powers_of_two", "macro_sql": "{% macro default__get_powers_of_two(upper_bound) %}\n\n {% if upper_bound <= 0 %}\n {{ exceptions.raise_compiler_error(\"upper bound must be positive\") }}\n {% endif %}\n\n {% for _ in range(1, 100) %}\n {% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.045595, "supported_languages": null}, "macro.dbt_utils.generate_series": {"name": "generate_series", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.generate_series", "macro_sql": "{% macro generate_series(upper_bound) %}\n {{ return(adapter.dispatch('generate_series', 'dbt_utils')(upper_bound)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__generate_series"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.045795, "supported_languages": null}, "macro.dbt_utils.default__generate_series": {"name": "default__generate_series", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_series.sql", "original_file_path": "macros/sql/generate_series.sql", "unique_id": "macro.dbt_utils.default__generate_series", "macro_sql": "{% macro default__generate_series(upper_bound) %}\n\n {% set n = dbt_utils.get_powers_of_two(upper_bound) %}\n\n with p as (\n select 0 as generated_number union all select 1\n ), unioned as (\n\n select\n\n {% for i in range(n) %}\n p{{i}}.generated_number * power(2, {{i}})\n {% if not loop.last %} + {% endif %}\n {% endfor %}\n + 1\n as generated_number\n\n from\n\n {% for i in range(n) %}\n p as p{{i}}\n {% if not loop.last %} cross join {% endif %}\n {% endfor %}\n\n )\n\n select *\n from unioned\n where generated_number <= {{upper_bound}}\n order by generated_number\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_powers_of_two"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.046339, "supported_languages": null}, "macro.dbt_utils.get_relations_by_prefix": {"name": "get_relations_by_prefix", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_prefix.sql", "original_file_path": "macros/sql/get_relations_by_prefix.sql", "unique_id": "macro.dbt_utils.get_relations_by_prefix", "macro_sql": "{% macro get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_relations_by_prefix', 'dbt_utils')(schema, prefix, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_relations_by_prefix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0471108, "supported_languages": null}, "macro.dbt_utils.default__get_relations_by_prefix": {"name": "default__get_relations_by_prefix", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_relations_by_prefix.sql", "original_file_path": "macros/sql/get_relations_by_prefix.sql", "unique_id": "macro.dbt_utils.default__get_relations_by_prefix", "macro_sql": "{% macro default__get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n {{ dbt_utils.get_tables_by_prefix_sql(schema, prefix, exclude, database) }}\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=database,\n schema=row.table_schema,\n identifier=row.table_name,\n type=row.table_type\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt_utils.get_tables_by_prefix_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.048068, "supported_languages": null}, "macro.dbt_utils.get_tables_by_prefix_sql": {"name": "get_tables_by_prefix_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_prefix_sql.sql", "original_file_path": "macros/sql/get_tables_by_prefix_sql.sql", "unique_id": "macro.dbt_utils.get_tables_by_prefix_sql", "macro_sql": "{% macro get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_tables_by_prefix_sql', 'dbt_utils')(schema, prefix, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_tables_by_prefix_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.048557, "supported_languages": null}, "macro.dbt_utils.default__get_tables_by_prefix_sql": {"name": "default__get_tables_by_prefix_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_prefix_sql.sql", "original_file_path": "macros/sql/get_tables_by_prefix_sql.sql", "unique_id": "macro.dbt_utils.default__get_tables_by_prefix_sql", "macro_sql": "{% macro default__get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %}\n\n {{ dbt_utils.get_tables_by_pattern_sql(\n schema_pattern = schema,\n table_pattern = prefix ~ '%',\n exclude = exclude,\n database = database\n ) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.048866, "supported_languages": null}, "macro.dbt_utils.star": {"name": "star", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/star.sql", "original_file_path": "macros/sql/star.sql", "unique_id": "macro.dbt_utils.star", "macro_sql": "{% macro star(from, relation_alias=False, except=[], prefix='', suffix='', quote_identifiers=True) -%}\r\n {{ return(adapter.dispatch('star', 'dbt_utils')(from, relation_alias, except, prefix, suffix, quote_identifiers)) }}\r\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__star"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0503218, "supported_languages": null}, "macro.dbt_utils.default__star": {"name": "default__star", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/star.sql", "original_file_path": "macros/sql/star.sql", "unique_id": "macro.dbt_utils.default__star", "macro_sql": "{% macro default__star(from, relation_alias=False, except=[], prefix='', suffix='', quote_identifiers=True) -%}\r\n {%- do dbt_utils._is_relation(from, 'star') -%}\r\n {%- do dbt_utils._is_ephemeral(from, 'star') -%}\r\n\r\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\r\n {%- if not execute -%}\r\n {% do return('*') %}\r\n {%- endif -%}\r\n\r\n {% set cols = dbt_utils.get_filtered_columns_in_relation(from, except) %}\r\n\r\n {%- if cols|length <= 0 -%}\r\n {% if flags.WHICH == 'compile' %}\r\n {% set response %}\r\n*\r\n/* No columns were returned. Maybe the relation doesn't exist yet \r\nor all columns were excluded. This star is only output during \r\ndbt compile, and exists to keep SQLFluff happy. */\r\n {% endset %}\r\n {% do return(response) %}\r\n {% else %}\r\n {% do return(\"/* no columns returned from star() macro */\") %}\r\n {% endif %}\r\n {%- else -%}\r\n {%- for col in cols %}\r\n {%- if relation_alias %}{{ relation_alias }}.{% else %}{%- endif -%}\r\n {%- if quote_identifiers -%}\r\n {{ adapter.quote(col)|trim }} {%- if prefix!='' or suffix!='' %} as {{ adapter.quote(prefix ~ col ~ suffix)|trim }} {%- endif -%}\r\n {%- else -%}\r\n {{ col|trim }} {%- if prefix!='' or suffix!='' %} as {{ (prefix ~ col ~ suffix)|trim }} {%- endif -%}\r\n {% endif %}\r\n {%- if not loop.last %},{{ '\\n ' }}{%- endif -%}\r\n {%- endfor -%}\r\n {% endif %}\r\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt_utils.get_filtered_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.052057, "supported_languages": null}, "macro.dbt_utils.unpivot": {"name": "unpivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/unpivot.sql", "original_file_path": "macros/sql/unpivot.sql", "unique_id": "macro.dbt_utils.unpivot", "macro_sql": "{% macro unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value', quote_identifiers=False) -%}\n {{ return(adapter.dispatch('unpivot', 'dbt_utils')(relation, cast_to, exclude, remove, field_name, value_name, quote_identifiers)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__unpivot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.053785, "supported_languages": null}, "macro.dbt_utils.default__unpivot": {"name": "default__unpivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/unpivot.sql", "original_file_path": "macros/sql/unpivot.sql", "unique_id": "macro.dbt_utils.default__unpivot", "macro_sql": "{% macro default__unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value', quote_identifiers=False) -%}\n\n {% if not relation %}\n {{ exceptions.raise_compiler_error(\"Error: argument `relation` is required for `unpivot` macro.\") }}\n {% endif %}\n\n {%- set exclude = exclude if exclude is not none else [] %}\n {%- set remove = remove if remove is not none else [] %}\n\n {%- set include_cols = [] %}\n\n {%- set table_columns = {} %}\n\n {%- do table_columns.update({relation: []}) %}\n\n {%- do dbt_utils._is_relation(relation, 'unpivot') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'unpivot') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) %}\n\n {%- for col in cols -%}\n {%- if col.column.lower() not in remove|map('lower') and col.column.lower() not in exclude|map('lower') -%}\n {% do include_cols.append(col) %}\n {%- endif %}\n {%- endfor %}\n\n\n {%- for col in include_cols -%}\n {%- set current_col_name = adapter.quote(col.column) if quote_identifiers else col.column -%}\n select\n {%- for exclude_col in exclude %}\n {{ adapter.quote(exclude_col) if quote_identifiers else exclude_col }},\n {%- endfor %}\n\n cast('{{ col.column }}' as {{ dbt.type_string() }}) as {{ adapter.quote(field_name) if quote_identifiers else field_name }},\n cast( {% if col.data_type == 'boolean' %}\n {{ dbt.cast_bool_to_text(current_col_name) }}\n {% else %}\n {{ current_col_name }}\n {% endif %}\n as {{ cast_to }}) as {{ adapter.quote(value_name) if quote_identifiers else value_name }}\n\n from {{ relation }}\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n {%- endfor -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.type_string", "macro.dbt.cast_bool_to_text"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.055722, "supported_languages": null}, "macro.dbt_utils.safe_divide": {"name": "safe_divide", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_divide.sql", "original_file_path": "macros/sql/safe_divide.sql", "unique_id": "macro.dbt_utils.safe_divide", "macro_sql": "{% macro safe_divide(numerator, denominator) -%}\n {{ return(adapter.dispatch('safe_divide', 'dbt_utils')(numerator, denominator)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_divide"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.056043, "supported_languages": null}, "macro.dbt_utils.default__safe_divide": {"name": "default__safe_divide", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_divide.sql", "original_file_path": "macros/sql/safe_divide.sql", "unique_id": "macro.dbt_utils.default__safe_divide", "macro_sql": "{% macro default__safe_divide(numerator, denominator) %}\n ( {{ numerator }} ) / nullif( ( {{ denominator }} ), 0)\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.056187, "supported_languages": null}, "macro.dbt_utils.union_relations": {"name": "union_relations", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/union.sql", "original_file_path": "macros/sql/union.sql", "unique_id": "macro.dbt_utils.union_relations", "macro_sql": "{%- macro union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation', where=none) -%}\n {{ return(adapter.dispatch('union_relations', 'dbt_utils')(relations, column_override, include, exclude, source_column_name, where)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__union_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.060104, "supported_languages": null}, "macro.dbt_utils.default__union_relations": {"name": "default__union_relations", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/union.sql", "original_file_path": "macros/sql/union.sql", "unique_id": "macro.dbt_utils.default__union_relations", "macro_sql": "\n\n{%- macro default__union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation', where=none) -%}\n\n {%- if exclude and include -%}\n {{ exceptions.raise_compiler_error(\"Both an exclude and include list were provided to the `union` macro. Only one is allowed\") }}\n {%- endif -%}\n\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. -#}\n {%- if not execute %}\n {{ return('') }}\n {% endif -%}\n\n {%- set column_override = column_override if column_override is not none else {} -%}\n\n {%- set relation_columns = {} -%}\n {%- set column_superset = {} -%}\n {%- set all_excludes = [] -%}\n {%- set all_includes = [] -%}\n\n {%- if exclude -%}\n {%- for exc in exclude -%}\n {%- do all_excludes.append(exc | lower) -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- if include -%}\n {%- for inc in include -%}\n {%- do all_includes.append(inc | lower) -%}\n {%- endfor -%}\n {%- endif -%}\n\n {%- for relation in relations -%}\n\n {%- do relation_columns.update({relation: []}) -%}\n\n {%- do dbt_utils._is_relation(relation, 'union_relations') -%}\n {%- do dbt_utils._is_ephemeral(relation, 'union_relations') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) -%}\n {%- for col in cols -%}\n\n {#- If an exclude list was provided and the column is in the list, do nothing -#}\n {%- if exclude and col.column | lower in all_excludes -%}\n\n {#- If an include list was provided and the column is not in the list, do nothing -#}\n {%- elif include and col.column | lower not in all_includes -%}\n\n {#- Otherwise add the column to the column superset -#}\n {%- else -%}\n\n {#- update the list of columns in this relation -#}\n {%- do relation_columns[relation].append(col.column) -%}\n\n {%- if col.column in column_superset -%}\n\n {%- set stored = column_superset[col.column] -%}\n {%- if col.is_string() and stored.is_string() and col.string_size() > stored.string_size() -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif %}\n\n {%- else -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif -%}\n\n {%- endif -%}\n\n {%- endfor -%}\n {%- endfor -%}\n\n {%- set ordered_column_names = column_superset.keys() -%}\n {%- set dbt_command = flags.WHICH -%}\n\n\n {% if dbt_command in ['run', 'build'] %}\n {% if (include | length > 0 or exclude | length > 0) and not column_superset.keys() %}\n {%- set relations_string -%}\n {%- for relation in relations -%}\n {{ relation.name }}\n {%- if not loop.last %}, {% endif -%}\n {%- endfor -%}\n {%- endset -%}\n\n {%- set error_message -%}\n There were no columns found to union for relations {{ relations_string }}\n {%- endset -%}\n\n {{ exceptions.raise_compiler_error(error_message) }}\n {%- endif -%}\n {%- endif -%}\n\n {%- for relation in relations %}\n\n (\n select\n\n {%- if source_column_name is not none %}\n cast({{ dbt.string_literal(relation) }} as {{ dbt.type_string() }}) as {{ source_column_name }},\n {%- endif %}\n\n {% for col_name in ordered_column_names -%}\n\n {%- set col = column_superset[col_name] %}\n {%- set col_type = column_override.get(col.column, col.data_type) %}\n {%- set col_name = adapter.quote(col_name) if col_name in relation_columns[relation] else 'null' %}\n cast({{ col_name }} as {{ col_type }}) as {{ col.quoted }} {% if not loop.last %},{% endif -%}\n\n {%- endfor %}\n\n from {{ relation }}\n\n {% if where -%}\n where {{ where }}\n {%- endif %}\n )\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n\n {%- endfor -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral", "macro.dbt.string_literal", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.063513, "supported_languages": null}, "macro.dbt_utils.group_by": {"name": "group_by", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/groupby.sql", "original_file_path": "macros/sql/groupby.sql", "unique_id": "macro.dbt_utils.group_by", "macro_sql": "{%- macro group_by(n) -%}\n {{ return(adapter.dispatch('group_by', 'dbt_utils')(n)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__group_by"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0638342, "supported_languages": null}, "macro.dbt_utils.default__group_by": {"name": "default__group_by", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/groupby.sql", "original_file_path": "macros/sql/groupby.sql", "unique_id": "macro.dbt_utils.default__group_by", "macro_sql": "\n\n{%- macro default__group_by(n) -%}\n\n group by {% for i in range(1, n + 1) -%}\n {{ i }}{{ ',' if not loop.last }} \n {%- endfor -%}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.064081, "supported_languages": null}, "macro.dbt_utils.deduplicate": {"name": "deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.deduplicate", "macro_sql": "{%- macro deduplicate(relation, partition_by, order_by) -%}\n {{ return(adapter.dispatch('deduplicate', 'dbt_utils')(relation, partition_by, order_by)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.bigquery__deduplicate"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.064948, "supported_languages": null}, "macro.dbt_utils.default__deduplicate": {"name": "default__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.default__deduplicate", "macro_sql": "\n\n{%- macro default__deduplicate(relation, partition_by, order_by) -%}\n\n with row_numbered as (\n select\n _inner.*,\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) as rn\n from {{ relation }} as _inner\n )\n\n select\n distinct data.*\n from {{ relation }} as data\n {#\n -- Not all DBs will support natural joins but the ones that do include:\n -- Oracle, MySQL, SQLite, Redshift, Teradata, Materialize, Databricks\n -- Apache Spark, SingleStore, Vertica\n -- Those that do not appear to support natural joins include:\n -- SQLServer, Trino, Presto, Rockset, Athena\n #}\n natural join row_numbered\n where row_numbered.rn = 1\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.065161, "supported_languages": null}, "macro.dbt_utils.redshift__deduplicate": {"name": "redshift__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.redshift__deduplicate", "macro_sql": "{% macro redshift__deduplicate(relation, partition_by, order_by) -%}\n\n select *\n from {{ relation }} as tt\n qualify\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) = 1\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.065331, "supported_languages": null}, "macro.dbt_utils.postgres__deduplicate": {"name": "postgres__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.postgres__deduplicate", "macro_sql": "\n{%- macro postgres__deduplicate(relation, partition_by, order_by) -%}\n\n select\n distinct on ({{ partition_by }}) *\n from {{ relation }}\n order by {{ partition_by }}{{ ',' ~ order_by }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.065515, "supported_languages": null}, "macro.dbt_utils.snowflake__deduplicate": {"name": "snowflake__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.snowflake__deduplicate", "macro_sql": "\n{%- macro snowflake__deduplicate(relation, partition_by, order_by) -%}\n\n select *\n from {{ relation }}\n qualify\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) = 1\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0656781, "supported_languages": null}, "macro.dbt_utils.databricks__deduplicate": {"name": "databricks__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.databricks__deduplicate", "macro_sql": "\n{%- macro databricks__deduplicate(relation, partition_by, order_by) -%}\n\n select *\n from {{ relation }}\n qualify\n row_number() over (\n partition by {{ partition_by }}\n order by {{ order_by }}\n ) = 1\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0658402, "supported_languages": null}, "macro.dbt_utils.bigquery__deduplicate": {"name": "bigquery__deduplicate", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/deduplicate.sql", "original_file_path": "macros/sql/deduplicate.sql", "unique_id": "macro.dbt_utils.bigquery__deduplicate", "macro_sql": "\n{%- macro bigquery__deduplicate(relation, partition_by, order_by) -%}\n\n select unique.*\n from (\n select\n array_agg (\n original\n order by {{ order_by }}\n limit 1\n )[offset(0)] unique\n from {{ relation }} original\n group by {{ partition_by }}\n )\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.066011, "supported_languages": null}, "macro.dbt_utils.surrogate_key": {"name": "surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/surrogate_key.sql", "original_file_path": "macros/sql/surrogate_key.sql", "unique_id": "macro.dbt_utils.surrogate_key", "macro_sql": "{%- macro surrogate_key(field_list) -%}\n {% set frustrating_jinja_feature = varargs %}\n {{ return(adapter.dispatch('surrogate_key', 'dbt_utils')(field_list, *varargs)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__surrogate_key"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.066387, "supported_languages": null}, "macro.dbt_utils.default__surrogate_key": {"name": "default__surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/surrogate_key.sql", "original_file_path": "macros/sql/surrogate_key.sql", "unique_id": "macro.dbt_utils.default__surrogate_key", "macro_sql": "\n\n{%- macro default__surrogate_key(field_list) -%}\n\n{%- set error_message = '\nWarning: `dbt_utils.surrogate_key` has been replaced by \\\n`dbt_utils.generate_surrogate_key`. The new macro treats null values \\\ndifferently to empty strings. To restore the behaviour of the original \\\nmacro, add a global variable in dbt_project.yml called \\\n`surrogate_key_treat_nulls_as_empty_strings` to your \\\ndbt_project.yml file with a value of True. \\\nThe {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.raise_compiler_error(error_message) -%}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.066616, "supported_languages": null}, "macro.dbt_utils.safe_add": {"name": "safe_add", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_add.sql", "original_file_path": "macros/sql/safe_add.sql", "unique_id": "macro.dbt_utils.safe_add", "macro_sql": "{%- macro safe_add(field_list) -%}\n {{ return(adapter.dispatch('safe_add', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__safe_add"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.066986, "supported_languages": null}, "macro.dbt_utils.default__safe_add": {"name": "default__safe_add", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/safe_add.sql", "original_file_path": "macros/sql/safe_add.sql", "unique_id": "macro.dbt_utils.default__safe_add", "macro_sql": "\n\n{%- macro default__safe_add(field_list) -%}\n\n{%- if field_list is not iterable or field_list is string or field_list is mapping -%}\n\n{%- set error_message = '\nWarning: the `safe_add` macro now takes a single list argument instead of \\\nstring arguments. The {}.{} model triggered this warning. \\\n'.format(model.package_name, model.name) -%}\n\n{%- do exceptions.warn(error_message) -%}\n\n{%- endif -%}\n\n{% set fields = [] %}\n\n{%- for field in field_list -%}\n\n {% do fields.append(\"coalesce(\" ~ field ~ \", 0)\") %}\n\n{%- endfor -%}\n\n{{ fields|join(' +\\n ') }}\n\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0675, "supported_languages": null}, "macro.dbt_utils.nullcheck": {"name": "nullcheck", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck.sql", "original_file_path": "macros/sql/nullcheck.sql", "unique_id": "macro.dbt_utils.nullcheck", "macro_sql": "{% macro nullcheck(cols) %}\n {{ return(adapter.dispatch('nullcheck', 'dbt_utils')(cols)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__nullcheck"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0678349, "supported_languages": null}, "macro.dbt_utils.default__nullcheck": {"name": "default__nullcheck", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/nullcheck.sql", "original_file_path": "macros/sql/nullcheck.sql", "unique_id": "macro.dbt_utils.default__nullcheck", "macro_sql": "{% macro default__nullcheck(cols) %}\n{%- for col in cols %}\n\n {% if col.is_string() -%}\n\n nullif({{col.name}},'') as {{col.name}}\n\n {%- else -%}\n\n {{col.name}}\n\n {%- endif -%}\n\n{%- if not loop.last -%} , {%- endif -%}\n\n{%- endfor -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.068152, "supported_languages": null}, "macro.dbt_utils.get_tables_by_pattern_sql": {"name": "get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.get_tables_by_pattern_sql", "macro_sql": "{% macro get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(adapter.dispatch('get_tables_by_pattern_sql', 'dbt_utils')\n (schema_pattern, table_pattern, exclude, database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.bigquery__get_tables_by_pattern_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.071887, "supported_languages": null}, "macro.dbt_utils.default__get_tables_by_pattern_sql": {"name": "default__get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.default__get_tables_by_pattern_sql", "macro_sql": "{% macro default__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n select distinct\n table_schema as {{ adapter.quote('table_schema') }},\n table_name as {{ adapter.quote('table_name') }},\n {{ dbt_utils.get_table_types_sql() }}\n from {{ database }}.information_schema.tables\n where table_schema ilike '{{ schema_pattern }}'\n and table_name ilike '{{ table_pattern }}'\n and table_name not ilike '{{ exclude }}'\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.072279, "supported_languages": null}, "macro.dbt_utils.redshift__get_tables_by_pattern_sql": {"name": "redshift__get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.redshift__get_tables_by_pattern_sql", "macro_sql": "{% macro redshift__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {% set sql %}\n select distinct\n table_schema as {{ adapter.quote('table_schema') }},\n table_name as {{ adapter.quote('table_name') }},\n {{ dbt_utils.get_table_types_sql() }}\n from \"{{ database }}\".\"information_schema\".\"tables\"\n where table_schema ilike '{{ schema_pattern }}'\n and table_name ilike '{{ table_pattern }}'\n and table_name not ilike '{{ exclude }}'\n union all\n select distinct\n schemaname as {{ adapter.quote('table_schema') }},\n tablename as {{ adapter.quote('table_name') }},\n 'external' as {{ adapter.quote('table_type') }}\n from svv_external_tables\n where redshift_database_name = '{{ database }}'\n and schemaname ilike '{{ schema_pattern }}'\n and table_name ilike '{{ table_pattern }}'\n and table_name not ilike '{{ exclude }}'\n {% endset %}\n\n {{ return(sql) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.073045, "supported_languages": null}, "macro.dbt_utils.bigquery__get_tables_by_pattern_sql": {"name": "bigquery__get_tables_by_pattern_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils.bigquery__get_tables_by_pattern_sql", "macro_sql": "{% macro bigquery__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {% if '%' in schema_pattern %}\n {% set schemata=dbt_utils._bigquery__get_matching_schemata(schema_pattern, database) %}\n {% else %}\n {% set schemata=[schema_pattern] %}\n {% endif %}\n\n {% set sql %}\n {% for schema in schemata %}\n select distinct\n table_schema,\n table_name,\n {{ dbt_utils.get_table_types_sql() }}\n\n from {{ adapter.quote(database) }}.{{ schema }}.INFORMATION_SCHEMA.TABLES\n where lower(table_name) like lower ('{{ table_pattern }}')\n and lower(table_name) not like lower ('{{ exclude }}')\n\n {% if not loop.last %} union all {% endif %}\n\n {% endfor %}\n {% endset %}\n\n {{ return(sql) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._bigquery__get_matching_schemata", "macro.dbt_utils.get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.07378, "supported_languages": null}, "macro.dbt_utils._bigquery__get_matching_schemata": {"name": "_bigquery__get_matching_schemata", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_tables_by_pattern_sql.sql", "original_file_path": "macros/sql/get_tables_by_pattern_sql.sql", "unique_id": "macro.dbt_utils._bigquery__get_matching_schemata", "macro_sql": "{% macro _bigquery__get_matching_schemata(schema_pattern, database) %}\n {% if execute %}\n\n {% set sql %}\n select schema_name from {{ adapter.quote(database) }}.INFORMATION_SCHEMA.SCHEMATA\n where lower(schema_name) like lower('{{ schema_pattern }}')\n {% endset %}\n\n {% set results=run_query(sql) %}\n\n {% set schemata=results.columns['schema_name'].values() %}\n\n {{ return(schemata) }}\n\n {% else %}\n\n {{ return([]) }}\n\n {% endif %}\n\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0742762, "supported_languages": null}, "macro.dbt_utils.get_column_values": {"name": "get_column_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_column_values.sql", "original_file_path": "macros/sql/get_column_values.sql", "unique_id": "macro.dbt_utils.get_column_values", "macro_sql": "{% macro get_column_values(table, column, order_by='count(*) desc', max_records=none, default=none, where=none) -%}\n {{ return(adapter.dispatch('get_column_values', 'dbt_utils')(table, column, order_by, max_records, default, where)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_column_values"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.075485, "supported_languages": null}, "macro.dbt_utils.default__get_column_values": {"name": "default__get_column_values", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_column_values.sql", "original_file_path": "macros/sql/get_column_values.sql", "unique_id": "macro.dbt_utils.default__get_column_values", "macro_sql": "{% macro default__get_column_values(table, column, order_by='count(*) desc', max_records=none, default=none, where=none) -%}\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n {%- if not execute -%}\n {% set default = [] if not default %}\n {{ return(default) }}\n {% endif %}\n\n {%- do dbt_utils._is_ephemeral(table, 'get_column_values') -%}\n\n {# Not all relations are tables. Renaming for internal clarity without breaking functionality for anyone using named arguments #}\n {# TODO: Change the method signature in a future 0.x.0 release #}\n {%- set target_relation = table -%}\n\n {# adapter.load_relation is a convenience wrapper to avoid building a Relation when we already have one #}\n {% set relation_exists = (load_relation(target_relation)) is not none %}\n\n {%- call statement('get_column_values', fetch_result=true) %}\n\n {%- if not relation_exists and default is none -%}\n\n {{ exceptions.raise_compiler_error(\"In get_column_values(): relation \" ~ target_relation ~ \" does not exist and no default value was provided.\") }}\n\n {%- elif not relation_exists and default is not none -%}\n\n {{ log(\"Relation \" ~ target_relation ~ \" does not exist. Returning the default value: \" ~ default) }}\n\n {{ return(default) }}\n\n {%- else -%}\n\n\n select\n {{ column }} as value\n\n from {{ target_relation }}\n\n {% if where is not none %}\n where {{ where }}\n {% endif %}\n\n group by {{ column }}\n order by {{ order_by }}\n\n {% if max_records is not none %}\n limit {{ max_records }}\n {% endif %}\n\n {% endif %}\n\n {%- endcall -%}\n\n {%- set value_list = load_result('get_column_values') -%}\n\n {%- if value_list and value_list['data'] -%}\n {%- set values = value_list['data'] | map(attribute=0) | list %}\n {{ return(values) }}\n {%- else -%}\n {{ return(default) }}\n {%- endif -%}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_ephemeral", "macro.dbt.load_relation", "macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.076997, "supported_languages": null}, "macro.dbt_utils.pivot": {"name": "pivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/pivot.sql", "original_file_path": "macros/sql/pivot.sql", "unique_id": "macro.dbt_utils.pivot", "macro_sql": "{% macro pivot(column,\n values,\n alias=True,\n agg='sum',\n cmp='=',\n prefix='',\n suffix='',\n then_value=1,\n else_value=0,\n quote_identifiers=True,\n distinct=False) %}\n {{ return(adapter.dispatch('pivot', 'dbt_utils')(column, values, alias, agg, cmp, prefix, suffix, then_value, else_value, quote_identifiers, distinct)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__pivot"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.078115, "supported_languages": null}, "macro.dbt_utils.default__pivot": {"name": "default__pivot", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/pivot.sql", "original_file_path": "macros/sql/pivot.sql", "unique_id": "macro.dbt_utils.default__pivot", "macro_sql": "{% macro default__pivot(column,\n values,\n alias=True,\n agg='sum',\n cmp='=',\n prefix='',\n suffix='',\n then_value=1,\n else_value=0,\n quote_identifiers=True,\n distinct=False) %}\n {% for value in values %}\n {{ agg }}(\n {% if distinct %} distinct {% endif %}\n case\n when {{ column }} {{ cmp }} '{{ dbt.escape_single_quotes(value) }}'\n then {{ then_value }}\n else {{ else_value }}\n end\n )\n {% if alias %}\n {% if quote_identifiers %}\n as {{ adapter.quote(prefix ~ value ~ suffix) }}\n {% else %}\n as {{ dbt_utils.slugify(prefix ~ value ~ suffix) }}\n {% endif %}\n {% endif %}\n {% if not loop.last %},{% endif %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.escape_single_quotes", "macro.dbt_utils.slugify"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0789602, "supported_languages": null}, "macro.dbt_utils.get_filtered_columns_in_relation": {"name": "get_filtered_columns_in_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_filtered_columns_in_relation.sql", "original_file_path": "macros/sql/get_filtered_columns_in_relation.sql", "unique_id": "macro.dbt_utils.get_filtered_columns_in_relation", "macro_sql": "{% macro get_filtered_columns_in_relation(from, except=[]) -%}\n {{ return(adapter.dispatch('get_filtered_columns_in_relation', 'dbt_utils')(from, except)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_filtered_columns_in_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.079454, "supported_languages": null}, "macro.dbt_utils.default__get_filtered_columns_in_relation": {"name": "default__get_filtered_columns_in_relation", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_filtered_columns_in_relation.sql", "original_file_path": "macros/sql/get_filtered_columns_in_relation.sql", "unique_id": "macro.dbt_utils.default__get_filtered_columns_in_relation", "macro_sql": "{% macro default__get_filtered_columns_in_relation(from, except=[]) -%}\n {%- do dbt_utils._is_relation(from, 'get_filtered_columns_in_relation') -%}\n {%- do dbt_utils._is_ephemeral(from, 'get_filtered_columns_in_relation') -%}\n\n {# -- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #}\n {%- if not execute -%}\n {{ return('') }}\n {% endif %}\n\n {%- set include_cols = [] %}\n {%- set cols = adapter.get_columns_in_relation(from) -%}\n {%- set except = except | map(\"lower\") | list %}\n {%- for col in cols -%}\n {%- if col.column|lower not in except -%}\n {% do include_cols.append(col.column) %}\n {%- endif %}\n {%- endfor %}\n\n {{ return(include_cols) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt_utils._is_ephemeral"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.080176, "supported_languages": null}, "macro.dbt_utils.width_bucket": {"name": "width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.width_bucket", "macro_sql": "{% macro width_bucket(expr, min_value, max_value, num_buckets) %}\n {{ return(adapter.dispatch('width_bucket', 'dbt_utils') (expr, min_value, max_value, num_buckets)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__width_bucket"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.080988, "supported_languages": null}, "macro.dbt_utils.default__width_bucket": {"name": "default__width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.default__width_bucket", "macro_sql": "{% macro default__width_bucket(expr, min_value, max_value, num_buckets) -%}\n\n {% set bin_size -%}\n (( {{ max_value }} - {{ min_value }} ) / {{ num_buckets }} )\n {%- endset %}\n (\n -- to break ties when the amount is eaxtly at the bucket egde\n case\n when\n mod(\n {{ dbt.safe_cast(expr, dbt.type_numeric() ) }},\n {{ dbt.safe_cast(bin_size, dbt.type_numeric() ) }}\n ) = 0\n then 1\n else 0\n end\n ) +\n -- Anything over max_value goes the N+1 bucket\n least(\n ceil(\n ({{ expr }} - {{ min_value }})/{{ bin_size }}\n ),\n {{ num_buckets }} + 1\n )\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.safe_cast", "macro.dbt.type_numeric"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.081459, "supported_languages": null}, "macro.dbt_utils.snowflake__width_bucket": {"name": "snowflake__width_bucket", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/width_bucket.sql", "original_file_path": "macros/sql/width_bucket.sql", "unique_id": "macro.dbt_utils.snowflake__width_bucket", "macro_sql": "{% macro snowflake__width_bucket(expr, min_value, max_value, num_buckets) %}\n width_bucket({{ expr }}, {{ min_value }}, {{ max_value }}, {{ num_buckets }} )\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0816572, "supported_languages": null}, "macro.dbt_utils.get_query_results_as_dict": {"name": "get_query_results_as_dict", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_query_results_as_dict.sql", "original_file_path": "macros/sql/get_query_results_as_dict.sql", "unique_id": "macro.dbt_utils.get_query_results_as_dict", "macro_sql": "{% macro get_query_results_as_dict(query) %}\n {{ return(adapter.dispatch('get_query_results_as_dict', 'dbt_utils')(query)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_query_results_as_dict"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0820532, "supported_languages": null}, "macro.dbt_utils.default__get_query_results_as_dict": {"name": "default__get_query_results_as_dict", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_query_results_as_dict.sql", "original_file_path": "macros/sql/get_query_results_as_dict.sql", "unique_id": "macro.dbt_utils.default__get_query_results_as_dict", "macro_sql": "{% macro default__get_query_results_as_dict(query) %}\n\n{# This macro returns a dictionary of the form {column_name: (tuple_of_results)} #}\n\n {%- call statement('get_query_results', fetch_result=True,auto_begin=false) -%}\n\n {{ query }}\n\n {%- endcall -%}\n\n {% set sql_results={} %}\n\n {%- if execute -%}\n {% set sql_results_table = load_result('get_query_results').table.columns %}\n {% for column_name, column in sql_results_table.items() %}\n {% do sql_results.update({column_name: column.values()}) %}\n {% endfor %}\n {%- endif -%}\n\n {{ return(sql_results) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0826502, "supported_languages": null}, "macro.dbt_utils.generate_surrogate_key": {"name": "generate_surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_surrogate_key.sql", "original_file_path": "macros/sql/generate_surrogate_key.sql", "unique_id": "macro.dbt_utils.generate_surrogate_key", "macro_sql": "{%- macro generate_surrogate_key(field_list) -%}\n {{ return(adapter.dispatch('generate_surrogate_key', 'dbt_utils')(field_list)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__generate_surrogate_key"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.083123, "supported_languages": null}, "macro.dbt_utils.default__generate_surrogate_key": {"name": "default__generate_surrogate_key", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/generate_surrogate_key.sql", "original_file_path": "macros/sql/generate_surrogate_key.sql", "unique_id": "macro.dbt_utils.default__generate_surrogate_key", "macro_sql": "\n\n{%- macro default__generate_surrogate_key(field_list) -%}\n\n{%- if var('surrogate_key_treat_nulls_as_empty_strings', False) -%}\n {%- set default_null_value = \"\" -%}\n{%- else -%}\n {%- set default_null_value = '_dbt_utils_surrogate_key_null_' -%}\n{%- endif -%}\n\n{%- set fields = [] -%}\n\n{%- for field in field_list -%}\n\n {%- do fields.append(\n \"coalesce(cast(\" ~ field ~ \" as \" ~ dbt.type_string() ~ \"), '\" ~ default_null_value ~\"')\"\n ) -%}\n\n {%- if not loop.last %}\n {%- do fields.append(\"'-'\") -%}\n {%- endif -%}\n\n{%- endfor -%}\n\n{{ dbt.hash(dbt.concat(fields)) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.hash", "macro.dbt.concat"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.083767, "supported_languages": null}, "macro.dbt_utils.get_table_types_sql": {"name": "get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.get_table_types_sql", "macro_sql": "{%- macro get_table_types_sql() -%}\n {{ return(adapter.dispatch('get_table_types_sql', 'dbt_utils')()) }}\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_utils.default__get_table_types_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.084333, "supported_languages": null}, "macro.dbt_utils.default__get_table_types_sql": {"name": "default__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.default__get_table_types_sql", "macro_sql": "{% macro default__get_table_types_sql() %}\n case table_type\n when 'BASE TABLE' then 'table'\n when 'EXTERNAL TABLE' then 'external'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0844748, "supported_languages": null}, "macro.dbt_utils.postgres__get_table_types_sql": {"name": "postgres__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.postgres__get_table_types_sql", "macro_sql": "{% macro postgres__get_table_types_sql() %}\n case table_type\n when 'BASE TABLE' then 'table'\n when 'FOREIGN' then 'external'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.084618, "supported_languages": null}, "macro.dbt_utils.databricks__get_table_types_sql": {"name": "databricks__get_table_types_sql", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_table_types_sql.sql", "original_file_path": "macros/sql/get_table_types_sql.sql", "unique_id": "macro.dbt_utils.databricks__get_table_types_sql", "macro_sql": "{% macro databricks__get_table_types_sql() %}\n case table_type\n when 'MANAGED' then 'table'\n when 'BASE TABLE' then 'table'\n when 'MATERIALIZED VIEW' then 'materializedview'\n else lower(table_type)\n end as {{ adapter.quote('table_type') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.084764, "supported_languages": null}, "macro.dbt_utils.get_single_value": {"name": "get_single_value", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_single_value.sql", "original_file_path": "macros/sql/get_single_value.sql", "unique_id": "macro.dbt_utils.get_single_value", "macro_sql": "{% macro get_single_value(query, default=none) %}\n {{ return(adapter.dispatch('get_single_value', 'dbt_utils')(query, default)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.default__get_single_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.085304, "supported_languages": null}, "macro.dbt_utils.default__get_single_value": {"name": "default__get_single_value", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/get_single_value.sql", "original_file_path": "macros/sql/get_single_value.sql", "unique_id": "macro.dbt_utils.default__get_single_value", "macro_sql": "{% macro default__get_single_value(query, default) %}\n\n{# This macro returns the (0, 0) record in a query, i.e. the first row of the first column #}\n\n {%- call statement('get_query_result', fetch_result=True, auto_begin=false) -%}\n\n {{ query }}\n\n {%- endcall -%}\n\n {%- if execute -%}\n\n {% set r = load_result('get_query_result').table.columns[0].values() %}\n {% if r | length == 0 %}\n {% do print('Query `' ~ query ~ '` returned no rows. Using the default value: ' ~ default) %}\n {% set sql_result = default %}\n {% else %}\n {% set sql_result = r[0] %}\n {% endif %}\n \n {%- else -%}\n \n {% set sql_result = default %}\n \n {%- endif -%}\n\n {% do return(sql_result) %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.086112, "supported_languages": null}, "macro.dbt_utils.degrees_to_radians": {"name": "degrees_to_radians", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.degrees_to_radians", "macro_sql": "{% macro degrees_to_radians(degrees) -%}\n acos(-1) * {{degrees}} / 180\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.087242, "supported_languages": null}, "macro.dbt_utils.haversine_distance": {"name": "haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.haversine_distance", "macro_sql": "{% macro haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n {{ return(adapter.dispatch('haversine_distance', 'dbt_utils')(lat1,lon1,lat2,lon2,unit)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.bigquery__haversine_distance"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0875242, "supported_languages": null}, "macro.dbt_utils.default__haversine_distance": {"name": "default__haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.default__haversine_distance", "macro_sql": "{% macro default__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n{%- if unit == 'mi' %}\n {% set conversion_rate = 1 %}\n{% elif unit == 'km' %}\n {% set conversion_rate = 1.60934 %}\n{% else %}\n {{ exceptions.raise_compiler_error(\"unit input must be one of 'mi' or 'km'. Got \" ~ unit) }}\n{% endif %}\n\n 2 * 3961 * asin(sqrt(power((sin(radians(({{ lat2 }} - {{ lat1 }}) / 2))), 2) +\n cos(radians({{lat1}})) * cos(radians({{lat2}})) *\n power((sin(radians(({{ lon2 }} - {{ lon1 }}) / 2))), 2))) * {{ conversion_rate }}\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.088118, "supported_languages": null}, "macro.dbt_utils.bigquery__haversine_distance": {"name": "bigquery__haversine_distance", "resource_type": "macro", "package_name": "dbt_utils", "path": "macros/sql/haversine_distance.sql", "original_file_path": "macros/sql/haversine_distance.sql", "unique_id": "macro.dbt_utils.bigquery__haversine_distance", "macro_sql": "{% macro bigquery__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}\n{% set radians_lat1 = dbt_utils.degrees_to_radians(lat1) %}\n{% set radians_lat2 = dbt_utils.degrees_to_radians(lat2) %}\n{% set radians_lon1 = dbt_utils.degrees_to_radians(lon1) %}\n{% set radians_lon2 = dbt_utils.degrees_to_radians(lon2) %}\n{%- if unit == 'mi' %}\n {% set conversion_rate = 1 %}\n{% elif unit == 'km' %}\n {% set conversion_rate = 1.60934 %}\n{% else %}\n {{ exceptions.raise_compiler_error(\"unit input must be one of 'mi' or 'km'. Got \" ~ unit) }}\n{% endif %}\n 2 * 3961 * asin(sqrt(power(sin(({{ radians_lat2 }} - {{ radians_lat1 }}) / 2), 2) +\n cos({{ radians_lat1 }}) * cos({{ radians_lat2 }}) *\n power(sin(({{ radians_lon2 }} - {{ radians_lon1 }}) / 2), 2))) * {{ conversion_rate }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.degrees_to_radians"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.088937, "supported_languages": null}, "macro.spark_utils.get_tables": {"name": "get_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_tables", "macro_sql": "{% macro get_tables(table_regex_pattern='.*') %}\n\n {% set tables = [] %}\n {% for database in spark__list_schemas('not_used') %}\n {% for table in spark__list_relations_without_caching(database[0]) %}\n {% set db_tablename = database[0] ~ \".\" ~ table[1] %}\n {% set is_match = modules.re.match(table_regex_pattern, db_tablename) %}\n {% if is_match %}\n {% call statement('table_detail', fetch_result=True) -%}\n describe extended {{ db_tablename }}\n {% endcall %}\n\n {% set table_type = load_result('table_detail').table|reverse|selectattr(0, 'in', ('type', 'TYPE', 'Type'))|first %}\n {% if table_type[1]|lower != 'view' %}\n {{ tables.append(db_tablename) }}\n {% endif %}\n {% endif %}\n {% endfor %}\n {% endfor %}\n {{ return(tables) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.094492, "supported_languages": null}, "macro.spark_utils.get_delta_tables": {"name": "get_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_delta_tables", "macro_sql": "{% macro get_delta_tables(table_regex_pattern='.*') %}\n\n {% set delta_tables = [] %}\n {% for db_tablename in get_tables(table_regex_pattern) %}\n {% call statement('table_detail', fetch_result=True) -%}\n describe extended {{ db_tablename }}\n {% endcall %}\n\n {% set table_type = load_result('table_detail').table|reverse|selectattr(0, 'in', ('provider', 'PROVIDER', 'Provider'))|first %}\n {% if table_type[1]|lower == 'delta' %}\n {{ delta_tables.append(db_tablename) }}\n {% endif %}\n {% endfor %}\n {{ return(delta_tables) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_tables", "macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0951831, "supported_languages": null}, "macro.spark_utils.get_statistic_columns": {"name": "get_statistic_columns", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.get_statistic_columns", "macro_sql": "{% macro get_statistic_columns(table) %}\n\n {% call statement('input_columns', fetch_result=True) %}\n SHOW COLUMNS IN {{ table }}\n {% endcall %}\n {% set input_columns = load_result('input_columns').table %}\n\n {% set output_columns = [] %}\n {% for column in input_columns %}\n {% call statement('column_information', fetch_result=True) %}\n DESCRIBE TABLE {{ table }} `{{ column[0] }}`\n {% endcall %}\n {% if not load_result('column_information').table[1][1].startswith('struct') and not load_result('column_information').table[1][1].startswith('array') %}\n {{ output_columns.append('`' ~ column[0] ~ '`') }}\n {% endif %}\n {% endfor %}\n {{ return(output_columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.096052, "supported_languages": null}, "macro.spark_utils.spark_optimize_delta_tables": {"name": "spark_optimize_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_optimize_delta_tables", "macro_sql": "{% macro spark_optimize_delta_tables(table_regex_pattern='.*') %}\n\n {% for table in get_delta_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Optimizing \" ~ table) }}\n {% do run_query(\"optimize \" ~ table) %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_delta_tables", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.097054, "supported_languages": null}, "macro.spark_utils.spark_vacuum_delta_tables": {"name": "spark_vacuum_delta_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_vacuum_delta_tables", "macro_sql": "{% macro spark_vacuum_delta_tables(table_regex_pattern='.*') %}\n\n {% for table in get_delta_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Vacuuming \" ~ table) }}\n {% do run_query(\"vacuum \" ~ table) %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_delta_tables", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.0978181, "supported_languages": null}, "macro.spark_utils.spark_analyze_tables": {"name": "spark_analyze_tables", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/maintenance_operation.sql", "original_file_path": "macros/maintenance_operation.sql", "unique_id": "macro.spark_utils.spark_analyze_tables", "macro_sql": "{% macro spark_analyze_tables(table_regex_pattern='.*') %}\n\n {% for table in get_tables(table_regex_pattern) %}\n {% set start=modules.datetime.datetime.now() %}\n {% set columns = get_statistic_columns(table) | join(',') %}\n {% set message_prefix=loop.index ~ \" of \" ~ loop.length %}\n {{ dbt_utils.log_info(message_prefix ~ \" Analyzing \" ~ table) }}\n {% if columns != '' %}\n {% do run_query(\"analyze table \" ~ table ~ \" compute statistics for columns \" ~ columns) %}\n {% endif %}\n {% set end=modules.datetime.datetime.now() %}\n {% set total_seconds = (end - start).total_seconds() | round(2) %}\n {{ dbt_utils.log_info(message_prefix ~ \" Finished \" ~ table ~ \" in \" ~ total_seconds ~ \"s\") }}\n {% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.get_tables", "macro.spark_utils.get_statistic_columns", "macro.dbt_utils.log_info", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.098808, "supported_languages": null}, "macro.spark_utils.spark__concat": {"name": "spark__concat", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/concat.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/concat.sql", "unique_id": "macro.spark_utils.spark__concat", "macro_sql": "{% macro spark__concat(fields) -%}\n concat({{ fields|join(', ') }})\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.099018, "supported_languages": null}, "macro.spark_utils.spark__type_numeric": {"name": "spark__type_numeric", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/datatypes.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/datatypes.sql", "unique_id": "macro.spark_utils.spark__type_numeric", "macro_sql": "{% macro spark__type_numeric() %}\n decimal(28, 6)\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.099137, "supported_languages": null}, "macro.spark_utils.spark__dateadd": {"name": "spark__dateadd", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/dateadd.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/dateadd.sql", "unique_id": "macro.spark_utils.spark__dateadd", "macro_sql": "{% macro spark__dateadd(datepart, interval, from_date_or_timestamp) %}\n\n {%- set clock_component -%}\n {# make sure the dates + timestamps are real, otherwise raise an error asap #}\n to_unix_timestamp({{ spark_utils.assert_not_null('to_timestamp', from_date_or_timestamp) }})\n - to_unix_timestamp({{ spark_utils.assert_not_null('date', from_date_or_timestamp) }})\n {%- endset -%}\n\n {%- if datepart in ['day', 'week'] -%}\n \n {%- set multiplier = 7 if datepart == 'week' else 1 -%}\n\n to_timestamp(\n to_unix_timestamp(\n date_add(\n {{ spark_utils.assert_not_null('date', from_date_or_timestamp) }},\n cast({{interval}} * {{multiplier}} as int)\n )\n ) + {{clock_component}}\n )\n\n {%- elif datepart in ['month', 'quarter', 'year'] -%}\n \n {%- set multiplier -%} \n {%- if datepart == 'month' -%} 1\n {%- elif datepart == 'quarter' -%} 3\n {%- elif datepart == 'year' -%} 12\n {%- endif -%}\n {%- endset -%}\n\n to_timestamp(\n to_unix_timestamp(\n add_months(\n {{ spark_utils.assert_not_null('date', from_date_or_timestamp) }},\n cast({{interval}} * {{multiplier}} as int)\n )\n ) + {{clock_component}}\n )\n\n {%- elif datepart in ('hour', 'minute', 'second', 'millisecond', 'microsecond') -%}\n \n {%- set multiplier -%} \n {%- if datepart == 'hour' -%} 3600\n {%- elif datepart == 'minute' -%} 60\n {%- elif datepart == 'second' -%} 1\n {%- elif datepart == 'millisecond' -%} (1/1000000)\n {%- elif datepart == 'microsecond' -%} (1/1000000)\n {%- endif -%}\n {%- endset -%}\n\n to_timestamp(\n {{ spark_utils.assert_not_null('to_unix_timestamp', from_date_or_timestamp) }}\n + cast({{interval}} * {{multiplier}} as int)\n )\n\n {%- else -%}\n\n {{ exceptions.raise_compiler_error(\"macro dateadd not implemented for datepart ~ '\" ~ datepart ~ \"' ~ on Spark\") }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.102161, "supported_languages": null}, "macro.spark_utils.spark__datediff": {"name": "spark__datediff", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/datediff.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/datediff.sql", "unique_id": "macro.spark_utils.spark__datediff", "macro_sql": "{% macro spark__datediff(first_date, second_date, datepart) %}\n\n {%- if datepart in ['day', 'week', 'month', 'quarter', 'year'] -%}\n \n {# make sure the dates are real, otherwise raise an error asap #}\n {% set first_date = spark_utils.assert_not_null('date', first_date) %}\n {% set second_date = spark_utils.assert_not_null('date', second_date) %}\n \n {%- endif -%}\n \n {%- if datepart == 'day' -%}\n \n datediff({{second_date}}, {{first_date}})\n \n {%- elif datepart == 'week' -%}\n \n case when {{first_date}} < {{second_date}}\n then floor(datediff({{second_date}}, {{first_date}})/7)\n else ceil(datediff({{second_date}}, {{first_date}})/7)\n end\n \n -- did we cross a week boundary (Sunday)?\n + case\n when {{first_date}} < {{second_date}} and dayofweek({{second_date}}) < dayofweek({{first_date}}) then 1\n when {{first_date}} > {{second_date}} and dayofweek({{second_date}}) > dayofweek({{first_date}}) then -1\n else 0 end\n\n {%- elif datepart == 'month' -%}\n\n case when {{first_date}} < {{second_date}}\n then floor(months_between(date({{second_date}}), date({{first_date}})))\n else ceil(months_between(date({{second_date}}), date({{first_date}})))\n end\n \n -- did we cross a month boundary?\n + case\n when {{first_date}} < {{second_date}} and dayofmonth({{second_date}}) < dayofmonth({{first_date}}) then 1\n when {{first_date}} > {{second_date}} and dayofmonth({{second_date}}) > dayofmonth({{first_date}}) then -1\n else 0 end\n \n {%- elif datepart == 'quarter' -%}\n \n case when {{first_date}} < {{second_date}}\n then floor(months_between(date({{second_date}}), date({{first_date}}))/3)\n else ceil(months_between(date({{second_date}}), date({{first_date}}))/3)\n end\n \n -- did we cross a quarter boundary?\n + case\n when {{first_date}} < {{second_date}} and (\n (dayofyear({{second_date}}) - (quarter({{second_date}}) * 365/4))\n < (dayofyear({{first_date}}) - (quarter({{first_date}}) * 365/4))\n ) then 1\n when {{first_date}} > {{second_date}} and (\n (dayofyear({{second_date}}) - (quarter({{second_date}}) * 365/4))\n > (dayofyear({{first_date}}) - (quarter({{first_date}}) * 365/4))\n ) then -1\n else 0 end\n\n {%- elif datepart == 'year' -%}\n \n year({{second_date}}) - year({{first_date}})\n\n {%- elif datepart in ('hour', 'minute', 'second', 'millisecond', 'microsecond') -%}\n \n {%- set divisor -%} \n {%- if datepart == 'hour' -%} 3600\n {%- elif datepart == 'minute' -%} 60\n {%- elif datepart == 'second' -%} 1\n {%- elif datepart == 'millisecond' -%} (1/1000)\n {%- elif datepart == 'microsecond' -%} (1/1000000)\n {%- endif -%}\n {%- endset -%}\n\n case when {{first_date}} < {{second_date}}\n then ceil((\n {# make sure the timestamps are real, otherwise raise an error asap #}\n {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', second_date)) }}\n - {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', first_date)) }}\n ) / {{divisor}})\n else floor((\n {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', second_date)) }}\n - {{ spark_utils.assert_not_null('to_unix_timestamp', spark_utils.assert_not_null('to_timestamp', first_date)) }}\n ) / {{divisor}})\n end\n \n {% if datepart == 'millisecond' %}\n + cast(date_format({{second_date}}, 'SSS') as int)\n - cast(date_format({{first_date}}, 'SSS') as int)\n {% endif %}\n \n {% if datepart == 'microsecond' %} \n {% set capture_str = '[0-9]{4}-[0-9]{2}-[0-9]{2}.[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]{6})' %}\n -- Spark doesn't really support microseconds, so this is a massive hack!\n -- It will only work if the timestamp-string is of the format\n -- 'yyyy-MM-dd-HH mm.ss.SSSSSS'\n + cast(regexp_extract({{second_date}}, '{{capture_str}}', 1) as int)\n - cast(regexp_extract({{first_date}}, '{{capture_str}}', 1) as int) \n {% endif %}\n\n {%- else -%}\n\n {{ exceptions.raise_compiler_error(\"macro datediff not implemented for datepart ~ '\" ~ datepart ~ \"' ~ on Spark\") }}\n\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.110278, "supported_languages": null}, "macro.spark_utils.spark__current_timestamp": {"name": "spark__current_timestamp", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "unique_id": "macro.spark_utils.spark__current_timestamp", "macro_sql": "{% macro spark__current_timestamp() %}\n current_timestamp()\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.110443, "supported_languages": null}, "macro.spark_utils.spark__current_timestamp_in_utc": {"name": "spark__current_timestamp_in_utc", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/current_timestamp.sql", "unique_id": "macro.spark_utils.spark__current_timestamp_in_utc", "macro_sql": "{% macro spark__current_timestamp_in_utc() %}\n unix_timestamp()\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.110523, "supported_languages": null}, "macro.spark_utils.spark__split_part": {"name": "spark__split_part", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/cross_db_utils/split_part.sql", "original_file_path": "macros/dbt_utils/cross_db_utils/split_part.sql", "unique_id": "macro.spark_utils.spark__split_part", "macro_sql": "{% macro spark__split_part(string_text, delimiter_text, part_number) %}\n\n {% set delimiter_expr %}\n \n -- escape if starts with a special character\n case when regexp_extract({{ delimiter_text }}, '([^A-Za-z0-9])(.*)', 1) != '_'\n then concat('\\\\', {{ delimiter_text }})\n else {{ delimiter_text }} end\n \n {% endset %}\n\n {% set split_part_expr %}\n \n split(\n {{ string_text }},\n {{ delimiter_expr }}\n )[({{ part_number - 1 }})]\n \n {% endset %}\n \n {{ return(split_part_expr) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.111108, "supported_languages": null}, "macro.spark_utils.spark__get_relations_by_pattern": {"name": "spark__get_relations_by_pattern", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_relations_by_pattern", "macro_sql": "{% macro spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n\n {%- call statement('get_tables', fetch_result=True) %}\n\n show table extended in {{ schema_pattern }} like '{{ table_pattern }}'\n\n {%- endcall -%}\n\n {%- set table_list = load_result('get_tables') -%}\n\n {%- if table_list and table_list['table'] -%}\n {%- set tbl_relations = [] -%}\n {%- for row in table_list['table'] -%}\n {%- set tbl_relation = api.Relation.create(\n database=None,\n schema=row[0],\n identifier=row[1],\n type=('view' if 'Type: VIEW' in row[3] else 'table')\n ) -%}\n {%- do tbl_relations.append(tbl_relation) -%}\n {%- endfor -%}\n\n {{ return(tbl_relations) }}\n {%- else -%}\n {{ return([]) }}\n {%- endif -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.112745, "supported_languages": null}, "macro.spark_utils.spark__get_relations_by_prefix": {"name": "spark__get_relations_by_prefix", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_relations_by_prefix", "macro_sql": "{% macro spark__get_relations_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {% set table_pattern = table_pattern ~ '*' %}\n {{ return(spark_utils.spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1130712, "supported_languages": null}, "macro.spark_utils.spark__get_tables_by_pattern": {"name": "spark__get_tables_by_pattern", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_tables_by_pattern", "macro_sql": "{% macro spark__get_tables_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(spark_utils.spark__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_pattern"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.113339, "supported_languages": null}, "macro.spark_utils.spark__get_tables_by_prefix": {"name": "spark__get_tables_by_prefix", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "original_file_path": "macros/dbt_utils/sql/get_relations_by_prefix.sql", "unique_id": "macro.spark_utils.spark__get_tables_by_prefix", "macro_sql": "{% macro spark__get_tables_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database) %}\n {{ return(spark_utils.spark__get_relations_by_prefix(schema_pattern, table_pattern, exclude='', database=target.database)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.spark_utils.spark__get_relations_by_prefix"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.113606, "supported_languages": null}, "macro.spark_utils.assert_not_null": {"name": "assert_not_null", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/etc/assert_not_null.sql", "original_file_path": "macros/etc/assert_not_null.sql", "unique_id": "macro.spark_utils.assert_not_null", "macro_sql": "{% macro assert_not_null(function, arg) -%}\n {{ return(adapter.dispatch('assert_not_null', 'spark_utils')(function, arg)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.spark_utils.default__assert_not_null"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.113929, "supported_languages": null}, "macro.spark_utils.default__assert_not_null": {"name": "default__assert_not_null", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/etc/assert_not_null.sql", "original_file_path": "macros/etc/assert_not_null.sql", "unique_id": "macro.spark_utils.default__assert_not_null", "macro_sql": "{% macro default__assert_not_null(function, arg) %}\n\n coalesce({{function}}({{arg}}), nvl2({{function}}({{arg}}), assert_true({{function}}({{arg}}) is not null), null))\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.114122, "supported_languages": null}, "macro.spark_utils.spark__convert_timezone": {"name": "spark__convert_timezone", "resource_type": "macro", "package_name": "spark_utils", "path": "macros/snowplow/convert_timezone.sql", "original_file_path": "macros/snowplow/convert_timezone.sql", "unique_id": "macro.spark_utils.spark__convert_timezone", "macro_sql": "{% macro spark__convert_timezone(in_tz, out_tz, in_timestamp) %}\n from_utc_timestamp(to_utc_timestamp({{in_timestamp}}, {{in_tz}}), {{out_tz}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1143239, "supported_languages": null}, "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns": {"name": "snapchat_ads_persist_pass_through_columns", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_persist_pass_through_columns.sql", "original_file_path": "macros/snapchat_ads_persist_pass_through_columns.sql", "unique_id": "macro.snapchat_ads.snapchat_ads_persist_pass_through_columns", "macro_sql": "{% macro snapchat_ads_persist_pass_through_columns(pass_through_variable, identifier=none, transform='', coalesce_with=none, except_variable=none, exclude_fields=[]) %}\n\n{% set except_fields = [] %}\n{% if except_variable is not none %}\n {# Start creating list of fields to exclude #}\n {% for item in var(except_variable) %}\n {% do except_fields.append(item.name) %}\n {% endfor %}\n{% endif %}\n\n{% for field in exclude_fields %}\n {% do except_fields.append(field) %}\n{% endfor %}\n\n{% if var(pass_through_variable, none) %}\n {% for field in var(pass_through_variable) %}\n {% set field_name = field.alias|default(field.name)|lower if field is mapping else field|lower %}\n \n {% if field_name not in except_fields %}\n , {{ transform ~ '(' ~ ('coalesce(' if coalesce_with is not none else '') ~ (identifier ~ '.' if identifier else '') ~ field_name ~ ((', ' ~ coalesce_with ~ ')') if coalesce_with is not none else '') ~ ')' }} as {{ field_name }}\n {% endif %}\n\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.115872, "supported_languages": null}, "macro.snapchat_ads.snapchat_ads_extract_url_parameter": {"name": "snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.snapchat_ads_extract_url_parameter", "macro_sql": "{% macro snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{{ return(adapter.dispatch('snapchat_ads_extract_url_parameter', 'snapchat_ads') (field, url_parameter)) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.snapchat_ads.default__snapchat_ads_extract_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.116232, "supported_languages": null}, "macro.snapchat_ads.default__snapchat_ads_extract_url_parameter": {"name": "default__snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.default__snapchat_ads_extract_url_parameter", "macro_sql": "{% macro default__snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{{ dbt_utils.get_url_parameter(field, url_parameter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1163788, "supported_languages": null}, "macro.snapchat_ads.spark__snapchat_ads_extract_url_parameter": {"name": "spark__snapchat_ads_extract_url_parameter", "resource_type": "macro", "package_name": "snapchat_ads", "path": "macros/snapchat_ads_extract_url_parameters.sql", "original_file_path": "macros/snapchat_ads_extract_url_parameters.sql", "unique_id": "macro.snapchat_ads.spark__snapchat_ads_extract_url_parameter", "macro_sql": "{% macro spark__snapchat_ads_extract_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"=([^&]+)'\" -%}\nnullif(regexp_extract({{ field }}, {{ formatted_url_parameter }}, 1), '')\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.116586, "supported_languages": null}, "macro.fivetran_utils.enabled_vars": {"name": "enabled_vars", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/enabled_vars.sql", "original_file_path": "macros/enabled_vars.sql", "unique_id": "macro.fivetran_utils.enabled_vars", "macro_sql": "{% macro enabled_vars(vars) %}\n\n{% for v in vars %}\n \n {% if var(v, True) == False %}\n {{ return(False) }}\n {% endif %}\n\n{% endfor %}\n\n{{ return(True) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.116971, "supported_languages": null}, "macro.fivetran_utils.percentile": {"name": "percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.percentile", "macro_sql": "{% macro percentile(percentile_field, partition_field, percent) -%}\n\n{{ adapter.dispatch('percentile', 'fivetran_utils') (percentile_field, partition_field, percent) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__percentile"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1179352, "supported_languages": null}, "macro.fivetran_utils.default__percentile": {"name": "default__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.default__percentile", "macro_sql": "{% macro default__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n over ( partition by {{ partition_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1181052, "supported_languages": null}, "macro.fivetran_utils.redshift__percentile": {"name": "redshift__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.redshift__percentile", "macro_sql": "{% macro redshift__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n over ( partition by {{ partition_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1182709, "supported_languages": null}, "macro.fivetran_utils.bigquery__percentile": {"name": "bigquery__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.bigquery__percentile", "macro_sql": "{% macro bigquery__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percentile_field }}, \n {{ percent }}) \n over (partition by {{ partition_field }} \n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.118499, "supported_languages": null}, "macro.fivetran_utils.postgres__percentile": {"name": "postgres__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.postgres__percentile", "macro_sql": "{% macro postgres__percentile(percentile_field, partition_field, percent) %}\n\n percentile_cont( \n {{ percent }} )\n within group ( order by {{ percentile_field }} )\n /* have to group by partition field */\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1186502, "supported_languages": null}, "macro.fivetran_utils.spark__percentile": {"name": "spark__percentile", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/percentile.sql", "original_file_path": "macros/percentile.sql", "unique_id": "macro.fivetran_utils.spark__percentile", "macro_sql": "{% macro spark__percentile(percentile_field, partition_field, percent) %}\n\n percentile( \n {{ percentile_field }}, \n {{ percent }}) \n over (partition by {{ partition_field }} \n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.118808, "supported_languages": null}, "macro.fivetran_utils.pivot_json_extract": {"name": "pivot_json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/pivot_json_extract.sql", "original_file_path": "macros/pivot_json_extract.sql", "unique_id": "macro.fivetran_utils.pivot_json_extract", "macro_sql": "{% macro pivot_json_extract(string, list_of_properties) %}\n\n{%- for property in list_of_properties -%}\n{%- if property is mapping -%}\nreplace( {{ fivetran_utils.json_extract(string, property.name) }}, '\"', '') as {{ property.alias if property.alias else property.name | replace(' ', '_') | replace('.', '_') | lower }}\n\n{%- else -%}\nreplace( {{ fivetran_utils.json_extract(string, property) }}, '\"', '') as {{ property | replace(' ', '_') | lower }}\n\n{%- endif -%}\n{%- if not loop.last -%},{%- endif %}\n{% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.json_extract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1195672, "supported_languages": null}, "macro.fivetran_utils.persist_pass_through_columns": {"name": "persist_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/persist_pass_through_columns.sql", "original_file_path": "macros/persist_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.persist_pass_through_columns", "macro_sql": "{% macro persist_pass_through_columns(pass_through_variable, identifier=none, transform='') %}\n\n{% if var(pass_through_variable, none) %}\n {% for field in var(pass_through_variable) %}\n , {{ transform ~ '(' ~ (identifier ~ '.' if identifier else '') ~ (field.alias if field.alias else field.name) ~ ')' }} as {{ field.alias if field.alias else field.name }}\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.120186, "supported_languages": null}, "macro.fivetran_utils.json_parse": {"name": "json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.json_parse", "macro_sql": "{% macro json_parse(string, string_path) -%}\n\n{{ adapter.dispatch('json_parse', 'fivetran_utils') (string, string_path) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__json_parse"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.121554, "supported_languages": null}, "macro.fivetran_utils.default__json_parse": {"name": "default__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.default__json_parse", "macro_sql": "{% macro default__json_parse(string, string_path) %}\n\n json_extract_path_text({{string}}, {%- for s in string_path -%}'{{ s }}'{%- if not loop.last -%},{%- endif -%}{%- endfor -%} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.12179, "supported_languages": null}, "macro.fivetran_utils.redshift__json_parse": {"name": "redshift__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.redshift__json_parse", "macro_sql": "{% macro redshift__json_parse(string, string_path) %}\n\n json_extract_path_text({{string}}, {%- for s in string_path -%}'{{ s }}'{%- if not loop.last -%},{%- endif -%}{%- endfor -%} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1220942, "supported_languages": null}, "macro.fivetran_utils.bigquery__json_parse": {"name": "bigquery__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.bigquery__json_parse", "macro_sql": "{% macro bigquery__json_parse(string, string_path) %}\n\n \n json_extract_scalar({{string}}, '$.{%- for s in string_path -%}{{ s }}{%- if not loop.last -%}.{%- endif -%}{%- endfor -%} ')\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1223629, "supported_languages": null}, "macro.fivetran_utils.postgres__json_parse": {"name": "postgres__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.postgres__json_parse", "macro_sql": "{% macro postgres__json_parse(string, string_path) %}\n\n {{string}}::json #>> '{ {%- for s in string_path -%}{{ s }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%} }'\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.122614, "supported_languages": null}, "macro.fivetran_utils.snowflake__json_parse": {"name": "snowflake__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.snowflake__json_parse", "macro_sql": "{% macro snowflake__json_parse(string, string_path) %}\n\n parse_json( {{string}} ) {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.122879, "supported_languages": null}, "macro.fivetran_utils.spark__json_parse": {"name": "spark__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.spark__json_parse", "macro_sql": "{% macro spark__json_parse(string, string_path) %}\n\n {{string}} : {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1231449, "supported_languages": null}, "macro.fivetran_utils.sqlserver__json_parse": {"name": "sqlserver__json_parse", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_parse.sql", "original_file_path": "macros/json_parse.sql", "unique_id": "macro.fivetran_utils.sqlserver__json_parse", "macro_sql": "{% macro sqlserver__json_parse(string, string_path) %}\n\n json_value({{string}}, '$.{%- for s in string_path -%}{{ s }}{%- if not loop.last -%}.{%- endif -%}{%- endfor -%} ')\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.123384, "supported_languages": null}, "macro.fivetran_utils.max_bool": {"name": "max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.max_bool", "macro_sql": "{% macro max_bool(boolean_field) -%}\n\n{{ adapter.dispatch('max_bool', 'fivetran_utils') (boolean_field) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__max_bool"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.12372, "supported_languages": null}, "macro.fivetran_utils.default__max_bool": {"name": "default__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.default__max_bool", "macro_sql": "{% macro default__max_bool(boolean_field) %}\n\n bool_or( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.123831, "supported_languages": null}, "macro.fivetran_utils.snowflake__max_bool": {"name": "snowflake__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.snowflake__max_bool", "macro_sql": "{% macro snowflake__max_bool(boolean_field) %}\n\n max( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1239328, "supported_languages": null}, "macro.fivetran_utils.bigquery__max_bool": {"name": "bigquery__max_bool", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/max_bool.sql", "original_file_path": "macros/max_bool.sql", "unique_id": "macro.fivetran_utils.bigquery__max_bool", "macro_sql": "{% macro bigquery__max_bool(boolean_field) %}\n\n max( {{ boolean_field }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.124032, "supported_languages": null}, "macro.fivetran_utils.calculated_fields": {"name": "calculated_fields", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/calculated_fields.sql", "original_file_path": "macros/calculated_fields.sql", "unique_id": "macro.fivetran_utils.calculated_fields", "macro_sql": "{% macro calculated_fields(variable) -%}\n\n{% if var(variable, none) %}\n {% for field in var(variable) %}\n , {{ field.transform_sql }} as {{ field.name }} \n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.124397, "supported_languages": null}, "macro.fivetran_utils.drop_schemas_automation": {"name": "drop_schemas_automation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/drop_schemas_automation.sql", "original_file_path": "macros/drop_schemas_automation.sql", "unique_id": "macro.fivetran_utils.drop_schemas_automation", "macro_sql": "{% macro drop_schemas_automation(drop_target_schema=true) %}\n {{ return(adapter.dispatch('drop_schemas_automation', 'fivetran_utils')(drop_target_schema)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__drop_schemas_automation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.125089, "supported_languages": null}, "macro.fivetran_utils.default__drop_schemas_automation": {"name": "default__drop_schemas_automation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/drop_schemas_automation.sql", "original_file_path": "macros/drop_schemas_automation.sql", "unique_id": "macro.fivetran_utils.default__drop_schemas_automation", "macro_sql": "{% macro default__drop_schemas_automation(drop_target_schema=true) %}\n\n{% set fetch_list_sql %}\n {% if target.type not in ('databricks', 'spark') %}\n select schema_name\n from \n {{ wrap_in_quotes(target.database) }}.INFORMATION_SCHEMA.SCHEMATA\n where lower(schema_name) like '{{ target.schema | lower }}{%- if not drop_target_schema -%}_{%- endif -%}%'\n {% else %}\n SHOW SCHEMAS LIKE '{{ target.schema }}{%- if not drop_target_schema -%}_{%- endif -%}*'\n {% endif %}\n{% endset %}\n\n{% set results = run_query(fetch_list_sql) %}\n\n{% if execute %}\n {% set results_list = results.columns[0].values() %}\n{% else %}\n {% set results_list = [] %}\n{% endif %}\n\n{% for schema_to_drop in results_list %}\n {% do adapter.drop_schema(api.Relation.create(database=target.database, schema=schema_to_drop)) %}\n {{ print('Schema ' ~ schema_to_drop ~ ' successfully dropped from the ' ~ target.database ~ ' database.\\n')}}\n{% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.wrap_in_quotes", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.126133, "supported_languages": null}, "macro.fivetran_utils.seed_data_helper": {"name": "seed_data_helper", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/seed_data_helper.sql", "original_file_path": "macros/seed_data_helper.sql", "unique_id": "macro.fivetran_utils.seed_data_helper", "macro_sql": "{% macro seed_data_helper(seed_name, warehouses) %}\n\n{% if target.type in warehouses %}\n {% for w in warehouses %}\n {% if target.type == w %}\n {{ return(ref(seed_name ~ \"_\" ~ w ~ \"\")) }}\n {% endif %}\n {% endfor %}\n{% else %}\n{{ return(ref(seed_name)) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.126706, "supported_languages": null}, "macro.fivetran_utils.fill_pass_through_columns": {"name": "fill_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_pass_through_columns.sql", "original_file_path": "macros/fill_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.fill_pass_through_columns", "macro_sql": "{% macro fill_pass_through_columns(pass_through_variable) %}\n\n{% if var(pass_through_variable) %}\n {% for field in var(pass_through_variable) %}\n {% if field is mapping %}\n {% if field.transform_sql %}\n , {{ field.transform_sql }} as {{ field.alias if field.alias else field.name }}\n {% else %}\n , {{ field.alias if field.alias else field.name }}\n {% endif %}\n {% else %}\n , {{ field }}\n {% endif %}\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.127483, "supported_languages": null}, "macro.fivetran_utils.string_agg": {"name": "string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.string_agg", "macro_sql": "{% macro string_agg(field_to_agg, delimiter) -%}\n\n{{ adapter.dispatch('string_agg', 'fivetran_utils') (field_to_agg, delimiter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__string_agg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.127959, "supported_languages": null}, "macro.fivetran_utils.default__string_agg": {"name": "default__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.default__string_agg", "macro_sql": "{% macro default__string_agg(field_to_agg, delimiter) %}\n string_agg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1280909, "supported_languages": null}, "macro.fivetran_utils.snowflake__string_agg": {"name": "snowflake__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.snowflake__string_agg", "macro_sql": "{% macro snowflake__string_agg(field_to_agg, delimiter) %}\n listagg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1282198, "supported_languages": null}, "macro.fivetran_utils.redshift__string_agg": {"name": "redshift__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.redshift__string_agg", "macro_sql": "{% macro redshift__string_agg(field_to_agg, delimiter) %}\n listagg({{ field_to_agg }}, {{ delimiter }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.128356, "supported_languages": null}, "macro.fivetran_utils.spark__string_agg": {"name": "spark__string_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/string_agg.sql", "original_file_path": "macros/string_agg.sql", "unique_id": "macro.fivetran_utils.spark__string_agg", "macro_sql": "{% macro spark__string_agg(field_to_agg, delimiter) %}\n -- collect set will remove duplicates\n replace(replace(replace(cast( collect_set({{ field_to_agg }}) as string), '[', ''), ']', ''), ', ', {{ delimiter }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.128493, "supported_languages": null}, "macro.fivetran_utils.timestamp_diff": {"name": "timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.timestamp_diff", "macro_sql": "{% macro timestamp_diff(first_date, second_date, datepart) %}\n {{ adapter.dispatch('timestamp_diff', 'fivetran_utils')(first_date, second_date, datepart) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__timestamp_diff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.131497, "supported_languages": null}, "macro.fivetran_utils.default__timestamp_diff": {"name": "default__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.default__timestamp_diff", "macro_sql": "{% macro default__timestamp_diff(first_date, second_date, datepart) %}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1316538, "supported_languages": null}, "macro.fivetran_utils.redshift__timestamp_diff": {"name": "redshift__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.redshift__timestamp_diff", "macro_sql": "{% macro redshift__timestamp_diff(first_date, second_date, datepart) %}\n\n datediff(\n {{ datepart }},\n {{ first_date }},\n {{ second_date }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.131813, "supported_languages": null}, "macro.fivetran_utils.bigquery__timestamp_diff": {"name": "bigquery__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.bigquery__timestamp_diff", "macro_sql": "{% macro bigquery__timestamp_diff(first_date, second_date, datepart) %}\n\n timestamp_diff(\n {{second_date}},\n {{first_date}},\n {{datepart}}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.131967, "supported_languages": null}, "macro.fivetran_utils.postgres__timestamp_diff": {"name": "postgres__timestamp_diff", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_diff.sql", "original_file_path": "macros/timestamp_diff.sql", "unique_id": "macro.fivetran_utils.postgres__timestamp_diff", "macro_sql": "{% macro postgres__timestamp_diff(first_date, second_date, datepart) %}\n\n {% if datepart == 'year' %}\n (date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))\n {% elif datepart == 'quarter' %}\n ({{ dbt.datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))\n {% elif datepart == 'month' %}\n ({{ dbt.datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))\n {% elif datepart == 'day' %}\n (({{second_date}})::date - ({{first_date}})::date)\n {% elif datepart == 'week' %}\n ({{ dbt.datediff(first_date, second_date, 'day') }} / 7 + case\n when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then\n case when {{first_date}} <= {{second_date}} then 0 else -1 end\n else\n case when {{first_date}} <= {{second_date}} then 1 else 0 end\n end)\n {% elif datepart == 'hour' %}\n ({{ dbt.datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))\n {% elif datepart == 'minute' %}\n ({{ dbt.datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))\n {% elif datepart == 'second' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))\n {% elif datepart == 'millisecond' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))\n {% elif datepart == 'microsecond' %}\n ({{ dbt.datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))\n {% else %}\n {{ exceptions.raise_compiler_error(\"Unsupported datepart for macro datediff in postgres: {!r}\".format(datepart)) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1338072, "supported_languages": null}, "macro.fivetran_utils.try_cast": {"name": "try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.try_cast", "macro_sql": "{% macro try_cast(field, type) %}\n {{ adapter.dispatch('try_cast', 'fivetran_utils') (field, type) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__try_cast"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.134756, "supported_languages": null}, "macro.fivetran_utils.default__try_cast": {"name": "default__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.default__try_cast", "macro_sql": "{% macro default__try_cast(field, type) %}\n {# most databases don't support this function yet\n so we just need to use cast #}\n cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.134891, "supported_languages": null}, "macro.fivetran_utils.redshift__try_cast": {"name": "redshift__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.redshift__try_cast", "macro_sql": "{% macro redshift__try_cast(field, type) %}\n{%- if type == 'numeric' -%}\n\n case\n when trim({{field}}) ~ '^(0|[1-9][0-9]*)$' then trim({{field}})\n else null\n end::{{type}}\n\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"non-numeric datatypes are not currently supported\") }}\n\n{% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.135154, "supported_languages": null}, "macro.fivetran_utils.postgres__try_cast": {"name": "postgres__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.postgres__try_cast", "macro_sql": "{% macro postgres__try_cast(field, type) %}\n{%- if type == 'numeric' -%}\n\n case\n when replace(cast({{field}} as varchar),cast(' ' as varchar),cast('' as varchar)) ~ '^(0|[1-9][0-9]*)$' \n then replace(cast({{field}} as varchar),cast(' ' as varchar),cast('' as varchar))\n else null\n end::{{type}}\n\n{% else %}\n {{ exceptions.raise_compiler_error(\n \"non-numeric datatypes are not currently supported\") }}\n\n{% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.135432, "supported_languages": null}, "macro.fivetran_utils.snowflake__try_cast": {"name": "snowflake__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.snowflake__try_cast", "macro_sql": "{% macro snowflake__try_cast(field, type) %}\n try_cast(cast({{field}} as varchar) as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.13556, "supported_languages": null}, "macro.fivetran_utils.bigquery__try_cast": {"name": "bigquery__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.bigquery__try_cast", "macro_sql": "{% macro bigquery__try_cast(field, type) %}\n safe_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.135684, "supported_languages": null}, "macro.fivetran_utils.spark__try_cast": {"name": "spark__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.spark__try_cast", "macro_sql": "{% macro spark__try_cast(field, type) %}\n try_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.135805, "supported_languages": null}, "macro.fivetran_utils.sqlserver__try_cast": {"name": "sqlserver__try_cast", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/try_cast.sql", "original_file_path": "macros/try_cast.sql", "unique_id": "macro.fivetran_utils.sqlserver__try_cast", "macro_sql": "{% macro sqlserver__try_cast(field, type) %}\n try_cast({{field}} as {{type}})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.135925, "supported_languages": null}, "macro.fivetran_utils.source_relation": {"name": "source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/source_relation.sql", "original_file_path": "macros/source_relation.sql", "unique_id": "macro.fivetran_utils.source_relation", "macro_sql": "{% macro source_relation(union_schema_variable='union_schemas', union_database_variable='union_databases') -%}\n\n{{ adapter.dispatch('source_relation', 'fivetran_utils') (union_schema_variable, union_database_variable) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__source_relation"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.13641, "supported_languages": null}, "macro.fivetran_utils.default__source_relation": {"name": "default__source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/source_relation.sql", "original_file_path": "macros/source_relation.sql", "unique_id": "macro.fivetran_utils.default__source_relation", "macro_sql": "{% macro default__source_relation(union_schema_variable, union_database_variable) %}\n\n{% if var(union_schema_variable, none) %}\n, case\n {% for schema in var(union_schema_variable) %}\n when lower(replace(replace(_dbt_source_relation,'\"',''),'`','')) like '%.{{ schema|lower }}.%' then '{{ schema|lower }}'\n {% endfor %}\n end as source_relation\n{% elif var(union_database_variable, none) %}\n, case\n {% for database in var(union_database_variable) %}\n when lower(replace(replace(_dbt_source_relation,'\"',''),'`','')) like '%{{ database|lower }}.%' then '{{ database|lower }}'\n {% endfor %}\n end as source_relation\n{% else %}\n, cast('' as {{ dbt.type_string() }}) as source_relation\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.136966, "supported_languages": null}, "macro.fivetran_utils.first_value": {"name": "first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.first_value", "macro_sql": "{% macro first_value(first_value_field, partition_field, order_by_field, order=\"asc\") -%}\n\n{{ adapter.dispatch('first_value', 'fivetran_utils') (first_value_field, partition_field, order_by_field, order) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__first_value"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.137453, "supported_languages": null}, "macro.fivetran_utils.default__first_value": {"name": "default__first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.default__first_value", "macro_sql": "{% macro default__first_value(first_value_field, partition_field, order_by_field, order=\"asc\") %}\n\n first_value( {{ first_value_field }} ignore nulls ) over (partition by {{ partition_field }} order by {{ order_by_field }} {{ order }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.137652, "supported_languages": null}, "macro.fivetran_utils.redshift__first_value": {"name": "redshift__first_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/first_value.sql", "original_file_path": "macros/first_value.sql", "unique_id": "macro.fivetran_utils.redshift__first_value", "macro_sql": "{% macro redshift__first_value(first_value_field, partition_field, order_by_field, order=\"asc\") %}\n\n first_value( {{ first_value_field }} ignore nulls ) over (partition by {{ partition_field }} order by {{ order_by_field }} {{ order }} , {{ partition_field }} rows unbounded preceding )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1378691, "supported_languages": null}, "macro.fivetran_utils.add_dbt_source_relation": {"name": "add_dbt_source_relation", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/add_dbt_source_relation.sql", "original_file_path": "macros/add_dbt_source_relation.sql", "unique_id": "macro.fivetran_utils.add_dbt_source_relation", "macro_sql": "{% macro add_dbt_source_relation() %}\n\n{% if var('union_schemas', none) or var('union_databases', none) %}\n, _dbt_source_relation\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1381161, "supported_languages": null}, "macro.fivetran_utils.add_pass_through_columns": {"name": "add_pass_through_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/add_pass_through_columns.sql", "original_file_path": "macros/add_pass_through_columns.sql", "unique_id": "macro.fivetran_utils.add_pass_through_columns", "macro_sql": "{% macro add_pass_through_columns(base_columns, pass_through_var) %}\n\n {% if pass_through_var %}\n\n {% for column in pass_through_var %}\n\n {% if column is mapping %}\n\n {% if column.alias %}\n\n {% do base_columns.append({ \"name\": column.name, \"alias\": column.alias, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n\n {% else %}\n\n {% do base_columns.append({ \"name\": column.name, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n \n {% endif %}\n\n {% else %}\n\n {% do base_columns.append({ \"name\": column, \"datatype\": dbt.type_string()}) %}\n\n {% endif %}\n\n {% endfor %}\n\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1392498, "supported_languages": null}, "macro.fivetran_utils.union_relations": {"name": "union_relations", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_relations.sql", "original_file_path": "macros/union_relations.sql", "unique_id": "macro.fivetran_utils.union_relations", "macro_sql": "{%- macro union_relations(relations, aliases=none, column_override=none, include=[], exclude=[], source_column_name=none) -%}\n\n {%- if exclude and include -%}\n {{ exceptions.raise_compiler_error(\"Both an exclude and include list were provided to the `union` macro. Only one is allowed\") }}\n {%- endif -%}\n\n {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. -#}\n {%- if not execute %}\n {{ return('') }}\n {% endif -%}\n\n {%- set column_override = column_override if column_override is not none else {} -%}\n {%- set source_column_name = source_column_name if source_column_name is not none else '_dbt_source_relation' -%}\n\n {%- set relation_columns = {} -%}\n {%- set column_superset = {} -%}\n\n {%- for relation in relations -%}\n\n {%- do relation_columns.update({relation: []}) -%}\n\n {%- do dbt_utils._is_relation(relation, 'union_relations') -%}\n {%- set cols = adapter.get_columns_in_relation(relation) -%}\n {%- for col in cols -%}\n\n {#- If an exclude list was provided and the column is in the list, do nothing -#}\n {%- if exclude and col.column in exclude -%}\n\n {#- If an include list was provided and the column is not in the list, do nothing -#}\n {%- elif include and col.column not in include -%}\n\n {#- Otherwise add the column to the column superset -#}\n {%- else -%}\n\n {#- update the list of columns in this relation -#}\n {%- do relation_columns[relation].append(col.column) -%}\n\n {%- if col.column in column_superset -%}\n\n {%- set stored = column_superset[col.column] -%}\n {%- if col.is_string() and stored.is_string() and col.string_size() > stored.string_size() -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif %}\n\n {%- else -%}\n\n {%- do column_superset.update({col.column: col}) -%}\n\n {%- endif -%}\n\n {%- endif -%}\n\n {%- endfor -%}\n {%- endfor -%}\n\n {%- set ordered_column_names = column_superset.keys() -%}\n\n {%- for relation in relations %}\n\n (\n select\n\n cast({{ dbt.string_literal(relation) }} as {{ dbt.type_string() }}) as {{ source_column_name }},\n {% for col_name in ordered_column_names -%}\n\n {%- set col = column_superset[col_name] %}\n {%- set col_type = column_override.get(col.column, col.data_type) %}\n {%- set col_name = adapter.quote(col_name) if col_name in relation_columns[relation] else 'null' %}\n cast({{ col_name }} as {{ col_type }}) as {{ col.quoted }} {% if not loop.last %},{% endif -%}\n\n {%- endfor %}\n\n from {{ aliases[loop.index0] if aliases else relation }}\n )\n\n {% if not loop.last -%}\n union all\n {% endif -%}\n\n {%- endfor -%}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.dbt_utils._is_relation", "macro.dbt.string_literal", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1431968, "supported_languages": null}, "macro.fivetran_utils.union_tables": {"name": "union_tables", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_relations.sql", "original_file_path": "macros/union_relations.sql", "unique_id": "macro.fivetran_utils.union_tables", "macro_sql": "{%- macro union_tables(tables, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_table') -%}\n\n {%- do exceptions.warn(\"Warning: the `union_tables` macro is no longer supported and will be deprecated in a future release of dbt-utils. Use the `union_relations` macro instead\") -%}\n\n {{ return(dbt_utils.union_relations(tables, column_override, include, exclude, source_column_name)) }}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils.union_relations"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.143552, "supported_languages": null}, "macro.fivetran_utils.snowflake_seed_data": {"name": "snowflake_seed_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/snowflake_seed_data.sql", "original_file_path": "macros/snowflake_seed_data.sql", "unique_id": "macro.fivetran_utils.snowflake_seed_data", "macro_sql": "{% macro snowflake_seed_data(seed_name) %}\n\n{% if target.type == 'snowflake' %}\n{{ return(ref(seed_name ~ '_snowflake')) }}\n{% else %}\n{{ return(ref(seed_name)) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.143911, "supported_languages": null}, "macro.fivetran_utils.fill_staging_columns": {"name": "fill_staging_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_staging_columns.sql", "original_file_path": "macros/fill_staging_columns.sql", "unique_id": "macro.fivetran_utils.fill_staging_columns", "macro_sql": "{% macro fill_staging_columns(source_columns, staging_columns) -%}\n\n{%- set source_column_names = source_columns|map(attribute='name')|map('lower')|list -%}\n\n{%- for column in staging_columns %}\n {% if column.name|lower in source_column_names -%}\n {{ fivetran_utils.quote_column(column) }} as \n {%- if 'alias' in column %} {{ column.alias }} {% else %} {{ fivetran_utils.quote_column(column) }} {%- endif -%}\n {%- else -%}\n cast(null as {{ column.datatype }})\n {%- if 'alias' in column %} as {{ column.alias }} {% else %} as {{ fivetran_utils.quote_column(column) }} {% endif -%}\n {%- endif -%}\n {%- if not loop.last -%} , {% endif -%}\n{% endfor %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.quote_column"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.145513, "supported_languages": null}, "macro.fivetran_utils.quote_column": {"name": "quote_column", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fill_staging_columns.sql", "original_file_path": "macros/fill_staging_columns.sql", "unique_id": "macro.fivetran_utils.quote_column", "macro_sql": "{% macro quote_column(column) %}\n {% if 'quote' in column %}\n {% if column.quote %}\n {% if target.type in ('bigquery', 'spark', 'databricks') %}\n `{{ column.name }}`\n {% elif target.type == 'snowflake' %}\n \"{{ column.name | upper }}\"\n {% else %}\n \"{{ column.name }}\"\n {% endif %}\n {% else %}\n {{ column.name }}\n {% endif %}\n {% else %}\n {{ column.name }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1460469, "supported_languages": null}, "macro.fivetran_utils.json_extract": {"name": "json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.json_extract", "macro_sql": "{% macro json_extract(string, string_path) -%}\n\n{{ adapter.dispatch('json_extract', 'fivetran_utils') (string, string_path) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__json_extract"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.146615, "supported_languages": null}, "macro.fivetran_utils.default__json_extract": {"name": "default__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.default__json_extract", "macro_sql": "{% macro default__json_extract(string, string_path) %}\n\n json_extract_path_text({{string}}, {{ \"'\" ~ string_path ~ \"'\" }} )\n \n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1467671, "supported_languages": null}, "macro.fivetran_utils.snowflake__json_extract": {"name": "snowflake__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.snowflake__json_extract", "macro_sql": "{% macro snowflake__json_extract(string, string_path) %}\n\n json_extract_path_text(try_parse_json( {{string}} ), {{ \"'\" ~ string_path ~ \"'\" }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1469162, "supported_languages": null}, "macro.fivetran_utils.redshift__json_extract": {"name": "redshift__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.redshift__json_extract", "macro_sql": "{% macro redshift__json_extract(string, string_path) %}\n\n case when is_valid_json( {{string}} ) then json_extract_path_text({{string}}, {{ \"'\" ~ string_path ~ \"'\" }} ) else null end\n \n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1470861, "supported_languages": null}, "macro.fivetran_utils.bigquery__json_extract": {"name": "bigquery__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.bigquery__json_extract", "macro_sql": "{% macro bigquery__json_extract(string, string_path) %}\n\n json_extract_scalar({{string}}, {{ \"'$.\" ~ string_path ~ \"'\" }} )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.147237, "supported_languages": null}, "macro.fivetran_utils.postgres__json_extract": {"name": "postgres__json_extract", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/json_extract.sql", "original_file_path": "macros/json_extract.sql", "unique_id": "macro.fivetran_utils.postgres__json_extract", "macro_sql": "{% macro postgres__json_extract(string, string_path) %}\n\n {{string}}::json->>{{\"'\" ~ string_path ~ \"'\" }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.147383, "supported_languages": null}, "macro.fivetran_utils.collect_freshness": {"name": "collect_freshness", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/collect_freshness.sql", "original_file_path": "macros/collect_freshness.sql", "unique_id": "macro.fivetran_utils.collect_freshness", "macro_sql": "{% macro collect_freshness(source, loaded_at_field, filter) %}\n {{ return(adapter.dispatch('collect_freshness')(source, loaded_at_field, filter))}}\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__collect_freshness"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.148235, "supported_languages": null}, "macro.fivetran_utils.default__collect_freshness": {"name": "default__collect_freshness", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/collect_freshness.sql", "original_file_path": "macros/collect_freshness.sql", "unique_id": "macro.fivetran_utils.default__collect_freshness", "macro_sql": "{% macro default__collect_freshness(source, loaded_at_field, filter) %}\n {% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}\n\n {%- set enabled_array = [] -%}\n {% for node in graph.sources.values() %}\n {% if node.identifier == source.identifier %}\n {% if (node.meta['is_enabled'] | default(true)) %}\n {%- do enabled_array.append(1) -%}\n {% endif %}\n {% endif %}\n {% endfor %}\n {% set is_enabled = (enabled_array != []) %}\n\n select\n {% if is_enabled %}\n max({{ loaded_at_field }})\n {% else %} \n {{ current_timestamp() }} {% endif %} as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n\n {% if is_enabled %}\n from {{ source }}\n {% if filter %}\n where {{ filter }}\n {% endif %}\n {% endif %}\n\n {% endcall %}\n\n {% if dbt_version.split('.') | map('int') | list >= [1, 5, 0] %}\n {{ return(load_result('collect_freshness')) }}\n {% else %}\n {{ return(load_result('collect_freshness').table) }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.149447, "supported_languages": null}, "macro.fivetran_utils.timestamp_add": {"name": "timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.timestamp_add", "macro_sql": "{% macro timestamp_add(datepart, interval, from_timestamp) -%}\n\n{{ adapter.dispatch('timestamp_add', 'fivetran_utils') (datepart, interval, from_timestamp) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.bigquery__timestamp_add"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1501791, "supported_languages": null}, "macro.fivetran_utils.default__timestamp_add": {"name": "default__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.default__timestamp_add", "macro_sql": "{% macro default__timestamp_add(datepart, interval, from_timestamp) %}\n\n timestampadd(\n {{ datepart }},\n {{ interval }},\n {{ from_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.150341, "supported_languages": null}, "macro.fivetran_utils.bigquery__timestamp_add": {"name": "bigquery__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.bigquery__timestamp_add", "macro_sql": "{% macro bigquery__timestamp_add(datepart, interval, from_timestamp) %}\n\n timestamp_add({{ from_timestamp }}, interval {{ interval }} {{ datepart }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.150497, "supported_languages": null}, "macro.fivetran_utils.redshift__timestamp_add": {"name": "redshift__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.redshift__timestamp_add", "macro_sql": "{% macro redshift__timestamp_add(datepart, interval, from_timestamp) %}\n\n dateadd(\n {{ datepart }},\n {{ interval }},\n {{ from_timestamp }}\n )\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.150653, "supported_languages": null}, "macro.fivetran_utils.postgres__timestamp_add": {"name": "postgres__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.postgres__timestamp_add", "macro_sql": "{% macro postgres__timestamp_add(datepart, interval, from_timestamp) %}\n\n {{ from_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.15081, "supported_languages": null}, "macro.fivetran_utils.spark__timestamp_add": {"name": "spark__timestamp_add", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/timestamp_add.sql", "original_file_path": "macros/timestamp_add.sql", "unique_id": "macro.fivetran_utils.spark__timestamp_add", "macro_sql": "{% macro spark__timestamp_add(datepart, interval, from_timestamp) %}\n\n {{ dbt.dateadd(datepart, interval, from_timestamp) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.dateadd"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1509812, "supported_languages": null}, "macro.fivetran_utils.ceiling": {"name": "ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.ceiling", "macro_sql": "{% macro ceiling(num) -%}\n\n{{ adapter.dispatch('ceiling', 'fivetran_utils') (num) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__ceiling"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.151229, "supported_languages": null}, "macro.fivetran_utils.default__ceiling": {"name": "default__ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.default__ceiling", "macro_sql": "{% macro default__ceiling(num) %}\n ceiling({{ num }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.15133, "supported_languages": null}, "macro.fivetran_utils.snowflake__ceiling": {"name": "snowflake__ceiling", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/ceiling.sql", "original_file_path": "macros/ceiling.sql", "unique_id": "macro.fivetran_utils.snowflake__ceiling", "macro_sql": "{% macro snowflake__ceiling(num) %}\n ceil({{ num }})\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.151434, "supported_languages": null}, "macro.fivetran_utils.remove_prefix_from_columns": {"name": "remove_prefix_from_columns", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/remove_prefix_from_columns.sql", "original_file_path": "macros/remove_prefix_from_columns.sql", "unique_id": "macro.fivetran_utils.remove_prefix_from_columns", "macro_sql": "{% macro remove_prefix_from_columns(columns, prefix='', exclude=[]) %}\n\n {%- for col in columns if col.name not in exclude -%}\n {%- if col.name[:prefix|length]|lower == prefix -%}\n {{ col.name }} as {{ col.name[prefix|length:] }}\n {%- else -%}\n {{ col.name }}\n {%- endif -%}\n {%- if not loop.last -%},{%- endif %}\n {% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.152052, "supported_languages": null}, "macro.fivetran_utils.fivetran_date_spine": {"name": "fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.fivetran_date_spine", "macro_sql": "{% macro fivetran_date_spine(datepart, start_date, end_date) -%}\n\n{{ return(adapter.dispatch('fivetran_date_spine', 'fivetran_utils') (datepart, start_date, end_date)) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__fivetran_date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.153465, "supported_languages": null}, "macro.fivetran_utils.default__fivetran_date_spine": {"name": "default__fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.default__fivetran_date_spine", "macro_sql": "{% macro default__fivetran_date_spine(datepart, start_date, end_date) %}\n\n {{ dbt_utils.date_spine(datepart, start_date, end_date) }}\n \n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.date_spine"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1536372, "supported_languages": null}, "macro.fivetran_utils.sqlserver__fivetran_date_spine": {"name": "sqlserver__fivetran_date_spine", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/fivetran_date_spine.sql", "original_file_path": "macros/fivetran_date_spine.sql", "unique_id": "macro.fivetran_utils.sqlserver__fivetran_date_spine", "macro_sql": "{% macro sqlserver__fivetran_date_spine(datepart, start_date, end_date) -%}\n\n {% set date_spine_query %}\n with\n\n l0 as (\n\n select c\n from (select 1 union all select 1) as d(c)\n\n ),\n l1 as (\n\n select\n 1 as c\n from l0 as a\n cross join l0 as b\n\n ),\n\n l2 as (\n\n select 1 as c\n from l1 as a\n cross join l1 as b\n ),\n\n l3 as (\n\n select 1 as c\n from l2 as a\n cross join l2 as b\n ),\n\n l4 as (\n\n select 1 as c\n from l3 as a\n cross join l3 as b\n ),\n\n l5 as (\n\n select 1 as c\n from l4 as a\n cross join l4 as b\n ),\n\n nums as (\n\n select row_number() over (order by (select null)) as rownum\n from l5\n ),\n\n rawdata as (\n\n select top ({{dbt.datediff(start_date, end_date, datepart)}}) rownum -1 as n\n from nums\n order by rownum\n ),\n\n all_periods as (\n\n select (\n {{\n dbt.dateadd(\n datepart,\n 'n',\n start_date\n )\n }}\n ) as date_{{datepart}}\n from rawdata\n ),\n\n filtered as (\n\n select *\n from all_periods\n where date_{{datepart}} <= {{ end_date }}\n\n )\n\n select * from filtered\n order by 1\n\n {% endset %}\n\n {% set results = run_query(date_spine_query) %}\n\n {% if execute %}\n\n {% set results_list = results.columns[0].values() %}\n \n {% else %}\n\n {% set results_list = [] %}\n\n {% endif %}\n\n {%- for date_field in results_list %}\n select cast('{{ date_field }}' as date) as date_{{datepart}} {{ 'union all ' if not loop.last else '' }}\n {% endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.datediff", "macro.dbt.dateadd", "macro.dbt.run_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.154449, "supported_languages": null}, "macro.fivetran_utils.union_data": {"name": "union_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_data.sql", "original_file_path": "macros/union_data.sql", "unique_id": "macro.fivetran_utils.union_data", "macro_sql": "{%- macro union_data(table_identifier, database_variable, schema_variable, default_database, default_schema, default_variable, union_schema_variable='union_schemas', union_database_variable='union_databases') -%}\n\n{{ adapter.dispatch('union_data', 'fivetran_utils') (\n table_identifier, \n database_variable, \n schema_variable, \n default_database, \n default_schema, \n default_variable,\n union_schema_variable,\n union_database_variable\n ) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.fivetran_utils.default__union_data"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.158033, "supported_languages": null}, "macro.fivetran_utils.default__union_data": {"name": "default__union_data", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/union_data.sql", "original_file_path": "macros/union_data.sql", "unique_id": "macro.fivetran_utils.default__union_data", "macro_sql": "{%- macro default__union_data(\n table_identifier, \n database_variable, \n schema_variable, \n default_database, \n default_schema, \n default_variable,\n union_schema_variable,\n union_database_variable\n ) -%}\n\n{%- if var(union_schema_variable, none) -%}\n\n {%- set relations = [] -%}\n \n {%- if var(union_schema_variable) is string -%}\n {%- set trimmed = var(union_schema_variable)|trim('[')|trim(']') -%}\n {%- set schemas = trimmed.split(',')|map('trim',\" \")|map('trim','\"')|map('trim',\"'\") -%}\n {%- else -%}\n {%- set schemas = var(union_schema_variable) -%}\n {%- endif -%}\n\n {%- for schema in var(union_schema_variable) -%}\n {%- set relation=adapter.get_relation(\n database=source(schema, table_identifier).database if var('has_defined_sources', false) else var(database_variable, default_database),\n schema=source(schema, table_identifier).schema if var('has_defined_sources', false) else schema,\n identifier=source(schema, table_identifier).identifier if var('has_defined_sources', false) else table_identifier\n ) -%}\n \n {%- set relation_exists=relation is not none -%}\n\n {%- if relation_exists -%}\n {%- do relations.append(relation) -%}\n {%- endif -%}\n\n {%- endfor -%}\n \n {%- if relations != [] -%}\n {{ dbt_utils.union_relations(relations) }}\n {%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n {%- endif -%}\n\n{%- elif var(union_database_variable, none) -%}\n\n {%- set relations = [] -%}\n\n {%- for database in var(union_database_variable) -%}\n {%- set relation=adapter.get_relation(\n database=source(schema, table_identifier).database if var('has_defined_sources', false) else database,\n schema=source(schema, table_identifier).schema if var('has_defined_sources', false) else var(schema_variable, default_schema),\n identifier=source(schema, table_identifier).identifier if var('has_defined_sources', false) else table_identifier\n ) -%}\n\n {%- set relation_exists=relation is not none -%}\n\n {%- if relation_exists -%}\n {%- do relations.append(relation) -%}\n {%- endif -%}\n\n {%- endfor -%}\n\n {%- if relations != [] -%}\n {{ dbt_utils.union_relations(relations) }}\n {%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n {%- endif -%}\n\n{%- else -%}\n {% set exception_schemas = {\"linkedin_company_pages\": \"linkedin_pages\", \"instagram_business_pages\": \"instagram_business\"} %}\n {% set relation = namespace(value=\"\") %}\n {% if default_schema in exception_schemas.keys() %}\n {% for corrected_schema_name in exception_schemas.items() %} \n {% if default_schema in corrected_schema_name %}\n {# In order for this macro to effectively work within upstream integration tests (mainly used by the Fivetran dbt package maintainers), this identifier variable selection is required to use the macro with different identifier names. #}\n {% set identifier_var = corrected_schema_name[1] + \"_\" + table_identifier + \"_identifier\" %}\n {%- set relation.value=adapter.get_relation(\n database=source(corrected_schema_name[1], table_identifier).database,\n schema=source(corrected_schema_name[1], table_identifier).schema,\n identifier=var(identifier_var, table_identifier)\n ) -%}\n {% endif %}\n {% endfor %}\n {% else %}\n {# In order for this macro to effectively work within upstream integration tests (mainly used by the Fivetran dbt package maintainers), this identifier variable selection is required to use the macro with different identifier names. #}\n {% set identifier_var = default_schema + \"_\" + table_identifier + \"_identifier\" %}\n {# Unfortunately the Twitter Organic identifiers were misspelled. As such, we will need to account for this in the model. This will be adjusted in the Twitter Organic package, but to ensure backwards compatibility, this needs to be included. #}\n {% if var(identifier_var, none) is none %} \n {% set identifier_var = default_schema + \"_\" + table_identifier + \"_identifer\" %}\n {% endif %}\n {%- set relation.value=adapter.get_relation(\n database=source(default_schema, table_identifier).database,\n schema=source(default_schema, table_identifier).schema,\n identifier=var(identifier_var, table_identifier)\n ) -%}\n {% endif %}\n{%- set table_exists=relation.value is not none -%}\n\n{%- if table_exists -%}\n select * \n from {{ relation.value }}\n{%- else -%}\n {% if execute and not var('fivetran__remove_empty_table_warnings', false) -%}\n {{ exceptions.warn(\"\\n\\nPlease be aware: The \" ~ table_identifier|upper ~ \" table was not found in your \" ~ default_schema|upper ~ \" schema(s). The Fivetran dbt package will create a completely empty \" ~ table_identifier|upper ~ \" staging model as to not break downstream transformations. To turn off these warnings, set the `fivetran__remove_empty_table_warnings` variable to TRUE (see https://github.com/fivetran/dbt_fivetran_utils/tree/releases/v0.4.latest#union_data-source for details).\\n\") }}\n {% endif -%}\n select \n cast(null as {{ dbt.type_string() }}) as _dbt_source_relation\n limit 0\n{%- endif -%}\n{%- endif -%}\n\n{%- endmacro -%}", "depends_on": {"macros": ["macro.dbt_utils.union_relations", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.162456, "supported_languages": null}, "macro.fivetran_utils.dummy_coalesce_value": {"name": "dummy_coalesce_value", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/dummy_coalesce_value.sql", "original_file_path": "macros/dummy_coalesce_value.sql", "unique_id": "macro.fivetran_utils.dummy_coalesce_value", "macro_sql": "{% macro dummy_coalesce_value(column) %}\n\n{% set coalesce_value = {\n 'STRING': \"'DUMMY_STRING'\",\n 'BOOLEAN': 'null',\n 'INT': 999999999,\n 'FLOAT': 999999999.99,\n 'TIMESTAMP': 'cast(\"2099-12-31\" as timestamp)',\n 'DATE': 'cast(\"2099-12-31\" as date)',\n} %}\n\n{% if column.is_float() %}\n{{ return(coalesce_value['FLOAT']) }}\n\n{% elif column.is_numeric() %}\n{{ return(coalesce_value['INT']) }}\n\n{% elif column.is_string() %}\n{{ return(coalesce_value['STRING']) }}\n\n{% elif column.data_type|lower == 'boolean' %}\n{{ return(coalesce_value['BOOLEAN']) }}\n\n{% elif 'timestamp' in column.data_type|lower %}\n{{ return(coalesce_value['TIMESTAMP']) }}\n\n{% elif 'date' in column.data_type|lower %}\n{{ return(coalesce_value['DATE']) }}\n\n{% elif 'int' in column.data_type|lower %}\n{{ return(coalesce_value['INT']) }}\n\n{% endif %}\n\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.163831, "supported_languages": null}, "macro.fivetran_utils.extract_url_parameter": {"name": "extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.extract_url_parameter", "macro_sql": "{% macro extract_url_parameter(field, url_parameter) -%}\n\n{{ adapter.dispatch('extract_url_parameter', 'fivetran_utils') (field, url_parameter) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__extract_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.16417, "supported_languages": null}, "macro.fivetran_utils.default__extract_url_parameter": {"name": "default__extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.default__extract_url_parameter", "macro_sql": "{% macro default__extract_url_parameter(field, url_parameter) -%}\n\n{{ dbt_utils.get_url_parameter(field, url_parameter) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_utils.get_url_parameter"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1643178, "supported_languages": null}, "macro.fivetran_utils.spark__extract_url_parameter": {"name": "spark__extract_url_parameter", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/extract_url_parameter.sql", "original_file_path": "macros/extract_url_parameter.sql", "unique_id": "macro.fivetran_utils.spark__extract_url_parameter", "macro_sql": "{% macro spark__extract_url_parameter(field, url_parameter) -%}\n\n{%- set formatted_url_parameter = \"'\" + url_parameter + \"=([^&]+)'\" -%}\nnullif(regexp_extract({{ field }}, {{ formatted_url_parameter }}, 1), '')\n\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.164513, "supported_languages": null}, "macro.fivetran_utils.wrap_in_quotes": {"name": "wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.wrap_in_quotes", "macro_sql": "{%- macro wrap_in_quotes(object_to_quote) -%}\n\n{{ return(adapter.dispatch('wrap_in_quotes', 'fivetran_utils')(object_to_quote)) }}\n\n{%- endmacro -%}\n\n", "depends_on": {"macros": ["macro.fivetran_utils.default__wrap_in_quotes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.164845, "supported_languages": null}, "macro.fivetran_utils.default__wrap_in_quotes": {"name": "default__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.default__wrap_in_quotes", "macro_sql": "{%- macro default__wrap_in_quotes(object_to_quote) -%}\n{# bigquery, spark, databricks #}\n `{{ object_to_quote }}`\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.164955, "supported_languages": null}, "macro.fivetran_utils.snowflake__wrap_in_quotes": {"name": "snowflake__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.snowflake__wrap_in_quotes", "macro_sql": "{%- macro snowflake__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote | upper }}\"\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165067, "supported_languages": null}, "macro.fivetran_utils.redshift__wrap_in_quotes": {"name": "redshift__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.redshift__wrap_in_quotes", "macro_sql": "{%- macro redshift__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote }}\"\n{%- endmacro -%}\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165171, "supported_languages": null}, "macro.fivetran_utils.postgres__wrap_in_quotes": {"name": "postgres__wrap_in_quotes", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/wrap_in_quotes.sql", "original_file_path": "macros/wrap_in_quotes.sql", "unique_id": "macro.fivetran_utils.postgres__wrap_in_quotes", "macro_sql": "{%- macro postgres__wrap_in_quotes(object_to_quote) -%}\n \"{{ object_to_quote }}\"\n{%- endmacro -%}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165271, "supported_languages": null}, "macro.fivetran_utils.array_agg": {"name": "array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.array_agg", "macro_sql": "{% macro array_agg(field_to_agg) -%}\n\n{{ adapter.dispatch('array_agg', 'fivetran_utils') (field_to_agg) }}\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.fivetran_utils.default__array_agg"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165524, "supported_languages": null}, "macro.fivetran_utils.default__array_agg": {"name": "default__array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.default__array_agg", "macro_sql": "{% macro default__array_agg(field_to_agg) %}\n array_agg({{ field_to_agg }})\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165625, "supported_languages": null}, "macro.fivetran_utils.redshift__array_agg": {"name": "redshift__array_agg", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/array_agg.sql", "original_file_path": "macros/array_agg.sql", "unique_id": "macro.fivetran_utils.redshift__array_agg", "macro_sql": "{% macro redshift__array_agg(field_to_agg) %}\n listagg({{ field_to_agg }}, ',')\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.165725, "supported_languages": null}, "macro.fivetran_utils.empty_variable_warning": {"name": "empty_variable_warning", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/empty_variable_warning.sql", "original_file_path": "macros/empty_variable_warning.sql", "unique_id": "macro.fivetran_utils.empty_variable_warning", "macro_sql": "{% macro empty_variable_warning(variable, downstream_model) %}\n\n{% if not var(variable) %}\n{{ log(\n \"\"\"\n Warning: You have passed an empty list to the \"\"\" ~ variable ~ \"\"\".\n As a result, you won't see the history of any columns in the \"\"\" ~ downstream_model ~ \"\"\" model.\n \"\"\",\n info=True\n) }}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.166114, "supported_languages": null}, "macro.fivetran_utils.enabled_vars_one_true": {"name": "enabled_vars_one_true", "resource_type": "macro", "package_name": "fivetran_utils", "path": "macros/enabled_vars_one_true.sql", "original_file_path": "macros/enabled_vars_one_true.sql", "unique_id": "macro.fivetran_utils.enabled_vars_one_true", "macro_sql": "{% macro enabled_vars_one_true(vars) %}\n\n{% for v in vars %}\n \n {% if var(v, False) == True %}\n {{ return(True) }}\n {% endif %}\n\n{% endfor %}\n\n{{ return(False) }}\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.166487, "supported_languages": null}, "macro.snapchat_ads_source.get_campaign_hourly_report_columns": {"name": "get_campaign_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_campaign_hourly_report_columns.sql", "original_file_path": "macros/get_campaign_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_campaign_hourly_report_columns", "macro_sql": "{% macro get_campaign_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"campaign_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"saves\", \"datatype\": dbt.type_int()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"shares\", \"datatype\": dbt.type_int()},\n {\"name\": \"spend\", \"datatype\": dbt.type_int()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_int()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"conversion_purchases_value\", \"datatype\": dbt.type_int()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__conversion_fields')) }}\n\n{# Doing it this way in case users were bringing in conversion metrics via passthrough columns prior to us adding them by default #}\n{{ snapchat_ads_add_pass_through_columns(base_columns=columns, pass_through_fields=var('snapchat_ads__campaign_hourly_report_passthrough_metrics'), except_fields=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_int", "macro.dbt.type_string", "macro.dbt.type_timestamp", "macro.fivetran_utils.add_pass_through_columns", "macro.snapchat_ads_source.snapchat_ads_add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1689758, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_squad_history_columns": {"name": "get_ad_squad_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_squad_history_columns.sql", "original_file_path": "macros/get_ad_squad_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_squad_history_columns", "macro_sql": "{% macro get_ad_squad_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"campaign_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.169735, "supported_languages": null}, "macro.snapchat_ads_source.snapchat_ads_add_pass_through_columns": {"name": "snapchat_ads_add_pass_through_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/snapchat_ads_add_pass_through_columns.sql", "original_file_path": "macros/snapchat_ads_add_pass_through_columns.sql", "unique_id": "macro.snapchat_ads_source.snapchat_ads_add_pass_through_columns", "macro_sql": "{% macro snapchat_ads_add_pass_through_columns(base_columns, pass_through_fields, except_fields=[]) %}\n\n{% if pass_through_fields %}\n {% for column in pass_through_fields %}\n\n {% if column is mapping %}\n {% set col_name = column.alias|default(column.name)|lower %}\n \n {% if col_name not in except_fields %}\n {% if column.alias %}\n {% do base_columns.append({ \"name\": column.name, \"alias\": column.alias, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n {% else %}\n {% do base_columns.append({ \"name\": column.name, \"datatype\": column.datatype if column.datatype else dbt.type_string()}) %}\n {% endif %}\n {% endif %}\n\n {% else %}\n {% if column|lower not in except_fields %}\n {% do base_columns.append({ \"name\": column, \"datatype\": dbt.type_string()}) %}\n {% endif %}\n {% endif %}\n\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1712792, "supported_languages": null}, "macro.snapchat_ads_source.get_creative_history_columns": {"name": "get_creative_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_creative_history_columns.sql", "original_file_path": "macros/get_creative_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_creative_history_columns", "macro_sql": "{% macro get_creative_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_account_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"web_view_url\", \"datatype\": dbt.type_string()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.172138, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_hourly_report_columns": {"name": "get_ad_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_hourly_report_columns.sql", "original_file_path": "macros/get_ad_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_hourly_report_columns", "macro_sql": "{% macro get_ad_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"ad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"saves\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"shares\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"spend\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_numeric()},\n {\"name\": \"conversion_purchases_value\", \"datatype\": dbt.type_int()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__conversion_fields')) }}\n\n{# Doing it this way in case users were bringing in conversion metrics via passthrough columns prior to us adding them by default #}\n{{ snapchat_ads_add_pass_through_columns(base_columns=columns, pass_through_fields=var('snapchat_ads__ad_hourly_passthrough_metrics'), except_fields=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_numeric", "macro.dbt.type_timestamp", "macro.dbt.type_int", "macro.fivetran_utils.add_pass_through_columns", "macro.snapchat_ads_source.snapchat_ads_add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.174581, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_squad_hourly_report_columns": {"name": "get_ad_squad_hourly_report_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_squad_hourly_report_columns.sql", "original_file_path": "macros/get_ad_squad_hourly_report_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_squad_hourly_report_columns", "macro_sql": "{% macro get_ad_squad_hourly_report_columns() %}\n\n{% set columns = [\n {\"name\": \"ad_squad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"attachment_quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_total_view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"attachment_view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"date\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"impressions\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_1\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_2\", \"datatype\": dbt.type_int()},\n {\"name\": \"quartile_3\", \"datatype\": dbt.type_int()},\n {\"name\": \"saves\", \"datatype\": dbt.type_int()},\n {\"name\": \"screen_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"shares\", \"datatype\": dbt.type_int()},\n {\"name\": \"spend\", \"datatype\": dbt.type_int()},\n {\"name\": \"swipes\", \"datatype\": dbt.type_int()},\n {\"name\": \"video_views\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_completion\", \"datatype\": dbt.type_int()},\n {\"name\": \"view_time_millis\", \"datatype\": dbt.type_int()},\n {\"name\": \"conversion_purchases_value\", \"datatype\": dbt.type_int()}\n] %}\n\n{{ fivetran_utils.add_pass_through_columns(columns, var('snapchat_ads__conversion_fields')) }}\n\n{# Doing it this way in case users were bringing in conversion metrics via passthrough columns prior to us adding them by default #}\n{{ snapchat_ads_add_pass_through_columns(base_columns=columns, pass_through_fields=var('snapchat_ads__ad_squad_hourly_passthrough_metrics'), except_fields=(var('snapchat_ads__conversion_fields') + ['conversion_purchases_value'])) }}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_int", "macro.dbt.type_timestamp", "macro.fivetran_utils.add_pass_through_columns", "macro.snapchat_ads_source.snapchat_ads_add_pass_through_columns"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1770082, "supported_languages": null}, "macro.snapchat_ads_source.get_campaign_history_columns": {"name": "get_campaign_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_campaign_history_columns.sql", "original_file_path": "macros/get_campaign_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_campaign_history_columns", "macro_sql": "{% macro get_campaign_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_account_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1777642, "supported_languages": null}, "macro.snapchat_ads_source.get_creative_url_tag_history_columns": {"name": "get_creative_url_tag_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_creative_url_tag_history_columns.sql", "original_file_path": "macros/get_creative_url_tag_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_creative_url_tag_history_columns", "macro_sql": "{% macro get_creative_url_tag_history_columns() %}\n\n{% set columns = [\n {\"name\": \"creative_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"key\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"value\", \"datatype\": dbt.type_string()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_string", "macro.dbt.type_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.1783261, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_history_columns": {"name": "get_ad_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_history_columns.sql", "original_file_path": "macros/get_ad_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_history_columns", "macro_sql": "{% macro get_ad_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"ad_squad_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"creative_id\", \"datatype\": dbt.type_string()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.179171, "supported_languages": null}, "macro.snapchat_ads_source.snapchat_ads_fill_pass_through_columns": {"name": "snapchat_ads_fill_pass_through_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/snapchat_ads_fill_pass_through_columns.sql", "original_file_path": "macros/snapchat_ads_fill_pass_through_columns.sql", "unique_id": "macro.snapchat_ads_source.snapchat_ads_fill_pass_through_columns", "macro_sql": "{% macro snapchat_ads_fill_pass_through_columns(pass_through_fields, except=[]) %}\n\n{% if pass_through_fields %}\n {% for field in pass_through_fields %}\n {% if (field.alias if field.alias else field.name) not in except %}\n {% if field.transform_sql %}\n , coalesce(cast({{ field.transform_sql }} as {{ dbt.type_float() }}), 0) as {{ field.alias if field.alias else field.name }}\n {% else %}\n , coalesce(cast({{ field.alias if field.alias else field.name }} as {{ dbt.type_float() }}), 0) as {{ field.alias if field.alias else field.name }}\n {% endif %}\n {% endif %}\n {% endfor %}\n{% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_float"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.180146, "supported_languages": null}, "macro.snapchat_ads_source.get_ad_account_history_columns": {"name": "get_ad_account_history_columns", "resource_type": "macro", "package_name": "snapchat_ads_source", "path": "macros/get_ad_account_history_columns.sql", "original_file_path": "macros/get_ad_account_history_columns.sql", "unique_id": "macro.snapchat_ads_source.get_ad_account_history_columns", "macro_sql": "{% macro get_ad_account_history_columns() %}\n\n{% set columns = [\n {\"name\": \"_fivetran_synced\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"advertiser\", \"datatype\": dbt.type_string()},\n {\"name\": \"created_at\", \"datatype\": dbt.type_timestamp()},\n {\"name\": \"currency\", \"datatype\": dbt.type_string()},\n {\"name\": \"id\", \"datatype\": dbt.type_string()},\n {\"name\": \"name\", \"datatype\": dbt.type_string()},\n {\"name\": \"timezone\", \"datatype\": dbt.type_string()},\n {\"name\": \"type\", \"datatype\": dbt.type_string()},\n {\"name\": \"updated_at\", \"datatype\": dbt.type_timestamp()}\n] %}\n\n{{ return(columns) }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.type_timestamp", "macro.dbt.type_string"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "patch_path": null, "arguments": [], "created_at": 1730229541.18118, "supported_languages": null}}, "docs": {"doc.dbt.__overview__": {"name": "__overview__", "resource_type": "doc", "package_name": "dbt", "path": "overview.md", "original_file_path": "docs/overview.md", "unique_id": "doc.dbt.__overview__", "block_contents": "### Welcome!\n\nWelcome to the auto-generated documentation for your dbt project!\n\n### Navigation\n\nYou can use the `Project` and `Database` navigation tabs on the left side of the window to explore the models\nin your project.\n\n#### Project Tab\nThe `Project` tab mirrors the directory structure of your dbt project. In this tab, you can see all of the\nmodels defined in your dbt project, as well as models imported from dbt packages.\n\n#### Database Tab\nThe `Database` tab also exposes your models, but in a format that looks more like a database explorer. This view\nshows relations (tables and views) grouped into database schemas. Note that ephemeral models are _not_ shown\nin this interface, as they do not exist in the database.\n\n### Graph Exploration\nYou can click the blue icon on the bottom-right corner of the page to view the lineage graph of your models.\n\nOn model pages, you'll see the immediate parents and children of the model you're exploring. By clicking the `Expand`\nbutton at the top-right of this lineage pane, you'll be able to see all of the models that are used to build,\nor are built from, the model you're exploring.\n\nOnce expanded, you'll be able to use the `--select` and `--exclude` model selection syntax to filter the\nmodels in the graph. For more information on model selection, check out the [dbt docs](https://docs.getdbt.com/docs/model-selection-syntax).\n\nNote that you can also right-click on models to interactively filter and explore the graph.\n\n---\n\n### More information\n\n- [What is dbt](https://docs.getdbt.com/docs/introduction)?\n- Read the [dbt viewpoint](https://docs.getdbt.com/docs/viewpoint)\n- [Installation](https://docs.getdbt.com/docs/installation)\n- Join the [dbt Community](https://www.getdbt.com/community/) for questions and discussion"}, "doc.snapchat_ads_source._fivetran_synced": {"name": "_fivetran_synced", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source._fivetran_synced", "block_contents": "When the record was last synced by Fivetran."}, "doc.snapchat_ads_source.is_most_recent_record": {"name": "is_most_recent_record", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source.is_most_recent_record", "block_contents": "Boolean representing whether a record is the most recent version of that record."}, "doc.snapchat_ads_source.source_relation": {"name": "source_relation", "resource_type": "doc", "package_name": "snapchat_ads_source", "path": "docs.md", "original_file_path": "models/docs.md", "unique_id": "doc.snapchat_ads_source.source_relation", "block_contents": "The source of the record if the unioning functionality is being used. If not this field will be empty."}}, "exposures": {}, "metrics": {}, "groups": {}, "selectors": {}, "disabled": {"test.snapchat_ads_integration_tests.consistency_url_report": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "consistency_url_report", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "consistency/consistency_url_report.sql", "original_file_path": "tests/consistency/consistency_url_report.sql", "unique_id": "test.snapchat_ads_integration_tests.consistency_url_report", "fqn": ["snapchat_ads_integration_tests", "consistency", "consistency_url_report"], "alias": "consistency_url_report", "checksum": {"name": "sha256", "checksum": "443e1d085108d4098b5706503867ef6aa64ee35adfa0317f15b947032d3ce02c"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.565278, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith prod as (\n select\n ad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__url_report\n group by 1\n),\n\ndev as (\n select\n ad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__url_report\n group by 1\n),\n\nfinal as (\n select \n prod.ad_id,\n prod.swipes as prod_swipes,\n dev.swipes as dev_swipes,\n prod.impressions as prod_impressions,\n dev.impressions as dev_impressions,\n prod.spend as prod_spend,\n dev.spend as dev_spend\n {# prod.total_conversions as prod_total_conversions,\n dev.total_conversions as dev_total_conversions,\n prod.conversion_purchases_value as prod_conversion_purchases_value,\n dev.conversion_purchases_value as dev_conversion_purchases_value #}\n from prod\n full outer join dev \n on dev.ad_id = prod.ad_id\n)\n\nselect *\nfrom final\nwhere\n abs(prod_swipes - dev_swipes) >= .01\n or abs(prod_impressions - dev_impressions) >= .01\n or abs(prod_spend - dev_spend) >= .01\n {# or abs(prod_total_conversions - dev_total_conversions) >= .01\n or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #}", "language": "sql", "refs": [], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}], "test.snapchat_ads_integration_tests.consistency_ad_squad_report": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "consistency_ad_squad_report", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "consistency/consistency_ad_squad_report.sql", "original_file_path": "tests/consistency/consistency_ad_squad_report.sql", "unique_id": "test.snapchat_ads_integration_tests.consistency_ad_squad_report", "fqn": ["snapchat_ads_integration_tests", "consistency", "consistency_ad_squad_report"], "alias": "consistency_ad_squad_report", "checksum": {"name": "sha256", "checksum": "2a352d43017d46a0aa99a9a1d8712fd70191e2b0f994e71278a8290f35c1b5c4"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.583402, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith prod as (\n select\n ad_squad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__ad_squad_report\n group by 1\n),\n\ndev as (\n select\n ad_squad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__ad_squad_report\n group by 1\n),\n\nfinal as (\n select \n prod.ad_squad_id,\n prod.swipes as prod_swipes,\n dev.swipes as dev_swipes,\n prod.impressions as prod_impressions,\n dev.impressions as dev_impressions,\n prod.spend as prod_spend,\n dev.spend as dev_spend\n {# prod.total_conversions as prod_total_conversions,\n dev.total_conversions as dev_total_conversions,\n prod.conversion_purchases_value as prod_conversion_purchases_value,\n dev.conversion_purchases_value as dev_conversion_purchases_value #}\n from prod\n full outer join dev \n on dev.ad_squad_id = prod.ad_squad_id\n)\n\nselect *\nfrom final\nwhere\n abs(prod_swipes - dev_swipes) >= .01\n or abs(prod_impressions - dev_impressions) >= .01\n or abs(prod_spend - dev_spend) >= .01\n {# or abs(prod_total_conversions - dev_total_conversions) >= .01\n or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #}", "language": "sql", "refs": [], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}], "test.snapchat_ads_integration_tests.consistency_campaign_report": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "consistency_campaign_report", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "consistency/consistency_campaign_report.sql", "original_file_path": "tests/consistency/consistency_campaign_report.sql", "unique_id": "test.snapchat_ads_integration_tests.consistency_campaign_report", "fqn": ["snapchat_ads_integration_tests", "consistency", "consistency_campaign_report"], "alias": "consistency_campaign_report", "checksum": {"name": "sha256", "checksum": "c32017960bdc946d359c3d172691fcfdc8ae3389db9dfae188297398483b0fce"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.586974, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith prod as (\n select\n campaign_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__campaign_report\n group by 1\n),\n\ndev as (\n select\n campaign_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__campaign_report\n group by 1\n),\n\nfinal as (\n select \n prod.campaign_id,\n prod.swipes as prod_swipes,\n dev.swipes as dev_swipes,\n prod.impressions as prod_impressions,\n dev.impressions as dev_impressions,\n prod.spend as prod_spend,\n dev.spend as dev_spend\n {# prod.total_conversions as prod_total_conversions,\n dev.total_conversions as dev_total_conversions,\n prod.conversion_purchases_value as prod_conversion_purchases_value,\n dev.conversion_purchases_value as dev_conversion_purchases_value #}\n from prod\n full outer join dev \n on dev.campaign_id = prod.campaign_id\n)\n\nselect *\nfrom final\nwhere\n abs(prod_swipes - dev_swipes) >= .01\n or abs(prod_impressions - dev_impressions) >= .01\n or abs(prod_spend - dev_spend) >= .01\n {# or abs(prod_total_conversions - dev_total_conversions) >= .01\n or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #}", "language": "sql", "refs": [], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}], "test.snapchat_ads_integration_tests.consistency_account_report": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "consistency_account_report", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "consistency/consistency_account_report.sql", "original_file_path": "tests/consistency/consistency_account_report.sql", "unique_id": "test.snapchat_ads_integration_tests.consistency_account_report", "fqn": ["snapchat_ads_integration_tests", "consistency", "consistency_account_report"], "alias": "consistency_account_report", "checksum": {"name": "sha256", "checksum": "181b4a85631f6c2e69111fd542ea3bd010d04af4887693df88e1d26a63dbcb6b"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.590288, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith prod as (\n select\n ad_account_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__account_report\n group by 1\n),\n\ndev as (\n select\n ad_account_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__account_report\n group by 1\n),\n\nfinal as (\n select \n prod.ad_account_id,\n prod.swipes as prod_swipes,\n dev.swipes as dev_swipes,\n prod.impressions as prod_impressions,\n dev.impressions as dev_impressions,\n prod.spend as prod_spend,\n dev.spend as dev_spend\n {# prod.total_conversions as prod_total_conversions,\n dev.total_conversions as dev_total_conversions,\n prod.conversion_purchases_value as prod_conversion_purchases_value,\n dev.conversion_purchases_value as dev_conversion_purchases_value #}\n from prod\n full outer join dev \n on dev.ad_account_id = prod.ad_account_id\n)\n\nselect *\nfrom final\nwhere\n abs(prod_swipes - dev_swipes) >= .01\n or abs(prod_impressions - dev_impressions) >= .01\n or abs(prod_spend - dev_spend) >= .01\n {# or abs(prod_total_conversions - dev_total_conversions) >= .01\n or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #}", "language": "sql", "refs": [], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}], "test.snapchat_ads_integration_tests.consistency_ads_report": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "consistency_ads_report", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "consistency/consistency_ads_report.sql", "original_file_path": "tests/consistency/consistency_ads_report.sql", "unique_id": "test.snapchat_ads_integration_tests.consistency_ads_report", "fqn": ["snapchat_ads_integration_tests", "consistency", "consistency_ads_report"], "alias": "consistency_ads_report", "checksum": {"name": "sha256", "checksum": "88152879430ac444455e46af74964cdc9ff20c11bdef92ddb38383d9bb89d534"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.5933619, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith prod as (\n select\n ad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__ad_report\n group by 1\n),\n\ndev as (\n select\n ad_id,\n sum(swipes) as swipes, \n sum(impressions) as impressions,\n sum(spend) as spend\n {# sum(total_conversions) as total_conversions,\n sum(conversion_purchases_value) as conversion_purchases_value #}\n from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__ad_report\n group by 1\n),\n\nfinal as (\n select \n prod.ad_id,\n prod.swipes as prod_swipes,\n dev.swipes as dev_swipes,\n prod.impressions as prod_impressions,\n dev.impressions as dev_impressions,\n prod.spend as prod_spend,\n dev.spend as dev_spend\n {# prod.total_conversions as prod_total_conversions,\n dev.total_conversions as dev_total_conversions,\n prod.conversion_purchases_value as prod_conversion_purchases_value,\n dev.conversion_purchases_value as dev_conversion_purchases_value #}\n from prod\n full outer join dev \n on dev.ad_id = prod.ad_id\n)\n\nselect *\nfrom final\nwhere\n abs(prod_swipes - dev_swipes) >= .01\n or abs(prod_impressions - dev_impressions) >= .01\n or abs(prod_spend - dev_spend) >= .01\n {# or abs(prod_total_conversions - dev_total_conversions) >= .01\n or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #}", "language": "sql", "refs": [], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}], "test.snapchat_ads_integration_tests.horizontal_sum_conversions": [{"database": "dbt-package-testing", "schema": "snapchat_ads_tests_dbt_test__audit", "name": "horizontal_sum_conversions", "resource_type": "test", "package_name": "snapchat_ads_integration_tests", "path": "integrity/horizontal_sum_conversions.sql", "original_file_path": "tests/integrity/horizontal_sum_conversions.sql", "unique_id": "test.snapchat_ads_integration_tests.horizontal_sum_conversions", "fqn": ["snapchat_ads_integration_tests", "integrity", "horizontal_sum_conversions"], "alias": "horizontal_sum_conversions", "checksum": {"name": "sha256", "checksum": "b52f0062e0677940cbcaf156537d194dc15fe77aecbb23b3dbb0652ff7491453"}, "config": {"enabled": false, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": ["fivetran_validations"], "meta": {}, "group": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "where": null, "limit": null, "fail_calc": "count(*)", "warn_if": "!= 0", "error_if": "!= 0"}, "tags": ["fivetran_validations"], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"tags": ["fivetran_validations"], "enabled": false}, "created_at": 1730229541.596957, "relation_name": null, "raw_code": "{{ config(\n tags=\"fivetran_validations\",\n enabled=var('fivetran_validation_tests_enabled', false)\n) }}\n\nwith ad_report as (\n\n select \n sum(conversion_purchases_value) as total_value,\n sum(total_conversions) as total_conversions\n from {{ ref('snapchat_ads__ad_report') }}\n),\n\naccount_report as (\n\n select \n sum(conversion_purchases_value) as total_value,\n sum(total_conversions) as total_conversions\n from {{ ref('snapchat_ads__account_report') }}\n),\n\nad_squad_report as (\n\n select \n sum(conversion_purchases_value) as total_value,\n sum(total_conversions) as total_conversions\n from {{ ref('snapchat_ads__ad_squad_report') }}\n),\n\ncampaign_report as (\n\n select \n sum(conversion_purchases_value) as total_value,\n sum(total_conversions) as total_conversions\n from {{ ref('snapchat_ads__campaign_report') }}\n),\n\nurl_report as (\n\n select \n sum(conversion_purchases_value) as total_value,\n sum(total_conversions) as total_conversions\n from {{ ref('snapchat_ads__url_report') }}\n)\n\nselect \n 'ad vs account' as comparison,\n ad_report.*\nfrom ad_report\njoin account_report on true\nwhere ad_report.total_value != account_report.total_value\nor ad_report.total_conversions != account_report.total_conversions\n\nunion all \n\nselect \n 'ad vs ad squad' as comparison,\n ad_report.*\nfrom ad_report\njoin ad_squad_report on true\nwhere ad_report.total_value != ad_squad_report.total_value\nor ad_report.total_conversions != ad_squad_report.total_conversions\n\nunion all \n\nselect \n 'ad vs campaign' as comparison,\n ad_report.*\nfrom ad_report\njoin campaign_report on true\nwhere ad_report.total_value != campaign_report.total_value\nor ad_report.total_conversions != campaign_report.total_conversions\n\nunion all \n\nselect \n 'ad vs url' as comparison,\n ad_report.*\nfrom ad_report\njoin url_report on true\nwhere ad_report.total_value != url_report.total_value\nor ad_report.total_conversions != url_report.total_conversions", "language": "sql", "refs": [{"name": "snapchat_ads__ad_report", "package": null, "version": null}, {"name": "snapchat_ads__account_report", "package": null, "version": null}, {"name": "snapchat_ads__ad_squad_report", "package": null, "version": null}, {"name": "snapchat_ads__campaign_report", "package": null, "version": null}, {"name": "snapchat_ads__url_report", "package": null, "version": null}], "sources": [], "metrics": [], "depends_on": {"macros": [], "nodes": []}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}]}, "parent_map": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": [], "model.snapchat_ads.snapchat_ads__ad_report": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "model.snapchat_ads.snapchat_ads__url_report": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__account_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__ad_squad_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads.snapchat_ads__campaign_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "model.snapchat_ads.snapchat_ads__creative_history_prep": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history", "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": ["source.snapchat_ads_source.snapchat_ads.creative_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_account_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": ["source.snapchat_ads_source.snapchat_ads.creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": ["source.snapchat_ads_source.snapchat_ads.campaign_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": ["source.snapchat_ads_source.snapchat_ads.ad_squad_history"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": ["source.snapchat_ads_source.snapchat_ads.campaign_hourly_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": ["model.snapchat_ads.snapchat_ads__account_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": ["model.snapchat_ads.snapchat_ads__ad_report"], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": ["model.snapchat_ads.snapchat_ads__campaign_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": ["model.snapchat_ads.snapchat_ads__ad_squad_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": ["model.snapchat_ads.snapchat_ads__url_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "source.snapchat_ads_source.snapchat_ads.ad_account_history": [], "source.snapchat_ads_source.snapchat_ads.ad_history": [], "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.ad_squad_history": [], "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.campaign_history": [], "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": [], "source.snapchat_ads_source.snapchat_ads.creative_history": [], "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": []}, "child_map": {"seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data": [], "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data": [], "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data": [], "model.snapchat_ads.snapchat_ads__ad_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba", "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744", "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe"], "model.snapchat_ads.snapchat_ads__url_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07", "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78", "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de", "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6"], "model.snapchat_ads.snapchat_ads__account_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1", "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b", "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260"], "model.snapchat_ads.snapchat_ads__ad_squad_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4", "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe", "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639"], "model.snapchat_ads.snapchat_ads__campaign_report": ["test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a", "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac", "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b"], "model.snapchat_ads.snapchat_ads__creative_history_prep": ["model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report": ["model.snapchat_ads.snapchat_ads__ad_squad_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history": ["model.snapchat_ads.snapchat_ads__creative_history_prep", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a", "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__campaign_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824", "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report": ["model.snapchat_ads.snapchat_ads__campaign_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history": ["model.snapchat_ads.snapchat_ads__account_report", "model.snapchat_ads.snapchat_ads__ad_squad_report", "model.snapchat_ads.snapchat_ads__campaign_report", "model.snapchat_ads.snapchat_ads__url_report", "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec", "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0"], "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history"], "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history"], "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report"], "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260": [], "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1": [], "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe": [], "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba": [], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b": [], "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a": [], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639": [], "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78": [], "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de": [], "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418": [], "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b": [], "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a": [], "source.snapchat_ads_source.snapchat_ads.ad_account_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_squad_history": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp"], "source.snapchat_ads_source.snapchat_ads.ad_squad_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.campaign_history": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp"], "source.snapchat_ads_source.snapchat_ads.campaign_hourly_report": ["model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp"], "source.snapchat_ads_source.snapchat_ads.creative_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp"], "source.snapchat_ads_source.snapchat_ads.creative_url_tag_history": ["model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp"]}, "group_map": {}, "saved_queries": {}, "semantic_models": {}, "unit_tests": {}} \ No newline at end of file diff --git a/docs/run_results.json b/docs/run_results.json deleted file mode 100644 index f34eebc..0000000 --- a/docs/run_results.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/run-results/v5.json", "dbt_version": "1.7.3", "generated_at": "2023-12-12T20:18:30.212644Z", "invocation_id": "74dde586-ceda-441e-a7bb-2d212c264b58", "env": {}}, "results": [{"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:28.984020Z", "completed_at": "2023-12-12T20:18:29.012641Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.014612Z", "completed_at": "2023-12-12T20:18:29.014627Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.03445792198181152, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_account_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.002997Z", "completed_at": "2023-12-12T20:18:29.013024Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.015128Z", "completed_at": "2023-12-12T20:18:29.015131Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.03482699394226074, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.006121Z", "completed_at": "2023-12-12T20:18:29.013269Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.015384Z", "completed_at": "2023-12-12T20:18:29.015388Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.03496599197387695, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_hourly_report_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.009403Z", "completed_at": "2023-12-12T20:18:29.013816Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.016237Z", "completed_at": "2023-12-12T20:18:29.016240Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.03553891181945801, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.021744Z", "completed_at": "2023-12-12T20:18:29.034801Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.035850Z", "completed_at": "2023-12-12T20:18:29.035857Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.0177609920501709, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_ad_squad_hourly_report_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.025119Z", "completed_at": "2023-12-12T20:18:29.035536Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.037891Z", "completed_at": "2023-12-12T20:18:29.037895Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.019249916076660156, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.028011Z", "completed_at": "2023-12-12T20:18:29.036097Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.038743Z", "completed_at": "2023-12-12T20:18:29.038746Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.019960880279541016, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_campaign_hourly_report_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.030857Z", "completed_at": "2023-12-12T20:18:29.037284Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.039866Z", "completed_at": "2023-12-12T20:18:29.039869Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.020376920700073242, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.047451Z", "completed_at": "2023-12-12T20:18:29.048504Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.052735Z", "completed_at": "2023-12-12T20:18:29.052742Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.011838912963867188, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_account_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.042569Z", "completed_at": "2023-12-12T20:18:29.048793Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.052992Z", "completed_at": "2023-12-12T20:18:29.052994Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.014948129653930664, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history_tmp", "compiled": true, "compiled_code": "\n\n\n \n \n \n \n \n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6\".\"snapchat_creative_url_tag_history_data\"", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history_tmp\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.049294Z", "completed_at": "2023-12-12T20:18:29.050338Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.053487Z", "completed_at": "2023-12-12T20:18:29.053490Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.009071111679077148, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.051259Z", "completed_at": "2023-12-12T20:18:29.052201Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.054758Z", "completed_at": "2023-12-12T20:18:29.054761Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.009480953216552734, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_hourly_report_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.059691Z", "completed_at": "2023-12-12T20:18:29.060701Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.066289Z", "completed_at": "2023-12-12T20:18:29.066296Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.01076197624206543, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.060992Z", "completed_at": "2023-12-12T20:18:29.062641Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.066570Z", "completed_at": "2023-12-12T20:18:29.066573Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.010998010635375977, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_ad_squad_hourly_report_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.063159Z", "completed_at": "2023-12-12T20:18:29.064049Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.067039Z", "completed_at": "2023-12-12T20:18:29.067041Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.01081085205078125, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.064764Z", "completed_at": "2023-12-12T20:18:29.065701Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.068633Z", "completed_at": "2023-12-12T20:18:29.068637Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.010942935943603516, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_campaign_hourly_report_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.072842Z", "completed_at": "2023-12-12T20:18:29.073910Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.088057Z", "completed_at": "2023-12-12T20:18:29.088065Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.018667936325073242, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.074190Z", "completed_at": "2023-12-12T20:18:29.075046Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.088336Z", "completed_at": "2023-12-12T20:18:29.088339Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.01889491081237793, "adapter_response": {}, "message": null, "failures": null, "unique_id": "seed.snapchat_ads_integration_tests.snapchat_creative_url_tag_history_data", "compiled": null, "compiled_code": null, "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.083114Z", "completed_at": "2023-12-12T20:18:29.384104Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.385346Z", "completed_at": "2023-12-12T20:18:29.385354Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.350848913192749, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_id,\n name as ad_name,\n cast (created_at as timestamp) as created_at,\n ad_squad_id,\n creative_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.075556Z", "completed_at": "2023-12-12T20:18:29.384509Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.385611Z", "completed_at": "2023-12-12T20:18:29.385614Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.3523998260498047, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_account_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n cast(null as TEXT) as \n \n advertiser\n \n , \n cast(null as timestamp) as \n \n created_at\n \n , \n cast(null as TEXT) as \n \n currency\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as TEXT) as \n \n timezone\n \n , \n cast(null as TEXT) as \n \n type\n \n , \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_account_id,\n name as ad_account_name,\n cast (created_at as timestamp) as created_at,\n advertiser, \n currency,\n timezone,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.097747Z", "completed_at": "2023-12-12T20:18:29.424613Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.427135Z", "completed_at": "2023-12-12T20:18:29.427142Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.3723468780517578, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as ad_squad_id,\n name as ad_squad_name,\n cast (created_at as timestamp) as created_at,\n campaign_id,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.092982Z", "completed_at": "2023-12-12T20:18:29.424865Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.427450Z", "completed_at": "2023-12-12T20:18:29.427453Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.37343573570251465, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_hourly_report", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n ad_id\n \n as \n \n ad_id\n \n, \n cast(null as numeric(28,6)) as \n \n attachment_quartile_1\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_quartile_2\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_quartile_3\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_total_view_time_millis\n \n , \n cast(null as numeric(28,6)) as \n \n attachment_view_completion\n \n , \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n cast(null as numeric(28,6)) as \n \n quartile_1\n \n , \n cast(null as numeric(28,6)) as \n \n quartile_2\n \n , \n cast(null as numeric(28,6)) as \n \n quartile_3\n \n , \n cast(null as numeric(28,6)) as \n \n saves\n \n , \n cast(null as numeric(28,6)) as \n \n screen_time_millis\n \n , \n cast(null as numeric(28,6)) as \n \n shares\n \n , \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n cast(null as numeric(28,6)) as \n \n video_views\n \n , \n cast(null as numeric(28,6)) as \n \n view_completion\n \n , \n cast(null as numeric(28,6)) as \n \n view_time_millis\n \n \n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.433405Z", "completed_at": "2023-12-12T20:18:29.721531Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.722820Z", "completed_at": "2023-12-12T20:18:29.722828Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.32385897636413574, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n \n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation,\n id as campaign_id,\n ad_account_id,\n cast (created_at as timestamp) as created_at,\n name as campaign_name,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) = 1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.427960Z", "completed_at": "2023-12-12T20:18:29.721988Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.723097Z", "completed_at": "2023-12-12T20:18:29.723100Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.33226799964904785, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__ad_squad_hourly_report", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n ad_squad_id\n \n as \n \n ad_squad_id\n \n, \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n\n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n ad_squad_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n \n from fields\n)\n\nselect *\nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.759164Z", "completed_at": "2023-12-12T20:18:29.783377Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.784875Z", "completed_at": "2023-12-12T20:18:29.784879Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.027331113815307617, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_history_source_relation__ad_id___fivetran_synced.630e3ffee4", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n group by source_relation, ad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.787561Z", "completed_at": "2023-12-12T20:18:29.792945Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.793650Z", "completed_at": "2023-12-12T20:18:29.793656Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.007194995880126953, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history__fivetran_synced.1607c70fda", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\nwhere _fivetran_synced is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.795208Z", "completed_at": "2023-12-12T20:18:29.798811Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.799360Z", "completed_at": "2023-12-12T20:18:29.799366Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.0051767826080322266, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_history_ad_id.e9d367fd15", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\nwhere ad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.801278Z", "completed_at": "2023-12-12T20:18:29.804974Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.805512Z", "completed_at": "2023-12-12T20:18:29.805519Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.00540614128112793, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_account_history_source_relation__ad_account_id___fivetran_synced.b8a4da92d1", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n group by source_relation, ad_account_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.807410Z", "completed_at": "2023-12-12T20:18:29.810477Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.811007Z", "completed_at": "2023-12-12T20:18:29.811013Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.004789113998413086, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history__fivetran_synced.2d5dd77824", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\nwhere _fivetran_synced is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.467453Z", "completed_at": "2023-12-12T20:18:29.783875Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.785368Z", "completed_at": "2023-12-12T20:18:29.785371Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.3475000858306885, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__campaign_hourly_report", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n attachment_quartile_1\n \n as \n \n attachment_quartile_1\n \n, \n \n \n attachment_quartile_2\n \n as \n \n attachment_quartile_2\n \n, \n \n \n attachment_quartile_3\n \n as \n \n attachment_quartile_3\n \n, \n \n \n attachment_total_view_time_millis\n \n as \n \n attachment_total_view_time_millis\n \n, \n \n \n attachment_view_completion\n \n as \n \n attachment_view_completion\n \n, \n \n \n campaign_id\n \n as \n \n campaign_id\n \n, \n \n \n date\n \n as \n \n date\n \n, \n \n \n impressions\n \n as \n \n impressions\n \n, \n \n \n quartile_1\n \n as \n \n quartile_1\n \n, \n \n \n quartile_2\n \n as \n \n quartile_2\n \n, \n \n \n quartile_3\n \n as \n \n quartile_3\n \n, \n \n \n saves\n \n as \n \n saves\n \n, \n \n \n screen_time_millis\n \n as \n \n screen_time_millis\n \n, \n \n \n shares\n \n as \n \n shares\n \n, \n \n \n spend\n \n as \n \n spend\n \n, \n \n \n swipes\n \n as \n \n swipes\n \n, \n \n \n video_views\n \n as \n \n video_views\n \n, \n \n \n view_completion\n \n as \n \n view_completion\n \n, \n \n \n view_time_millis\n \n as \n \n view_time_millis\n \n\n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n campaign_id,\n cast (date as timestamp) as date_hour,\n attachment_quartile_1,\n attachment_quartile_2,\n attachment_quartile_3,\n (attachment_total_view_time_millis / 1000000.0) as attachment_total_view_time,\n attachment_view_completion,\n quartile_1,\n quartile_2,\n quartile_3,\n saves,\n shares,\n (screen_time_millis / 1000000.0) as screen_time,\n video_views,\n view_completion,\n (view_time_millis / 1000000.0) as view_time,\n impressions,\n (spend / 1000000.0) as spend,\n swipes\n\n \n\n\n\n\n \n from fields\n)\n\nselect *\nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.472732Z", "completed_at": "2023-12-12T20:18:29.783052Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.784387Z", "completed_at": "2023-12-12T20:18:29.784394Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.3473968505859375, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history_tmp\"\n),\n\nfields as (\n\n select\n \n \n \n _fivetran_synced\n \n as \n \n _fivetran_synced\n \n, \n \n \n ad_account_id\n \n as \n \n ad_account_id\n \n, \n cast(null as timestamp) as \n \n created_at\n \n , \n \n \n id\n \n as \n \n id\n \n, \n \n \n name\n \n as \n \n name\n \n, \n cast(null as timestamp) as \n \n updated_at\n \n , \n \n \n web_view_url\n \n as \n \n web_view_url\n \n\n\n\n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n id as creative_id,\n cast (created_at as timestamp) as created_at,\n ad_account_id,\n name as creative_name,\n web_view_url as url,\n cast (_fivetran_synced as timestamp) as _fivetran_synced,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, id order by _fivetran_synced desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.814180Z", "completed_at": "2023-12-12T20:18:29.819388Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.826292Z", "completed_at": "2023-12-12T20:18:29.826300Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.01435089111328125, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_account_history_ad_account_id.426d71d605", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\nwhere ad_account_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.823004Z", "completed_at": "2023-12-12T20:18:29.827508Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.830134Z", "completed_at": "2023-12-12T20:18:29.830139Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.015450716018676758, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_history_source_relation__ad_squad_id___fivetran_synced.5d97ae5ee3", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n group by source_relation, ad_squad_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.819709Z", "completed_at": "2023-12-12T20:18:29.827767Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.830414Z", "completed_at": "2023-12-12T20:18:29.830418Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.01645207405090332, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_hourly_report_source_relation__ad_id__date_hour.f2d4b9252f", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n group by source_relation, ad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.830692Z", "completed_at": "2023-12-12T20:18:29.835855Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.840382Z", "completed_at": "2023-12-12T20:18:29.840394Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.015990018844604492, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_ad_id.7e763de19d", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\nwhere ad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.837267Z", "completed_at": "2023-12-12T20:18:29.844971Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.846591Z", "completed_at": "2023-12-12T20:18:29.846597Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.014863967895507812, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_hourly_report_date_hour.666cda1cd7", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\nwhere date_hour is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.840826Z", "completed_at": "2023-12-12T20:18:29.846071Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.850716Z", "completed_at": "2023-12-12T20:18:29.850721Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.015446901321411133, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history__fivetran_synced.7ed7d105ae", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\nwhere _fivetran_synced is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.847101Z", "completed_at": "2023-12-12T20:18:29.852239Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.862692Z", "completed_at": "2023-12-12T20:18:29.862705Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.018362045288085938, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_history_ad_squad_id.71c7122278", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\nwhere ad_squad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.853879Z", "completed_at": "2023-12-12T20:18:29.867920Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.869454Z", "completed_at": "2023-12-12T20:18:29.869460Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.021175146102905273, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads.snapchat_ads__account_report", "compiled": true, "compiled_code": "\n\nwith ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n\n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n\n group by 1,2,3,4,5\n\n)\n\nselect *\nfrom aggregated", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.864143Z", "completed_at": "2023-12-12T20:18:29.869165Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.873643Z", "completed_at": "2023-12-12T20:18:29.873649Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.021255970001220703, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_history_source_relation__campaign_id___fivetran_synced.e003c1a660", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n group by source_relation, campaign_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.869859Z", "completed_at": "2023-12-12T20:18:29.875056Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.876957Z", "completed_at": "2023-12-12T20:18:29.876961Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.012577056884765625, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history__fivetran_synced.55bc48b3ec", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\nwhere _fivetran_synced is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.877217Z", "completed_at": "2023-12-12T20:18:29.886006Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.887888Z", "completed_at": "2023-12-12T20:18:29.887894Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.016103744506835938, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_history_campaign_id.f74a0fb8c0", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\nwhere campaign_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.881257Z", "completed_at": "2023-12-12T20:18:29.886725Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.891014Z", "completed_at": "2023-12-12T20:18:29.891020Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.01658177375793457, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads.snapchat_ads__ad_squad_report", "compiled": true, "compiled_code": "\n\nwith ad_squad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_squad_hourly.source_relation,\n cast(ad_squad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n ad_squad_hourly.ad_squad_id,\n ad_squads.ad_squad_name,\n account.currency,\n sum(ad_squad_hourly.swipes) as swipes,\n sum(ad_squad_hourly.impressions) as impressions,\n round(sum(ad_squad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_squad_hourly\n left join ad_squads\n on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id\n and ad_squad_hourly.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7,8,9\n\n)\n\nselect *\nfrom aggregated", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.888166Z", "completed_at": "2023-12-12T20:18:29.894323Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.896517Z", "completed_at": "2023-12-12T20:18:29.896523Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.016147851943969727, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__ad_squad_hourly_report_source_relation__ad_squad_id__date_hour.25afb4f9ae", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\n group by source_relation, ad_squad_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.899727Z", "completed_at": "2023-12-12T20:18:29.907924Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.909086Z", "completed_at": "2023-12-12T20:18:29.909094Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.014922142028808594, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_date_hour.6f0b63a9cb", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\nwhere date_hour is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.896829Z", "completed_at": "2023-12-12T20:18:29.908203Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.909631Z", "completed_at": "2023-12-12T20:18:29.909636Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.016206979751586914, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__ad_squad_hourly_report_ad_squad_id.ab16aa72c9", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_hourly_report\"\nwhere ad_squad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.903937Z", "completed_at": "2023-12-12T20:18:29.909358Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.911493Z", "completed_at": "2023-12-12T20:18:29.911496Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.009297370910644531, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads.snapchat_ads__campaign_report", "compiled": true, "compiled_code": "\n\nwith campaign_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n campaign_hourly.source_relation,\n cast(campaign_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n campaign_hourly.campaign_id,\n campaigns.campaign_name,\n account.currency,\n sum(campaign_hourly.swipes) as swipes,\n sum(campaign_hourly.impressions) as impressions,\n round(sum(campaign_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from campaign_hourly\n left join campaigns\n on campaign_hourly.campaign_id = campaigns.campaign_id\n and campaign_hourly.source_relation = campaigns.source_relation\n left join account\n on campaigns.ad_account_id = account.ad_account_id\n and campaigns.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.914121Z", "completed_at": "2023-12-12T20:18:29.923878Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.925269Z", "completed_at": "2023-12-12T20:18:29.925275Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.014147043228149414, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__campaign_hourly_report_source_relation__campaign_id__date_hour.3998b6bf9d", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_hour\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\n group by source_relation, campaign_id, date_hour\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.917489Z", "completed_at": "2023-12-12T20:18:29.924238Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.925762Z", "completed_at": "2023-12-12T20:18:29.925765Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.014055013656616211, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_campaign_id.f255c38a3e", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\nwhere campaign_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.920462Z", "completed_at": "2023-12-12T20:18:29.924788Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.926538Z", "completed_at": "2023-12-12T20:18:29.926541Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.010659217834472656, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__campaign_hourly_report_date_hour.0bc4218ac8", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_hour\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_hourly_report\"\nwhere date_hour is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.930172Z", "completed_at": "2023-12-12T20:18:29.938549Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.939069Z", "completed_at": "2023-12-12T20:18:29.939074Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.011177778244018555, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_history_source_relation__creative_id___fivetran_synced.1d4efdd418", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, _fivetran_synced\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n group by source_relation, creative_id, _fivetran_synced\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.933403Z", "completed_at": "2023-12-12T20:18:29.940474Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.944552Z", "completed_at": "2023-12-12T20:18:29.944557Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.016324996948242188, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history__fivetran_synced.b9c95b4380", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect _fivetran_synced\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\nwhere _fivetran_synced is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.935897Z", "completed_at": "2023-12-12T20:18:29.940947Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.944866Z", "completed_at": "2023-12-12T20:18:29.944870Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.01618194580078125, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_history_creative_id.09c83690f4", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\nwhere creative_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.941414Z", "completed_at": "2023-12-12T20:18:29.946373Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.948142Z", "completed_at": "2023-12-12T20:18:29.948146Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.012201309204101562, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__account_report_source_relation__ad_account_id__date_day.654a687cf1", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_account_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\n group by source_relation, ad_account_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.948649Z", "completed_at": "2023-12-12T20:18:29.956256Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.960042Z", "completed_at": "2023-12-12T20:18:29.960048Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.014070987701416016, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_ad_account_id.589c81966b", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_account_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\nwhere ad_account_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.952618Z", "completed_at": "2023-12-12T20:18:29.959204Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.960581Z", "completed_at": "2023-12-12T20:18:29.960583Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.014147281646728516, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__account_report_date_day.688d7ed260", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__account_report\"\nwhere date_day is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.956564Z", "completed_at": "2023-12-12T20:18:29.960333Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.962271Z", "completed_at": "2023-12-12T20:18:29.962274Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.0077021121978759766, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_squad_report_source_relation__ad_squad_id__date_day.b1a26a5bb4", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_squad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\n group by source_relation, ad_squad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.964742Z", "completed_at": "2023-12-12T20:18:29.974061Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.974923Z", "completed_at": "2023-12-12T20:18:29.974929Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.01301121711730957, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_ad_squad_id.424c0bbffe", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_squad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\nwhere ad_squad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.967756Z", "completed_at": "2023-12-12T20:18:29.974637Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.976193Z", "completed_at": "2023-12-12T20:18:29.976197Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.013465166091918945, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_squad_report_date_day.39118ca639", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_squad_report\"\nwhere date_day is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.970743Z", "completed_at": "2023-12-12T20:18:29.975405Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.977433Z", "completed_at": "2023-12-12T20:18:29.977436Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.011408805847167969, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__campaign_report_source_relation__campaign_id__date_day.557487ad6a", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, campaign_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\n group by source_relation, campaign_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.979834Z", "completed_at": "2023-12-12T20:18:29.985724Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.986433Z", "completed_at": "2023-12-12T20:18:29.986442Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.009495973587036133, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_campaign_id.19fd7135ac", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect campaign_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\nwhere campaign_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.982952Z", "completed_at": "2023-12-12T20:18:29.986768Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:29.987883Z", "completed_at": "2023-12-12T20:18:29.987886Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.008925914764404297, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__campaign_report_date_day.4e4e31223b", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__campaign_report\"\nwhere date_day is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:29.752045Z", "completed_at": "2023-12-12T20:18:30.075950Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.076485Z", "completed_at": "2023-12-12T20:18:30.076492Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.3512301445007324, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads_source.stg_snapchat_ads__creative_url_tag_history", "compiled": true, "compiled_code": "\n\nwith base as (\n\n select * \n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history_tmp\"\n\n),\n\nfields as (\n\n select\n \n \n \n creative_id\n \n as \n \n creative_id\n \n, \n \n \n key\n \n as \n \n key\n \n, \n \n \n updated_at\n \n as \n \n updated_at\n \n, \n \n \n value\n \n as \n \n value\n \n\n\n\n \n \n \n\n\n, cast('' as TEXT) as source_relation\n\n\n\n\n from base\n),\n\nfinal as (\n\n select\n source_relation, \n creative_id,\n key as param_key,\n value as param_value,\n cast (updated_at as timestamp) as updated_at,\n row_number() over (partition by source_relation, creative_id, key order by updated_at desc) =1 as is_most_recent_record\n from fields\n)\n\nselect * \nfrom final", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.131413Z", "completed_at": "2023-12-12T20:18:30.138571Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.139760Z", "completed_at": "2023-12-12T20:18:30.139765Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.011448144912719727, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.dbt_utils_unique_combination_of_columns_stg_snapchat_ads__creative_url_tag_history_source_relation__creative_id__param_key__updated_at.6ed98c175a", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, creative_id, param_key, updated_at\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n group by source_relation, creative_id, param_key, updated_at\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.135002Z", "completed_at": "2023-12-12T20:18:30.140022Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.142425Z", "completed_at": "2023-12-12T20:18:30.142429Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.035894155502319336, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads_source.not_null_stg_snapchat_ads__creative_url_tag_history_creative_id.7ff6bb9c1b", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect creative_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\nwhere creative_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.142721Z", "completed_at": "2023-12-12T20:18:30.171581Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.172146Z", "completed_at": "2023-12-12T20:18:30.172152Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.0325930118560791, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads.snapchat_ads__ad_report", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n account.currency,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n \n group by 1,2,3,4,5,6,7\n\n)\n\nselect *\nfrom aggregated", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.153664Z", "completed_at": "2023-12-12T20:18:30.172409Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.173608Z", "completed_at": "2023-12-12T20:18:30.173612Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.033609867095947266, "adapter_response": {}, "message": null, "failures": null, "unique_id": "model.snapchat_ads.snapchat_ads__url_report", "compiled": true, "compiled_code": "\n\nwith __dbt__cte__snapchat_ads__creative_history_prep as (\n\nwith base as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_history\"\n where is_most_recent_record = true\n\n), url_tags as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__creative_url_tag_history\"\n where is_most_recent_record = true\n\n), url_tags_pivoted as (\n\n select \n source_relation,\n creative_id,\n min(case when param_key = 'utm_source' then param_value end) as utm_source,\n min(case when param_key = 'utm_medium' then param_value end) as utm_medium,\n min(case when param_key = 'utm_campaign' then param_value end) as utm_campaign,\n min(case when param_key = 'utm_content' then param_value end) as utm_content,\n min(case when param_key = 'utm_term' then param_value end) as utm_term\n from url_tags\n group by 1,2\n\n), fields as (\n\n select\n base.source_relation,\n base.creative_id,\n base.ad_account_id,\n base.creative_name,\n base.url,\n \n\n \n \n\n split_part(\n base.url,\n '?',\n 1\n )\n\n\n \n\n as base_url,\n \n \n cast(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n \n\n replace(\n \n\n replace(\n \n\n replace(\n base.url,\n 'android-app://',\n ''\n )\n\n\n,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n '/',\n 1\n )\n\n\n \n\n,\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_host,\n '/' || \n \n cast(\n\n \n \n\n split_part(\n \n\n right(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n,\n \n\n length(\n \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n )-coalesce(\n nullif(\n\n position(\n '/' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ), 0),\n \n\n position(\n '?' in \n\n replace(\n \n\n replace(\n base.url,\n 'http://',\n ''\n )\n\n\n,\n 'https://',\n ''\n )\n\n\n\n ) - 1\n )\n ),\n '?',\n 1\n )\n\n\n \n\n as TEXT)\n as url_path,\n coalesce(url_tags_pivoted.utm_source, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_source=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_source,\n coalesce(url_tags_pivoted.utm_medium, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_medium=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_medium,\n coalesce(url_tags_pivoted.utm_campaign, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_campaign=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_campaign,\n coalesce(url_tags_pivoted.utm_content, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_content=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_content,\n coalesce(url_tags_pivoted.utm_term, nullif(\n\n \n \n\n split_part(\n \n\n \n \n\n split_part(\n base.url,\n 'utm_term=',\n 2\n )\n\n\n \n\n,\n '&',\n 1\n )\n\n\n \n\n,'')) as utm_term\n from base\n left join url_tags_pivoted\n on base.creative_id = url_tags_pivoted.creative_id\n and base.source_relation = url_tags_pivoted.source_relation\n\n)\n\nselect *\nfrom fields\n), ad_hourly as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_hourly_report\"\n\n), creatives as (\n\n select *\n from __dbt__cte__snapchat_ads__creative_history_prep\n\n), account as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_account_history\"\n where is_most_recent_record = true\n\n), ads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_history\"\n where is_most_recent_record = true\n\n), ad_squads as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__ad_squad_history\"\n where is_most_recent_record = true\n\n), campaigns as (\n\n select *\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads_source\".\"stg_snapchat_ads__campaign_history\"\n where is_most_recent_record = true\n\n\n), aggregated as (\n\n select\n ad_hourly.source_relation,\n cast(ad_hourly.date_hour as date) as date_day,\n account.ad_account_id,\n account.ad_account_name,\n ad_hourly.ad_id,\n ads.ad_name,\n ad_squads.ad_squad_id,\n ad_squads.ad_squad_name,\n campaigns.campaign_id,\n campaigns.campaign_name,\n account.currency,\n creatives.base_url,\n creatives.url_host,\n creatives.url_path,\n creatives.utm_source,\n creatives.utm_medium,\n creatives.utm_campaign,\n creatives.utm_content,\n creatives.utm_term,\n sum(ad_hourly.swipes) as swipes,\n sum(ad_hourly.impressions) as impressions,\n round(sum(ad_hourly.spend),2) as spend\n \n \n\n\n\n\n \n from ad_hourly\n left join ads \n on ad_hourly.ad_id = ads.ad_id\n and ad_hourly.source_relation = ads.source_relation\n left join creatives\n on ads.creative_id = creatives.creative_id\n and ads.source_relation = creatives.source_relation\n left join ad_squads\n on ads.ad_squad_id = ad_squads.ad_squad_id\n and ads.source_relation = ad_squads.source_relation\n left join campaigns\n on ad_squads.campaign_id = campaigns.campaign_id\n and ad_squads.source_relation = campaigns.source_relation\n left join account\n on creatives.ad_account_id = account.ad_account_id\n and creatives.source_relation = account.source_relation\n\n \n -- We only want utm ads to populate this report. Therefore, we filter where url ads are populated.\n where creatives.url is not null\n \n\n group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19\n\n)\n\nselect *\nfrom aggregated", "relation_name": "\"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\""}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.177744Z", "completed_at": "2023-12-12T20:18:30.189291Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.190054Z", "completed_at": "2023-12-12T20:18:30.190061Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.016082763671875, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__ad_report_source_relation__ad_id__date_day.9116e93fba", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.183548Z", "completed_at": "2023-12-12T20:18:30.190365Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.192757Z", "completed_at": "2023-12-12T20:18:30.192761Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.018019914627075195, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_date_day.7c5350c8fe", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\nwhere date_day is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.181067Z", "completed_at": "2023-12-12T20:18:30.190691Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.193022Z", "completed_at": "2023-12-12T20:18:30.193026Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.01892995834350586, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__ad_report_ad_id.9000850744", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__ad_report\"\nwhere ad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.186166Z", "completed_at": "2023-12-12T20:18:30.191464Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.193720Z", "completed_at": "2023-12-12T20:18:30.193725Z"}], "thread_id": "Thread-1 (worker)", "execution_time": 0.018622159957885742, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.dbt_utils_unique_combination_of_columns_snapchat_ads__url_report_source_relation__ad_id__date_day.86e3504c07", "compiled": true, "compiled_code": "\n\n\n\n\n\nwith validation_errors as (\n\n select\n source_relation, ad_id, date_day\n from \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\n group by source_relation, ad_id, date_day\n having count(*) > 1\n\n)\n\nselect *\nfrom validation_errors\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.196432Z", "completed_at": "2023-12-12T20:18:30.204787Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.207997Z", "completed_at": "2023-12-12T20:18:30.208004Z"}], "thread_id": "Thread-2 (worker)", "execution_time": 0.015408754348754883, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_ad_id.ecbdfc0d78", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect ad_id\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere ad_id is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.201831Z", "completed_at": "2023-12-12T20:18:30.208251Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.209624Z", "completed_at": "2023-12-12T20:18:30.209627Z"}], "thread_id": "Thread-3 (worker)", "execution_time": 0.009990930557250977, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_base_url.15676dc1de", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect base_url\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere base_url is null\n\n\n", "relation_name": null}, {"status": "success", "timing": [{"name": "compile", "started_at": "2023-12-12T20:18:30.205107Z", "completed_at": "2023-12-12T20:18:30.209301Z"}, {"name": "execute", "started_at": "2023-12-12T20:18:30.210577Z", "completed_at": "2023-12-12T20:18:30.210580Z"}], "thread_id": "Thread-4 (worker)", "execution_time": 0.010344982147216797, "adapter_response": {}, "message": null, "failures": null, "unique_id": "test.snapchat_ads.not_null_snapchat_ads__url_report_date_day.bcbe87a7f6", "compiled": true, "compiled_code": "\n \n \n\n\n\nselect date_day\nfrom \"postgres\".\"snapchat_ads_integration_tests_6_snapchat_ads\".\"snapchat_ads__url_report\"\nwhere date_day is null\n\n\n", "relation_name": null}], "elapsed_time": 2.1984620094299316, "args": {"log_file_max_bytes": 10485760, "static_parser": true, "version_check": true, "populate_cache": true, "exclude": [], "strict_mode": false, "target": "postgres", "use_colors": true, "write_json": true, "defer": false, "invocation_command": "dbt docs generate -t postgres", "partial_parse_file_diff": true, "log_path": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests/logs", "warn_error_options": {"include": [], "exclude": []}, "which": "generate", "empty_catalog": false, "printer_width": 80, "indirect_selection": "eager", "favor_state": false, "enable_legacy_logger": false, "select": [], "show_resource_report": false, "log_level_file": "debug", "macro_debugging": false, "send_anonymous_usage_stats": true, "introspect": true, "log_level": "info", "quiet": false, "use_colors_file": true, "vars": {}, "cache_selected_only": false, "project_dir": "/Users/joseph.markiewicz/Documents/dbt_packages/ad_reporting/snapchat/dbt_snapchat_ads/integration_tests", "compile": true, "print": true, "log_format": "default", "partial_parse": true, "profiles_dir": "/Users/joseph.markiewicz/.dbt", "log_format_file": "debug", "static": false}} \ No newline at end of file diff --git a/integration_tests/dbt_project.yml b/integration_tests/dbt_project.yml index 42509cb..512f572 100644 --- a/integration_tests/dbt_project.yml +++ b/integration_tests/dbt_project.yml @@ -1,5 +1,5 @@ name: 'snapchat_ads_integration_tests' -version: '0.6.2' +version: '0.7.0' profile: 'integration_tests' config-version: 2 @@ -20,6 +20,9 @@ dispatch: - macro_namespace: dbt_utils search_order: ['spark_utils', 'dbt_utils'] +models: + +schema: "snapchat_ads_{{ var('directed_schema','dev') }}" + seeds: snapchat_ads_integration_tests: +quote_columns: "{{ true if target.type in ('redshift', 'postgres') else false }}" diff --git a/integration_tests/packages.yml b/integration_tests/packages.yml index b16d307..4a6b9c1 100644 --- a/integration_tests/packages.yml +++ b/integration_tests/packages.yml @@ -1,2 +1,2 @@ packages: - - local: ../ \ No newline at end of file + - local: ../ diff --git a/integration_tests/requirements.txt b/integration_tests/requirements.txt index ca5a642..810bae1 100644 --- a/integration_tests/requirements.txt +++ b/integration_tests/requirements.txt @@ -4,6 +4,4 @@ dbt-redshift>=1.3.0,<2.0.0 dbt-postgres>=1.3.0,<2.0.0 dbt-spark>=1.3.0,<2.0.0 dbt-spark[PyHive]>=1.3.0,<2.0.0 -dbt-databricks>=1.3.0,<2.0.0 - -oscrypto @ git+https://github.com/wbond/oscrypto.git@d5f3437 +dbt-databricks>=1.6.0,<2.0.0 \ No newline at end of file diff --git a/integration_tests/seeds/snapchat_ad_hourly_report_data.csv b/integration_tests/seeds/snapchat_ad_hourly_report_data.csv index 9a8a319..31429cd 100644 --- a/integration_tests/seeds/snapchat_ad_hourly_report_data.csv +++ b/integration_tests/seeds/snapchat_ad_hourly_report_data.csv @@ -1,1213 +1,1213 @@ -ļ»æad_id,date,impressions,spend,swipes -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 11:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 05:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 12:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 07:00:00.000,43,441359,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 01:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 12:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 01:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 03:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 08:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 09:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 19:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 00:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 22:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 02:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 14:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 07:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 06:00:00.000,67,820650,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 10:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 17:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 05:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 10:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 17:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 18:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 04:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 02:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 04:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 16:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 03:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 21:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 20:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 21:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 11:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 07:00:00.000,1,4399,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 03:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 10:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 06:00:00.000,1,11315,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 12:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 23:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 05:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 16:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 07:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 13:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 15:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 23:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 08:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 20:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 00:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 09:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 13:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 01:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 02:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 02:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 03:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 09:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 21:00:00.000,85,821305,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 13:00:00.000,1553,12659637,6 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 10:00:00.000,20,248173,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 15:00:00.000,318,3996587,1 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 17:00:00.000,1,8739,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 00:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 10:00:00.000,59,795954,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 13:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 21:00:00.000,38,329969,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 21:00:00.000,3837,18231555,14 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 02:00:00.000,158,1690079,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 00:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 00:00:00.000,60,648966,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 02:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 02:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 03:00:00.000,150,1643723,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 09:00:00.000,160,1212257,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 14:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 14:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 01:00:00.000,56,504006,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 03:00:00.000,12,93259,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 04:00:00.000,1,5594,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 23:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 14:00:00.000,305,4250748,3 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 01:00:00.000,87,844459,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 06:00:00.000,7,52944,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 16:00:00.000,31,255504,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 07:00:00.000,175,1686008,1 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 00:00:00.000,346,4007552,2 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 15:00:00.000,73,696813,1 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 10:00:00.000,167,2561421,2 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 11:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 08:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 07:00:00.000,1,19968,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 15:00:00.000,191,2319332,1 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 00:00:00.000,1003,4597201,2 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 08:00:00.000,362,5041894,4 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 17:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 13:00:00.000,3007,15660765,15 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 12:00:00.000,930,7387695,4 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 16:00:00.000,1743,8232314,9 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 08:00:00.000,10,73214,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 12:00:00.000,76,797939,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 07:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 22:00:00.000,990,8052576,5 -a17b8593-314a-4988-9046-477129372936,2021-03-30 19:00:00.000,265,3322088,4 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 15:00:00.000,127,754450,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 15:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 05:00:00.000,568,6445839,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 05:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 23:00:00.000,41,411672,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 17:00:00.000,721,5916824,2 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 12:00:00.000,310,2837638,2 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 01:00:00.000,20,168991,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 13:00:00.000,584,4807019,2 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 13:00:00.000,452,3842001,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 08:00:00.000,7,73423,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 18:00:00.000,345,3301435,2 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 22:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 14:00:00.000,432,5395441,2 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 02:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 15:00:00.000,1586,9321970,4 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 03:00:00.000,17,101706,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 09:00:00.000,4,47096,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 23:00:00.000,3533,18031207,14 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 11:00:00.000,329,2262129,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 22:00:00.000,802,7371346,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 22:00:00.000,278,2482137,3 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 02:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 01:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 04:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 12:00:00.000,1835,6680395,8 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 17:00:00.000,653,5032610,5 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 05:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 16:00:00.000,2584,12003026,11 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 14:00:00.000,116,786026,1 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 17:00:00.000,1628,13865921,6 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 16:00:00.000,4041,18531917,11 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 02:00:00.000,2591,12147062,9 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 21:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 06:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 06:00:00.000,2,26860,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 18:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 23:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 09:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 14:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 07:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 22:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 04:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 19:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 08:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 13:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 18:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 02:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 05:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 18:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 18:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 12:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 09:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 19:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 23:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 05:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 17:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 20:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 19:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 15:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 15:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 14:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 21:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 23:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 16:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 09:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 04:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 06:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 22:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 09:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 16:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 06:00:00.000,32,266646,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 15:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 15:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 20:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 20:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 00:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 12:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 22:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 02:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 10:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 01:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 04:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 15:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 20:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 23:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 17:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 03:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 10:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 01:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 23:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 19:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 01:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 19:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 16:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 06:00:00.000,8,120141,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 19:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 01:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 18:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 00:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 17:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 01:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 22:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 01:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 03:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 11:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 11:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 00:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 17:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 14:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 23:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 01:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 21:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 20:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 11:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 01:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 08:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 05:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 06:00:00.000,35,279027,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 14:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 08:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 09:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 09:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 19:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 20:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 21:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 09:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 15:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 19:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 20:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 16:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 17:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 13:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 17:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 06:00:00.000,3,40614,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 06:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 00:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 13:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 00:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 08:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 06:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 22:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 05:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 16:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 05:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 15:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 22:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 00:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 08:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 05:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 18:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 19:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 16:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 14:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 08:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 11:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 11:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 00:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 19:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 16:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 19:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 18:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 18:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 13:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 15:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 13:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 22:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 07:00:00.000,4,30930,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 11:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 22:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 02:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 15:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 20:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 02:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-04-01 02:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 00:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 23:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 00:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 03:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 16:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 12:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 00:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 12:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 05:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 18:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 13:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 00:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 23:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 14:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 10:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 01:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 04:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 04:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 23:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 07:00:00.000,2,43161,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 23:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 18:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 06:00:00.000,18,196475,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 05:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 15:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 08:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 09:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 07:00:00.000,30,355797,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 11:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 05:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 09:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 04:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 08:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 16:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 14:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 00:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 13:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 15:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 18:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 21:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 14:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 08:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 10:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 21:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 04:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 07:00:00.000,3,52845,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 14:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 07:00:00.000,76,506758,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 02:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 19:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 22:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 17:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 23:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 15:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 08:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 22:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 01:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 12:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 06:00:00.000,3,41894,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 12:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 21:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 02:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 07:00:00.000,27,364972,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 16:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 17:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 06:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 16:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 14:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 21:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 21:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 21:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 22:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 09:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 18:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 20:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 09:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 16:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 05:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 05:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 14:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 19:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 23:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 04:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 21:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 09:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 15:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 03:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 08:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 20:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 04:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 14:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 13:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 13:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 01:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 17:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 13:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 03:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 03:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 23:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 21:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 14:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 04:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 22:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 03:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 08:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 00:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 10:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 23:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 06:00:00.000,194,880427,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 11:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 10:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 02:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 01:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 16:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 09:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 21:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 07:00:00.000,50,550692,1 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 09:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 15:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 08:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 13:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 05:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 04:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 23:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 01:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 00:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 04:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 03:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 14:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 06:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 11:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 06:00:00.000,56,364543,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 13:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 02:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 20:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 11:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 22:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 21:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 11:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 14:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 00:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 16:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 04:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 20:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 11:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 17:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 22:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 18:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 19:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 17:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 12:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 05:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 18:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 07:00:00.000,94,549346,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 20:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 13:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 20:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 14:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 19:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 18:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 13:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 16:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 18:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 19:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 12:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 00:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 03:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 17:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 02:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 07:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 04:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 07:00:00.000,2,33542,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 01:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 12:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 03:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 12:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 08:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 11:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 16:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 20:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 03:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 22:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 15:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 08:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 01:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 12:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 17:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 17:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 02:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 22:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 20:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 17:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 02:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 12:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 10:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 15:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 05:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 22:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 07:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 21:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 04:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 18:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 13:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 07:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 12:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 02:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 04:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 15:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 10:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 08:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 17:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 13:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 09:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 09:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 21:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 12:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 06:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 02:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 23:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 14:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 11:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 05:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 10:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 07:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 11:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 19:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 10:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 12:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 11:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 05:00:00.000,175,590954,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 17:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 09:00:00.000,101,1768921,2 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 12:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 16:00:00.000,1549,12613071,3 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 17:00:00.000,1368,11613418,4 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 23:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 05:00:00.000,1,11483,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 02:00:00.000,30,274374,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 07:00:00.000,45,971823,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 20:00:00.000,1318,6322927,3 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 02:00:00.000,42,285834,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 15:00:00.000,41,349759,1 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 07:00:00.000,277,2194144,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 03:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 02:00:00.000,45,315537,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 01:00:00.000,1958,17863715,5 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 06:00:00.000,77,955159,4 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 11:00:00.000,2451,13190288,6 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 03:00:00.000,32,250789,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 21:00:00.000,1819,18453728,9 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 15:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 11:00:00.000,105,1450385,2 -a17b8593-314a-4988-9046-477129372936,2021-03-30 22:00:00.000,133,1615519,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 13:00:00.000,2459,23597150,9 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 22:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 15:00:00.000,1505,6962728,7 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 05:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 21:00:00.000,1227,10313618,7 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 02:00:00.000,1347,12431636,4 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 17:00:00.000,20,191322,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 14:00:00.000,3013,16328513,14 -a17b8593-314a-4988-9046-477129372936,2021-03-31 05:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 04:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 11:00:00.000,193,3069467,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 02:00:00.000,2517,11730312,9 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 12:00:00.000,3513,17924758,11 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 18:00:00.000,1563,7516512,7 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 10:00:00.000,207,1925543,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 17:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 03:00:00.000,628,5643136,3 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 01:00:00.000,18,162307,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 05:00:00.000,5,63352,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 08:00:00.000,137,1622027,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 17:00:00.000,68,652734,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 18:00:00.000,188,1994806,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 04:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 00:00:00.000,3872,18554279,10 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 23:00:00.000,29,239474,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 22:00:00.000,2412,23273209,10 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 13:00:00.000,21,131537,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 20:00:00.000,2172,21989346,9 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 13:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 22:00:00.000,4051,19101461,18 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 11:00:00.000,358,2852889,3 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 03:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 19:00:00.000,172,1964804,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 07:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 14:00:00.000,1683,7647213,6 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 04:00:00.000,10,67745,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 15:00:00.000,2591,25654054,11 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 16:00:00.000,193,1915019,3 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 11:00:00.000,306,3806244,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 11:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 21:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 14:00:00.000,285,2684556,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 17:00:00.000,45,459565,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 23:00:00.000,120,1180060,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 02:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 04:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 15:00:00.000,953,7239433,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 15:00:00.000,22,192902,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 06:00:00.000,1,6043,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 10:00:00.000,403,2629925,3 -a17b8593-314a-4988-9046-477129372936,2021-03-30 08:00:00.000,99,1821365,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 21:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 04:00:00.000,5,35281,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 06:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 09:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 22:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 03:00:00.000,18,291809,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 21:00:00.000,290,2760221,4 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 23:00:00.000,4221,20912886,13 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 22:00:00.000,35,312509,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 13:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 09:00:00.000,49,741871,1 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 03:00:00.000,30,171385,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 06:00:00.000,9,208180,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 09:00:00.000,7,45611,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 10:00:00.000,13,124345,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 18:00:00.000,227,2943634,2 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 12:00:00.000,16,98752,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 19:00:00.000,3823,18605758,9 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 01:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 04:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 00:00:00.000,113,1106132,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 09:00:00.000,2,21058,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 14:00:00.000,1,6883,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 11:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 05:00:00.000,28,264504,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 14:00:00.000,470,5338309,2 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 05:00:00.000,1,1760,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 20:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 08:00:00.000,1,5337,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 20:00:00.000,1305,10879474,4 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 15:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 20:00:00.000,34,233165,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 19:00:00.000,161,1657150,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 14:00:00.000,49,520128,2 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 07:00:00.000,8,125540,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 19:00:00.000,543,4619428,4 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 01:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 07:00:00.000,257,3168478,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 04:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 09:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 01:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 08:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 19:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 11:00:00.000,126,1670324,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 08:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 08:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 09:00:00.000,330,2951953,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 15:00:00.000,290,3730884,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 18:00:00.000,98,836539,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 20:00:00.000,161,1485476,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 16:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 13:00:00.000,1671,7324223,3 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 00:00:00.000,12,107404,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 18:00:00.000,593,4991651,4 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 06:00:00.000,17,157222,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 23:00:00.000,100,887111,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 18:00:00.000,3612,18498443,17 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 02:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 00:00:00.000,2458,22301280,12 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 04:00:00.000,3,15507,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 02:00:00.000,8,74770,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 19:00:00.000,95,883499,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 08:00:00.000,285,3229094,1 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 22:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 22:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 17:00:00.000,215,2594203,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 19:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 02:00:00.000,56,232485,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 18:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 01:00:00.000,14,156899,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 13:00:00.000,807,6080325,2 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 03:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 18:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 23:00:00.000,503,3707589,4 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 23:00:00.000,28,263088,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 11:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 19:00:00.000,467,4354288,4 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 22:00:00.000,199,2001814,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 00:00:00.000,85,826912,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 09:00:00.000,501,5992047,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 16:00:00.000,1,7013,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 13:00:00.000,73,848999,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 06:00:00.000,43,290280,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 23:00:00.000,115,1471127,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 03:00:00.000,3,18981,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 23:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 14:00:00.000,1535,12833414,12 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 12:00:00.000,317,3004565,2 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 11:00:00.000,137,1572207,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 11:00:00.000,1624,17139265,2 -a17b8593-314a-4988-9046-477129372936,2021-03-30 10:00:00.000,99,1534319,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 20:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 23:00:00.000,58,682848,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 16:00:00.000,275,3591947,3 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 22:00:00.000,51,629679,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 07:00:00.000,79,742182,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 06:00:00.000,356,4042844,2 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 02:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 11:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 21:00:00.000,13,87255,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 01:00:00.000,3346,15907426,13 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 16:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 04:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 06:00:00.000,2,12958,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 18:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 03:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 13:00:00.000,154,1784790,4 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 19:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 17:00:00.000,809,6016626,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 17:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 14:00:00.000,2610,25878373,7 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 18:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 20:00:00.000,189,2511177,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 23:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 09:00:00.000,69,1131042,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 00:00:00.000,576,4711416,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 18:00:00.000,25,190617,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 23:00:00.000,1167,5780268,4 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 15:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 16:00:00.000,916,6975621,3 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 12:00:00.000,947,9728518,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 01:00:00.000,39,386192,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 07:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 20:00:00.000,25,231295,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 11:00:00.000,21,372379,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 21:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 19:00:00.000,58,570714,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 08:00:00.000,290,2581376,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 01:00:00.000,348,3770733,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 10:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 17:00:00.000,254,2517266,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 04:00:00.000,6,55350,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 00:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 05:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 08:00:00.000,198,1461709,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 19:00:00.000,1126,9644646,5 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 02:00:00.000,48,478582,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 19:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 22:00:00.000,410,3917162,4 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 21:00:00.000,240,2597018,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 11:00:00.000,1119,4685653,5 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 07:00:00.000,40,546205,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 21:00:00.000,414,5122018,2 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 17:00:00.000,3304,17721076,12 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 16:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 02:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 16:00:00.000,60,724323,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 10:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 15:00:00.000,1562,12444099,4 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 09:00:00.000,47,686430,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 01:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 13:00:00.000,973,10577045,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 13:00:00.000,45,346053,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 10:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 14:00:00.000,13,129274,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 22:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 20:00:00.000,282,2685341,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 05:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 00:00:00.000,424,2953806,1 -a17b8593-314a-4988-9046-477129372936,2021-03-31 03:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 13:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 05:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 03:00:00.000,1366,6567773,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 02:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 07:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 10:00:00.000,774,8673221,5 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 09:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 12:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 08:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 15:00:00.000,3285,17122797,11 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 10:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 20:00:00.000,3681,17951813,12 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 15:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 17:00:00.000,1666,8330465,4 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 18:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 19:00:00.000,2291,23450846,11 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 12:00:00.000,220,2643345,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 03:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 09:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 16:00:00.000,18,184631,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 17:00:00.000,408,5411919,7 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 05:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 18:00:00.000,42,574967,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 04:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 10:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 17:00:00.000,228,2495400,2 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 12:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 12:00:00.000,1632,6371433,7 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 18:00:00.000,1853,18630170,5 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 16:00:00.000,230,2523152,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 12:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 00:00:00.000,76,895897,1 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 21:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 09:00:00.000,15,197374,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 19:00:00.000,1461,7268240,7 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 22:00:00.000,22,243379,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 23:00:00.000,2601,24530438,9 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 01:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 10:00:00.000,71,860436,1 -a17b8593-314a-4988-9046-477129372936,2021-03-30 13:00:00.000,235,3041735,3 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 09:00:00.000,155,1515309,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 21:00:00.000,1256,5905637,6 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 06:00:00.000,39,336787,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 05:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 08:00:00.000,27,368696,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 13:00:00.000,373,3777883,2 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 10:00:00.000,2,8496,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 16:00:00.000,3472,18111906,15 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 06:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 11:00:00.000,809,7451586,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 08:00:00.000,16,523243,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 06:00:00.000,1,4083,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 11:00:00.000,18,133394,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 22:00:00.000,1114,5375054,2 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 00:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 01:00:00.000,149,751124,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 20:00:00.000,182,2407903,1 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 21:00:00.000,482,3840608,4 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 01:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 02:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 17:00:00.000,2328,23577379,9 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 00:00:00.000,10,85203,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 16:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 07:00:00.000,24,327417,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 03:00:00.000,11,85029,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 04:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 12:00:00.000,557,4066714,2 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 04:00:00.000,115,1154097,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 05:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 01:00:00.000,139,937720,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 05:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 14:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 20:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 05:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 15:00:00.000,146,1534077,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 06:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 06:00:00.000,42,371820,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 08:00:00.000,7,83584,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 14:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 07:00:00.000,6,94088,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 20:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 16:00:00.000,2574,25383497,10 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 14:00:00.000,57,575485,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 18:00:00.000,285,4159424,3 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 07:00:00.000,3,28048,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 05:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 16:00:00.000,295,3822549,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 01:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 22:00:00.000,243,2922250,3 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 08:00:00.000,74,1038677,1 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 13:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 20:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 06:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 15:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 23:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 14:00:00.000,882,6500085,5 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 23:00:00.000,255,3157406,3 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 12:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-31 04:00:00.000,0,0,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 21:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 22:00:00.000,518,4119201,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 20:00:00.000,461,3727225,5 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 18:00:00.000,1425,12068348,6 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 04:00:00.000,74,812724,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 10:00:00.000,999,6121252,4 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 06:00:00.000,307,1631444,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 12:00:00.000,1988,18813139,5 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 07:00:00.000,155,847601,3 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 20:00:00.000,63,740464,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 18:00:00.000,260,2452446,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 14:00:00.000,138,1332829,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 05:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 12:00:00.000,70,702973,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 23:00:00.000,1411,11495035,8 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 00:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 12:00:00.000,241,3330149,0 -2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 19:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 09:00:00.000,250,2470634,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 19:00:00.000,15,125768,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 10:00:00.000,521,5107959,1 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 04:00:00.000,418,1784511,1 -a17b8593-314a-4988-9046-477129372936,2021-03-30 21:00:00.000,203,2555213,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 17:00:00.000,193,1693880,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 19:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 16:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 21:00:00.000,549,4189582,3 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 08:00:00.000,22,326530,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 22:00:00.000,3637,17739122,15 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 16:00:00.000,725,5864534,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 05:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 20:00:00.000,495,4364137,3 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 13:00:00.000,260,2140179,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 19:00:00.000,340,4021531,2 -a17b8593-314a-4988-9046-477129372936,2021-03-29 21:00:00.000,170,2134078,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 08:00:00.000,105,1117676,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 09:00:00.000,121,2070263,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 23:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 12:00:00.000,1000,5818600,6 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 04:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 03:00:00.000,573,5413976,5 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 19:00:00.000,1190,9121197,6 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 14:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 10:00:00.000,365,2620895,1 -a17b8593-314a-4988-9046-477129372936,2021-03-29 08:00:00.000,105,1807154,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 21:00:00.000,1578,14120926,7 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 17:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 18:00:00.000,1582,10850116,6 -a17b8593-314a-4988-9046-477129372936,2021-03-29 23:00:00.000,66,800489,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 18:00:00.000,22,182804,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 11:00:00.000,2683,12350285,18 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 12:00:00.000,184,1733248,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 04:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 13:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 10:00:00.000,29,276458,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 08:00:00.000,98,1044844,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 22:00:00.000,2462,23211703,10 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 00:00:00.000,5,50274,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 13:00:00.000,1579,6600250,6 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 20:00:00.000,3905,18449153,12 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 10:00:00.000,1311,7973043,4 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 15:00:00.000,785,6262264,2 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 11:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 20:00:00.000,684,4891217,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 05:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 19:00:00.000,11,101664,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 21:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 08:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 10:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 00:00:00.000,6,47936,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 21:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 00:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 19:00:00.000,104,888653,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 23:00:00.000,129,1047011,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 12:00:00.000,548,4403635,3 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 23:00:00.000,927,7577003,1 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 04:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 09:00:00.000,72,820171,3 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 01:00:00.000,2336,20368181,12 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 04:00:00.000,742,7764866,4 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 09:00:00.000,148,1315552,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 04:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 15:00:00.000,3370,15219213,4 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 10:00:00.000,195,1664659,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 02:00:00.000,48,437387,1 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 14:00:00.000,3354,16052385,12 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 19:00:00.000,1125,7971932,8 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 00:00:00.000,118,951203,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 01:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 13:00:00.000,3502,17088285,13 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 22:00:00.000,58,476068,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 21:00:00.000,627,5131797,1 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 21:00:00.000,1002,8710016,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 11:00:00.000,728,4408212,5 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 03:00:00.000,31,152953,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 12:00:00.000,117,688378,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 18:00:00.000,1,7590,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 12:00:00.000,699,4784939,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 03:00:00.000,191,1838746,3 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 19:00:00.000,925,8725402,8 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 04:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 14:00:00.000,500,4287133,3 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 05:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 01:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 10:00:00.000,116,1969963,1 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 01:00:00.000,68,573279,1 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 15:00:00.000,3546,18063592,18 -a17b8593-314a-4988-9046-477129372936,2021-03-30 05:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 20:00:00.000,168,1575840,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 12:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 05:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 04:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 11:00:00.000,338,3116602,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 22:00:00.000,77,651767,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 16:00:00.000,146,1278559,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 12:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 01:00:00.000,271,2420369,1 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 02:00:00.000,33,250005,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 00:00:00.000,347,1839737,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 09:00:00.000,151,1911071,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 23:00:00.000,203,1595760,1 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 22:00:00.000,508,4311928,2 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 05:00:00.000,10,79456,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 22:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 18:00:00.000,3594,17084307,10 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 17:00:00.000,828,5320029,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 03:00:00.000,1,5809,1 -a17b8593-314a-4988-9046-477129372936,2021-03-30 03:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 23:00:00.000,13,101219,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 15:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 01:00:00.000,1,35745,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 10:00:00.000,182,2069744,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 12:00:00.000,413,4064754,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 00:00:00.000,143,1199820,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 18:00:00.000,361,3774249,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 14:00:00.000,601,5565294,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 04:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 04:00:00.000,8,37479,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 18:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 18:00:00.000,1,16088,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 11:00:00.000,176,1837968,1 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 14:00:00.000,1021,6685301,10 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 10:00:00.000,10,101476,1 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 20:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 01:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 11:00:00.000,429,3501946,2 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 08:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 14:00:00.000,1429,6480656,5 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 08:00:00.000,8,117738,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 23:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 03:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 18:00:00.000,2338,10288325,8 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 09:00:00.000,12,81913,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 13:00:00.000,699,6261834,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 22:00:00.000,991,8604072,3 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 16:00:00.000,660,5384093,5 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 15:00:00.000,535,4726852,1 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 19:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 19:00:00.000,407,3342830,4 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 01:00:00.000,109,553986,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 23:00:00.000,212,1978056,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 10:00:00.000,832,5023380,6 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 17:00:00.000,3205,14376884,10 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 22:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 01:00:00.000,56,552555,1 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 08:00:00.000,242,1598227,1 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 03:00:00.000,1215,5905806,2 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 10:00:00.000,380,2421339,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 10:00:00.000,216,2293918,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 17:00:00.000,49,366202,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 23:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 11:00:00.000,394,3508900,2 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 21:00:00.000,18,145194,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 04:00:00.000,17,248096,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 22:00:00.000,156,1774056,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 18:00:00.000,1406,10851176,4 -a17b8593-314a-4988-9046-477129372936,2021-03-29 15:00:00.000,333,4563156,3 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 09:00:00.000,196,1374194,2 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 02:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 00:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 03:00:00.000,21,119267,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 20:00:00.000,1142,11152518,3 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 03:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 23:00:00.000,0,0,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 05:00:00.000,33,387752,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 20:00:00.000,0,0,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 00:00:00.000,196,1541270,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 16:00:00.000,973,6599244,4 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 15:00:00.000,17,133952,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 00:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 17:00:00.000,179,1622428,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 12:00:00.000,22,233823,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 02:00:00.000,263,2344704,2 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 11:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 20:00:00.000,1,6269,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 08:00:00.000,4,33263,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 09:00:00.000,205,1719604,2 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 04:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 22:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 10:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 11:00:00.000,1974,8941325,6 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 09:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 18:00:00.000,1846,16280373,6 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 04:00:00.000,55,637708,1 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 16:00:00.000,2242,9755330,12 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 14:00:00.000,795,6274721,2 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 01:00:00.000,3,21634,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 20:00:00.000,170,2180834,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 01:00:00.000,0,0,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 11:00:00.000,70,425365,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 10:00:00.000,125,1117850,1 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 02:00:00.000,501,4812732,1 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 13:00:00.000,811,6891713,2 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 15:00:00.000,2004,8866189,9 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 03:00:00.000,945,8940173,2 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 15:00:00.000,477,3897494,3 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 16:00:00.000,2086,11969340,7 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 19:00:00.000,69,640901,1 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 09:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 23:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 20:00:00.000,71,605056,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 15:00:00.000,186,1626961,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 14:00:00.000,21,237871,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 03:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 19:00:00.000,3818,17634185,16 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 08:00:00.000,74,1249722,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 15:00:00.000,719,6681619,3 -a17b8593-314a-4988-9046-477129372936,2021-03-29 12:00:00.000,258,3250120,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 01:00:00.000,61,422845,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 15:00:00.000,673,4531220,2 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 09:00:00.000,390,2968511,1 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 08:00:00.000,178,1524781,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 03:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 10:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 03:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 05:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 21:00:00.000,1038,10454616,3 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 21:00:00.000,905,4384684,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 02:00:00.000,1,4470,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 00:00:00.000,2475,22176627,10 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 21:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 12:00:00.000,3799,16766113,3 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 10:00:00.000,259,2395887,3 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 00:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 02:00:00.000,1574,14302435,11 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 01:00:00.000,3463,16521976,10 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 23:00:00.000,246,2155425,2 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 19:00:00.000,1583,7454194,7 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 12:00:00.000,828,6773912,2 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 17:00:00.000,522,3487252,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 16:00:00.000,32,363999,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 19:00:00.000,454,3837785,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 20:00:00.000,1,5895,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 11:00:00.000,187,2571266,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 10:00:00.000,22,241347,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 02:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 11:00:00.000,11,66032,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 05:00:00.000,300,1424887,1 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 14:00:00.000,266,2185212,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 21:00:00.000,42,433671,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 13:00:00.000,100,602033,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 04:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 02:00:00.000,1,6652,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 08:00:00.000,282,1944509,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 13:00:00.000,987,6487674,5 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 08:00:00.000,75,807859,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 13:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 12:00:00.000,2899,10962684,8 -a17b8593-314a-4988-9046-477129372936,2021-03-29 17:00:00.000,156,1877868,4 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 20:00:00.000,512,4425763,4 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 00:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 23:00:00.000,513,2422252,2 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 13:00:00.000,18,221822,0 -a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 22:00:00.000,345,2538806,4 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 00:00:00.000,289,2456791,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 23:00:00.000,674,6463110,4 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 16:00:00.000,1463,11372727,9 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 05:00:00.000,0,0,0 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 22:00:00.000,692,3161385,6 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 13:00:00.000,1796,10125965,11 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 20:00:00.000,21,194128,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 09:00:00.000,576,4009595,1 -a17b8593-314a-4988-9046-477129372936,2021-03-29 18:00:00.000,492,5818347,2 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 08:00:00.000,222,2317348,2 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 08:00:00.000,555,4231851,2 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 14:00:00.000,1029,8684328,13 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 20:00:00.000,1300,6096970,5 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 17:00:00.000,4109,20130024,11 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 20:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 05:00:00.000,0,0,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 03:00:00.000,0,0,0 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 18:00:00.000,79,675172,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 01:00:00.000,21,249739,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 01:00:00.000,648,6169615,4 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 11:00:00.000,0,0,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 00:00:00.000,49,477507,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 18:00:00.000,258,2161081,3 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 03:00:00.000,26,261870,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 10:00:00.000,105,988997,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 14:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 21:00:00.000,437,3661307,2 -a17b8593-314a-4988-9046-477129372936,2021-03-29 13:00:00.000,323,3776030,3 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 21:00:00.000,3828,18465702,21 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 09:00:00.000,26,272593,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 02:00:00.000,41,373201,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 16:00:00.000,477,4331460,2 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 14:00:00.000,2712,12461210,11 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 16:00:00.000,0,0,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 02:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 18:00:00.000,1,2394,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 17:00:00.000,0,0,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 13:00:00.000,2592,11089381,9 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 17:00:00.000,25,233061,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 14:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 09:00:00.000,325,3082769,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 12:00:00.000,755,6149598,7 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 00:00:00.000,357,3290033,3 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 09:00:00.000,16,186073,0 -a17b8593-314a-4988-9046-477129372936,2021-03-30 02:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 05:00:00.000,48,704245,0 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 23:00:00.000,2822,25399031,10 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 11:00:00.000,951,3763557,0 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 09:00:00.000,83,1085049,1 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 21:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 19:00:00.000,0,0,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 02:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 19:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 21:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 20:00:00.000,1144,9533241,3 -e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 02:00:00.000,53,219682,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 21:00:00.000,107,1030630,0 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 17:00:00.000,202,1787253,1 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 22:00:00.000,0,0,0 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 00:00:00.000,3624,18231211,16 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 20:00:00.000,954,9606458,6 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 05:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 13:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 12:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 13:00:00.000,903,7719560,7 -654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 17:00:00.000,929,5353877,3 -7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 04:00:00.000,498,1944995,0 -8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 15:00:00.000,1,9386,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 17:00:00.000,0,0,0 -0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 16:00:00.000,896,7864121,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 05:00:00.000,0,0,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 09:00:00.000,0,0,0 -af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 15:00:00.000,1192,9796698,7 -653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 11:00:00.000,88,861483,0 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 04:00:00.000,0,0,0 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 03:00:00.000,3,15514,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 00:00:00.000,806,7571800,1 -b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 11:00:00.000,307,2846371,1 -44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 19:00:00.000,3,44777,0 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 16:00:00.000,99,561187,0 -a17b8593-314a-4988-9046-477129372936,2021-03-29 16:00:00.000,303,4075234,6 -2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 14:00:00.000,365,2841559,1 -bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 18:00:00.000,103,894265,1 -f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 22:00:00.000,21,227929,0 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 16:00:00.000,0,0,0 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 14:00:00.000,2253,13242332,8 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 04:00:00.000,158,1803597,2 -504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 19:00:00.000,1455,12874794,1 -e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 08:00:00.000,0,0,0 -1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 18:00:00.000,0,0,0 \ No newline at end of file +ļ»æad_id,date,impressions,spend,swipes,conversion_purchases_value,conversion_add_billing,conversion_add_cart,conversion_app_opens,conversion_level_completes,conversion_page_views,conversion_purchases,conversion_save,conversion_searches,conversion_sign_ups,conversion_start_checkout,conversion_view_content +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 11:00:00.000,42,1353,1,0.01,1,1,1,1,2,1,1,1,1,1,1 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 07:00:00.000,43,441359,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 06:00:00.000,67,820650,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 07:00:00.000,1,4399,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 06:00:00.000,1,11315,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 21:00:00.000,85,821305,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 13:00:00.000,1553,12659637,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 10:00:00.000,20,248173,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 15:00:00.000,318,3996587,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 17:00:00.000,1,8739,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 10:00:00.000,59,795954,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 21:00:00.000,38,329969,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 21:00:00.000,3837,18231555,14,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 02:00:00.000,158,1690079,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 00:00:00.000,60,648966,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 03:00:00.000,150,1643723,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 09:00:00.000,160,1212257,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 01:00:00.000,56,504006,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 03:00:00.000,12,93259,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 04:00:00.000,1,5594,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 14:00:00.000,305,4250748,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 01:00:00.000,87,844459,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 06:00:00.000,7,52944,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 16:00:00.000,31,255504,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 07:00:00.000,175,1686008,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 00:00:00.000,346,4007552,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 15:00:00.000,73,696813,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 10:00:00.000,167,2561421,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 07:00:00.000,1,19968,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 15:00:00.000,191,2319332,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 00:00:00.000,1003,4597201,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 08:00:00.000,362,5041894,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 13:00:00.000,3007,15660765,15,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 12:00:00.000,930,7387695,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 16:00:00.000,1743,8232314,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 08:00:00.000,10,73214,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 12:00:00.000,76,797939,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 22:00:00.000,990,8052576,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 19:00:00.000,265,3322088,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 15:00:00.000,127,754450,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 05:00:00.000,568,6445839,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 23:00:00.000,41,411672,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 17:00:00.000,721,5916824,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 12:00:00.000,310,2837638,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 01:00:00.000,20,168991,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 13:00:00.000,584,4807019,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 13:00:00.000,452,3842001,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 08:00:00.000,7,73423,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 18:00:00.000,345,3301435,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 14:00:00.000,432,5395441,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 15:00:00.000,1586,9321970,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 03:00:00.000,17,101706,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 09:00:00.000,4,47096,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 23:00:00.000,3533,18031207,14,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 11:00:00.000,329,2262129,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 22:00:00.000,802,7371346,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 22:00:00.000,278,2482137,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 12:00:00.000,1835,6680395,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 17:00:00.000,653,5032610,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 16:00:00.000,2584,12003026,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 14:00:00.000,116,786026,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 17:00:00.000,1628,13865921,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 16:00:00.000,4041,18531917,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 02:00:00.000,2591,12147062,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 06:00:00.000,2,26860,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 06:00:00.000,32,266646,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 06:00:00.000,8,120141,0,0.00,0,0,0,0,0,0,0,0,0,, +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 06:00:00.000,35,279027,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 06:00:00.000,3,40614,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 07:00:00.000,4,30930,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 07:00:00.000,2,43161,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 06:00:00.000,18,196475,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 07:00:00.000,30,355797,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 07:00:00.000,3,52845,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 07:00:00.000,76,506758,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 06:00:00.000,3,41894,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 07:00:00.000,27,364972,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 06:00:00.000,194,880427,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 07:00:00.000,50,550692,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 06:00:00.000,56,364543,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 07:00:00.000,94,549346,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 07:00:00.000,2,33542,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-04-01 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-04-01 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-04-01 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-04-01 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-04-01 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 05:00:00.000,175,590954,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 09:00:00.000,101,1768921,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 16:00:00.000,1549,12613071,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 17:00:00.000,1368,11613418,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 05:00:00.000,1,11483,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 02:00:00.000,30,274374,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 07:00:00.000,45,971823,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 20:00:00.000,1318,6322927,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 02:00:00.000,42,285834,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 15:00:00.000,41,349759,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 07:00:00.000,277,2194144,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 02:00:00.000,45,315537,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 01:00:00.000,1958,17863715,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 06:00:00.000,77,955159,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 11:00:00.000,2451,13190288,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 03:00:00.000,32,250789,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 21:00:00.000,1819,18453728,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 11:00:00.000,105,1450385,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 22:00:00.000,133,1615519,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 13:00:00.000,2459,23597150,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 15:00:00.000,1505,6962728,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 21:00:00.000,1227,10313618,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 02:00:00.000,1347,12431636,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 17:00:00.000,20,191322,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 14:00:00.000,3013,16328513,14,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 11:00:00.000,193,3069467,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 02:00:00.000,2517,11730312,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 12:00:00.000,3513,17924758,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 18:00:00.000,1563,7516512,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 10:00:00.000,207,1925543,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 03:00:00.000,628,5643136,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 01:00:00.000,18,162307,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 05:00:00.000,5,63352,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 08:00:00.000,137,1622027,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 17:00:00.000,68,652734,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 18:00:00.000,188,1994806,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 00:00:00.000,3872,18554279,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 23:00:00.000,29,239474,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 22:00:00.000,2412,23273209,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 13:00:00.000,21,131537,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 20:00:00.000,2172,21989346,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 22:00:00.000,4051,19101461,18,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 11:00:00.000,358,2852889,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 19:00:00.000,172,1964804,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 14:00:00.000,1683,7647213,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 04:00:00.000,10,67745,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 15:00:00.000,2591,25654054,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 16:00:00.000,193,1915019,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 11:00:00.000,306,3806244,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 14:00:00.000,285,2684556,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 17:00:00.000,45,459565,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 23:00:00.000,120,1180060,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 15:00:00.000,953,7239433,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 15:00:00.000,22,192902,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 06:00:00.000,1,6043,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 10:00:00.000,403,2629925,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 08:00:00.000,99,1821365,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 04:00:00.000,5,35281,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 03:00:00.000,18,291809,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 21:00:00.000,290,2760221,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 23:00:00.000,4221,20912886,13,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 22:00:00.000,35,312509,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 09:00:00.000,49,741871,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 03:00:00.000,30,171385,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 06:00:00.000,9,208180,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 09:00:00.000,7,45611,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 10:00:00.000,13,124345,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 18:00:00.000,227,2943634,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 12:00:00.000,16,98752,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 19:00:00.000,3823,18605758,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 00:00:00.000,113,1106132,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 09:00:00.000,2,21058,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 14:00:00.000,1,6883,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 05:00:00.000,28,264504,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 14:00:00.000,470,5338309,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 05:00:00.000,1,1760,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 08:00:00.000,1,5337,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 20:00:00.000,1305,10879474,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 20:00:00.000,34,233165,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 19:00:00.000,161,1657150,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 14:00:00.000,49,520128,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 07:00:00.000,8,125540,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 19:00:00.000,543,4619428,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 07:00:00.000,257,3168478,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 11:00:00.000,126,1670324,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 09:00:00.000,330,2951953,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 15:00:00.000,290,3730884,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 18:00:00.000,98,836539,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 20:00:00.000,161,1485476,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 13:00:00.000,1671,7324223,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 00:00:00.000,12,107404,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 18:00:00.000,593,4991651,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 06:00:00.000,17,157222,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 23:00:00.000,100,887111,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 18:00:00.000,3612,18498443,17,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 00:00:00.000,2458,22301280,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 04:00:00.000,3,15507,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 02:00:00.000,8,74770,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 19:00:00.000,95,883499,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 08:00:00.000,285,3229094,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 17:00:00.000,215,2594203,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 02:00:00.000,56,232485,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 01:00:00.000,14,156899,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 13:00:00.000,807,6080325,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 23:00:00.000,503,3707589,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 23:00:00.000,28,263088,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 19:00:00.000,467,4354288,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 22:00:00.000,199,2001814,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 00:00:00.000,85,826912,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 09:00:00.000,501,5992047,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 16:00:00.000,1,7013,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 13:00:00.000,73,848999,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 06:00:00.000,43,290280,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 23:00:00.000,115,1471127,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 03:00:00.000,3,18981,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 14:00:00.000,1535,12833414,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 12:00:00.000,317,3004565,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 11:00:00.000,137,1572207,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 11:00:00.000,1624,17139265,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 10:00:00.000,99,1534319,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 23:00:00.000,58,682848,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 16:00:00.000,275,3591947,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 22:00:00.000,51,629679,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 07:00:00.000,79,742182,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 06:00:00.000,356,4042844,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 21:00:00.000,13,87255,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 01:00:00.000,3346,15907426,13,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 06:00:00.000,2,12958,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 13:00:00.000,154,1784790,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 17:00:00.000,809,6016626,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 14:00:00.000,2610,25878373,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 20:00:00.000,189,2511177,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 09:00:00.000,69,1131042,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 00:00:00.000,576,4711416,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 18:00:00.000,25,190617,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 23:00:00.000,1167,5780268,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 16:00:00.000,916,6975621,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 12:00:00.000,947,9728518,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 01:00:00.000,39,386192,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 20:00:00.000,25,231295,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 11:00:00.000,21,372379,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 19:00:00.000,58,570714,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 08:00:00.000,290,2581376,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 01:00:00.000,348,3770733,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 17:00:00.000,254,2517266,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 04:00:00.000,6,55350,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 08:00:00.000,198,1461709,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 19:00:00.000,1126,9644646,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 02:00:00.000,48,478582,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 22:00:00.000,410,3917162,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 21:00:00.000,240,2597018,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 11:00:00.000,1119,4685653,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 07:00:00.000,40,546205,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 21:00:00.000,414,5122018,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 17:00:00.000,3304,17721076,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 16:00:00.000,60,724323,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 15:00:00.000,1562,12444099,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 09:00:00.000,47,686430,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 13:00:00.000,973,10577045,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 13:00:00.000,45,346053,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 14:00:00.000,13,129274,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 20:00:00.000,282,2685341,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 00:00:00.000,424,2953806,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 03:00:00.000,1366,6567773,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 07:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 10:00:00.000,774,8673221,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 15:00:00.000,3285,17122797,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 20:00:00.000,3681,17951813,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 17:00:00.000,1666,8330465,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 19:00:00.000,2291,23450846,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 12:00:00.000,220,2643345,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 16:00:00.000,18,184631,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 17:00:00.000,408,5411919,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 18:00:00.000,42,574967,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 17:00:00.000,228,2495400,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 12:00:00.000,1632,6371433,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 18:00:00.000,1853,18630170,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 16:00:00.000,230,2523152,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 00:00:00.000,76,895897,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 09:00:00.000,15,197374,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 19:00:00.000,1461,7268240,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 22:00:00.000,22,243379,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 23:00:00.000,2601,24530438,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 10:00:00.000,71,860436,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 13:00:00.000,235,3041735,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 09:00:00.000,155,1515309,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 21:00:00.000,1256,5905637,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 06:00:00.000,39,336787,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 08:00:00.000,27,368696,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 13:00:00.000,373,3777883,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 10:00:00.000,2,8496,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 16:00:00.000,3472,18111906,15,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 11:00:00.000,809,7451586,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 08:00:00.000,16,523243,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 06:00:00.000,1,4083,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 11:00:00.000,18,133394,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 22:00:00.000,1114,5375054,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-31 01:00:00.000,149,751124,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 20:00:00.000,182,2407903,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 21:00:00.000,482,3840608,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-31 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 17:00:00.000,2328,23577379,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 00:00:00.000,10,85203,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 07:00:00.000,24,327417,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-31 03:00:00.000,11,85029,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 12:00:00.000,557,4066714,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-31 04:00:00.000,115,1154097,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 01:00:00.000,139,937720,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 15:00:00.000,146,1534077,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 06:00:00.000,42,371820,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 08:00:00.000,7,83584,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 07:00:00.000,6,94088,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 16:00:00.000,2574,25383497,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 14:00:00.000,57,575485,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 18:00:00.000,285,4159424,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 07:00:00.000,3,28048,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 16:00:00.000,295,3822549,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-31 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 22:00:00.000,243,2922250,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 08:00:00.000,74,1038677,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 06:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 14:00:00.000,882,6500085,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 23:00:00.000,255,3157406,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-31 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 22:00:00.000,518,4119201,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 20:00:00.000,461,3727225,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 18:00:00.000,1425,12068348,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-31 04:00:00.000,74,812724,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 10:00:00.000,999,6121252,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 06:00:00.000,307,1631444,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 12:00:00.000,1988,18813139,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 07:00:00.000,155,847601,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 20:00:00.000,63,740464,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 18:00:00.000,260,2452446,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 14:00:00.000,138,1332829,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-31 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 12:00:00.000,70,702973,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 23:00:00.000,1411,11495035,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-31 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 12:00:00.000,241,3330149,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2576f072-7d5d-4b23-a607-7263ee1b1bde,2021-03-29 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 09:00:00.000,250,2470634,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 19:00:00.000,15,125768,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 10:00:00.000,521,5107959,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-31 04:00:00.000,418,1784511,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 21:00:00.000,203,2555213,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 17:00:00.000,193,1693880,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 21:00:00.000,549,4189582,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 08:00:00.000,22,326530,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 22:00:00.000,3637,17739122,15,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 16:00:00.000,725,5864534,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 20:00:00.000,495,4364137,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 13:00:00.000,260,2140179,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 19:00:00.000,340,4021531,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 21:00:00.000,170,2134078,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 08:00:00.000,105,1117676,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 09:00:00.000,121,2070263,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 12:00:00.000,1000,5818600,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 03:00:00.000,573,5413976,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 19:00:00.000,1190,9121197,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 10:00:00.000,365,2620895,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 08:00:00.000,105,1807154,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 21:00:00.000,1578,14120926,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 18:00:00.000,1582,10850116,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 23:00:00.000,66,800489,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 18:00:00.000,22,182804,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 11:00:00.000,2683,12350285,18,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 12:00:00.000,184,1733248,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 10:00:00.000,29,276458,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 08:00:00.000,98,1044844,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 22:00:00.000,2462,23211703,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 00:00:00.000,5,50274,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 13:00:00.000,1579,6600250,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 20:00:00.000,3905,18449153,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 10:00:00.000,1311,7973043,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 15:00:00.000,785,6262264,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 20:00:00.000,684,4891217,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 19:00:00.000,11,101664,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 00:00:00.000,6,47936,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 19:00:00.000,104,888653,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 23:00:00.000,129,1047011,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 12:00:00.000,548,4403635,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 23:00:00.000,927,7577003,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 09:00:00.000,72,820171,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 01:00:00.000,2336,20368181,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 04:00:00.000,742,7764866,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 09:00:00.000,148,1315552,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 15:00:00.000,3370,15219213,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 10:00:00.000,195,1664659,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 02:00:00.000,48,437387,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 14:00:00.000,3354,16052385,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 19:00:00.000,1125,7971932,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 00:00:00.000,118,951203,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 13:00:00.000,3502,17088285,13,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 22:00:00.000,58,476068,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 21:00:00.000,627,5131797,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 21:00:00.000,1002,8710016,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 11:00:00.000,728,4408212,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 03:00:00.000,31,152953,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 12:00:00.000,117,688378,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 18:00:00.000,1,7590,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 12:00:00.000,699,4784939,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 03:00:00.000,191,1838746,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 19:00:00.000,925,8725402,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 14:00:00.000,500,4287133,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 10:00:00.000,116,1969963,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 01:00:00.000,68,573279,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 15:00:00.000,3546,18063592,18,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 20:00:00.000,168,1575840,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 11:00:00.000,338,3116602,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 22:00:00.000,77,651767,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 16:00:00.000,146,1278559,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 01:00:00.000,271,2420369,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 02:00:00.000,33,250005,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 00:00:00.000,347,1839737,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 09:00:00.000,151,1911071,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 23:00:00.000,203,1595760,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 22:00:00.000,508,4311928,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 05:00:00.000,10,79456,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 18:00:00.000,3594,17084307,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 17:00:00.000,828,5320029,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 03:00:00.000,1,5809,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 23:00:00.000,13,101219,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 15:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 01:00:00.000,1,35745,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 10:00:00.000,182,2069744,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 12:00:00.000,413,4064754,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 00:00:00.000,143,1199820,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 18:00:00.000,361,3774249,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 14:00:00.000,601,5565294,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 04:00:00.000,8,37479,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 18:00:00.000,1,16088,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 11:00:00.000,176,1837968,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 14:00:00.000,1021,6685301,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 10:00:00.000,10,101476,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 11:00:00.000,429,3501946,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 14:00:00.000,1429,6480656,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 08:00:00.000,8,117738,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 18:00:00.000,2338,10288325,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 09:00:00.000,12,81913,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 13:00:00.000,699,6261834,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 22:00:00.000,991,8604072,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 16:00:00.000,660,5384093,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 15:00:00.000,535,4726852,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 19:00:00.000,407,3342830,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 01:00:00.000,109,553986,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 23:00:00.000,212,1978056,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 10:00:00.000,832,5023380,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 17:00:00.000,3205,14376884,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 01:00:00.000,56,552555,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 08:00:00.000,242,1598227,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 03:00:00.000,1215,5905806,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 10:00:00.000,380,2421339,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 10:00:00.000,216,2293918,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 17:00:00.000,49,366202,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 11:00:00.000,394,3508900,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 21:00:00.000,18,145194,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 04:00:00.000,17,248096,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 22:00:00.000,156,1774056,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 18:00:00.000,1406,10851176,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 15:00:00.000,333,4563156,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 09:00:00.000,196,1374194,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 03:00:00.000,21,119267,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 20:00:00.000,1142,11152518,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 05:00:00.000,33,387752,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 00:00:00.000,196,1541270,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 16:00:00.000,973,6599244,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 15:00:00.000,17,133952,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 17:00:00.000,179,1622428,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 12:00:00.000,22,233823,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 02:00:00.000,263,2344704,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 20:00:00.000,1,6269,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 08:00:00.000,4,33263,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 09:00:00.000,205,1719604,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 11:00:00.000,1974,8941325,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 18:00:00.000,1846,16280373,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 04:00:00.000,55,637708,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 16:00:00.000,2242,9755330,12,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 14:00:00.000,795,6274721,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 01:00:00.000,3,21634,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 20:00:00.000,170,2180834,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 01:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 11:00:00.000,70,425365,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 10:00:00.000,125,1117850,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 02:00:00.000,501,4812732,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 13:00:00.000,811,6891713,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 15:00:00.000,2004,8866189,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 03:00:00.000,945,8940173,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 15:00:00.000,477,3897494,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 16:00:00.000,2086,11969340,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 19:00:00.000,69,640901,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 23:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 20:00:00.000,71,605056,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 15:00:00.000,186,1626961,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 14:00:00.000,21,237871,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 19:00:00.000,3818,17634185,16,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 08:00:00.000,74,1249722,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 15:00:00.000,719,6681619,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 12:00:00.000,258,3250120,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-30 01:00:00.000,61,422845,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 15:00:00.000,673,4531220,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 09:00:00.000,390,2968511,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 08:00:00.000,178,1524781,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 10:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 21:00:00.000,1038,10454616,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 21:00:00.000,905,4384684,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 02:00:00.000,1,4470,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 00:00:00.000,2475,22176627,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 12:00:00.000,3799,16766113,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 10:00:00.000,259,2395887,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-30 02:00:00.000,1574,14302435,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 01:00:00.000,3463,16521976,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 23:00:00.000,246,2155425,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 19:00:00.000,1583,7454194,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 12:00:00.000,828,6773912,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 17:00:00.000,522,3487252,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 16:00:00.000,32,363999,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 19:00:00.000,454,3837785,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 20:00:00.000,1,5895,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 11:00:00.000,187,2571266,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 10:00:00.000,22,241347,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 11:00:00.000,11,66032,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 05:00:00.000,300,1424887,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 14:00:00.000,266,2185212,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 21:00:00.000,42,433671,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 13:00:00.000,100,602033,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-30 02:00:00.000,1,6652,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 08:00:00.000,282,1944509,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 13:00:00.000,987,6487674,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 08:00:00.000,75,807859,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 12:00:00.000,2899,10962684,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 17:00:00.000,156,1877868,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 20:00:00.000,512,4425763,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 00:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 23:00:00.000,513,2422252,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 13:00:00.000,18,221822,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a225b31a-157b-4948-a66f-487a9abc03f2,2021-03-29 22:00:00.000,345,2538806,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 00:00:00.000,289,2456791,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 23:00:00.000,674,6463110,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 16:00:00.000,1463,11372727,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 22:00:00.000,692,3161385,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 13:00:00.000,1796,10125965,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 20:00:00.000,21,194128,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 09:00:00.000,576,4009595,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 18:00:00.000,492,5818347,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 08:00:00.000,222,2317348,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 08:00:00.000,555,4231851,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 14:00:00.000,1029,8684328,13,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 20:00:00.000,1300,6096970,5,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 17:00:00.000,4109,20130024,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 20:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 03:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 18:00:00.000,79,675172,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 01:00:00.000,21,249739,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 01:00:00.000,648,6169615,4,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 11:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 00:00:00.000,49,477507,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 18:00:00.000,258,2161081,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-30 03:00:00.000,26,261870,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 10:00:00.000,105,988997,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 21:00:00.000,437,3661307,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 13:00:00.000,323,3776030,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-29 21:00:00.000,3828,18465702,21,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 09:00:00.000,26,272593,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-30 02:00:00.000,41,373201,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 16:00:00.000,477,4331460,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 14:00:00.000,2712,12461210,11,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 18:00:00.000,1,2394,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 13:00:00.000,2592,11089381,9,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 17:00:00.000,25,233061,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 14:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 09:00:00.000,325,3082769,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 12:00:00.000,755,6149598,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-30 00:00:00.000,357,3290033,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 09:00:00.000,16,186073,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 05:00:00.000,48,704245,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 23:00:00.000,2822,25399031,10,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-29 11:00:00.000,951,3763557,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 09:00:00.000,83,1085049,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-30 02:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 19:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 21:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 20:00:00.000,1144,9533241,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +e710498d-b8aa-49e8-89d2-583a5cab085a,2021-03-30 02:00:00.000,53,219682,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 21:00:00.000,107,1030630,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 17:00:00.000,202,1787253,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 22:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 00:00:00.000,3624,18231211,16,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 20:00:00.000,954,9606458,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 13:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 12:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 13:00:00.000,903,7719560,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +654f9dfc-cc8f-43c8-bd1b-b9aa88d16bb8,2021-03-29 17:00:00.000,929,5353877,3,0.00,0,0,0,0,0,0,0,0,0,0,0 +7f0c8c7b-cc49-47df-91ba-4c76ef6ab5bb,2021-03-30 04:00:00.000,498,1944995,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +8311ecc0-f4cf-47b2-92ea-0f5fbd8e8cfa,2021-03-29 15:00:00.000,1,9386,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 17:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +0eff8246-5024-49a2-a0b0-dbf9491d4e07,2021-03-29 16:00:00.000,896,7864121,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-30 05:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 09:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +af1f12d5-59fd-4b79-95a4-a7d0827bdb3f,2021-03-29 15:00:00.000,1192,9796698,7,0.00,0,0,0,0,0,0,0,0,0,0,0 +653de295-a2ab-46b8-84c0-e1e529be7963,2021-03-29 11:00:00.000,88,861483,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-30 04:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-30 03:00:00.000,3,15514,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 00:00:00.000,806,7571800,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +b33d3124-2195-4aa3-9b78-5b689f154676,2021-03-29 11:00:00.000,307,2846371,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +44356b43-a0dd-42f1-bd10-6442335ea14e,2021-03-29 19:00:00.000,3,44777,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 16:00:00.000,99,561187,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +a17b8593-314a-4988-9046-477129372936,2021-03-29 16:00:00.000,303,4075234,6,0.00,0,0,0,0,0,0,0,0,0,0,0 +2a8e2757-a1b3-4e1a-99fe-a902217d44ba,2021-03-29 14:00:00.000,365,2841559,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +bd69a443-36f6-490f-a0a6-9ee6d2fe41b5,2021-03-29 18:00:00.000,103,894265,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +f7e6fc2f-c171-4de8-ab8e-56d5104218ab,2021-03-29 22:00:00.000,21,227929,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 16:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 14:00:00.000,2253,13242332,8,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-30 04:00:00.000,158,1803597,2,0.00,0,0,0,0,0,0,0,0,0,0,0 +504b8515-0a3e-4473-a0b4-44a449fd6902,2021-03-29 19:00:00.000,1455,12874794,1,0.00,0,0,0,0,0,0,0,0,0,0,0 +e20071eb-8e7f-44eb-9114-66a45f5f30f2,2021-03-29 08:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 +1f7bffec-a31d-4a65-8944-4eb13218a8ef,2021-03-29 18:00:00.000,0,0,0,0.00,0,0,0,0,0,0,0,0,0,0,0 \ No newline at end of file diff --git a/integration_tests/seeds/snapchat_ad_squad_hourly_report_data.csv b/integration_tests/seeds/snapchat_ad_squad_hourly_report_data.csv index eb523cb..f264ee1 100644 --- a/integration_tests/seeds/snapchat_ad_squad_hourly_report_data.csv +++ b/integration_tests/seeds/snapchat_ad_squad_hourly_report_data.csv @@ -1,11 +1,11 @@ ad_squad_id,date,_fivetran_synced,android_installs,attachment_avg_view_time_millis,attachment_quartile_1,attachment_quartile_2,attachment_quartile_3,attachment_total_view_time_millis,attachment_view_completion,avg_screen_time_millis,avg_view_time_millis,conversion_add_billing,conversion_add_cart,conversion_app_opens,conversion_level_completes,conversion_page_views,conversion_purchases,conversion_purchases_value,conversion_save,conversion_searches,conversion_sign_ups,conversion_start_checkout,conversion_view_content,impressions,ios_installs,quartile_1,quartile_2,quartile_3,saves,screen_time_millis,shares,spend,story_completes,story_opens,swipe_up_percent,swipes,total_installs,video_views,view_completion,view_time_millis -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-23T04:00:00,2022-06-03T19:57:36.398,0,0,0,0,0,0,0,1031,1031,0,0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,0,0,101017,0,231409,0,0,0,2,0,0,0,101017 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T21:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1192,1192,0,0,0,0,0,0,0,0,0,0,0,0,234,0,0,0,0,0,278915,0,923850,0,0,0,2,0,0,0,278915 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T19:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1154,1154,0,0,0,0,0,0,0,0,0,0,0,0,274,0,0,0,0,0,316254,0,1273081,0,0,0,2,0,0,0,316254 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T11:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1210,1210,0,0,0,0,0,0,0,0,0,0,0,0,218,0,0,0,0,0,263671,0,1205834,0,0,0,3,0,0,0,263671 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T22:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1011,1011,0,0,0,0,0,0,0,0,0,0,0,0,217,0,0,0,0,0,219347,0,695588,0,0,0,4,0,0,0,219347 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T16:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1086,1086,0,0,0,0,0,0,0,0,0,0,0,0,251,0,0,0,0,0,272598,0,1100768,0,0,0,2,0,0,0,272598 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T13:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1147,1147,0,0,0,0,0,0,0,0,0,0,0,0,154,0,0,0,0,0,176605,0,705311,0,0,0,3,0,0,0,176605 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T20:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1079,1079,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0,0,0,0,315194,0,986431,0,0,0,3,0,0,0,315194 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T12:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1064,1064,0,0,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,194760,0,863491,0,0,0,2,0,0,0,194760 -858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T15:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1108,1108,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0,0,0,0,232725,0,801580,0,0,0,6,0,0,0,232725 \ No newline at end of file +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-23T04:00:00,2022-06-03T19:57:36.398,0,0,0,0,0,0,0,1031,1031,1,1,1,1,1,1,0.01,1,1,1,1,1,98,0,0,0,0,0,101017,0,231409,0,0,0,2,0,0,0,101017 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T21:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1192,1192,0,0,0,0,0,0,0.00,0,0,0,0,0,234,0,0,0,0,0,278915,0,923850,0,0,0,2,0,0,0,278915 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T19:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1154,1154,0,0,0,0,0,0,0.00,0,0,0,0,0,274,0,0,0,0,0,316254,0,1273081,0,0,0,2,0,0,0,316254 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T11:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1210,1210,0,0,0,0,0,0,0.00,0,0,0,0,0,218,0,0,0,0,0,263671,0,1205834,0,0,0,3,0,0,0,263671 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T22:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1011,1011,0,0,0,0,0,0,0.00,0,0,0,0,0,217,0,0,0,0,0,219347,0,695588,0,0,0,4,0,0,0,219347 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T16:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1086,1086,0,0,0,0,0,0,0.00,0,0,0,0,0,251,0,0,0,0,0,272598,0,1100768,0,0,0,2,0,0,0,272598 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T13:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1147,1147,0,0,0,0,0,0,0.00,0,0,0,0,0,154,0,0,0,0,0,176605,0,705311,0,0,0,3,0,0,0,176605 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T20:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1079,1079,0,0,0,0,0,0,0.00,0,0,0,0,0,292,0,0,0,0,0,315194,0,986431,0,0,0,3,0,0,0,315194 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T12:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1064,1064,0,0,0,0,0,0,0.00,0,0,0,0,0,183,0,0,0,0,0,194760,0,863491,0,0,0,2,0,0,0,194760 +858e06d4-d24b-4825-8255-5d22027fb024,2022-05-19T15:00:00,2022-06-03T19:57:36.394,0,0,0,0,0,0,0,1108,1108,0,0,0,0,0,0,0.00,0,0,0,0,0,210,0,0,0,0,0,232725,0,801580,0,0,0,6,0,0,0,232725 \ No newline at end of file diff --git a/integration_tests/seeds/snapchat_campaign_hourly_report_data.csv b/integration_tests/seeds/snapchat_campaign_hourly_report_data.csv index 189bb3b..1d3e302 100644 --- a/integration_tests/seeds/snapchat_campaign_hourly_report_data.csv +++ b/integration_tests/seeds/snapchat_campaign_hourly_report_data.csv @@ -1,11 +1,11 @@ campaign_id,date,_fivetran_synced,android_installs,attachment_avg_view_time_millis,attachment_quartile_1,attachment_quartile_2,attachment_quartile_3,attachment_total_view_time_millis,attachment_view_completion,avg_screen_time_millis,avg_view_time_millis,conversion_add_billing,conversion_add_cart,conversion_app_opens,conversion_level_completes,conversion_page_views,conversion_purchases,conversion_purchases_value,conversion_save,conversion_searches,conversion_sign_ups,conversion_start_checkout,conversion_view_content,impressions,ios_installs,quartile_1,quartile_2,quartile_3,saves,screen_time_millis,shares,spend,story_completes,story_opens,swipe_up_percent,swipes,total_installs,video_views,view_completion,view_time_millis -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T10:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,656,656,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,163989,0,60215,0,0,0,0,0,0,0,163989 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T13:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,707,707,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,429790,0,172732,0,0,0,0,0,0,0,429790 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T11:00:00,2022-06-03T19:57:39.338,0,4257,0,0,0,4257,0,742,742,0,0,0,0,0,0,0,0,0,0,0,0,362,0,0,0,0,0,268531,0,82993,0,0,0,1,0,0,0,268531 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T07:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,735,735,0,0,0,0,0,0,0,0,0,0,0,0,559,0,0,0,0,0,411079,0,69263,0,0,0,0,0,0,0,411079 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T12:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,664,664,0,0,0,0,0,0,0,0,0,0,0,0,337,0,0,0,0,0,223861,0,84483,0,0,0,0,0,0,0,223861 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T09:00:00,2022-06-03T19:57:39.338,0,1737,0,0,0,1737,0,799,799,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,0,0,0,93515,0,22118,0,0,0,1,0,0,0,93515 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T14:00:00,2022-06-03T19:57:39.338,0,7619,0,0,0,22858,0,756,756,0,0,0,0,0,0,0,0,0,0,0,0,1049,0,0,0,0,0,793257,0,298014,0,0,0,3,0,0,0,793257 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T05:00:00,2022-06-03T19:57:39.338,0,995,0,0,0,995,0,748,748,0,0,0,0,0,0,0,0,0,0,0,0,655,0,0,0,0,0,489728,0,72377,0,0,0,1,0,0,0,489728 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T15:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,650,650,0,0,0,0,0,0,0,0,0,0,0,0,75,0,0,0,0,0,48760,0,20479,0,0,0,0,0,0,0,48760 -40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T06:00:00,2022-06-03T19:57:39.338,0,929,0,0,0,929,0,730,730,0,0,0,0,0,0,0,0,0,0,0,0,1130,0,0,0,0,0,824425,0,130814,0,0,0,1,0,0,0,824425 \ No newline at end of file +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T10:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,656,656,1,1,1,1,2,1,0.01,1,1,1,1,1,250,0,0,0,0,0,163989,0,60215,0,0,0,0,0,0,0,163989 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T13:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,707,707,0,0,0,0,0,0,0.00,0,0,0,0,0,608,0,0,0,0,0,429790,0,172732,0,0,0,0,0,0,0,429790 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T11:00:00,2022-06-03T19:57:39.338,0,4257,0,0,0,4257,0,742,742,0,0,0,0,0,0,0.00,0,0,0,0,0,362,0,0,0,0,0,268531,0,82993,0,0,0,1,0,0,0,268531 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T07:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,735,735,0,0,0,0,0,0,0.00,0,0,0,0,0,559,0,0,0,0,0,411079,0,69263,0,0,0,0,0,0,0,411079 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T12:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,664,664,0,0,0,0,0,0,0.00,0,0,0,0,0,337,0,0,0,0,0,223861,0,84483,0,0,0,0,0,0,0,223861 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T09:00:00,2022-06-03T19:57:39.338,0,1737,0,0,0,1737,0,799,799,0,0,0,0,0,0,0.00,0,0,0,0,0,117,0,0,0,0,0,93515,0,22118,0,0,0,1,0,0,0,93515 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T14:00:00,2022-06-03T19:57:39.338,0,7619,0,0,0,22858,0,756,756,0,0,0,0,0,0,0.00,0,0,0,0,0,1049,0,0,0,0,0,793257,0,298014,0,0,0,3,0,0,0,793257 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T05:00:00,2022-06-03T19:57:39.338,0,995,0,0,0,995,0,748,748,0,0,0,0,0,0,0.00,0,0,0,0,0,655,0,0,0,0,0,489728,0,72377,0,0,0,1,0,0,0,489728 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T15:00:00,2022-06-03T19:57:39.338,0,0,0,0,0,0,0,650,650,0,0,0,0,0,0,0.00,0,0,0,0,0,75,0,0,0,0,0,48760,0,20479,0,0,0,0,0,0,0,48760 +40ba77bb-289d-41d9-85bf-83f485908a5c,2022-05-29T06:00:00,2022-06-03T19:57:39.338,0,929,0,0,0,929,0,730,730,0,0,0,0,0,0,0.00,0,0,0,0,0,1130,0,0,0,0,0,824425,0,130814,0,0,0,1,0,0,0,824425 \ No newline at end of file diff --git a/integration_tests/tests/consistency/consistency_account_report.sql b/integration_tests/tests/consistency/consistency_account_report.sql new file mode 100644 index 0000000..a05b9d2 --- /dev/null +++ b/integration_tests/tests/consistency/consistency_account_report.sql @@ -0,0 +1,55 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with prod as ( + select + ad_account_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__account_report + group by 1 +), + +dev as ( + select + ad_account_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__account_report + group by 1 +), + +final as ( + select + prod.ad_account_id, + prod.swipes as prod_swipes, + dev.swipes as dev_swipes, + prod.impressions as prod_impressions, + dev.impressions as dev_impressions, + prod.spend as prod_spend, + dev.spend as dev_spend + {# prod.total_conversions as prod_total_conversions, + dev.total_conversions as dev_total_conversions, + prod.conversion_purchases_value as prod_conversion_purchases_value, + dev.conversion_purchases_value as dev_conversion_purchases_value #} + from prod + full outer join dev + on dev.ad_account_id = prod.ad_account_id +) + +select * +from final +where + abs(prod_swipes - dev_swipes) >= .01 + or abs(prod_impressions - dev_impressions) >= .01 + or abs(prod_spend - dev_spend) >= .01 + {# or abs(prod_total_conversions - dev_total_conversions) >= .01 + or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #} \ No newline at end of file diff --git a/integration_tests/tests/consistency/consistency_ad_squad_report.sql b/integration_tests/tests/consistency/consistency_ad_squad_report.sql new file mode 100644 index 0000000..b822235 --- /dev/null +++ b/integration_tests/tests/consistency/consistency_ad_squad_report.sql @@ -0,0 +1,55 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with prod as ( + select + ad_squad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__ad_squad_report + group by 1 +), + +dev as ( + select + ad_squad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__ad_squad_report + group by 1 +), + +final as ( + select + prod.ad_squad_id, + prod.swipes as prod_swipes, + dev.swipes as dev_swipes, + prod.impressions as prod_impressions, + dev.impressions as dev_impressions, + prod.spend as prod_spend, + dev.spend as dev_spend + {# prod.total_conversions as prod_total_conversions, + dev.total_conversions as dev_total_conversions, + prod.conversion_purchases_value as prod_conversion_purchases_value, + dev.conversion_purchases_value as dev_conversion_purchases_value #} + from prod + full outer join dev + on dev.ad_squad_id = prod.ad_squad_id +) + +select * +from final +where + abs(prod_swipes - dev_swipes) >= .01 + or abs(prod_impressions - dev_impressions) >= .01 + or abs(prod_spend - dev_spend) >= .01 + {# or abs(prod_total_conversions - dev_total_conversions) >= .01 + or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #} \ No newline at end of file diff --git a/integration_tests/tests/consistency/consistency_ads_report.sql b/integration_tests/tests/consistency/consistency_ads_report.sql new file mode 100644 index 0000000..65d427b --- /dev/null +++ b/integration_tests/tests/consistency/consistency_ads_report.sql @@ -0,0 +1,55 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with prod as ( + select + ad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__ad_report + group by 1 +), + +dev as ( + select + ad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__ad_report + group by 1 +), + +final as ( + select + prod.ad_id, + prod.swipes as prod_swipes, + dev.swipes as dev_swipes, + prod.impressions as prod_impressions, + dev.impressions as dev_impressions, + prod.spend as prod_spend, + dev.spend as dev_spend + {# prod.total_conversions as prod_total_conversions, + dev.total_conversions as dev_total_conversions, + prod.conversion_purchases_value as prod_conversion_purchases_value, + dev.conversion_purchases_value as dev_conversion_purchases_value #} + from prod + full outer join dev + on dev.ad_id = prod.ad_id +) + +select * +from final +where + abs(prod_swipes - dev_swipes) >= .01 + or abs(prod_impressions - dev_impressions) >= .01 + or abs(prod_spend - dev_spend) >= .01 + {# or abs(prod_total_conversions - dev_total_conversions) >= .01 + or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #} \ No newline at end of file diff --git a/integration_tests/tests/consistency/consistency_campaign_report.sql b/integration_tests/tests/consistency/consistency_campaign_report.sql new file mode 100644 index 0000000..1fbb3c0 --- /dev/null +++ b/integration_tests/tests/consistency/consistency_campaign_report.sql @@ -0,0 +1,55 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with prod as ( + select + campaign_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__campaign_report + group by 1 +), + +dev as ( + select + campaign_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__campaign_report + group by 1 +), + +final as ( + select + prod.campaign_id, + prod.swipes as prod_swipes, + dev.swipes as dev_swipes, + prod.impressions as prod_impressions, + dev.impressions as dev_impressions, + prod.spend as prod_spend, + dev.spend as dev_spend + {# prod.total_conversions as prod_total_conversions, + dev.total_conversions as dev_total_conversions, + prod.conversion_purchases_value as prod_conversion_purchases_value, + dev.conversion_purchases_value as dev_conversion_purchases_value #} + from prod + full outer join dev + on dev.campaign_id = prod.campaign_id +) + +select * +from final +where + abs(prod_swipes - dev_swipes) >= .01 + or abs(prod_impressions - dev_impressions) >= .01 + or abs(prod_spend - dev_spend) >= .01 + {# or abs(prod_total_conversions - dev_total_conversions) >= .01 + or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #} \ No newline at end of file diff --git a/integration_tests/tests/consistency/consistency_url_report.sql b/integration_tests/tests/consistency/consistency_url_report.sql new file mode 100644 index 0000000..f7562ca --- /dev/null +++ b/integration_tests/tests/consistency/consistency_url_report.sql @@ -0,0 +1,55 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with prod as ( + select + ad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_prod.snapchat_ads__url_report + group by 1 +), + +dev as ( + select + ad_id, + sum(swipes) as swipes, + sum(impressions) as impressions, + sum(spend) as spend + {# sum(total_conversions) as total_conversions, + sum(conversion_purchases_value) as conversion_purchases_value #} + from {{ target.schema }}_snapchat_ads_dev.snapchat_ads__url_report + group by 1 +), + +final as ( + select + prod.ad_id, + prod.swipes as prod_swipes, + dev.swipes as dev_swipes, + prod.impressions as prod_impressions, + dev.impressions as dev_impressions, + prod.spend as prod_spend, + dev.spend as dev_spend + {# prod.total_conversions as prod_total_conversions, + dev.total_conversions as dev_total_conversions, + prod.conversion_purchases_value as prod_conversion_purchases_value, + dev.conversion_purchases_value as dev_conversion_purchases_value #} + from prod + full outer join dev + on dev.ad_id = prod.ad_id +) + +select * +from final +where + abs(prod_swipes - dev_swipes) >= .01 + or abs(prod_impressions - dev_impressions) >= .01 + or abs(prod_spend - dev_spend) >= .01 + {# or abs(prod_total_conversions - dev_total_conversions) >= .01 + or abs(prod_conversion_purchases_value - dev_conversion_purchases_value) >= .01 #} \ No newline at end of file diff --git a/integration_tests/tests/integrity/horizontal_sum_conversions.sql b/integration_tests/tests/integrity/horizontal_sum_conversions.sql new file mode 100644 index 0000000..176db9c --- /dev/null +++ b/integration_tests/tests/integrity/horizontal_sum_conversions.sql @@ -0,0 +1,82 @@ +{{ config( + tags="fivetran_validations", + enabled=var('fivetran_validation_tests_enabled', false) +) }} + +with ad_report as ( + + select + sum(conversion_purchases_value) as total_value, + sum(total_conversions) as total_conversions + from {{ ref('snapchat_ads__ad_report') }} +), + +account_report as ( + + select + sum(conversion_purchases_value) as total_value, + sum(total_conversions) as total_conversions + from {{ ref('snapchat_ads__account_report') }} +), + +ad_squad_report as ( + + select + sum(conversion_purchases_value) as total_value, + sum(total_conversions) as total_conversions + from {{ ref('snapchat_ads__ad_squad_report') }} +), + +campaign_report as ( + + select + sum(conversion_purchases_value) as total_value, + sum(total_conversions) as total_conversions + from {{ ref('snapchat_ads__campaign_report') }} +), + +url_report as ( + + select + sum(conversion_purchases_value) as total_value, + sum(total_conversions) as total_conversions + from {{ ref('snapchat_ads__url_report') }} +) + +select + 'ad vs account' as comparison, + ad_report.* +from ad_report +join account_report on true +where ad_report.total_value != account_report.total_value +or ad_report.total_conversions != account_report.total_conversions + +union all + +select + 'ad vs ad squad' as comparison, + ad_report.* +from ad_report +join ad_squad_report on true +where ad_report.total_value != ad_squad_report.total_value +or ad_report.total_conversions != ad_squad_report.total_conversions + +union all + +select + 'ad vs campaign' as comparison, + ad_report.* +from ad_report +join campaign_report on true +where ad_report.total_value != campaign_report.total_value +or ad_report.total_conversions != campaign_report.total_conversions + +union all + +select + 'ad vs url' as comparison, + ad_report.* +from ad_report +join url_report on true +where ad_report.total_value != url_report.total_value +or ad_report.total_conversions != url_report.total_conversions \ No newline at end of file diff --git a/macros/snapchat_ads_persist_pass_through_columns.sql b/macros/snapchat_ads_persist_pass_through_columns.sql new file mode 100644 index 0000000..d5d3174 --- /dev/null +++ b/macros/snapchat_ads_persist_pass_through_columns.sql @@ -0,0 +1,28 @@ +{# Adapted from fivetran_utils.persist_pass_through_columns() macro to include coalesces #} + +{% macro snapchat_ads_persist_pass_through_columns(pass_through_variable, identifier=none, transform='', coalesce_with=none, except_variable=none, exclude_fields=[]) %} + +{% set except_fields = [] %} +{% if except_variable is not none %} + {# Start creating list of fields to exclude #} + {% for item in var(except_variable) %} + {% do except_fields.append(item.name) %} + {% endfor %} +{% endif %} + +{% for field in exclude_fields %} + {% do except_fields.append(field) %} +{% endfor %} + +{% if var(pass_through_variable, none) %} + {% for field in var(pass_through_variable) %} + {% set field_name = field.alias|default(field.name)|lower if field is mapping else field|lower %} + + {% if field_name not in except_fields %} + , {{ transform ~ '(' ~ ('coalesce(' if coalesce_with is not none else '') ~ (identifier ~ '.' if identifier else '') ~ field_name ~ ((', ' ~ coalesce_with ~ ')') if coalesce_with is not none else '') ~ ')' }} as {{ field_name }} + {% endif %} + + {% endfor %} +{% endif %} + +{% endmacro %} \ No newline at end of file diff --git a/models/snapchat.yml b/models/snapchat.yml index 0813614..1cf501c 100644 --- a/models/snapchat.yml +++ b/models/snapchat.yml @@ -32,6 +32,12 @@ models: description: The number of impressions the ad had on the given day. - name: swipes description: The number of swipes the ad had on the given day. + - name: conversion_purchases + description: The total number of purchases for an ad on the given day. + - name: conversion_purchases_value + description: The total value of purchases for an ad on the given day. + - name: total_conversions + description: The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`. - name: snapchat_ads__ad_report description: Each record represents the daily performance of a Snapchat ad account. @@ -66,6 +72,12 @@ models: description: The number of impressions the ad had on the given day. - name: swipes description: The number of swipes the ad had on the given day. + - name: conversion_purchases + description: The total number of purchases for an ad on the given day. + - name: conversion_purchases_value + description: The total value of purchases for an ad on the given day. + - name: total_conversions + description: The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`. - name: snapchat_ads__campaign_report description: Each record represents the daily performance of a Snapchat campaign. @@ -100,6 +112,12 @@ models: description: The number of impressions the ad had on the given day. - name: swipes description: The number of swipes the ad had on the given day. + - name: conversion_purchases + description: The total number of purchases for an ad on the given day. + - name: conversion_purchases_value + description: The total value of purchases for an ad on the given day. + - name: total_conversions + description: The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`. - name: snapchat_ads__ad_squad_report description: Each record represents the daily performance of a Snapchat ad squad. @@ -138,6 +156,13 @@ models: description: The number of impressions the ad had on the given day. - name: swipes description: The number of swipes the ad had on the given day. + - name: conversion_purchases + description: The total number of purchases for an ad on the given day. + - name: conversion_purchases_value + description: The total value of purchases for an ad on the given day. + - name: total_conversions + description: The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`. + - name: snapchat_ads__url_report description: Each record represents the daily performance of Snapchat ads that leverage urls. @@ -203,4 +228,10 @@ models: - name: impressions description: The number of impressions the ad had on the given day. - name: swipes - description: The number of swipes the ad had on the given day. \ No newline at end of file + description: The number of swipes the ad had on the given day. + - name: conversion_purchases + description: The total number of purchases for an ad on the given day. + - name: conversion_purchases_value + description: The total value of purchases for an ad on the given day. + - name: total_conversions + description: The total conversions being brought in the conversion fields you select in your `snapchat_ads__conversion_fields`. \ No newline at end of file diff --git a/models/snapchat_ads__account_report.sql b/models/snapchat_ads__account_report.sql index 93ead5b..0da09ca 100644 --- a/models/snapchat_ads__account_report.sql +++ b/models/snapchat_ads__account_report.sql @@ -2,7 +2,12 @@ with ad_hourly as ( - select * + select *, + {% if var('snapchat_ads__conversion_fields', none) %} + {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions + {% else %} + 0 as total_conversions + {% endif %} from {{ var('ad_hourly_report') }} ), account as ( @@ -40,10 +45,14 @@ with ad_hourly as ( account.currency, sum(ad_hourly.swipes) as swipes, sum(ad_hourly.impressions) as impressions, - round(sum(ad_hourly.spend),2) as spend + round(sum(ad_hourly.spend),2) as spend, + sum(ad_hourly.total_conversions) as total_conversions, + round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }} + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }} - {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }} - from ad_hourly left join ads on ad_hourly.ad_id = ads.ad_id diff --git a/models/snapchat_ads__ad_report.sql b/models/snapchat_ads__ad_report.sql index ae4aef0..0fee665 100644 --- a/models/snapchat_ads__ad_report.sql +++ b/models/snapchat_ads__ad_report.sql @@ -2,7 +2,12 @@ with ad_hourly as ( - select * + select *, + {% if var('snapchat_ads__conversion_fields', none) %} + {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions + {% else %} + 0 as total_conversions + {% endif %} from {{ var('ad_hourly_report') }} ), creatives as ( @@ -34,10 +39,14 @@ with ad_hourly as ( account.currency, sum(ad_hourly.swipes) as swipes, sum(ad_hourly.impressions) as impressions, - round(sum(ad_hourly.spend),2) as spend - - {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }} - + round(sum(ad_hourly.spend),2) as spend, + sum(ad_hourly.total_conversions) as total_conversions, + round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }} + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }} + from ad_hourly left join ads on ad_hourly.ad_id = ads.ad_id diff --git a/models/snapchat_ads__ad_squad_report.sql b/models/snapchat_ads__ad_squad_report.sql index 5e84566..70e1953 100644 --- a/models/snapchat_ads__ad_squad_report.sql +++ b/models/snapchat_ads__ad_squad_report.sql @@ -2,7 +2,12 @@ with ad_squad_hourly as ( - select * + select *, + {% if var('snapchat_ads__conversion_fields', none) %} + {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions + {% else %} + 0 as total_conversions + {% endif %} from {{ var('ad_squad_hourly_report') }} ), account as ( @@ -38,10 +43,14 @@ with ad_squad_hourly as ( account.currency, sum(ad_squad_hourly.swipes) as swipes, sum(ad_squad_hourly.impressions) as impressions, - round(sum(ad_squad_hourly.spend),2) as spend + round(sum(ad_squad_hourly.spend),2) as spend, + sum(ad_squad_hourly.total_conversions) as total_conversions, + round(cast(sum(ad_squad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }} - {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', transform = 'sum') }} - + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_squad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }} + from ad_squad_hourly left join ad_squads on ad_squad_hourly.ad_squad_id = ad_squads.ad_squad_id diff --git a/models/snapchat_ads__campaign_report.sql b/models/snapchat_ads__campaign_report.sql index 4306092..bbde855 100644 --- a/models/snapchat_ads__campaign_report.sql +++ b/models/snapchat_ads__campaign_report.sql @@ -2,7 +2,12 @@ with campaign_hourly as ( - select * + select *, + {% if var('snapchat_ads__conversion_fields', none) %} + {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions + {% else %} + 0 as total_conversions + {% endif %} from {{ var('campaign_hourly_report') }} ), account as ( @@ -30,9 +35,13 @@ with campaign_hourly as ( account.currency, sum(campaign_hourly.swipes) as swipes, sum(campaign_hourly.impressions) as impressions, - round(sum(campaign_hourly.spend),2) as spend + round(sum(campaign_hourly.spend),2) as spend, + sum(campaign_hourly.total_conversions) as total_conversions, + round(cast(sum(campaign_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }} - {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', transform = 'sum') }} + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__campaign_hourly_report_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }} from campaign_hourly left join campaigns diff --git a/models/snapchat_ads__url_report.sql b/models/snapchat_ads__url_report.sql index 771bb47..89e3ce5 100644 --- a/models/snapchat_ads__url_report.sql +++ b/models/snapchat_ads__url_report.sql @@ -2,7 +2,12 @@ with ad_hourly as ( - select * + select *, + {% if var('snapchat_ads__conversion_fields', none) %} + {{ var('snapchat_ads__conversion_fields') | join(' + ') }} as total_conversions + {% else %} + 0 as total_conversions + {% endif %} from {{ var('ad_hourly_report') }} ), creatives as ( @@ -59,9 +64,13 @@ with ad_hourly as ( creatives.utm_term, sum(ad_hourly.swipes) as swipes, sum(ad_hourly.impressions) as impressions, - round(sum(ad_hourly.spend),2) as spend + round(sum(ad_hourly.spend),2) as spend, + sum(ad_hourly.total_conversions) as total_conversions, + round(cast(sum(ad_hourly.conversion_purchases_value) as {{ dbt.type_numeric() }}), 2) as conversion_purchases_value - {{ fivetran_utils.persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform = 'sum') }} + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__conversion_fields', transform='sum', coalesce_with=0, except_variable='snapchat_ads__ad_hourly_passthrough_metrics', exclude_fields=['conversion_purchases_value']) }} + + {{ snapchat_ads_persist_pass_through_columns(pass_through_variable='snapchat_ads__ad_hourly_passthrough_metrics', transform='sum', exclude_fields=['conversion_purchases_value']) }} from ad_hourly left join ads diff --git a/packages.yml b/packages.yml index 0a268dc..8fdc664 100644 --- a/packages.yml +++ b/packages.yml @@ -1,3 +1,3 @@ packages: - package: fivetran/snapchat_ads_source - version: [">=0.6.0", "<0.7.0"] + version: [">=0.7.0", "<0.8.0"] \ No newline at end of file