From c9e324635b455e208a8494467efd33f39f4cfc94 Mon Sep 17 00:00:00 2001 From: Tudor Date: Thu, 16 Jul 2026 19:07:49 +0100 Subject: [PATCH] fix(data): official DfE KS4 national headline averages; drop mislabelled computed means New ees_ks4_national stream ingests the EES 'National characteristics summary data' series (England, state-funded, all pupils). The old mart's unweighted school means were 7-15 points off every headline measure and produced an impossible national Progress 8 (-0.27). The API's computed fallback is gone too: the footnote calls these figures official, so an unbuilt mart now yields an empty series, never a stand-in. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0146VHeLAWjDVE2B5uU67jCB --- backend/app.py | 27 +- backend/models.py | 5 +- backend/tests/test_national_averages_marts.py | 19 +- .../extractors/tap-uk-ees/tap_uk_ees/tap.py | 69 ++++ pipeline/transform/.user.yml | 1 + pipeline/transform/logs/dbt.log | 294 ++++++++++++++++++ .../marts/fact_ks4_national_averages.sql | 35 +-- .../transform/models/staging/_stg_sources.yml | 3 + .../models/staging/stg_ees_ks4_national.sql | 20 ++ pipeline/transform/target/manifest.json | 1 + pipeline/transform/target/osi_document.json | 1 + .../transform/target/partial_parse.msgpack | Bin 0 -> 769735 bytes pipeline/transform/target/perf_info.json | 50 +++ .../transform/target/semantic_manifest.json | 1 + 14 files changed, 475 insertions(+), 51 deletions(-) create mode 100644 pipeline/transform/.user.yml create mode 100644 pipeline/transform/logs/dbt.log create mode 100644 pipeline/transform/models/staging/stg_ees_ks4_national.sql create mode 100644 pipeline/transform/target/manifest.json create mode 100644 pipeline/transform/target/osi_document.json create mode 100644 pipeline/transform/target/partial_parse.msgpack create mode 100644 pipeline/transform/target/perf_info.json create mode 100644 pipeline/transform/target/semantic_manifest.json diff --git a/backend/app.py b/backend/app.py index e4a42b2..4313083 100644 --- a/backend/app.py +++ b/backend/app.py @@ -823,11 +823,11 @@ def _national_averages_payload(df: pd.DataFrame) -> dict: /api/compare. Both series are persisted marts computed at import time: official DfE - KS2 figures (fact_ks2_national_averages) and dataset-computed KS4 - averages (fact_ks4_national_averages) — the API never aggregates the - performance dataframe per request. If the KS4 mart hasn't been built - yet (deploy lands before the next DAG run), fall back to computing the - latest year only — a single-year scan, never the historical loop. + KS2 figures (fact_ks2_national_averages) and official DfE KS4 figures + (fact_ks4_national_averages) — the API never aggregates the performance + dataframe per request. If the KS4 mart hasn't been built yet, the + secondary series is empty — never a computed stand-in, because the UI + labels these figures as official DfE data. """ if df.empty: return {"primary": {}, "secondary": {}} @@ -867,23 +867,6 @@ def _national_averages_payload(df: pd.DataFrame) -> dict: primary_by_year = {r.year: _row_metrics(r, _KS2_NATIONAL_METRICS) for r in ks2_rows} secondary_by_year = {r.year: _row_metrics(r, _KS4_NATIONAL_METRICS) for r in ks4_rows} - if not any(secondary_by_year.values()): - # KS4 mart missing/empty: compute the latest year only. - df_latest = df[df["year"] == latest_year] - sec = ( - df_latest[df_latest["attainment_8_score"].notna()] - if "attainment_8_score" in df_latest.columns - else df_latest.iloc[0:0] - ) - vals = {} - for col in _KS4_NATIONAL_METRICS: - if col in sec.columns: - v = sec[col].dropna() - if len(v) > 0: - vals[col] = round(float(v.mean()), 2) - if vals: - secondary_by_year[latest_year] = vals - all_years = sorted(set(primary_by_year) | set(secondary_by_year)) by_year = [ { diff --git a/backend/models.py b/backend/models.py index 8fc21f9..22e9b06 100644 --- a/backend/models.py +++ b/backend/models.py @@ -251,7 +251,10 @@ class CensusBenchmark(Base): class Ks4NationalAverage(Base): - """Computed national KS4 averages (from our dataset) — one row per year.""" + """Official DfE KS4 national headline averages — one row per academic year. + + gcse_grade_91_pct has no official national series and is always NULL. + """ __tablename__ = "fact_ks4_national_averages" __table_args__ = MARTS diff --git a/backend/tests/test_national_averages_marts.py b/backend/tests/test_national_averages_marts.py index b08c6df..f60bcbf 100644 --- a/backend/tests/test_national_averages_marts.py +++ b/backend/tests/test_national_averages_marts.py @@ -1,7 +1,7 @@ """_national_averages_payload reads persisted marts (computed at import -time) — it must never loop the dataframe per year. The only dataframe work -allowed is the single-latest-year KS4 fallback for the window between a -deploy and the next DAG run.""" +time) — it must never aggregate the dataframe. Both marts hold OFFICIAL +DfE figures, so a missing KS4 mart yields an empty secondary series — +never a computed stand-in the UI would mislabel as official.""" import numpy as np import pandas as pd @@ -84,10 +84,11 @@ def test_ks4_averages_come_from_the_mart_not_the_dataframe(payload): assert body["by_year"][-1]["secondary"]["progress_8_score"] == -0.02 -def test_missing_ks4_mart_falls_back_to_latest_year_only(payload): +def test_ks4_secondary_empty_when_mart_missing(payload): + # No computed stand-in: the UI labels national figures as official DfE + # data, so an empty mart must yield an empty secondary series. body = payload(_Ks4MissingSession) - # Fallback computes the latest year from the df: mean(50, 30) = 40.0 - assert body["secondary"]["attainment_8_score"] == 40.0 - # ...and only the latest year — no historical KS4 loop - ks4_years = [e["year"] for e in body["by_year"] if e["secondary"]] - assert ks4_years == [LATEST] + assert body["secondary"] == {} + assert all(not e["secondary"] for e in body["by_year"]) + # The KS2 series is unaffected. + assert body["primary"]["rwm_expected_pct"] == 62.1 diff --git a/pipeline/plugins/extractors/tap-uk-ees/tap_uk_ees/tap.py b/pipeline/plugins/extractors/tap-uk-ees/tap_uk_ees/tap.py index 6e89676..b8bdf53 100644 --- a/pipeline/plugins/extractors/tap-uk-ees/tap_uk_ees/tap.py +++ b/pipeline/plugins/extractors/tap-uk-ees/tap_uk_ees/tap.py @@ -564,6 +564,74 @@ class EESKs2NationalStream(Stream): yield record +# ── KS4 National Headlines (national level only — one row per year) ────────── +# Dataset: "National characteristics summary data" (Key stage 4 performance). +# Official England state-funded headline measures, 2018/19 → latest. +# Suppressed values ('z', 'x') → NULL downstream. Progress 8 is legitimately +# absent in years with no KS2 baseline (e.g. 2024/25) — that is DfE policy, +# not missing data. + +_KS4_NATIONAL_CSV_URL = ( + "https://explore-education-statistics.service.gov.uk/data-catalogue/" + "data-set/1b649e16-01e8-435b-a814-56be2faf9054/csv" +) + +_KS4_NATIONAL_COL_MAP = { + "attainment8_average": "attainment_8_score", + "progress8_average": "progress_8_score", + "engmath_94_percent": "english_maths_standard_pass_pct", + "engmath_95_percent": "english_maths_strong_pass_pct", + "ebacc_entering_percent": "ebacc_entry_pct", + "ebacc_94_percent": "ebacc_standard_pass_pct", + "ebacc_95_percent": "ebacc_strong_pass_pct", + "ebacc_aps_average": "ebacc_avg_score", +} + + +class EESKs4NationalStream(Stream): + """National KS4 headline averages — one row per academic year. + + Filters to geographic_level == 'National', establishment_type_group == + 'All state-funded', breakdown_topic == 'Total', breakdown == 'Total' + so only the England-wide all-pupils row per year is emitted. + """ + + name = "ees_ks4_national" + primary_keys = ["time_period"] + replication_key = None + + schema = th.PropertiesList( + th.Property("time_period", th.StringType, required=True), + *[th.Property(out, th.StringType) for out in _KS4_NATIONAL_COL_MAP.values()], + ).to_dict() + + def get_records(self, context): + import pandas as pd + + self.logger.info("Downloading KS4 national headlines: %s", _KS4_NATIONAL_CSV_URL) + resp = requests.get(_KS4_NATIONAL_CSV_URL, timeout=60) + resp.raise_for_status() + + df = pd.read_csv(io.BytesIO(resp.content), dtype=str, keep_default_na=False) + df.columns = [c.strip().lower() for c in df.columns] + + for col, want in [ + ("geographic_level", "national"), + ("establishment_type_group", "all state-funded"), + ("breakdown_topic", "total"), + ("breakdown", "total"), + ]: + if col in df.columns: + df = df[df[col].str.strip().str.lower() == want] + + self.logger.info("Emitting %d national KS4 rows", len(df)) + for _, row in df.iterrows(): + record = {"time_period": row.get("time_period", "").strip()} + for csv_col, field in _KS4_NATIONAL_COL_MAP.items(): + record[field] = row.get(csv_col, "").strip() + yield record + + # ── Legacy KS2 (pre-COVID wide format from DfE performance tables) ──────────── # The DfE "Compare School Performance" site published school-level KS2 CSVs # in a wide format (one row per school, ~300 columns). EES only has school-level @@ -903,6 +971,7 @@ class TapUKEES(Tap): LegacyKS2Stream(self), LegacyKS4Stream(self), EESKs2NationalStream(self), + EESKs4NationalStream(self), ] diff --git a/pipeline/transform/.user.yml b/pipeline/transform/.user.yml new file mode 100644 index 0000000..1f03a95 --- /dev/null +++ b/pipeline/transform/.user.yml @@ -0,0 +1 @@ +id: d8efb97e-d188-4585-899c-3ba2e484f763 diff --git a/pipeline/transform/logs/dbt.log b/pipeline/transform/logs/dbt.log new file mode 100644 index 0000000..867074b --- /dev/null +++ b/pipeline/transform/logs/dbt.log @@ -0,0 +1,294 @@ +22:17:04.566580 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 22:17:04.568149 | a6b8403f-0ead-494c-bc76-2492aa4c9187 ============================== +22:17:04.568149 [info ] [MainThread]: Running with dbt=1.11.12 +22:17:04.568347 [debug] [MainThread]: running dbt with arguments {'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'partial_parse': 'True', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'debug': 'False', 'log_format': 'default', 'profiles_dir': '.', 'version_check': 'True', 'write_json': 'True', 'warn_error': 'None', 'invocation_command': 'dbt parse --profiles-dir .', 'static_parser': 'True', 'no_print': 'None', 'use_colors': 'True', 'log_cache_events': 'False', 'indirect_selection': 'eager', 'fail_fast': 'False', 'quiet': 'False', 'send_anonymous_usage_stats': 'True', 'printer_width': '80', 'introspect': 'True', 'empty': 'None', 'target_path': 'None', 'use_experimental_parser': 'False', 'cache_selected_only': 'False'} +22:17:04.615542 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'context': []} +22:17:04.631989 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'context': []} +22:17:04.632286 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +22:17:04.667716 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +22:17:04.668031 [info ] [MainThread]: Unable to do partial parsing because saved manifest not found. Starting full parse. +22:17:04.668152 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'partial_parser', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'context': []} +22:17:05.079216 [warn ] [MainThread]: [WARNING][PropertyMovedToConfigDeprecation]: Deprecated functionality +Found `severity` as a top-level property of `data_tests.not_null.severity` in +file `models/marts/_marts_schema.yml`. The `severity` top-level property should +be moved into the `config` of `data_tests.not_null.severity`. +22:17:05.079456 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'property_': 'warn', 'context': []} +22:17:05.080394 [warn ] [MainThread]: [WARNING][MissingArgumentsPropertyInGenericTestDeprecation]: Deprecated +functionality +Found top-level arguments to test `accepted_values` defined on 'dim_school' in +package 'school_compare' (models/marts/_marts_schema.yml). Arguments to generic +tests should be nested under the `arguments` property. +22:17:05.080506 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'property_': 'warn', 'context': []} +22:17:05.142077 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': 'a6b8403f-0ead-494c-bc76-2492aa4c9187', 'context': []} +22:17:05.143319 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +22:17:05.201433 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +22:17:05.202316 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +22:17:05.202527 [warn ] [MainThread]: [WARNING][DeprecationsSummary]: Deprecated functionality +Summary of encountered deprecations: +- PropertyMovedToConfigDeprecation: 4 occurrences +- MissingArgumentsPropertyInGenericTestDeprecation: 7 occurrences +To see all deprecation instances instead of just the first occurrence of each, +run command again with the `--show-all-deprecations` flag. You may also need to +run with `--no-partial-parse` as some deprecations are only encountered during +parsing. +22:17:05.202750 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.6586652, "process_in_blocks": "0", "process_kernel_time": 0.111809, "process_mem_max_rss": "135282688", "process_out_blocks": "0", "process_user_time": 0.996675} +22:17:05.202880 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 22:17:05.202853 after 0.66 seconds +22:17:05.202995 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +22:17:05.203093 [debug] [MainThread]: Flushing usage events +22:17:05.735599 [debug] [MainThread]: An error was encountered while trying to flush usage events +08:22:12.701427 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 08:22:12.703695 | 25902cd9-3a92-4695-a273-6c9f7b75e00c ============================== +08:22:12.703695 [info ] [MainThread]: Running with dbt=1.11.12 +08:22:12.703893 [debug] [MainThread]: running dbt with arguments {'invocation_command': 'dbt parse --profiles-dir .', 'version_check': 'True', 'cache_selected_only': 'False', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'printer_width': '80', 'fail_fast': 'False', 'use_colors': 'True', 'use_experimental_parser': 'False', 'partial_parse': 'True', 'introspect': 'True', 'indirect_selection': 'eager', 'quiet': 'False', 'log_format': 'default', 'write_json': 'True', 'no_print': 'None', 'log_cache_events': 'False', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'send_anonymous_usage_stats': 'True', 'debug': 'False', 'static_parser': 'True', 'empty': 'None', 'target_path': 'None', 'profiles_dir': '.', 'warn_error': 'None'} +08:22:12.771910 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '25902cd9-3a92-4695-a273-6c9f7b75e00c', 'context': []} +08:22:12.788094 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '25902cd9-3a92-4695-a273-6c9f7b75e00c', 'context': []} +08:22:12.788548 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +08:22:12.827043 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +08:22:12.890911 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 2 files changed. +08:22:12.891346 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/marts/_marts_schema.yml +08:22:12.891484 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/staging/stg_ees_ks4.sql +08:22:12.988494 [warn ] [MainThread]: [WARNING][MissingArgumentsPropertyInGenericTestDeprecation]: Deprecated +functionality +Found top-level arguments to test `accepted_values` defined on +'fact_ks4_performance' in package 'school_compare' +(models/marts/_marts_schema.yml). Arguments to generic tests should be nested +under the `arguments` property. +08:22:12.988725 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': '25902cd9-3a92-4695-a273-6c9f7b75e00c', 'property_': 'warn', 'context': []} +08:22:13.042439 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '25902cd9-3a92-4695-a273-6c9f7b75e00c', 'context': []} +08:22:13.043787 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +08:22:13.078667 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +08:22:13.080427 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +08:22:13.080615 [warn ] [MainThread]: [WARNING][DeprecationsSummary]: Deprecated functionality +Summary of encountered deprecations: +- MissingArgumentsPropertyInGenericTestDeprecation: 1 occurrence +To see all deprecation instances instead of just the first occurrence of each, +run command again with the `--show-all-deprecations` flag. You may also need to +run with `--no-partial-parse` as some deprecations are only encountered during +parsing. +08:22:13.080836 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.40608904, "process_in_blocks": "0", "process_kernel_time": 0.134857, "process_mem_max_rss": "132857856", "process_out_blocks": "0", "process_user_time": 0.702112} +08:22:13.080968 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 08:22:13.080942 after 0.41 seconds +08:22:13.081074 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +08:22:13.081172 [debug] [MainThread]: Flushing usage events +08:22:13.497827 [debug] [MainThread]: An error was encountered while trying to flush usage events +08:22:21.654274 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 08:22:21.655842 | 88cd4db0-05ef-4377-87e9-c27e9801255b ============================== +08:22:21.655842 [info ] [MainThread]: Running with dbt=1.11.12 +08:22:21.656036 [debug] [MainThread]: running dbt with arguments {'no_print': 'None', 'introspect': 'True', 'debug': 'False', 'indirect_selection': 'eager', 'log_cache_events': 'False', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'fail_fast': 'False', 'send_anonymous_usage_stats': 'True', 'profiles_dir': '.', 'printer_width': '80', 'warn_error': 'None', 'partial_parse': 'True', 'static_parser': 'True', 'quiet': 'False', 'write_json': 'True', 'use_experimental_parser': 'False', 'version_check': 'True', 'empty': 'None', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'cache_selected_only': 'False', 'log_format': 'default', 'invocation_command': 'dbt parse --profiles-dir .', 'target_path': 'None', 'use_colors': 'True'} +08:22:21.706619 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '88cd4db0-05ef-4377-87e9-c27e9801255b', 'context': []} +08:22:21.724467 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '88cd4db0-05ef-4377-87e9-c27e9801255b', 'context': []} +08:22:21.724916 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +08:22:21.761988 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +08:22:21.811784 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 0 files changed. +08:22:21.811980 [debug] [MainThread]: Nothing changed, skipping partial parsing. +08:22:21.812068 [debug] [MainThread]: Partial parsing enabled, no changes found, skipping parsing +08:22:21.831419 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '88cd4db0-05ef-4377-87e9-c27e9801255b', 'context': []} +08:22:21.834895 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +08:22:21.872310 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +08:22:21.873270 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +08:22:21.873537 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.24312946, "process_in_blocks": "0", "process_kernel_time": 0.106534, "process_mem_max_rss": "125960192", "process_out_blocks": "0", "process_user_time": 0.617116} +08:22:21.873695 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 08:22:21.873662 after 0.24 seconds +08:22:21.873825 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +08:22:21.873930 [debug] [MainThread]: Flushing usage events +08:22:22.309014 [debug] [MainThread]: An error was encountered while trying to flush usage events +08:42:39.581769 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 08:42:39.583995 | 14cee99c-c61b-4745-bfdf-db4edcb73881 ============================== +08:42:39.583995 [info ] [MainThread]: Running with dbt=1.11.12 +08:42:39.584207 [debug] [MainThread]: running dbt with arguments {'debug': 'False', 'empty': 'None', 'indirect_selection': 'eager', 'fail_fast': 'False', 'invocation_command': 'dbt parse --profiles-dir .', 'version_check': 'True', 'quiet': 'False', 'log_cache_events': 'False', 'write_json': 'True', 'log_format': 'default', 'target_path': 'None', 'static_parser': 'True', 'partial_parse': 'True', 'warn_error': 'None', 'printer_width': '80', 'use_experimental_parser': 'False', 'send_anonymous_usage_stats': 'True', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'cache_selected_only': 'False', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'use_colors': 'True', 'introspect': 'True', 'no_print': 'None', 'profiles_dir': '.'} +08:42:39.642292 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '14cee99c-c61b-4745-bfdf-db4edcb73881', 'context': []} +08:42:39.658889 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '14cee99c-c61b-4745-bfdf-db4edcb73881', 'context': []} +08:42:39.659445 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +08:42:39.697585 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +08:42:39.759748 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 2 files changed. +08:42:39.760099 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/staging/stg_legacy_ks2.sql +08:42:39.760226 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/intermediate/int_ks2_with_lineage.sql +08:42:39.845972 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '14cee99c-c61b-4745-bfdf-db4edcb73881', 'context': []} +08:42:39.847206 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +08:42:39.903495 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +08:42:39.905863 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +08:42:39.906095 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.3489076, "process_in_blocks": "0", "process_kernel_time": 0.123806, "process_mem_max_rss": "129925120", "process_out_blocks": "0", "process_user_time": 0.678581} +08:42:39.906230 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 08:42:39.906202 after 0.35 seconds +08:42:39.906338 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +08:42:39.906440 [debug] [MainThread]: Flushing usage events +08:42:40.369573 [debug] [MainThread]: An error was encountered while trying to flush usage events +15:46:41.844088 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 15:46:41.848473 | 721329d8-fb54-4cf3-9b56-85d8b276dc71 ============================== +15:46:41.848473 [info ] [MainThread]: Running with dbt=1.11.12 +15:46:41.848910 [debug] [MainThread]: running dbt with arguments {'static_parser': 'True', 'indirect_selection': 'eager', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'target_path': 'None', 'log_format': 'default', 'warn_error': 'None', 'no_print': 'None', 'invocation_command': 'dbt parse --profiles-dir .', 'introspect': 'True', 'profiles_dir': '.', 'write_json': 'True', 'partial_parse': 'True', 'send_anonymous_usage_stats': 'True', 'printer_width': '80', 'empty': 'None', 'use_experimental_parser': 'False', 'log_cache_events': 'False', 'version_check': 'True', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'use_colors': 'True', 'debug': 'False', 'fail_fast': 'False', 'cache_selected_only': 'False', 'quiet': 'False'} +15:46:41.980957 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '721329d8-fb54-4cf3-9b56-85d8b276dc71', 'context': []} +15:46:42.016972 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '721329d8-fb54-4cf3-9b56-85d8b276dc71', 'context': []} +15:46:42.018032 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +15:46:42.095204 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +15:46:42.218385 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 1 files changed. +15:46:42.219081 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/marts/fact_performance.sql +15:46:42.526466 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '721329d8-fb54-4cf3-9b56-85d8b276dc71', 'context': []} +15:46:42.529480 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +15:46:42.606448 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +15:46:42.608498 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +15:46:42.609039 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.81911224, "process_in_blocks": "0", "process_kernel_time": 0.299951, "process_mem_max_rss": "132186112", "process_out_blocks": "0", "process_user_time": 1.506381} +15:46:42.609313 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 15:46:42.609252 after 0.82 seconds +15:46:42.609523 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +15:46:42.609727 [debug] [MainThread]: Flushing usage events +15:46:43.146552 [debug] [MainThread]: An error was encountered while trying to flush usage events +18:48:43.630692 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 18:48:43.634897 | 6f3c22f1-ca3a-438c-b33b-0ec6cd226f50 ============================== +18:48:43.634897 [info ] [MainThread]: Running with dbt=1.11.12 +18:48:43.635313 [debug] [MainThread]: running dbt with arguments {'profiles_dir': '.', 'log_format': 'default', 'use_experimental_parser': 'False', 'fail_fast': 'False', 'quiet': 'False', 'use_colors': 'True', 'partial_parse': 'True', 'introspect': 'True', 'printer_width': '80', 'log_cache_events': 'False', 'warn_error': 'None', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'version_check': 'True', 'no_print': 'None', 'indirect_selection': 'eager', 'debug': 'False', 'send_anonymous_usage_stats': 'True', 'static_parser': 'True', 'cache_selected_only': 'False', 'write_json': 'True', 'invocation_command': 'dbt parse --profiles-dir .', 'target_path': 'None', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'empty': 'None'} +18:48:43.757089 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '6f3c22f1-ca3a-438c-b33b-0ec6cd226f50', 'context': []} +18:48:43.792618 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '6f3c22f1-ca3a-438c-b33b-0ec6cd226f50', 'context': []} +18:48:43.793544 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +18:48:43.871751 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +18:48:43.998163 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 0 files changed. +18:48:43.998480 [debug] [MainThread]: Nothing changed, skipping partial parsing. +18:48:43.998646 [debug] [MainThread]: Partial parsing enabled, no changes found, skipping parsing +18:48:44.038143 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '6f3c22f1-ca3a-438c-b33b-0ec6cd226f50', 'context': []} +18:48:44.040323 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +18:48:44.117414 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +18:48:44.120049 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +18:48:44.120567 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.54391706, "process_in_blocks": "0", "process_kernel_time": 0.253091, "process_mem_max_rss": "125927424", "process_out_blocks": "0", "process_user_time": 1.258876} +18:48:44.120854 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 18:48:44.120790 after 0.54 seconds +18:48:44.121082 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +18:48:44.121285 [debug] [MainThread]: Flushing usage events +18:48:44.644908 [debug] [MainThread]: An error was encountered while trying to flush usage events +13:02:43.139124 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 13:02:43.144856 | efc5f728-37e4-4fa6-95c3-c1f95df270dc ============================== +13:02:43.144856 [info ] [MainThread]: Running with dbt=1.11.12 +13:02:43.145618 [debug] [MainThread]: running dbt with arguments {'profiles_dir': '.', 'invocation_command': 'dbt parse --profiles-dir .', 'version_check': 'True', 'no_print': 'None', 'cache_selected_only': 'False', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'send_anonymous_usage_stats': 'True', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'quiet': 'False', 'use_experimental_parser': 'False', 'indirect_selection': 'eager', 'warn_error': 'None', 'introspect': 'True', 'target_path': 'None', 'static_parser': 'True', 'printer_width': '80', 'use_colors': 'True', 'write_json': 'True', 'debug': 'False', 'empty': 'None', 'fail_fast': 'False', 'log_format': 'default', 'partial_parse': 'True', 'log_cache_events': 'False'} +13:02:43.349884 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': 'efc5f728-37e4-4fa6-95c3-c1f95df270dc', 'context': []} +13:02:43.403392 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': 'efc5f728-37e4-4fa6-95c3-c1f95df270dc', 'context': []} +13:02:43.406778 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +13:02:43.519932 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +13:02:43.686225 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 1 files added, 1 files changed. +13:02:43.687063 [debug] [MainThread]: Partial parsing: added file: school_compare://models/marts/fact_ks4_national_averages.sql +13:02:43.687687 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/marts/_marts_schema.yml +13:02:44.106801 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': 'efc5f728-37e4-4fa6-95c3-c1f95df270dc', 'context': []} +13:02:44.110827 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +13:02:44.211152 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +13:02:44.213866 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +13:02:44.214469 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 1.1430293, "process_in_blocks": "0", "process_kernel_time": 0.439532, "process_mem_max_rss": "132464640", "process_out_blocks": "0", "process_user_time": 1.983706} +13:02:44.214778 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 13:02:44.214714 after 1.14 seconds +13:02:44.215029 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +13:02:44.215286 [debug] [MainThread]: Flushing usage events +13:02:44.594244 [debug] [MainThread]: An error was encountered while trying to flush usage events +14:44:31.378170 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 14:44:31.409964 | 944d7fc7-e4b3-4553-bb9c-7709a72e5adb ============================== +14:44:31.409964 [info ] [MainThread]: Running with dbt=1.11.12 +14:44:31.410683 [debug] [MainThread]: running dbt with arguments {'empty': 'None', 'no_print': 'None', 'warn_error': 'None', 'log_cache_events': 'False', 'use_colors': 'True', 'send_anonymous_usage_stats': 'True', 'target_path': 'None', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'version_check': 'True', 'profiles_dir': '.', 'log_format': 'default', 'cache_selected_only': 'False', 'introspect': 'True', 'use_experimental_parser': 'False', 'debug': 'False', 'printer_width': '80', 'static_parser': 'True', 'partial_parse': 'True', 'fail_fast': 'False', 'write_json': 'True', 'indirect_selection': 'eager', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'quiet': 'False', 'invocation_command': 'dbt parse --profiles-dir .'} +14:44:33.887704 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '944d7fc7-e4b3-4553-bb9c-7709a72e5adb', 'context': []} +14:44:33.937929 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '944d7fc7-e4b3-4553-bb9c-7709a72e5adb', 'context': []} +14:44:33.939906 [info ] [MainThread]: Registered adapter: postgres=1.10.2 +14:44:34.042035 [debug] [MainThread]: checksum: f368f5348cf42803b94ef7fb8257ecf3bf9a9a16dd9c8c51fe5172f2dbeb457f, vars: {}, profile: , target: , version: 1.11.12 +14:44:34.197977 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 1 files added, 4 files changed. +14:44:34.198649 [debug] [MainThread]: Partial parsing: added file: dbt://macros/adapters/runtime.sql +14:44:34.198997 [debug] [MainThread]: Partial parsing: updated file: dbt://macros/get_custom_name/get_custom_database.sql +14:44:34.199285 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/staging/stg_ofsted_inspections.sql +14:44:34.199603 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/marts/fact_ofsted_inspection.sql +14:44:34.199873 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/intermediate/int_ofsted_latest.sql +14:44:34.565891 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '944d7fc7-e4b3-4553-bb9c-7709a72e5adb', 'context': []} +14:44:34.570071 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +14:44:34.729135 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +14:44:34.732116 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +14:44:34.732862 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 3.4214325, "process_in_blocks": "0", "process_kernel_time": 0.845861, "process_mem_max_rss": "154664960", "process_out_blocks": "0", "process_user_time": 3.50279} +14:44:34.733331 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 14:44:34.733239 after 3.42 seconds +14:44:34.733686 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +14:44:34.733997 [debug] [MainThread]: Flushing usage events +14:44:35.152478 [debug] [MainThread]: An error was encountered while trying to flush usage events +19:03:53.808379 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 19:03:53.821579 | 716689a2-6ae9-48c1-b309-3b58930321dc ============================== +19:03:53.821579 [info ] [MainThread]: Running with dbt=1.12.0 +19:03:53.821807 [debug] [MainThread]: running dbt with arguments {'target_path': 'None', 'invocation_command': 'dbt parse --profiles-dir .', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'hints_enabled': 'True', 'quiet': 'False', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'version_check': 'True', 'printer_width': '80', 'fail_fast': 'False', 'introspect': 'True', 'warn_error': 'None', 'cache_selected_only': 'False', 'indirect_selection': 'eager', 'maximum_seed_size_mib': '1', 'profiles_dir': '.', 'log_cache_events': 'False', 'write_json': 'True', 'no_print': 'None', 'use_colors': 'True', 'debug': 'False', 'static_parser': 'True', 'empty': 'None', 'send_anonymous_usage_stats': 'True', 'log_format': 'default', 'partial_parse': 'True', 'use_experimental_parser': 'False'} +19:03:55.079180 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'context': []} +19:03:55.098573 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'context': []} +19:03:55.099437 [info ] [MainThread]: Registered adapter: postgres=1.11.0 +19:03:55.140959 [debug] [MainThread]: checksum: 67b34be33115abb132a386d054767a080c4d76fc101bebe6b4f686156fa47e48, vars: {}, profile: school_compare, target: dev, version: 1.12.0 +19:03:55.184556 [info ] [MainThread]: Unable to do partial parsing because of a version mismatch +19:03:55.184766 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'partial_parser', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'context': []} +19:03:55.675944 [warn ] [MainThread]: [WARNING][PropertyMovedToConfigDeprecation]: Deprecated functionality +Found `severity` as a top-level property of `data_tests.not_null.severity` in +file `models/marts/_marts_schema.yml`. The `severity` top-level property should +be moved into the `config` of `data_tests.not_null.severity`. +19:03:55.676206 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'property_': 'warn', 'context': []} +19:03:55.677401 [warn ] [MainThread]: [WARNING][MissingArgumentsPropertyInGenericTestDeprecation]: Deprecated +functionality +Found top-level arguments to test `accepted_values` defined on 'dim_school' in +package 'school_compare' (models/marts/_marts_schema.yml). Arguments to generic +tests should be nested under the `arguments` property. +19:03:55.677534 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'property_': 'warn', 'context': []} +19:03:55.748942 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': '716689a2-6ae9-48c1-b309-3b58930321dc', 'context': []} +19:03:55.750611 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +19:03:55.820228 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +19:03:55.822037 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +19:03:55.840087 [debug] [MainThread]: Wrote artifact OsiDocument to /Users/tudor/projects/school_compare/pipeline/transform/target/osi_document.json +19:03:55.840391 [warn ] [MainThread]: [WARNING][DeprecationsSummary]: Deprecated functionality +Summary of encountered deprecations: +- PropertyMovedToConfigDeprecation: 4 occurrences +- MissingArgumentsPropertyInGenericTestDeprecation: 7 occurrences +To see all deprecation instances instead of just the first occurrence of each, +run command again with the `--show-all-deprecations` flag. You may also need to +run with `--no-partial-parse` as some deprecations are only encountered during +parsing. +19:03:55.840646 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 2.064521, "process_in_blocks": "0", "process_kernel_time": 0.314306, "process_mem_max_rss": "181239808", "process_out_blocks": "0", "process_user_time": 1.929906} +19:03:55.840808 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 19:03:55.840776 after 2.06 seconds +19:03:55.840941 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +19:03:55.841067 [debug] [MainThread]: Flushing usage events +19:03:56.468885 [debug] [MainThread]: An error was encountered while trying to flush usage events +19:07:36.556151 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [, , ]} + + +============================== 19:07:36.558168 | eb0bb5d4-b111-46cf-9b81-5e2f74744337 ============================== +19:07:36.558168 [info ] [MainThread]: Running with dbt=1.12.0 +19:07:36.558368 [debug] [MainThread]: running dbt with arguments {'send_anonymous_usage_stats': 'True', 'version_check': 'True', 'profiles_dir': '.', 'use_experimental_parser': 'False', 'empty': 'None', 'fail_fast': 'False', 'target_path': 'None', 'log_format': 'default', 'log_path': '/Users/tudor/projects/school_compare/pipeline/transform/logs', 'printer_width': '80', 'maximum_seed_size_mib': '1', 'indirect_selection': 'eager', 'warn_error_options': 'WarnErrorOptionsV2(error=[], warn=[], silence=[])', 'invocation_command': 'dbt parse --profiles-dir .', 'no_print': 'None', 'log_cache_events': 'False', 'debug': 'False', 'cache_selected_only': 'False', 'static_parser': 'True', 'quiet': 'False', 'partial_parse': 'True', 'hints_enabled': 'True', 'introspect': 'True', 'warn_error': 'None', 'write_json': 'True', 'use_colors': 'True'} +19:07:36.618364 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': 'eb0bb5d4-b111-46cf-9b81-5e2f74744337', 'context': []} +19:07:36.636294 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': 'eb0bb5d4-b111-46cf-9b81-5e2f74744337', 'context': []} +19:07:36.636932 [info ] [MainThread]: Registered adapter: postgres=1.11.0 +19:07:36.677947 [debug] [MainThread]: checksum: 67b34be33115abb132a386d054767a080c4d76fc101bebe6b4f686156fa47e48, vars: {}, profile: school_compare, target: dev, version: 1.12.0 +19:07:36.747220 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 1 files added, 2 files changed. +19:07:36.747561 [debug] [MainThread]: Partial parsing: added file: school_compare://models/staging/stg_ees_ks4_national.sql +19:07:36.748386 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/staging/_stg_sources.yml +19:07:36.748507 [debug] [MainThread]: Partial parsing: updated file: school_compare://models/marts/fact_ks4_national_averages.sql +19:07:36.981758 [warn ] [MainThread]: [WARNING][MissingArgumentsPropertyInGenericTestDeprecation]: Deprecated +functionality +Found top-level arguments to test `relationships` defined on 'dim_location' in +package 'school_compare' (models/marts/_marts_schema.yml). Arguments to generic +tests should be nested under the `arguments` property. +19:07:36.982033 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': 'eb0bb5d4-b111-46cf-9b81-5e2f74744337', 'property_': 'warn', 'context': []} +19:07:36.989319 [warn ] [MainThread]: [WARNING][PropertyMovedToConfigDeprecation]: Deprecated functionality +Found `severity` as a top-level property of `data_tests.not_null.severity` in +file `models/marts/_marts_schema.yml`. The `severity` top-level property should +be moved into the `config` of `data_tests.not_null.severity`. +19:07:36.989498 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'deprecation', 'label': 'eb0bb5d4-b111-46cf-9b81-5e2f74744337', 'property_': 'warn', 'context': []} +19:07:37.071622 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': 'eb0bb5d4-b111-46cf-9b81-5e2f74744337', 'context': []} +19:07:37.072886 [info ] [MainThread]: Performance info: /Users/tudor/projects/school_compare/pipeline/transform/target/perf_info.json +19:07:37.113602 [debug] [MainThread]: Wrote artifact WritableManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/manifest.json +19:07:37.114788 [debug] [MainThread]: Wrote artifact SemanticManifest to /Users/tudor/projects/school_compare/pipeline/transform/target/semantic_manifest.json +19:07:37.123055 [debug] [MainThread]: Wrote artifact OsiDocument to /Users/tudor/projects/school_compare/pipeline/transform/target/osi_document.json +19:07:37.123294 [warn ] [MainThread]: [WARNING][DeprecationsSummary]: Deprecated functionality +Summary of encountered deprecations: +- MissingArgumentsPropertyInGenericTestDeprecation: 7 occurrences +- PropertyMovedToConfigDeprecation: 4 occurrences +To see all deprecation instances instead of just the first occurrence of each, +run command again with the `--show-all-deprecations` flag. You may also need to +run with `--no-partial-parse` as some deprecations are only encountered during +parsing. +19:07:37.123506 [debug] [MainThread]: Resource report: {"command_name": "parse", "command_success": true, "command_wall_clock_time": 0.59700793, "process_in_blocks": "0", "process_kernel_time": 0.129478, "process_mem_max_rss": "146587648", "process_out_blocks": "0", "process_user_time": 0.936024} +19:07:37.123650 [debug] [MainThread]: Command `python -m dbt.cli.main parse` succeeded at 19:07:37.123622 after 0.60 seconds +19:07:37.123768 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [, , ]} +19:07:37.123876 [debug] [MainThread]: Flushing usage events +19:07:37.533590 [debug] [MainThread]: An error was encountered while trying to flush usage events diff --git a/pipeline/transform/models/marts/fact_ks4_national_averages.sql b/pipeline/transform/models/marts/fact_ks4_national_averages.sql index 5022332..3a897e5 100644 --- a/pipeline/transform/models/marts/fact_ks4_national_averages.sql +++ b/pipeline/transform/models/marts/fact_ks4_national_averages.sql @@ -1,25 +1,22 @@ {{ config(materialized='table') }} --- Mart: Computed national KS4 averages — one row per academic year. --- Unlike fact_ks2_national_averages (official DfE figures), DfE publishes no --- KS4 national-headline dataset we ingest yet, so these are means computed --- across the state schools in our dataset. Computed once at build time so the --- API never has to aggregate the full performance table per request. --- Semantics match the API's previous per-request computation: rows where --- attainment_8_score is non-null; per-column means ignore NULLs. +-- Mart: OFFICIAL DfE KS4 national headline averages — one row per academic +-- year (England, state-funded, all pupils), from the EES national dataset. +-- Replaces the previous unweighted school-level means, which were 7–15 +-- points off every headline measure and produced an arithmetically +-- impossible national Progress 8. gcse_grade_91_pct has no official +-- national series and is NULL (schema kept for the API model). select year, - round(avg(attainment_8_score)::numeric, 2) as attainment_8_score, - round(avg(progress_8_score)::numeric, 2) as progress_8_score, - round(avg(english_maths_standard_pass_pct)::numeric, 2) as english_maths_standard_pass_pct, - round(avg(english_maths_strong_pass_pct)::numeric, 2) as english_maths_strong_pass_pct, - round(avg(ebacc_entry_pct)::numeric, 2) as ebacc_entry_pct, - round(avg(ebacc_standard_pass_pct)::numeric, 2) as ebacc_standard_pass_pct, - round(avg(ebacc_strong_pass_pct)::numeric, 2) as ebacc_strong_pass_pct, - round(avg(ebacc_avg_score)::numeric, 2) as ebacc_avg_score, - round(avg(gcse_grade_91_pct)::numeric, 2) as gcse_grade_91_pct -from {{ ref('fact_ks4_performance') }} -where attainment_8_score is not null -group by year + attainment_8_score, + progress_8_score, + english_maths_standard_pass_pct, + english_maths_strong_pass_pct, + ebacc_entry_pct, + ebacc_standard_pass_pct, + ebacc_strong_pass_pct, + ebacc_avg_score, + cast(null as double precision) as gcse_grade_91_pct +from {{ ref('stg_ees_ks4_national') }} order by year diff --git a/pipeline/transform/models/staging/_stg_sources.yml b/pipeline/transform/models/staging/_stg_sources.yml index da78f36..b390790 100644 --- a/pipeline/transform/models/staging/_stg_sources.yml +++ b/pipeline/transform/models/staging/_stg_sources.yml @@ -51,6 +51,9 @@ sources: - name: ees_ks2_national description: KS2 national headline averages from DfE EES data catalogue — one row per academic year + - name: ees_ks4_national + description: Official KS4 national headline averages from DfE EES data catalogue — one row per academic year + # Phonics: no school-level data on EES (only national/LA level) - name: fbit_finance diff --git a/pipeline/transform/models/staging/stg_ees_ks4_national.sql b/pipeline/transform/models/staging/stg_ees_ks4_national.sql new file mode 100644 index 0000000..57ec5c1 --- /dev/null +++ b/pipeline/transform/models/staging/stg_ees_ks4_national.sql @@ -0,0 +1,20 @@ +{{ config(materialized='table') }} + +-- Staging model: official DfE KS4 national headline averages — one row per +-- academic year (England, all state-funded, all pupils). Source: EES data +-- catalogue "National characteristics summary data". Suppressed values +-- ('z', 'x') are coerced to NULL by safe_numeric — Progress 8 is 'z' in +-- years with no KS2 baseline (e.g. 2024/25): legitimately unpublished. + +select + cast(trim(time_period) as integer) as year, + {{ safe_numeric('attainment_8_score') }} as attainment_8_score, + {{ safe_numeric('progress_8_score') }} as progress_8_score, + {{ safe_numeric('english_maths_standard_pass_pct') }} as english_maths_standard_pass_pct, + {{ safe_numeric('english_maths_strong_pass_pct') }} as english_maths_strong_pass_pct, + {{ safe_numeric('ebacc_entry_pct') }} as ebacc_entry_pct, + {{ safe_numeric('ebacc_standard_pass_pct') }} as ebacc_standard_pass_pct, + {{ safe_numeric('ebacc_strong_pass_pct') }} as ebacc_strong_pass_pct, + {{ safe_numeric('ebacc_avg_score') }} as ebacc_avg_score +from {{ source('raw', 'ees_ks4_national') }} +where time_period ~ '^[0-9]+$' diff --git a/pipeline/transform/target/manifest.json b/pipeline/transform/target/manifest.json new file mode 100644 index 0000000..1b76dca --- /dev/null +++ b/pipeline/transform/target/manifest.json @@ -0,0 +1 @@ +{"metadata": {"dbt_schema_version": "https://schemas.getdbt.com/dbt/manifest/v12.json", "dbt_version": "1.12.0", "generated_at": "2026-07-16T18:07:36.722776Z", "invocation_id": "eb0bb5d4-b111-46cf-9b81-5e2f74744337", "invocation_started_at": "2026-07-16T18:03:53.796839+00:00", "env": {}, "project_name": "school_compare", "project_id": "ad0b158e159ec53d890c04c6537e7574", "user_id": "d8efb97e-d188-4585-899c-3ba2e484f763", "send_anonymous_usage_stats": true, "adapter_type": "postgres", "quoting": {"database": true, "schema": true, "identifier": true, "column": null}, "run_started_at": "2026-07-16T18:03:53.796964+00:00"}, "nodes": {"seed.school_compare.la_code_names": {"database": "school_compare", "schema": "seeds", "name": "la_code_names", "resource_type": "seed", "package_name": "school_compare", "path": "la_code_names.csv", "original_file_path": "seeds/la_code_names.csv", "unique_id": "seed.school_compare.la_code_names", "fqn": ["school_compare", "la_code_names"], "alias": "la_code_names", "checksum": {"name": "sha256", "checksum": "a3924c9bda3cb6be5f85832b0744c21935a4e006bc9e2d71ca03b075157abe8e"}, "config": {"enabled": true, "alias": null, "schema": "seeds", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "seed", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "delimiter": ",", "quote_columns": null}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "seeds"}, "created_at": 1784225035.5701702, "relation_name": "\"school_compare\".\"seeds\".\"la_code_names\"", "raw_code": "", "doc_blocks": [], "root_path": "/Users/tudor/projects/school_compare/pipeline/transform", "depends_on": {"macros": []}}, "seed.school_compare.gias_code_names": {"database": "school_compare", "schema": "seeds", "name": "gias_code_names", "resource_type": "seed", "package_name": "school_compare", "path": "gias_code_names.csv", "original_file_path": "seeds/gias_code_names.csv", "unique_id": "seed.school_compare.gias_code_names", "fqn": ["school_compare", "gias_code_names"], "alias": "gias_code_names", "checksum": {"name": "sha256", "checksum": "be09e2443f1d0d9ed3d0f8637ae38183e63b9e40c208e8684993e17ac5f2903b"}, "config": {"enabled": true, "alias": null, "schema": "seeds", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "seed", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "delimiter": ",", "quote_columns": null}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "seeds"}, "created_at": 1784225035.5709639, "relation_name": "\"school_compare\".\"seeds\".\"gias_code_names\"", "raw_code": "", "doc_blocks": [], "root_path": "/Users/tudor/projects/school_compare/pipeline/transform", "depends_on": {"macros": []}}, "seed.school_compare.school_type_codes": {"database": "school_compare", "schema": "seeds", "name": "school_type_codes", "resource_type": "seed", "package_name": "school_compare", "path": "school_type_codes.csv", "original_file_path": "seeds/school_type_codes.csv", "unique_id": "seed.school_compare.school_type_codes", "fqn": ["school_compare", "school_type_codes"], "alias": "school_type_codes", "checksum": {"name": "sha256", "checksum": "6020353ed39356287495de70fd2b44bed411ef059b2e61b0136c0faf3c9769cf"}, "config": {"enabled": true, "alias": null, "schema": "seeds", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "seed", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "delimiter": ",", "quote_columns": null}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"schema": "seeds"}, "created_at": 1784225035.5715232, "relation_name": "\"school_compare\".\"seeds\".\"school_type_codes\"", "raw_code": "", "doc_blocks": [], "root_path": "/Users/tudor/projects/school_compare/pipeline/transform", "depends_on": {"macros": []}}, "model.school_compare.stg_ees_ks4_national": {"database": "school_compare", "schema": "staging", "name": "stg_ees_ks4_national", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_ks4_national.sql", "original_file_path": "models/staging/stg_ees_ks4_national.sql", "unique_id": "model.school_compare.stg_ees_ks4_national", "fqn": ["school_compare", "staging", "stg_ees_ks4_national"], "alias": "stg_ees_ks4_national", "checksum": {"name": "sha256", "checksum": "cdc96082b585ef4940e4d3950a129f9c2a3fec9b10a2261be885f9e59a4c6be8"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.821694, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_ks4_national\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: official DfE KS4 national headline averages \u2014 one row per\n-- academic year (England, all state-funded, all pupils). Source: EES data\n-- catalogue \"National characteristics summary data\". Suppressed values\n-- ('z', 'x') are coerced to NULL by safe_numeric \u2014 Progress 8 is 'z' in\n-- years with no KS2 baseline (e.g. 2024/25): legitimately unpublished.\n\nselect\n cast(trim(time_period) as integer) as year,\n {{ safe_numeric('attainment_8_score') }} as attainment_8_score,\n {{ safe_numeric('progress_8_score') }} as progress_8_score,\n {{ safe_numeric('english_maths_standard_pass_pct') }} as english_maths_standard_pass_pct,\n {{ safe_numeric('english_maths_strong_pass_pct') }} as english_maths_strong_pass_pct,\n {{ safe_numeric('ebacc_entry_pct') }} as ebacc_entry_pct,\n {{ safe_numeric('ebacc_standard_pass_pct') }} as ebacc_standard_pass_pct,\n {{ safe_numeric('ebacc_strong_pass_pct') }} as ebacc_strong_pass_pct,\n {{ safe_numeric('ebacc_avg_score') }} as ebacc_avg_score\nfrom {{ source('raw', 'ees_ks4_national') }}\nwhere time_period ~ '^[0-9]+$'", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_ks4_national"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_ks4_national"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.dim_location": {"database": "school_compare", "schema": "marts", "name": "dim_location", "resource_type": "model", "package_name": "school_compare", "path": "marts/dim_location.sql", "original_file_path": "models/marts/dim_location.sql", "unique_id": "model.school_compare.dim_location", "fqn": ["school_compare", "marts", "dim_location"], "alias": "dim_location", "checksum": {"name": "sha256", "checksum": "d52fb2b99be90d6fa3c9e3e4f75b5f1bf872450a5e4460aea47d6e9dd6d1d210"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "School location dimension with PostGIS geometry", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "postcode": {"name": "postcode", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.955647, "relation_name": "\"school_compare\".\"marts\".\"dim_location\"", "raw_code": "-- Mart: School location dimension \u2014 one row per URN, PostGIS-enabled\n-- Geometry derived from GIAS easting/northing (British National Grid \u2192 WGS84).\n-- For schools missing easting/northing, the geocode script backfills via Postcodes.io.\n\nselect\n s.urn,\n s.address_line1,\n s.address_line2,\n s.town,\n s.county,\n s.postcode,\n s.local_authority_code,\n s.local_authority_name,\n s.parliamentary_constituency,\n s.urban_rural,\n s.easting,\n s.northing,\n case\n when s.easting is not null and s.northing is not null\n then ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326)\n else null\n end as geom,\n case\n when s.easting is not null and s.northing is not null\n then ST_Y(ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326))\n else null\n end as latitude,\n case\n when s.easting is not null and s.northing is not null\n then ST_X(ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326))\n else null\n end as longitude\nfrom {{ ref('stg_gias_establishments') }} s\n-- Must match dim_school's status filter exactly (the API inner-joins the two).\nwhere s.status_code in (1, 3)", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_gias_establishments", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_gias_establishments"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn"], "time_spine": null}, "model.school_compare.dim_school": {"database": "school_compare", "schema": "marts", "name": "dim_school", "resource_type": "model", "package_name": "school_compare", "path": "marts/dim_school.sql", "original_file_path": "models/marts/dim_school.sql", "unique_id": "model.school_compare.dim_school", "fqn": ["school_compare", "marts", "dim_school"], "alias": "dim_school", "checksum": {"name": "sha256", "checksum": "116be1472b8a5ef306d333ad7aec953f47ae184f8ceb8af7bab9770133b7a913"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Canonical school dimension \u2014 one row per active URN", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "school_name": {"name": "school_name", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "phase_code": {"name": "phase_code", "description": "GIAS PhaseOfEducation code (2 = Primary, 4 = Secondary, 7 = All-through, etc. \u2014 see seeds/gias_code_names.csv). May be null for a small number of independent schools where GIAS publishes \"Not Applicable\", no statutory age range, and the school name gives no hint.\n", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "has_sixth_form": {"name": "has_sixth_form", "description": "Authoritative sixth-form flag from GIAS OfficialSixthForm. \"Has a sixth form\" => true; \"Does not have a sixth form\" and \"Not applicable\" => false; blank GIAS value falls back to statutory_high_age >= 18. Replaces the age_range-contains-\"18\" heuristic (spec 2026-07-07 \u00a73).\n", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "status_code": {"name": "status_code", "description": "GIAS EstablishmentStatus code (1 = Open, 3 = Open but proposed to close)", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "school_type_code": {"name": "school_type_code", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "religious_character_code": {"name": "religious_character_code", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "admissions_policy_code": {"name": "admissions_policy_code", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.956583, "relation_name": "\"school_compare\".\"marts\".\"dim_school\"", "raw_code": "-- Mart: Canonical school dimension \u2014 one row per active URN\n\n-- int_ofsted_latest is only ref()'d inside a conditional block below (it may not\n-- exist before the Ofsted pipeline first runs), so declare the dependency\n-- explicitly for dbt's DAG.\n-- depends_on: {{ ref('int_ofsted_latest') }}\n\nwith schools as (\n select * from {{ ref('stg_gias_establishments') }}\n)\n\n{% set ofsted_relation = adapter.get_relation(\n database=target.database,\n schema='intermediate',\n identifier='int_ofsted_latest'\n) %}\n\nselect\n s.urn,\n s.local_authority_code * 1000 + s.establishment_number as laestab,\n s.school_name,\n -- Phase in GIAS code space (see seeds/gias_code_names.csv):\n -- 2 = Primary, 4 = Secondary, 7 = All-through, 0 = Not applicable.\n case\n -- 1. Trust GIAS phase when it's a real value (0 = the catch-all \"Not Applicable\")\n when s.phase_code is not null and s.phase_code != 0\n then s.phase_code\n -- 2. Infer from statutory age range (independent schools still publish these)\n when s.statutory_high_age is not null and s.statutory_high_age <= 11 then 2\n when s.statutory_low_age is not null and s.statutory_low_age >= 11 then 4\n when s.statutory_low_age is not null and s.statutory_high_age is not null\n and s.statutory_low_age < 11 and s.statutory_high_age > 11 then 7\n -- 3. Fallback: infer from school name (covers independents with missing ages)\n when s.school_name ilike '%primary%'\n or s.school_name ilike '%infant%'\n or s.school_name ilike '%junior%'\n or s.school_name ilike '%preparatory%'\n or s.school_name ilike '% prep school%'\n or s.school_name ilike '% prep %'\n then 2\n when s.school_name ilike '%secondary%'\n or s.school_name ilike '%high school%'\n or s.school_name ilike '%grammar%'\n or s.school_name ilike '%senior school%'\n or s.school_name ilike '%upper school%'\n then 4\n -- 4. Give up \u2014 null renders no phase pill\n else null\n end as phase_code,\n s.school_type_code,\n s.academy_trust_name,\n s.academy_trust_uid,\n s.religious_character_code,\n s.gender,\n s.statutory_low_age || '-' || s.statutory_high_age as age_range,\n -- GIAS OfficialSixthForm in code space: 1 = has, 2 = does not, 0 = N/A.\n -- Null (rare, new establishments) falls back to the statutory age range.\n case\n when s.official_sixth_form_code = 1 then true\n when s.official_sixth_form_code in (0, 2) then false\n else coalesce(s.statutory_high_age >= 18, false)\n end as has_sixth_form,\n s.capacity,\n s.total_pupils,\n concat_ws(' ', s.head_title, s.head_first_name, s.head_last_name) as headteacher_name,\n s.website,\n s.telephone,\n s.open_date,\n s.close_date,\n s.status_code,\n s.nursery_provision,\n s.admissions_policy_code,\n\n -- Latest Ofsted (populated after monthly Ofsted pipeline runs)\n {% if ofsted_relation is not none %}\n -- Prefer the graded overall effectiveness; fall back to the grade parsed\n -- from the latest ungraded (Section 8) outcome when no graded grade exists.\n coalesce(o.overall_effectiveness, o.ungraded_grade) as ofsted_grade,\n o.inspection_date as ofsted_date,\n o.framework as ofsted_framework\n {% else %}\n null::text as ofsted_grade,\n null::date as ofsted_date,\n null::text as ofsted_framework\n {% endif %}\n\nfrom schools s\n{% if ofsted_relation is not none %}\nleft join {{ ref('int_ofsted_latest') }} o on s.urn = o.urn\n{% endif %}\n-- 1 = Open; 3 = Open, but proposed to close (still operating; drops out when\n-- GIAS flips to Closed \u2014 marts fully rebuild each run).\nwhere s.status_code in (1, 3)", "doc_blocks": [], "language": "sql", "refs": [{"name": "int_ofsted_latest", "package": null, "version": null}, {"name": "stg_gias_establishments", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.int_ofsted_latest", "model.school_compare.stg_gias_establishments"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn"], "time_spine": null}, "model.school_compare.stg_gias_establishments": {"database": "school_compare", "schema": "staging", "name": "stg_gias_establishments", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_gias_establishments.sql", "original_file_path": "models/staging/stg_gias_establishments.sql", "unique_id": "model.school_compare.stg_gias_establishments", "fqn": ["school_compare", "staging", "stg_gias_establishments"], "alias": "stg_gias_establishments", "checksum": {"name": "sha256", "checksum": "f441ba1ec21d49447e34206e11189040431a3dd525e4a51bc40e8c7c2ba032b0"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.8353448, "relation_name": "\"school_compare\".\"staging\".\"stg_gias_establishments\"", "raw_code": "-- Staging model: GIAS establishments\n-- Light cleaning, type casting, column renaming from raw GIAS bulk CSV\n\nwith source as (\n select * from {{ source('raw', 'gias_establishments') }}\n),\n\nrenamed as (\n select\n cast(\"URN\" as integer) as urn,\n cast(nullif(\"LA (code)\", '') as integer) as local_authority_code,\n \"LA (name)\" as local_authority_name,\n cast(nullif(\"EstablishmentNumber\", '') as integer) as establishment_number,\n \"EstablishmentName\" as school_name,\n cast(nullif(trim(\"TypeOfEstablishment (code)\"), '') as integer) as school_type_code,\n cast(nullif(trim(\"PhaseOfEducation (code)\"), '') as integer) as phase_code,\n cast(nullif(trim(\"OfficialSixthForm (code)\"), '') as integer) as official_sixth_form_code,\n \"Gender (name)\" as gender,\n cast(nullif(trim(\"ReligiousCharacter (code)\"), '') as integer) as religious_character_code,\n cast(nullif(trim(\"AdmissionsPolicy (code)\"), '') as integer) as admissions_policy_code,\n \"SchoolCapacity\" as capacity,\n cast(nullif(\"NumberOfPupils\", '') as integer) as total_pupils,\n \"HeadTitle (name)\" as head_title,\n \"HeadFirstName\" as head_first_name,\n \"HeadLastName\" as head_last_name,\n \"TelephoneNum\" as telephone,\n \"SchoolWebsite\" as website,\n \"Street\" as address_line1,\n \"Locality\" as address_line2,\n \"Town\" as town,\n \"County (name)\" as county,\n \"Postcode\" as postcode,\n cast(nullif(trim(\"EstablishmentStatus (code)\"), '') as integer) as status_code,\n case when \"OpenDate\" = '' then null else to_date(\"OpenDate\", 'DD-MM-YYYY') end as open_date,\n case when \"CloseDate\" = '' then null else to_date(\"CloseDate\", 'DD-MM-YYYY') end as close_date,\n \"Trusts (name)\" as academy_trust_name,\n cast(nullif(\"Trusts (code)\", '') as integer) as academy_trust_uid,\n \"UrbanRural (name)\" as urban_rural,\n \"ParliamentaryConstituency (name)\" as parliamentary_constituency,\n \"NurseryProvision (name)\" as nursery_provision,\n cast(nullif(\"Easting\", '') as integer) as easting,\n cast(nullif(\"Northing\", '') as integer) as northing,\n cast(nullif(\"StatutoryLowAge\", '') as integer) as statutory_low_age,\n cast(nullif(\"StatutoryHighAge\", '') as integer) as statutory_high_age\n from source\n where \"URN\" is not null\n)\n\nselect * from renamed", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "gias_establishments"]], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["source.school_compare.raw.gias_establishments"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_performance": {"database": "school_compare", "schema": "marts", "name": "fact_performance", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_performance.sql", "original_file_path": "models/marts/fact_performance.sql", "unique_id": "model.school_compare.fact_performance", "fqn": ["school_compare", "marts", "fact_performance"], "alias": "fact_performance", "checksum": {"name": "sha256", "checksum": "ea8849a6596cdb40066194013400acd5b70cd71b49dd7de8052a67afbe012577"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Merged KS2 + KS4 performance \u2014 one row per URN per year via FULL OUTER JOIN. All-through schools have both KS2 and KS4 columns populated; pure primary schools have NULL KS4 columns; pure secondary schools have NULL KS2 columns.", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.957527, "relation_name": "\"school_compare\".\"marts\".\"fact_performance\"", "raw_code": "-- Mart: Merged KS2 + KS4 performance \u2014 one row per URN per year\n-- FULL OUTER JOIN so all-through schools have both KS2 and KS4 columns populated.\n-- Pure primary schools have NULL KS4 columns; pure secondary schools have NULL KS2 columns.\n\nwith ks2 as (\n select * from {{ ref('fact_ks2_performance') }}\n),\n\nks4 as (\n select * from {{ ref('fact_ks4_performance') }}\n)\n\nselect\n -- Join keys (coalesced so neither side is dropped)\n coalesce(ks2.urn, ks4.urn) as urn,\n coalesce(ks2.source_urn, ks4.source_urn) as source_urn,\n coalesce(ks2.year, ks4.year) as year,\n coalesce(ks2.total_pupils, ks4.total_pupils) as total_pupils,\n coalesce(ks2.eligible_pupils, ks4.eligible_pupils) as eligible_pupils,\n\n -- KS2 columns (NULL for pure secondary schools)\n ks2.rwm_expected_pct,\n ks2.rwm_high_pct,\n ks2.reading_expected_pct,\n ks2.reading_high_pct,\n ks2.reading_avg_score,\n ks2.reading_progress,\n ks2.reading_progress_lower_ci,\n ks2.reading_progress_upper_ci,\n ks2.writing_expected_pct,\n ks2.writing_high_pct,\n ks2.writing_progress,\n ks2.writing_progress_lower_ci,\n ks2.writing_progress_upper_ci,\n ks2.writing_working_towards_pct,\n ks2.maths_expected_pct,\n ks2.maths_high_pct,\n ks2.maths_avg_score,\n ks2.maths_progress,\n ks2.maths_progress_lower_ci,\n ks2.maths_progress_upper_ci,\n ks2.gps_expected_pct,\n ks2.gps_high_pct,\n ks2.gps_avg_score,\n ks2.science_expected_pct,\n ks2.reading_absence_pct,\n ks2.writing_absence_pct,\n ks2.maths_absence_pct,\n ks2.gps_absence_pct,\n ks2.science_absence_pct,\n ks2.rwm_expected_boys_pct,\n ks2.rwm_high_boys_pct,\n ks2.rwm_expected_girls_pct,\n ks2.rwm_high_girls_pct,\n ks2.rwm_expected_disadvantaged_pct,\n ks2.rwm_expected_non_disadvantaged_pct,\n ks2.disadvantaged_gap,\n ks2.disadvantaged_pct,\n ks2.eal_pct,\n ks2.stability_pct,\n\n -- KS4 columns (NULL for pure primary schools)\n ks4.attainment_8_score,\n ks4.progress_8_score,\n ks4.progress_8_lower_ci,\n ks4.progress_8_upper_ci,\n ks4.progress_8_english,\n ks4.progress_8_maths,\n ks4.progress_8_ebacc,\n ks4.progress_8_open,\n ks4.progress_8_banding,\n ks4.attainment_8_disadvantage_gap,\n ks4.progress_8_disadvantage_gap,\n ks4.english_maths_strong_pass_pct,\n ks4.english_maths_standard_pass_pct,\n ks4.ebacc_entry_pct,\n ks4.ebacc_strong_pass_pct,\n ks4.ebacc_standard_pass_pct,\n ks4.ebacc_avg_score,\n ks4.gcse_grade_91_pct,\n ks4.prior_attainment_avg,\n ks4.sen_pct,\n\n -- Shared SEN columns \u2014 KS2 preferred, fall back to KS4\n coalesce(ks2.sen_support_pct, ks4.sen_support_pct) as sen_support_pct,\n coalesce(ks2.sen_ehcp_pct, ks4.sen_ehcp_pct) as sen_ehcp_pct\n\nfrom ks2\nfull outer join ks4\n on ks2.urn = ks4.urn\n and ks2.year = ks4.year", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_performance", "package": null, "version": null}, {"name": "fact_ks4_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.fact_ks2_performance", "model.school_compare.fact_ks4_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn || '-' || year"], "time_spine": null}, "model.school_compare.fact_ks2_performance": {"database": "school_compare", "schema": "marts", "name": "fact_ks2_performance", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_ks2_performance.sql", "original_file_path": "models/marts/fact_ks2_performance.sql", "unique_id": "model.school_compare.fact_ks2_performance", "fqn": ["school_compare", "marts", "fact_ks2_performance"], "alias": "fact_ks2_performance", "checksum": {"name": "sha256", "checksum": "ee3f734e98d37c6b3459f08eb35e78e193c2c4995fb64a4bbe2d58a2382acf8c"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "KS2 attainment \u2014 one row per URN per year", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "reading_progress_lower_ci": {"name": "reading_progress_lower_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "reading_progress_upper_ci": {"name": "reading_progress_upper_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "writing_progress_lower_ci": {"name": "writing_progress_lower_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "writing_progress_upper_ci": {"name": "writing_progress_upper_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "writing_working_towards_pct": {"name": "writing_working_towards_pct", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "maths_progress_lower_ci": {"name": "maths_progress_lower_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "maths_progress_upper_ci": {"name": "maths_progress_upper_ci", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.957371, "relation_name": "\"school_compare\".\"marts\".\"fact_ks2_performance\"", "raw_code": "-- Mart: KS2 performance fact table \u2014 one row per URN per year\n-- Includes predecessor data via lineage resolution\n\nselect\n current_urn as urn,\n source_urn,\n year,\n total_pupils,\n eligible_pupils,\n\n -- Core attainment\n rwm_expected_pct,\n rwm_high_pct,\n reading_expected_pct,\n reading_high_pct,\n reading_avg_score,\n reading_progress,\n reading_progress_lower_ci,\n reading_progress_upper_ci,\n writing_expected_pct,\n writing_high_pct,\n writing_progress,\n writing_progress_lower_ci,\n writing_progress_upper_ci,\n writing_working_towards_pct,\n maths_expected_pct,\n maths_high_pct,\n maths_avg_score,\n maths_progress,\n maths_progress_lower_ci,\n maths_progress_upper_ci,\n gps_expected_pct,\n gps_high_pct,\n gps_avg_score,\n science_expected_pct,\n\n -- Absence\n reading_absence_pct,\n writing_absence_pct,\n maths_absence_pct,\n gps_absence_pct,\n science_absence_pct,\n\n -- Gender\n rwm_expected_boys_pct,\n rwm_high_boys_pct,\n rwm_expected_girls_pct,\n rwm_high_girls_pct,\n\n -- Disadvantaged\n rwm_expected_disadvantaged_pct,\n rwm_expected_non_disadvantaged_pct,\n disadvantaged_gap,\n\n -- Context\n disadvantaged_pct,\n eal_pct,\n sen_support_pct,\n sen_ehcp_pct,\n stability_pct\n\nfrom {{ ref('int_ks2_with_lineage') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "int_ks2_with_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.int_ks2_with_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn || '-' || year"], "time_spine": null}, "model.school_compare.int_ks2_with_lineage": {"database": "school_compare", "schema": "intermediate", "name": "int_ks2_with_lineage", "resource_type": "model", "package_name": "school_compare", "path": "intermediate/int_ks2_with_lineage.sql", "original_file_path": "models/intermediate/int_ks2_with_lineage.sql", "unique_id": "model.school_compare.int_ks2_with_lineage", "fqn": ["school_compare", "intermediate", "int_ks2_with_lineage"], "alias": "int_ks2_with_lineage", "checksum": {"name": "sha256", "checksum": "cf0cd2ad3e55172d40bcdc4c0b5b750bdf5d7c1618f472b359372e34c467a89b"}, "config": {"enabled": true, "alias": null, "schema": "intermediate", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "intermediate"}, "created_at": 1784225256.837429, "relation_name": "\"school_compare\".\"intermediate\".\"int_ks2_with_lineage\"", "raw_code": "-- Intermediate model: KS2 data chained across academy conversions\n-- Maps predecessor URN data to the current active URN\n-- Unions EES (2022+) and legacy (2015-2019) school-level data\n\nwith all_ks2 as (\n select * from {{ ref('stg_ees_ks2') }}\n union all\n select * from {{ ref('stg_legacy_ks2') }}\n),\n\ncurrent_ks2 as (\n select\n urn as current_urn,\n urn as source_urn,\n year, total_pupils, eligible_pupils,\n rwm_expected_pct, rwm_high_pct,\n reading_expected_pct, reading_high_pct, reading_avg_score, reading_progress,\n reading_progress_lower_ci, reading_progress_upper_ci,\n writing_expected_pct, writing_high_pct, writing_progress,\n writing_progress_lower_ci, writing_progress_upper_ci, writing_working_towards_pct,\n maths_expected_pct, maths_high_pct, maths_avg_score, maths_progress,\n maths_progress_lower_ci, maths_progress_upper_ci,\n gps_expected_pct, gps_high_pct, gps_avg_score, science_expected_pct,\n reading_absence_pct, writing_absence_pct, maths_absence_pct, gps_absence_pct, science_absence_pct,\n rwm_expected_boys_pct, rwm_high_boys_pct, rwm_expected_girls_pct, rwm_high_girls_pct,\n rwm_expected_disadvantaged_pct, rwm_expected_non_disadvantaged_pct, disadvantaged_gap,\n disadvantaged_pct, eal_pct, sen_support_pct, sen_ehcp_pct, stability_pct\n from all_ks2\n),\n\npredecessor_ks2 as (\n -- If multiple predecessors have data for the same year, keep the one with most pupils.\n select distinct on (lin.current_urn, ks2.year)\n lin.current_urn,\n ks2.urn as source_urn,\n ks2.year, ks2.total_pupils, ks2.eligible_pupils,\n ks2.rwm_expected_pct, ks2.rwm_high_pct,\n ks2.reading_expected_pct, ks2.reading_high_pct, ks2.reading_avg_score, ks2.reading_progress,\n ks2.reading_progress_lower_ci, ks2.reading_progress_upper_ci,\n ks2.writing_expected_pct, ks2.writing_high_pct, ks2.writing_progress,\n ks2.writing_progress_lower_ci, ks2.writing_progress_upper_ci, ks2.writing_working_towards_pct,\n ks2.maths_expected_pct, ks2.maths_high_pct, ks2.maths_avg_score, ks2.maths_progress,\n ks2.maths_progress_lower_ci, ks2.maths_progress_upper_ci,\n ks2.gps_expected_pct, ks2.gps_high_pct, ks2.gps_avg_score, ks2.science_expected_pct,\n ks2.reading_absence_pct, ks2.writing_absence_pct, ks2.maths_absence_pct, ks2.gps_absence_pct, ks2.science_absence_pct,\n ks2.rwm_expected_boys_pct, ks2.rwm_high_boys_pct, ks2.rwm_expected_girls_pct, ks2.rwm_high_girls_pct,\n ks2.rwm_expected_disadvantaged_pct, ks2.rwm_expected_non_disadvantaged_pct, ks2.disadvantaged_gap,\n ks2.disadvantaged_pct, ks2.eal_pct, ks2.sen_support_pct, ks2.sen_ehcp_pct, ks2.stability_pct\n from all_ks2 ks2\n inner join {{ ref('int_school_lineage') }} lin\n on ks2.urn = lin.predecessor_urn\n where not exists (\n select 1 from all_ks2 curr\n where curr.urn = lin.current_urn\n and curr.year = ks2.year\n )\n order by lin.current_urn, ks2.year, ks2.total_pupils desc nulls last\n),\n\ncombined as (\n select * from current_ks2\n union all\n select * from predecessor_ks2\n)\n\nselect * from combined", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_ks2", "package": null, "version": null}, {"name": "stg_legacy_ks2", "package": null, "version": null}, {"name": "int_school_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_ks2", "model.school_compare.stg_legacy_ks2", "model.school_compare.int_school_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_ks4_national_averages": {"database": "school_compare", "schema": "marts", "name": "fact_ks4_national_averages", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_ks4_national_averages.sql", "original_file_path": "models/marts/fact_ks4_national_averages.sql", "unique_id": "model.school_compare.fact_ks4_national_averages", "fqn": ["school_compare", "marts", "fact_ks4_national_averages"], "alias": "fact_ks4_national_averages", "checksum": {"name": "sha256", "checksum": "6652829c2e28bab0f05474060d1cbda23c1009418ccef3791f810553e2f99f98"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Computed national KS4 averages (means across state schools in our dataset \u2014 not official DfE figures) \u2014 one row per academic year", "columns": {"year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.9580421, "relation_name": "\"school_compare\".\"marts\".\"fact_ks4_national_averages\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Mart: OFFICIAL DfE KS4 national headline averages \u2014 one row per academic\n-- year (England, state-funded, all pupils), from the EES national dataset.\n-- Replaces the previous unweighted school-level means, which were 7\u201315\n-- points off every headline measure and produced an arithmetically\n-- impossible national Progress 8. gcse_grade_91_pct has no official\n-- national series and is NULL (schema kept for the API model).\n\nselect\n year,\n attainment_8_score,\n progress_8_score,\n english_maths_standard_pass_pct,\n english_maths_strong_pass_pct,\n ebacc_entry_pct,\n ebacc_standard_pass_pct,\n ebacc_strong_pass_pct,\n ebacc_avg_score,\n cast(null as double precision) as gcse_grade_91_pct\nfrom {{ ref('stg_ees_ks4_national') }}\norder by year", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_ks4_national", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_ks4_national"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["year"], "time_spine": null}, "model.school_compare.fact_ks4_performance": {"database": "school_compare", "schema": "marts", "name": "fact_ks4_performance", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_ks4_performance.sql", "original_file_path": "models/marts/fact_ks4_performance.sql", "unique_id": "model.school_compare.fact_ks4_performance", "fqn": ["school_compare", "marts", "fact_ks4_performance"], "alias": "fact_ks4_performance", "checksum": {"name": "sha256", "checksum": "3afb0dc042db222966de51680b08211c603d099f2db132137dda6abae9ac0b17"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "KS4 attainment \u2014 one row per URN per year", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "progress_8_banding": {"name": "progress_8_banding", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "attainment_8_disadvantage_gap": {"name": "attainment_8_disadvantage_gap", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "progress_8_disadvantage_gap": {"name": "progress_8_disadvantage_gap", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.95791, "relation_name": "\"school_compare\".\"marts\".\"fact_ks4_performance\"", "raw_code": "-- Mart: KS4 performance fact table \u2014 one row per URN per year\n-- Includes predecessor data via lineage resolution\n\nselect\n current_urn as urn,\n source_urn,\n year,\n total_pupils,\n eligible_pupils,\n prior_attainment_avg,\n\n -- Attainment 8\n attainment_8_score,\n\n -- Progress 8\n progress_8_score,\n progress_8_lower_ci,\n progress_8_upper_ci,\n progress_8_banding,\n attainment_8_disadvantage_gap,\n progress_8_disadvantage_gap,\n progress_8_english,\n progress_8_maths,\n progress_8_ebacc,\n progress_8_open,\n\n -- English & Maths\n english_maths_strong_pass_pct,\n english_maths_standard_pass_pct,\n\n -- EBacc\n ebacc_entry_pct,\n ebacc_strong_pass_pct,\n ebacc_standard_pass_pct,\n ebacc_avg_score,\n\n -- GCSE\n gcse_grade_91_pct,\n\n -- Context\n sen_pct,\n sen_ehcp_pct,\n sen_support_pct\n\nfrom {{ ref('int_ks4_with_lineage') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "int_ks4_with_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.int_ks4_with_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn || '-' || year"], "time_spine": null}, "model.school_compare.int_ks4_with_lineage": {"database": "school_compare", "schema": "intermediate", "name": "int_ks4_with_lineage", "resource_type": "model", "package_name": "school_compare", "path": "intermediate/int_ks4_with_lineage.sql", "original_file_path": "models/intermediate/int_ks4_with_lineage.sql", "unique_id": "model.school_compare.int_ks4_with_lineage", "fqn": ["school_compare", "intermediate", "int_ks4_with_lineage"], "alias": "int_ks4_with_lineage", "checksum": {"name": "sha256", "checksum": "0f1837fc648e40dea60bdf7a45d60824017665bbc189e497e20203d4739f5a53"}, "config": {"enabled": true, "alias": null, "schema": "intermediate", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "intermediate"}, "created_at": 1784225256.839802, "relation_name": "\"school_compare\".\"intermediate\".\"int_ks4_with_lineage\"", "raw_code": "-- Intermediate model: KS4 data chained across academy conversions\n-- Unions EES (2023/24 onwards) and legacy (2015/16\u20132018/19) school-level data\n\nwith all_ks4 as (\n select * from {{ ref('stg_ees_ks4') }}\n union all\n select * from {{ ref('stg_legacy_ks4') }}\n),\n\ncurrent_ks4 as (\n select\n urn as current_urn,\n urn as source_urn,\n year, total_pupils, eligible_pupils, prior_attainment_avg,\n attainment_8_score,\n progress_8_score, progress_8_lower_ci, progress_8_upper_ci,\n progress_8_english, progress_8_maths, progress_8_ebacc, progress_8_open,\n english_maths_strong_pass_pct, english_maths_standard_pass_pct,\n ebacc_entry_pct, ebacc_strong_pass_pct, ebacc_standard_pass_pct, ebacc_avg_score,\n gcse_grade_91_pct,\n sen_pct, sen_support_pct, sen_ehcp_pct,\n progress_8_banding, attainment_8_disadvantage_gap, progress_8_disadvantage_gap\n from all_ks4\n),\n\npredecessor_ks4 as (\n -- If multiple predecessors have data for the same year, keep the one with most pupils.\n select distinct on (lin.current_urn, ks4.year)\n lin.current_urn,\n ks4.urn as source_urn,\n ks4.year, ks4.total_pupils, ks4.eligible_pupils, ks4.prior_attainment_avg,\n ks4.attainment_8_score,\n ks4.progress_8_score, ks4.progress_8_lower_ci, ks4.progress_8_upper_ci,\n ks4.progress_8_english, ks4.progress_8_maths, ks4.progress_8_ebacc, ks4.progress_8_open,\n ks4.english_maths_strong_pass_pct, ks4.english_maths_standard_pass_pct,\n ks4.ebacc_entry_pct, ks4.ebacc_strong_pass_pct, ks4.ebacc_standard_pass_pct, ks4.ebacc_avg_score,\n ks4.gcse_grade_91_pct,\n ks4.sen_pct, ks4.sen_support_pct, ks4.sen_ehcp_pct,\n ks4.progress_8_banding, ks4.attainment_8_disadvantage_gap, ks4.progress_8_disadvantage_gap\n from all_ks4 ks4\n inner join {{ ref('int_school_lineage') }} lin\n on ks4.urn = lin.predecessor_urn\n where not exists (\n select 1 from all_ks4 curr\n where curr.urn = lin.current_urn\n and curr.year = ks4.year\n )\n order by lin.current_urn, ks4.year, ks4.total_pupils desc nulls last\n),\n\ncombined as (\n select * from current_ks4\n union all\n select * from predecessor_ks4\n)\n\nselect * from combined", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_ks4", "package": null, "version": null}, {"name": "stg_legacy_ks4", "package": null, "version": null}, {"name": "int_school_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_ks4", "model.school_compare.stg_legacy_ks4", "model.school_compare.int_school_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.map_school_lineage": {"database": "school_compare", "schema": "marts", "name": "map_school_lineage", "resource_type": "model", "package_name": "school_compare", "path": "marts/map_school_lineage.sql", "original_file_path": "models/marts/map_school_lineage.sql", "unique_id": "model.school_compare.map_school_lineage", "fqn": ["school_compare", "marts", "map_school_lineage"], "alias": "map_school_lineage", "checksum": {"name": "sha256", "checksum": "ccc46724286e6f850514c1c0bacb73adc7317c3b9e1e57ca9f8dd51a49b848c4"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Predecessor/successor lineage map", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.958216, "relation_name": "\"school_compare\".\"marts\".\"map_school_lineage\"", "raw_code": "-- Mart: School predecessor/successor lineage map\n\nselect\n current_urn as urn,\n predecessor_urn,\n link_type,\n link_date,\n depth\nfrom {{ ref('int_school_lineage') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "int_school_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.int_school_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.int_school_lineage": {"database": "school_compare", "schema": "intermediate", "name": "int_school_lineage", "resource_type": "model", "package_name": "school_compare", "path": "intermediate/int_school_lineage.sql", "original_file_path": "models/intermediate/int_school_lineage.sql", "unique_id": "model.school_compare.int_school_lineage", "fqn": ["school_compare", "intermediate", "int_school_lineage"], "alias": "int_school_lineage", "checksum": {"name": "sha256", "checksum": "6b5415d216e4fca7dc3802b07795eebf1d0f71cdb5afcb14da3f56661e59c073"}, "config": {"enabled": true, "alias": null, "schema": "intermediate", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "intermediate"}, "created_at": 1784225256.8411689, "relation_name": "\"school_compare\".\"intermediate\".\"int_school_lineage\"", "raw_code": "-- Intermediate model: Recursive predecessor mapping\n-- Resolves academy conversion chains so historical data can be attributed\n-- to the current (active) URN.\n\nwith recursive lineage as (\n -- Base: schools that are predecessors (linked via academy conversion, amalgamation, etc.)\n select\n urn,\n linked_urn as predecessor_urn,\n link_type,\n link_date,\n 1 as depth\n from {{ ref('stg_gias_links') }}\n where link_type in (\n 'Predecessor',\n 'Predecessor - Loss of academy converter',\n 'Predecessor - amalgamated',\n 'Predecessor - Fresh Start'\n )\n\n union all\n\n -- Recursive step: follow the chain\n select\n l.urn,\n links.linked_urn as predecessor_urn,\n links.link_type,\n links.link_date,\n l.depth + 1\n from lineage l\n inner join {{ ref('stg_gias_links') }} links\n on l.predecessor_urn = links.urn\n where links.link_type in (\n 'Predecessor',\n 'Predecessor - Loss of academy converter',\n 'Predecessor - amalgamated',\n 'Predecessor - Fresh Start'\n )\n and l.depth < 5 -- safety limit\n)\n\nselect\n urn as current_urn,\n predecessor_urn,\n link_type,\n link_date,\n depth\nfrom lineage", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_gias_links", "package": null, "version": null}, {"name": "stg_gias_links", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_gias_links"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_gias_links": {"database": "school_compare", "schema": "staging", "name": "stg_gias_links", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_gias_links.sql", "original_file_path": "models/staging/stg_gias_links.sql", "unique_id": "model.school_compare.stg_gias_links", "fqn": ["school_compare", "staging", "stg_gias_links"], "alias": "stg_gias_links", "checksum": {"name": "sha256", "checksum": "b63bd2f36eeb2be840a344365a68879242e5cb3310d7a74e7071fe7f6a9724fc"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.841929, "relation_name": "\"school_compare\".\"staging\".\"stg_gias_links\"", "raw_code": "-- Staging model: GIAS school links (predecessor/successor chains)\n\nwith source as (\n select * from {{ source('raw', 'gias_links') }}\n),\n\nrenamed as (\n select\n cast(\"URN\" as integer) as urn,\n cast(\"LinkURN\" as integer) as linked_urn,\n \"LinkType\" as link_type,\n case when \"LinkEstablishedDate\" = '' then null else to_date(\"LinkEstablishedDate\", 'DD-MM-YYYY') end as link_date\n from source\n where \"URN\" is not null\n and \"LinkURN\" is not null\n)\n\nselect * from renamed", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "gias_links"]], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["source.school_compare.raw.gias_links"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_ofsted_inspection": {"database": "school_compare", "schema": "marts", "name": "fact_ofsted_inspection", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_ofsted_inspection.sql", "original_file_path": "models/marts/fact_ofsted_inspection.sql", "unique_id": "model.school_compare.fact_ofsted_inspection", "fqn": ["school_compare", "marts", "fact_ofsted_inspection"], "alias": "fact_ofsted_inspection", "checksum": {"name": "sha256", "checksum": "0f84ccceb71e7c7d5514164e9c6f3bbabecbca72b3547acc555b47c4dc361096"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Full Ofsted inspection history", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "inspection_date": {"name": "inspection_date", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.95843, "relation_name": "\"school_compare\".\"marts\".\"fact_ofsted_inspection\"", "raw_code": "-- Mart: Full Ofsted inspection history \u2014 one row per inspection\n\nselect\n urn,\n inspection_date,\n inspection_type,\n framework,\n overall_effectiveness,\n quality_of_education,\n behaviour_attitudes,\n personal_development,\n leadership_management,\n early_years_provision,\n sixth_form_provision,\n ungraded_outcome,\n ungraded_grade,\n rc_safeguarding_met,\n rc_inclusion,\n rc_curriculum_teaching,\n rc_achievement,\n rc_attendance_behaviour,\n rc_personal_development,\n rc_leadership_governance,\n rc_early_years,\n rc_sixth_form,\n rc_inspection_date,\n report_url\nfrom {{ ref('stg_ofsted_inspections') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ofsted_inspections", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ofsted_inspections"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.int_ofsted_latest": {"database": "school_compare", "schema": "intermediate", "name": "int_ofsted_latest", "resource_type": "model", "package_name": "school_compare", "path": "intermediate/int_ofsted_latest.sql", "original_file_path": "models/intermediate/int_ofsted_latest.sql", "unique_id": "model.school_compare.int_ofsted_latest", "fqn": ["school_compare", "intermediate", "int_ofsted_latest"], "alias": "int_ofsted_latest", "checksum": {"name": "sha256", "checksum": "82a928978d87dcf8799894786716d1fca35b65e08aaea28573974a4423b06a07"}, "config": {"enabled": true, "alias": null, "schema": "intermediate", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "intermediate"}, "created_at": 1784225256.843183, "relation_name": "\"school_compare\".\"intermediate\".\"int_ofsted_latest\"", "raw_code": "-- Intermediate model: Latest Ofsted inspection per URN\n-- Picks the most recent inspection for each school\n\nwith ranked as (\n select\n *,\n row_number() over (\n partition by urn\n order by inspection_date desc\n ) as rn\n from {{ ref('stg_ofsted_inspections') }}\n)\n\nselect\n urn,\n inspection_date,\n inspection_type,\n framework,\n overall_effectiveness,\n quality_of_education,\n behaviour_attitudes,\n personal_development,\n leadership_management,\n early_years_provision,\n sixth_form_provision,\n ungraded_outcome,\n ungraded_grade,\n rc_safeguarding_met,\n rc_inclusion,\n rc_curriculum_teaching,\n rc_achievement,\n rc_attendance_behaviour,\n rc_personal_development,\n rc_leadership_governance,\n rc_early_years,\n rc_sixth_form,\n rc_inspection_date,\n report_url\nfrom ranked\nwhere rn = 1", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ofsted_inspections", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ofsted_inspections"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_ofsted_inspections": {"database": "school_compare", "schema": "staging", "name": "stg_ofsted_inspections", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ofsted_inspections.sql", "original_file_path": "models/staging/stg_ofsted_inspections.sql", "unique_id": "model.school_compare.stg_ofsted_inspections", "fqn": ["school_compare", "staging", "stg_ofsted_inspections"], "alias": "stg_ofsted_inspections", "checksum": {"name": "sha256", "checksum": "69c1b9d3d8ede6f5e5b042c5b3f0fcc3b970d0ad7d43c682a369850cdae8e046"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.8438132, "relation_name": "\"school_compare\".\"staging\".\"stg_ofsted_inspections\"", "raw_code": "-- Staging model: Ofsted inspection records\n-- Handles both OEIF (pre-Nov 2025) and Report Card (post-Nov 2025) frameworks\n\nwith source as (\n select * from {{ source('raw', 'ofsted_inspections') }}\n),\n\nrenamed as (\n select\n cast(urn as integer) as urn,\n -- Inspection event date: the graded inspection when present, otherwise the\n -- ungraded (Section 8) inspection so schools with only an ungraded\n -- inspection are still retained.\n coalesce(\n to_date(nullif(trim(inspection_date), 'NULL'), 'DD/MM/YYYY'),\n to_date(nullif(trim(ungraded_inspection_date), 'NULL'), 'DD/MM/YYYY')\n ) as inspection_date,\n inspection_type,\n event_type_grouping as framework,\n\n -- OEIF grades (1-4 scale)\n {{ safe_numeric('overall_effectiveness') }}::integer as overall_effectiveness,\n {{ safe_numeric('quality_of_education') }}::integer as quality_of_education,\n {{ safe_numeric('behaviour_and_attitudes') }}::integer as behaviour_attitudes,\n {{ safe_numeric('personal_development') }}::integer as personal_development,\n {{ safe_numeric('effectiveness_of_leadership_and_management') }}::integer as leadership_management,\n {{ safe_numeric('early_years_provision') }}::integer as early_years_provision,\n {{ safe_numeric('sixth_form_provision') }}::integer as sixth_form_provision,\n\n -- Ungraded (Section 8) inspection outcome \u2014 free text, plus a grade\n -- parsed from it (1/2/null) used as a last-resort fallback for schools\n -- with no graded overall effectiveness.\n nullif(trim(ungraded_outcome), 'NULL') as ungraded_outcome,\n {{ parse_ungraded_outcome('ungraded_outcome') }}::integer as ungraded_grade,\n\n -- Report Card fields (post-Nov 2025 framework), 5-point scale:\n -- 1 Exceptional \u00b7 2 Strong standard \u00b7 3 Expected standard\n -- \u00b7 4 Needs attention \u00b7 5 Urgent improvement\n case lower(trim(nullif(rc_safeguarding_met, 'NULL')))\n when 'met' then true\n when 'not met' then false\n end as rc_safeguarding_met,\n {{ parse_report_card_grade('rc_inclusion') }}::integer as rc_inclusion,\n {{ parse_report_card_grade('rc_curriculum_teaching') }}::integer as rc_curriculum_teaching,\n {{ parse_report_card_grade('rc_achievement') }}::integer as rc_achievement,\n {{ parse_report_card_grade('rc_attendance_behaviour') }}::integer as rc_attendance_behaviour,\n {{ parse_report_card_grade('rc_personal_development') }}::integer as rc_personal_development,\n {{ parse_report_card_grade('rc_leadership_governance') }}::integer as rc_leadership_governance,\n {{ parse_report_card_grade('rc_early_years') }}::integer as rc_early_years,\n {{ parse_report_card_grade('rc_sixth_form') }}::integer as rc_sixth_form,\n\n -- Start date of the latest FULL inspection (the report-card\n -- inspection in the renewed framework). Guarded in the final select:\n -- only kept when the row actually carries report-card grades, because\n -- in legacy-format files this column is the legacy inspection date.\n to_date(nullif(trim(rc_inspection_date), 'NULL'), 'DD/MM/YYYY') as rc_inspection_date_raw,\n\n nullif(trim(report_url), 'NULL') as report_url\n from source\n where urn is not null\n and (\n nullif(trim(inspection_date), 'NULL') is not null\n or nullif(trim(ungraded_inspection_date), 'NULL') is not null\n )\n)\n\nselect\n *,\n case\n when rc_safeguarding_met is not null\n or rc_inclusion is not null\n or rc_curriculum_teaching is not null\n or rc_achievement is not null\n or rc_attendance_behaviour is not null\n or rc_personal_development is not null\n or rc_leadership_governance is not null\n then rc_inspection_date_raw\n end as rc_inspection_date\nfrom renamed\nwhere inspection_date is not null", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ofsted_inspections"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric", "macro.school_compare.parse_ungraded_outcome", "macro.school_compare.parse_report_card_grade"], "nodes": ["source.school_compare.raw.ofsted_inspections"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_ees_ks2": {"database": "school_compare", "schema": "staging", "name": "stg_ees_ks2", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_ks2.sql", "original_file_path": "models/staging/stg_ees_ks2.sql", "unique_id": "model.school_compare.stg_ees_ks2", "fqn": ["school_compare", "staging", "stg_ees_ks2"], "alias": "stg_ees_ks2", "checksum": {"name": "sha256", "checksum": "b5d1cc5ac353d77b1e067f26efee3ac4ebdefe5ea0e6b405595ac3b054ed82a6"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.8471801, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_ks2\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: KS2 attainment + information\n-- Single-pass pivot: one GROUP BY scan of 1.2M rows handles all subjects\n-- and all breakdowns (All pupils, Boys, Girls, Disadvantaged, Not disadvantaged)\n-- instead of 5 separate CTE scans + 5 LEFT JOINs.\n-- EES uses 'z' (not applicable) and 'c' (confidential) as suppression codes \u2014\n-- safe_numeric handles both by treating any non-numeric string as NULL.\n\nwith attainment as (\n select * from {{ source('raw', 'ees_ks2_attainment') }}\n where school_urn ~ '^[0-9]+$'\n and time_period ~ '^[0-9]+$'\n),\n\npivoted as (\n select\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n\n -- Reading, Writing & Maths combined (All pupils / Total)\n max(case when subject = 'Reading, writing and maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_pct,\n max(case when subject = 'Reading, writing and maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_pct,\n\n -- Reading (All pupils / Total)\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as reading_expected_pct,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as reading_high_pct,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('average_scaled_score') }} end) as reading_avg_score,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_score') }} end) as reading_progress,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as reading_progress_lower_ci,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as reading_progress_upper_ci,\n max(case when subject = 'Reading'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as reading_absence_pct,\n\n -- Writing (All pupils / Total)\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as writing_expected_pct,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as writing_high_pct,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_score') }} end) as writing_progress,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as writing_progress_lower_ci,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as writing_progress_upper_ci,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('working_towards_expected_standard_pupil_percent') }} end) as writing_working_towards_pct,\n max(case when subject = 'Writing'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as writing_absence_pct,\n\n -- Maths (All pupils / Total)\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as maths_expected_pct,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as maths_high_pct,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('average_scaled_score') }} end) as maths_avg_score,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_score') }} end) as maths_progress,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as maths_progress_lower_ci,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as maths_progress_upper_ci,\n max(case when subject = 'Maths'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as maths_absence_pct,\n\n -- GPS (All pupils / Total)\n max(case when (subject ilike '%grammar%' or subject = 'GPS')\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as gps_expected_pct,\n max(case when (subject ilike '%grammar%' or subject = 'GPS')\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as gps_high_pct,\n max(case when (subject ilike '%grammar%' or subject = 'GPS')\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('average_scaled_score') }} end) as gps_avg_score,\n max(case when (subject ilike '%grammar%' or subject = 'GPS')\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as gps_absence_pct,\n\n -- Science (All pupils / Total)\n max(case when subject = 'Science'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as science_expected_pct,\n max(case when subject = 'Science'\n and breakdown_topic = 'All pupils' and breakdown = 'Total'\n then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as science_absence_pct,\n\n -- Gender breakdown for Reading, Writing & Maths\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Boys'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_boys_pct,\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Boys'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_boys_pct,\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Girls'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_girls_pct,\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Girls'\n then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_girls_pct,\n\n -- Disadvantaged breakdown for Reading, Writing & Maths\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Disadvantaged'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_disadvantaged_pct,\n max(case when subject = 'Reading, writing and maths' and breakdown = 'Not disadvantaged'\n then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_non_disadvantaged_pct\n\n from attainment\n group by school_urn, time_period\n),\n\ninfo as (\n select\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n {{ safe_numeric('totpups') }}::integer as total_pupils,\n {{ safe_numeric('telig') }}::integer as eligible_pupils,\n {{ safe_numeric('ptfsm6cla1a') }} as disadvantaged_pct,\n {{ safe_numeric('ptealgrp2') }} as eal_pct,\n {{ safe_numeric('psenelk') }} as sen_support_pct,\n {{ safe_numeric('psenele') }} as sen_ehcp_pct,\n {{ safe_numeric('ptmobn') }} as stability_pct\n from {{ source('raw', 'ees_ks2_info') }}\n where school_urn is not null\n)\n\nselect\n p.urn,\n p.year,\n i.total_pupils,\n i.eligible_pupils,\n\n p.rwm_expected_pct,\n p.rwm_high_pct,\n p.reading_expected_pct,\n p.reading_high_pct,\n p.reading_avg_score,\n p.reading_progress,\n p.reading_progress_lower_ci,\n p.reading_progress_upper_ci,\n p.writing_expected_pct,\n p.writing_high_pct,\n p.writing_progress,\n p.writing_progress_lower_ci,\n p.writing_progress_upper_ci,\n p.writing_working_towards_pct,\n p.maths_expected_pct,\n p.maths_high_pct,\n p.maths_avg_score,\n p.maths_progress,\n p.maths_progress_lower_ci,\n p.maths_progress_upper_ci,\n p.gps_expected_pct,\n p.gps_high_pct,\n p.gps_avg_score,\n p.science_expected_pct,\n\n p.reading_absence_pct,\n p.writing_absence_pct,\n p.maths_absence_pct,\n p.gps_absence_pct,\n p.science_absence_pct,\n\n p.rwm_expected_boys_pct,\n p.rwm_high_boys_pct,\n p.rwm_expected_girls_pct,\n p.rwm_high_girls_pct,\n\n p.rwm_expected_disadvantaged_pct,\n p.rwm_expected_non_disadvantaged_pct,\n p.rwm_expected_disadvantaged_pct - p.rwm_expected_non_disadvantaged_pct as disadvantaged_gap,\n\n i.disadvantaged_pct,\n i.eal_pct,\n i.sen_support_pct,\n i.sen_ehcp_pct,\n i.stability_pct\n\nfrom pivoted p\nleft join info i on p.urn = i.urn and p.year = i.year", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_ks2_attainment"], ["raw", "ees_ks2_info"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_ks2_attainment", "source.school_compare.raw.ees_ks2_info"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_legacy_ks2": {"database": "school_compare", "schema": "staging", "name": "stg_legacy_ks2", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_legacy_ks2.sql", "original_file_path": "models/staging/stg_legacy_ks2.sql", "unique_id": "model.school_compare.stg_legacy_ks2", "fqn": ["school_compare", "staging", "stg_legacy_ks2"], "alias": "stg_legacy_ks2", "checksum": {"name": "sha256", "checksum": "d57ce51603d2a1d2945690ba863dca576a96b07b24187f0d603eba40602a2f3a"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.851999, "relation_name": "\"school_compare\".\"staging\".\"stg_legacy_ks2\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: Legacy KS2 data from pre-COVID DfE performance tables\n-- The tap already maps old column names to match stg_ees_ks2 output;\n-- this model just applies safe_numeric casts.\n\nselect\n cast(trim(urn) as integer) as urn,\n cast(trim(year) as integer) as year,\n\n {{ safe_numeric('total_pupils') }}::integer as total_pupils,\n {{ safe_numeric('eligible_pupils') }}::integer as eligible_pupils,\n\n {{ safe_numeric('rwm_expected_pct') }} as rwm_expected_pct,\n {{ safe_numeric('rwm_high_pct') }} as rwm_high_pct,\n {{ safe_numeric('reading_expected_pct') }} as reading_expected_pct,\n {{ safe_numeric('reading_high_pct') }} as reading_high_pct,\n {{ safe_numeric('reading_avg_score') }} as reading_avg_score,\n {{ safe_numeric('reading_progress') }} as reading_progress,\n -- Progress CIs / working-towards: not published in the legacy CSVs.\n -- Typed placeholders keep positional alignment with stg_ees_ks2 in\n -- int_ks2_with_lineage's UNION ALL.\n null::numeric as reading_progress_lower_ci,\n null::numeric as reading_progress_upper_ci,\n {{ safe_numeric('writing_expected_pct') }} as writing_expected_pct,\n {{ safe_numeric('writing_high_pct') }} as writing_high_pct,\n {{ safe_numeric('writing_progress') }} as writing_progress,\n null::numeric as writing_progress_lower_ci,\n null::numeric as writing_progress_upper_ci,\n null::numeric as writing_working_towards_pct,\n {{ safe_numeric('maths_expected_pct') }} as maths_expected_pct,\n {{ safe_numeric('maths_high_pct') }} as maths_high_pct,\n {{ safe_numeric('maths_avg_score') }} as maths_avg_score,\n {{ safe_numeric('maths_progress') }} as maths_progress,\n null::numeric as maths_progress_lower_ci,\n null::numeric as maths_progress_upper_ci,\n {{ safe_numeric('gps_expected_pct') }} as gps_expected_pct,\n {{ safe_numeric('gps_high_pct') }} as gps_high_pct,\n {{ safe_numeric('gps_avg_score') }} as gps_avg_score,\n null::numeric as science_expected_pct,\n\n {{ safe_numeric('reading_absence_pct') }} as reading_absence_pct,\n null::numeric as writing_absence_pct,\n {{ safe_numeric('maths_absence_pct') }} as maths_absence_pct,\n {{ safe_numeric('gps_absence_pct') }} as gps_absence_pct,\n null::numeric as science_absence_pct,\n\n {{ safe_numeric('rwm_expected_boys_pct') }} as rwm_expected_boys_pct,\n {{ safe_numeric('rwm_high_boys_pct') }} as rwm_high_boys_pct,\n {{ safe_numeric('rwm_expected_girls_pct') }} as rwm_expected_girls_pct,\n {{ safe_numeric('rwm_high_girls_pct') }} as rwm_high_girls_pct,\n\n {{ safe_numeric('rwm_expected_disadvantaged_pct') }} as rwm_expected_disadvantaged_pct,\n {{ safe_numeric('rwm_expected_non_disadvantaged_pct') }} as rwm_expected_non_disadvantaged_pct,\n {{ safe_numeric('rwm_expected_disadvantaged_pct') }}\n - {{ safe_numeric('rwm_expected_non_disadvantaged_pct') }} as disadvantaged_gap,\n\n {{ safe_numeric('disadvantaged_pct') }} as disadvantaged_pct,\n {{ safe_numeric('eal_pct') }} as eal_pct,\n {{ safe_numeric('sen_support_pct') }} as sen_support_pct,\n {{ safe_numeric('sen_ehcp_pct') }} as sen_ehcp_pct,\n {{ safe_numeric('stability_pct') }} as stability_pct\n\nfrom {{ source('raw', 'legacy_ks2') }}\nwhere urn is not null\n and urn ~ '^[0-9]+$'", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "legacy_ks2"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.legacy_ks2"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_ees_ks4": {"database": "school_compare", "schema": "staging", "name": "stg_ees_ks4", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_ks4.sql", "original_file_path": "models/staging/stg_ees_ks4.sql", "unique_id": "model.school_compare.stg_ees_ks4", "fqn": ["school_compare", "staging", "stg_ees_ks4"], "alias": "stg_ees_ks4", "checksum": {"name": "sha256", "checksum": "3a3541de61b4d6e6b1bd82c325480e4474a143110f475b50bb3461cb60452091"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.855532, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_ks4\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: KS4 attainment data from EES\n-- KS4 performance data is long-format with breakdown dimensions (breakdown_topic,\n-- breakdown, sex). Unlike KS2 which has a subject dimension, KS4 metrics are\n-- already in separate columns \u2014 we just filter to the all-pupils total row.\n-- EES uses 'z' (not applicable) and 'c' (confidential) as suppression codes \u2014\n-- safe_numeric handles both by treating any non-numeric string as NULL.\n-- NOTE: older EES releases (pre-2023/24) use breakdown_topic = 'All pupils';\n-- the 2023/24 release switched to breakdown_topic = 'Total'. Both are included.\n\nwith performance as (\n select * from {{ source('raw', 'ees_ks4_performance') }}\n where school_urn ~ '^[0-9]+$'\n and time_period ~ '^[0-9]+$'\n),\n\n-- Filter to all-pupils totals (one row per school per year)\nall_pupils as (\n select\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n {{ safe_numeric('pupil_count') }}::integer as total_pupils,\n\n -- Attainment 8\n {{ safe_numeric('attainment8_average') }} as attainment_8_score,\n\n -- Progress 8\n {{ safe_numeric('progress8_average') }} as progress_8_score,\n {{ safe_numeric('progress8_lower_95_ci') }} as progress_8_lower_ci,\n {{ safe_numeric('progress8_upper_95_ci') }} as progress_8_upper_ci,\n {{ safe_numeric('progress8eng_average') }} as progress_8_english,\n {{ safe_numeric('progress8mat_average') }} as progress_8_maths,\n {{ safe_numeric('progress8ebacc_average') }} as progress_8_ebacc,\n {{ safe_numeric('progress8open_average') }} as progress_8_open,\n\n -- English & Maths pass rates\n {{ safe_numeric('engmath_95_percent') }} as english_maths_strong_pass_pct,\n {{ safe_numeric('engmath_94_percent') }} as english_maths_standard_pass_pct,\n\n -- EBacc\n {{ safe_numeric('ebacc_entering_percent') }} as ebacc_entry_pct,\n {{ safe_numeric('ebacc_95_percent') }} as ebacc_strong_pass_pct,\n {{ safe_numeric('ebacc_94_percent') }} as ebacc_standard_pass_pct,\n {{ safe_numeric('ebacc_aps_average') }} as ebacc_avg_score,\n\n -- GCSE grade 9-1\n {{ safe_numeric('gcse_91_percent') }} as gcse_grade_91_pct\n\n from performance\n where breakdown_topic in ('Total', 'All pupils')\n and breakdown = 'Total'\n and sex = 'Total'\n),\n\n-- KS4 info table for context/demographics\ninfo as (\n select\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n {{ safe_numeric('endks4_pupil_count') }}::integer as eligible_pupils,\n {{ safe_numeric('ks2_scaledscore_average') }} as prior_attainment_avg,\n {{ safe_numeric('sen_pupil_percent') }} as sen_pct,\n {{ safe_numeric('sen_with_ehcp_pupil_percent') }} as sen_ehcp_pct,\n {{ safe_numeric('sen_no_ehcp_pupil_percent') }} as sen_support_pct,\n -- EES suppression sentinels (z/c/x/q/u) and blanks must not reach the\n -- mart as banding labels\n case\n when lower(trim(progress8_banding)) in ('', 'z', 'c', 'x', 'q', 'u', 'null')\n then null\n else trim(progress8_banding)\n end as progress_8_banding,\n {{ safe_numeric('attainment8_diffn') }} as attainment_8_disadvantage_gap,\n {{ safe_numeric('progress8_diffn') }} as progress_8_disadvantage_gap\n from {{ source('raw', 'ees_ks4_info') }}\n where school_urn is not null\n)\n\nselect\n p.urn,\n p.year,\n p.total_pupils,\n i.eligible_pupils,\n i.prior_attainment_avg,\n\n -- Attainment 8\n p.attainment_8_score,\n\n -- Progress 8\n p.progress_8_score,\n p.progress_8_lower_ci,\n p.progress_8_upper_ci,\n p.progress_8_english,\n p.progress_8_maths,\n p.progress_8_ebacc,\n p.progress_8_open,\n\n -- English & Maths\n p.english_maths_strong_pass_pct,\n p.english_maths_standard_pass_pct,\n\n -- EBacc\n p.ebacc_entry_pct,\n p.ebacc_strong_pass_pct,\n p.ebacc_standard_pass_pct,\n p.ebacc_avg_score,\n\n -- GCSE\n p.gcse_grade_91_pct,\n\n -- Context\n i.sen_pct,\n i.sen_ehcp_pct,\n i.sen_support_pct,\n i.progress_8_banding,\n i.attainment_8_disadvantage_gap,\n i.progress_8_disadvantage_gap\n\nfrom all_pupils p\nleft join info i on p.urn = i.urn and p.year = i.year", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_ks4_performance"], ["raw", "ees_ks4_info"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_ks4_performance", "source.school_compare.raw.ees_ks4_info"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_legacy_ks4": {"database": "school_compare", "schema": "staging", "name": "stg_legacy_ks4", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_legacy_ks4.sql", "original_file_path": "models/staging/stg_legacy_ks4.sql", "unique_id": "model.school_compare.stg_legacy_ks4", "fqn": ["school_compare", "staging", "stg_legacy_ks4"], "alias": "stg_legacy_ks4", "checksum": {"name": "sha256", "checksum": "794d61332074548bb35a4f49835f8046fb1422695f926d166828f5e423e149db"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.858708, "relation_name": "\"school_compare\".\"staging\".\"stg_legacy_ks4\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: Legacy KS4 data from pre-EES DfE performance tables\n-- Covers 2015/16 \u2013 2018/19; EES provides 2023/24 onwards.\n-- The tap already maps old column names and strips % suffixes;\n-- this model just applies safe_numeric casts and adds NULL placeholders\n-- for columns not available in the legacy format.\n\nselect\n cast(trim(urn) as integer) as urn,\n cast(trim(year) as integer) as year,\n\n {{ safe_numeric('total_pupils') }}::integer as total_pupils,\n {{ safe_numeric('total_pupils') }}::integer as eligible_pupils,\n null::numeric as prior_attainment_avg,\n\n -- Attainment 8\n {{ safe_numeric('attainment_8_score') }} as attainment_8_score,\n\n -- Progress 8\n {{ safe_numeric('progress_8_score') }} as progress_8_score,\n {{ safe_numeric('progress_8_lower_ci') }} as progress_8_lower_ci,\n {{ safe_numeric('progress_8_upper_ci') }} as progress_8_upper_ci,\n {{ safe_numeric('progress_8_english') }} as progress_8_english,\n {{ safe_numeric('progress_8_maths') }} as progress_8_maths,\n {{ safe_numeric('progress_8_ebacc') }} as progress_8_ebacc,\n {{ safe_numeric('progress_8_open') }} as progress_8_open,\n\n -- English & Maths pass rates\n {{ safe_numeric('english_maths_strong_pass_pct') }} as english_maths_strong_pass_pct,\n {{ safe_numeric('english_maths_standard_pass_pct') }} as english_maths_standard_pass_pct,\n\n -- EBacc\n {{ safe_numeric('ebacc_entry_pct') }} as ebacc_entry_pct,\n {{ safe_numeric('ebacc_strong_pass_pct') }} as ebacc_strong_pass_pct,\n {{ safe_numeric('ebacc_standard_pass_pct') }} as ebacc_standard_pass_pct,\n null::numeric as ebacc_avg_score,\n\n -- GCSE grade 9-1 (not published in legacy format)\n null::numeric as gcse_grade_91_pct,\n\n -- SEN\n null::numeric as sen_pct,\n {{ safe_numeric('sen_ehcp_pct') }} as sen_ehcp_pct,\n {{ safe_numeric('sen_support_pct') }} as sen_support_pct,\n\n -- Progress 8 banding & disadvantage gaps (not published in legacy format)\n null::text as progress_8_banding,\n null::numeric as attainment_8_disadvantage_gap,\n null::numeric as progress_8_disadvantage_gap\n\nfrom {{ source('raw', 'legacy_ks4') }}\nwhere urn is not null\n and urn ~ '^[0-9]+$'", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "legacy_ks4"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.legacy_ks4"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_census_benchmarks": {"database": "school_compare", "schema": "marts", "name": "fact_census_benchmarks", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_census_benchmarks.sql", "original_file_path": "models/marts/fact_census_benchmarks.sql", "unique_id": "model.school_compare.fact_census_benchmarks", "fqn": ["school_compare", "marts", "fact_census_benchmarks"], "alias": "fact_census_benchmarks", "checksum": {"name": "sha256", "checksum": "a81b31b5e1a0834d9c62fe6213a42c01a5d9e5f299235bbc49a4a7b56e20fe19"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "State-school context benchmarks from the pupil census \u2014 one row per phase (primary/secondary), latest census year. fsm_pct/eal_pct are pupil-weighted means; consumers label them \"state-school average (computed from our dataset)\", never \"England average\".\n", "columns": {"phase": {"name": "phase", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.958771, "relation_name": "\"school_compare\".\"marts\".\"fact_census_benchmarks\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Mart: state-school context benchmarks from the pupil census \u2014 one row per\n-- phase, latest census year. Computed at import time (never per request).\n-- fsm_pct / eal_pct are pupil-weighted means, i.e. \"what % of pupils\", not\n-- \"the median school\" \u2014 this matches how DfE quotes national FSM/EAL rates.\n-- Consumers must label these \"state-school average (computed from our\n-- dataset)\" (spec \u00a78.6), never \"England average\".\n\nwith latest as (\n select max(year) as year from {{ ref('fact_pupil_characteristics') }}\n),\n\nclassified as (\n select\n case\n when p.phase_type_grouping ilike '%primary%' then 'primary'\n when p.phase_type_grouping ilike '%secondary%' then 'secondary'\n end as phase,\n p.total_pupils,\n p.fsm_pct,\n p.eal_pct,\n l.year\n from {{ ref('fact_pupil_characteristics') }} p\n join latest l on p.year = l.year\n where p.total_pupils is not null and p.total_pupils > 0\n)\n\nselect\n phase,\n max(year) as year,\n round((sum(fsm_pct * total_pupils) filter (where fsm_pct is not null)\n / nullif(sum(total_pupils) filter (where fsm_pct is not null), 0))::numeric, 1) as fsm_pct,\n round((sum(eal_pct * total_pupils) filter (where eal_pct is not null)\n / nullif(sum(total_pupils) filter (where eal_pct is not null), 0))::numeric, 1) as eal_pct,\n round(percentile_cont(0.5) within group (order by total_pupils))::integer as median_pupils\nfrom classified\nwhere phase is not null\ngroup by phase", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_pupil_characteristics", "package": null, "version": null}, {"name": "fact_pupil_characteristics", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.fact_pupil_characteristics"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["phase"], "time_spine": null}, "model.school_compare.fact_pupil_characteristics": {"database": "school_compare", "schema": "marts", "name": "fact_pupil_characteristics", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_pupil_characteristics.sql", "original_file_path": "models/marts/fact_pupil_characteristics.sql", "unique_id": "model.school_compare.fact_pupil_characteristics", "fqn": ["school_compare", "marts", "fact_pupil_characteristics"], "alias": "fact_pupil_characteristics", "checksum": {"name": "sha256", "checksum": "cffde5cbc7b2e42d0df227cd2f32410b87f817b738715017c1fc46b6a3f7122c"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Pupil demographics \u2014 one row per URN per year", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.9585762, "relation_name": "\"school_compare\".\"marts\".\"fact_pupil_characteristics\"", "raw_code": "-- Mart: Pupil characteristics \u2014 one row per URN per year\n\nselect\n urn,\n year,\n phase_type_grouping,\n total_pupils,\n female_pupils,\n male_pupils,\n full_time_pupils,\n part_time_pupils,\n total_boarders,\n fsm_eligible_n,\n fsm_pct,\n eal_pct,\n young_carer_pct,\n ethnicity_white_british_pct,\n ethnicity_white_other_pct,\n ethnicity_gypsy_roma_pct,\n ethnicity_mixed_wbc_pct,\n ethnicity_mixed_wba_pct,\n ethnicity_mixed_wa_pct,\n ethnicity_mixed_other_pct,\n ethnicity_asian_indian_pct,\n ethnicity_asian_pakistani_pct,\n ethnicity_asian_bangladeshi_pct,\n ethnicity_asian_other_pct,\n ethnicity_black_caribbean_pct,\n ethnicity_black_african_pct,\n ethnicity_black_other_pct,\n ethnicity_chinese_pct,\n ethnicity_other_pct,\n ethnicity_unclassified_pct\nfrom {{ ref('int_pupil_chars_merged') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "int_pupil_chars_merged", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.int_pupil_chars_merged"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.int_pupil_chars_merged": {"database": "school_compare", "schema": "intermediate", "name": "int_pupil_chars_merged", "resource_type": "model", "package_name": "school_compare", "path": "intermediate/int_pupil_chars_merged.sql", "original_file_path": "models/intermediate/int_pupil_chars_merged.sql", "unique_id": "model.school_compare.int_pupil_chars_merged", "fqn": ["school_compare", "intermediate", "int_pupil_chars_merged"], "alias": "int_pupil_chars_merged", "checksum": {"name": "sha256", "checksum": "e14f55eb1d34878f1b2ba334ab719ab6221efb62c147df1d7c0866ff28d9a10b"}, "config": {"enabled": true, "alias": null, "schema": "intermediate", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "intermediate"}, "created_at": 1784225256.862957, "relation_name": "\"school_compare\".\"intermediate\".\"int_pupil_chars_merged\"", "raw_code": "-- Intermediate model: Merged pupil characteristics from census data\n\nselect\n urn,\n year,\n phase_type_grouping,\n total_pupils,\n female_pupils,\n male_pupils,\n full_time_pupils,\n part_time_pupils,\n total_boarders,\n fsm_eligible_n,\n fsm_pct,\n eal_pct,\n young_carer_pct,\n ethnicity_white_british_pct,\n ethnicity_white_other_pct,\n ethnicity_gypsy_roma_pct,\n ethnicity_mixed_wbc_pct,\n ethnicity_mixed_wba_pct,\n ethnicity_mixed_wa_pct,\n ethnicity_mixed_other_pct,\n ethnicity_asian_indian_pct,\n ethnicity_asian_pakistani_pct,\n ethnicity_asian_bangladeshi_pct,\n ethnicity_asian_other_pct,\n ethnicity_black_caribbean_pct,\n ethnicity_black_african_pct,\n ethnicity_black_other_pct,\n ethnicity_chinese_pct,\n ethnicity_other_pct,\n ethnicity_unclassified_pct\nfrom {{ ref('stg_ees_census') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_census", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_census"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_ees_census": {"database": "school_compare", "schema": "staging", "name": "stg_ees_census", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_census.sql", "original_file_path": "models/staging/stg_ees_census.sql", "unique_id": "model.school_compare.stg_ees_census", "fqn": ["school_compare", "staging", "stg_ees_census"], "alias": "stg_ees_census", "checksum": {"name": "sha256", "checksum": "ff3c516a20ad25b525d4be015a9fcfe0a5329899c2ae7fc5aad4aa6b123fcb22"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.863596, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_census\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: School Pupils and Characteristics (census)\n-- One row per school per year. CSV has 269 columns; we extract the\n-- aggregate demographic summaries only (not per-age/year-group breakdowns).\n-- Column renames happen in the tap before Singer persists to raw.ees_census.\n\nwith source as (\n select * from {{ source('raw', 'ees_census') }}\n where school_urn ~ '^[0-9]+$'\n and time_period ~ '^[0-9]+$'\n)\n\nselect\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n school_name,\n phase_type_grouping,\n\n -- Pupil counts\n {{ safe_numeric('total_pupils') }}::integer as total_pupils,\n {{ safe_numeric('female_pupils') }}::integer as female_pupils,\n {{ safe_numeric('male_pupils') }}::integer as male_pupils,\n {{ safe_numeric('full_time_pupils') }}::integer as full_time_pupils,\n {{ safe_numeric('part_time_pupils') }}::integer as part_time_pupils,\n {{ safe_numeric('total_boarders') }}::integer as total_boarders,\n\n -- FSM\n {{ safe_numeric('fsm_eligible_n') }}::integer as fsm_eligible_n,\n {{ safe_numeric('fsm_pct') }} as fsm_pct,\n\n -- EAL & young carers\n {{ safe_numeric('eal_pct') }} as eal_pct,\n {{ safe_numeric('young_carer_pct') }} as young_carer_pct,\n\n -- Ethnicity\n {{ safe_numeric('ethnicity_white_british_pct') }} as ethnicity_white_british_pct,\n {{ safe_numeric('ethnicity_white_other_pct') }} as ethnicity_white_other_pct,\n {{ safe_numeric('ethnicity_gypsy_roma_pct') }} as ethnicity_gypsy_roma_pct,\n {{ safe_numeric('ethnicity_mixed_wbc_pct') }} as ethnicity_mixed_wbc_pct,\n {{ safe_numeric('ethnicity_mixed_wba_pct') }} as ethnicity_mixed_wba_pct,\n {{ safe_numeric('ethnicity_mixed_wa_pct') }} as ethnicity_mixed_wa_pct,\n {{ safe_numeric('ethnicity_mixed_other_pct') }} as ethnicity_mixed_other_pct,\n {{ safe_numeric('ethnicity_asian_indian_pct') }} as ethnicity_asian_indian_pct,\n {{ safe_numeric('ethnicity_asian_pakistani_pct') }} as ethnicity_asian_pakistani_pct,\n {{ safe_numeric('ethnicity_asian_bangladeshi_pct') }} as ethnicity_asian_bangladeshi_pct,\n {{ safe_numeric('ethnicity_asian_other_pct') }} as ethnicity_asian_other_pct,\n {{ safe_numeric('ethnicity_black_caribbean_pct') }} as ethnicity_black_caribbean_pct,\n {{ safe_numeric('ethnicity_black_african_pct') }} as ethnicity_black_african_pct,\n {{ safe_numeric('ethnicity_black_other_pct') }} as ethnicity_black_other_pct,\n {{ safe_numeric('ethnicity_chinese_pct') }} as ethnicity_chinese_pct,\n {{ safe_numeric('ethnicity_other_pct') }} as ethnicity_other_pct,\n {{ safe_numeric('ethnicity_unclassified_pct') }} as ethnicity_unclassified_pct\n\nfrom source", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_census"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_census"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_admissions": {"database": "school_compare", "schema": "marts", "name": "fact_admissions", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_admissions.sql", "original_file_path": "models/marts/fact_admissions.sql", "unique_id": "model.school_compare.fact_admissions", "fqn": ["school_compare", "marts", "fact_admissions"], "alias": "fact_admissions", "checksum": {"name": "sha256", "checksum": "b3c18e42c3c8961ca8856cf67f421a7794ac896c61dce1febe3cadade107e3c6"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "School admissions \u2014 one row per URN per year", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "second_preference_offers": {"name": "second_preference_offers", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "third_preference_offers": {"name": "third_preference_offers", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "cross_la_applications": {"name": "cross_la_applications", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "cross_la_offers": {"name": "cross_la_offers", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "total_offers": {"name": "total_offers", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.959255, "relation_name": "\"school_compare\".\"marts\".\"fact_admissions\"", "raw_code": "-- Mart: School admissions \u2014 one row per URN per year\n\nselect\n urn,\n year,\n school_phase,\n places_offered,\n total_offers,\n total_applications,\n first_preference_applications,\n first_preference_offers,\n second_preference_offers,\n third_preference_offers,\n cross_la_applications,\n cross_la_offers,\n first_preference_offer_pct,\n oversubscription_ratio,\n oversubscribed,\n admissions_policy\nfrom {{ ref('stg_ees_admissions') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_admissions", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_admissions"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_ees_admissions": {"database": "school_compare", "schema": "staging", "name": "stg_ees_admissions", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_admissions.sql", "original_file_path": "models/staging/stg_ees_admissions.sql", "unique_id": "model.school_compare.stg_ees_admissions", "fqn": ["school_compare", "staging", "stg_ees_admissions"], "alias": "stg_ees_admissions", "checksum": {"name": "sha256", "checksum": "b4e9317532796ab3413861305cf091cd216e1e4f07efec9d08c17f83cf23afbc"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.86735, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_admissions\"", "raw_code": "-- Staging model: Primary and secondary school admissions from EES\n-- Wide format, one row per school per year. No geographic_level column.\n-- Note: FSM_eligible_percent is stored with mixed case by target-postgres and\n-- must be double-quoted in SQL to avoid case-folding to fsm_eligible_percent.\n\nwith source as (\n select * from {{ source('raw', 'ees_admissions') }}\n -- Exclude rows where school_urn is null, empty, or non-numeric (e.g. \"n/a\" LA aggregates)\n where school_urn ~ '^[0-9]+$'\n and time_period ~ '^[0-9]+$'\n),\n\nrenamed as (\n select\n cast(trim(school_urn) as integer) as urn,\n cast(trim(time_period) as integer) as year,\n school_phase,\n entry_year,\n\n -- Places and offers\n -- places_offered: number of places the school actually offered in this\n -- year's admissions round. NOT the Published Admission Number (PAN),\n -- which is the school's published capacity \u2014 EES does not expose PAN\n -- at school level, so we use the count of offers as the best proxy.\n {{ safe_numeric('total_number_places_offered') }}::integer as places_offered,\n {{ safe_numeric('number_preferred_offers') }}::integer as total_offers,\n {{ safe_numeric('number_1st_preference_offers') }}::integer as first_preference_offers,\n {{ safe_numeric('number_2nd_preference_offers') }}::integer as second_preference_offers,\n {{ safe_numeric('number_3rd_preference_offers') }}::integer as third_preference_offers,\n\n -- Applications\n {{ safe_numeric('times_put_as_any_preferred_school') }}::integer as total_applications,\n {{ safe_numeric('times_put_as_1st_preference') }}::integer as first_preference_applications,\n\n -- Cross-borough demand: applications naming this school from families\n -- living in another local authority, and offers made to them.\n {{ safe_numeric('\"all_applications_from_another_LA\"') }}::integer as cross_la_applications,\n {{ safe_numeric('\"offers_to_applicants_from_another_LA\"') }}::integer as cross_la_offers,\n\n -- Proportions\n -- first_preference_offer_pct: of families who listed this school FIRST,\n -- the percentage that received an offer. 0\u2013100 scale.\n -- The raw EES column `proportion_1stprefs_v_totaloffers` stores a\n -- different, misleading figure (first-preference applications divided\n -- by total offers, i.e. an oversubscription ratio) \u2014 do not use it.\n case\n when {{ safe_numeric('times_put_as_1st_preference') }} > 0\n then 100.0\n * {{ safe_numeric('number_1st_preference_offers') }}\n / {{ safe_numeric('times_put_as_1st_preference') }}\n end as first_preference_offer_pct,\n\n -- Oversubscription ratio: 1st-preference applications per place offered.\n -- >1 means the school is oversubscribed on first preferences.\n case\n when {{ safe_numeric('total_number_places_offered') }} > 0\n then {{ safe_numeric('times_put_as_1st_preference') }}::numeric\n / {{ safe_numeric('total_number_places_offered') }}\n end as oversubscription_ratio,\n\n -- Derived: oversubscribed if 1st-preference applications > places offered\n -- Use already-cast columns to avoid repeating the regex expression\n (\n {{ safe_numeric('times_put_as_1st_preference') }}\n > {{ safe_numeric('total_number_places_offered') }}\n ) as oversubscribed,\n\n -- Context\n admissions_policy,\n {{ safe_numeric('\"FSM_eligible_percent\"') }} as fsm_eligible_pct\n\n from source\n)\n\nselect * from renamed", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_admissions"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_admissions"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_ks2_national_averages": {"database": "school_compare", "schema": "marts", "name": "fact_ks2_national_averages", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_ks2_national_averages.sql", "original_file_path": "models/marts/fact_ks2_national_averages.sql", "unique_id": "model.school_compare.fact_ks2_national_averages", "fqn": ["school_compare", "marts", "fact_ks2_national_averages"], "alias": "fact_ks2_national_averages", "checksum": {"name": "sha256", "checksum": "7e4a689b3ac405ed7311ad43cff791455f4b74e6e12dab8f75bb747e30070c20"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "Official DfE KS2 national headline averages \u2014 one row per academic year", "columns": {"year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.9593852, "relation_name": "\"school_compare\".\"marts\".\"fact_ks2_national_averages\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Mart: Official DfE KS2 national headline averages \u2014 one row per academic year.\n-- These are the published England-wide figures, not computed means from our school dataset.\n-- Used by the /api/national-averages endpoint to provide accurate per-year reference lines\n-- on the school history chart and for hero stat comparisons.\n\nselect\n year,\n rwm_expected_pct,\n rwm_high_pct,\n reading_expected_pct,\n reading_high_pct,\n reading_avg_score,\n writing_expected_pct,\n writing_gd_pct,\n maths_expected_pct,\n maths_high_pct,\n maths_avg_score,\n gps_expected_pct,\n gps_high_pct,\n gps_avg_score,\n science_expected_pct\nfrom {{ ref('stg_ees_ks2_national') }}\norder by year", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_ees_ks2_national", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_ees_ks2_national"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["year"], "time_spine": null}, "model.school_compare.stg_ees_ks2_national": {"database": "school_compare", "schema": "staging", "name": "stg_ees_ks2_national", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_ees_ks2_national.sql", "original_file_path": "models/staging/stg_ees_ks2_national.sql", "unique_id": "model.school_compare.stg_ees_ks2_national", "fqn": ["school_compare", "staging", "stg_ees_ks2_national"], "alias": "stg_ees_ks2_national", "checksum": {"name": "sha256", "checksum": "7306cd5981b55f5a6505f89122cee9a4ca4c1d384431536b5240edf5f8c8e898"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "table", "schema": "staging"}, "created_at": 1784225256.870332, "relation_name": "\"school_compare\".\"staging\".\"stg_ees_ks2_national\"", "raw_code": "{{ config(materialized='table') }}\n\n-- Staging model: DfE KS2 national headline averages\n-- Source: EES data catalogue CSV (one row per academic year, England national total)\n-- COVID years 2019/20 and 2020/21 are naturally absent \u2014 DfE did not publish figures\n-- because national assessments were cancelled. Those years produce no rows here.\n-- 'x' (not applicable) and suppressed values are coerced to NULL by safe_numeric.\n\nselect\n cast(trim(time_period) as integer) as year,\n\n {{ safe_numeric('rwm_expected_pct') }} as rwm_expected_pct,\n {{ safe_numeric('rwm_high_pct') }} as rwm_high_pct,\n\n {{ safe_numeric('reading_expected_pct') }} as reading_expected_pct,\n {{ safe_numeric('reading_high_pct') }} as reading_high_pct,\n {{ safe_numeric('reading_avg_score') }} as reading_avg_score,\n\n {{ safe_numeric('writing_expected_pct') }} as writing_expected_pct,\n {{ safe_numeric('writing_gd_pct') }} as writing_gd_pct,\n\n {{ safe_numeric('maths_expected_pct') }} as maths_expected_pct,\n {{ safe_numeric('maths_high_pct') }} as maths_high_pct,\n {{ safe_numeric('maths_avg_score') }} as maths_avg_score,\n\n {{ safe_numeric('gps_expected_pct') }} as gps_expected_pct,\n {{ safe_numeric('gps_high_pct') }} as gps_high_pct,\n {{ safe_numeric('gps_avg_score') }} as gps_avg_score,\n\n {{ safe_numeric('science_expected_pct') }} as science_expected_pct\n\nfrom {{ source('raw', 'ees_ks2_national') }}\nwhere time_period ~ '^[0-9]+$'\n -- 2015/16 was the first year of the current expected-standard tests, so it's\n -- the correct floor (not 2016/17 -- that excluded a real, comparable national\n -- row). GPS/science/scaled-score columns are already mapped correctly end to\n -- end (tap.py's _KS2_NATIONAL_COL_MAP + this model select them fine); the\n -- prod NULLs for those fields are stale raw.ees_ks2_national data from before\n -- the map covered them, not a mapping bug -- no map change accompanies this fix.\n and cast(trim(time_period) as integer) >= 201516", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "ees_ks2_national"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.school_compare.safe_numeric"], "nodes": ["source.school_compare.raw.ees_ks2_national"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_finance": {"database": "school_compare", "schema": "marts", "name": "fact_finance", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_finance.sql", "original_file_path": "models/marts/fact_finance.sql", "unique_id": "model.school_compare.fact_finance", "fqn": ["school_compare", "marts", "fact_finance"], "alias": "fact_finance", "checksum": {"name": "sha256", "checksum": "b9eb2ac96af2d48206fe73fbc8d956619c8505fea7e0f95c529484d45fe1e60a"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "School financial data \u2014 one row per URN per year", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}, "year": {"name": "year", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.95952, "relation_name": "\"school_compare\".\"marts\".\"fact_finance\"", "raw_code": "-- Mart: School financial data \u2014 one row per URN per year\n\nselect\n urn,\n year,\n per_pupil_spend,\n staff_cost_pct,\n teacher_cost_pct,\n support_staff_cost_pct,\n premises_cost_pct\nfrom {{ ref('stg_fbit_finance') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_fbit_finance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_fbit_finance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.stg_fbit_finance": {"database": "school_compare", "schema": "staging", "name": "stg_fbit_finance", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_fbit_finance.sql", "original_file_path": "models/staging/stg_fbit_finance.sql", "unique_id": "model.school_compare.stg_fbit_finance", "fqn": ["school_compare", "staging", "stg_fbit_finance"], "alias": "stg_fbit_finance", "checksum": {"name": "sha256", "checksum": "bc4c4b98c46a4a6122258cb6115f9418db5827b47cebc20a2c97641c6e90f1a2"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.8732932, "relation_name": "\"school_compare\".\"staging\".\"stg_fbit_finance\"", "raw_code": "-- Staging model: Financial benchmarking data from FBIT API\n\nwith source as (\n select * from {{ source('raw', 'fbit_finance') }}\n),\n\nrenamed as (\n select\n cast(urn as integer) as urn,\n cast(year as integer) as year,\n cast(per_pupil_spend as numeric) as per_pupil_spend,\n cast(staff_cost_pct as numeric) as staff_cost_pct,\n cast(teacher_cost_pct as numeric) as teacher_cost_pct,\n cast(support_staff_cost_pct as numeric) as support_staff_cost_pct,\n cast(premises_cost_pct as numeric) as premises_cost_pct\n from source\n where urn is not null\n)\n\nselect * from renamed", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "fbit_finance"]], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["source.school_compare.raw.fbit_finance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "model.school_compare.fact_deprivation": {"database": "school_compare", "schema": "marts", "name": "fact_deprivation", "resource_type": "model", "package_name": "school_compare", "path": "marts/fact_deprivation.sql", "original_file_path": "models/marts/fact_deprivation.sql", "unique_id": "model.school_compare.fact_deprivation", "fqn": ["school_compare", "marts", "fact_deprivation"], "alias": "fact_deprivation", "checksum": {"name": "sha256", "checksum": "270f49fcf16d710be2f05b9f5ce1e5c4826bdee0f5273104276fc65eec1f2d28"}, "config": {"enabled": true, "alias": null, "schema": "marts", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "table", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "IDACI deprivation index \u2014 one row per URN", "columns": {"urn": {"name": "urn", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": null, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": "school_compare://models/marts/_marts_schema.yml", "build_path": null, "unrendered_config": {"materialized": "table", "schema": "marts"}, "created_at": 1784225256.959689, "relation_name": "\"school_compare\".\"marts\".\"fact_deprivation\"", "raw_code": "-- Mart: Deprivation index \u2014 one row per URN\n-- The IDACI tap already resolves postcode \u2192 LSOA \u2192 IoD2019 score per school.\n\nselect\n urn,\n lsoa_code,\n idaci_score,\n idaci_decile\nfrom {{ ref('stg_idaci') }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "stg_idaci", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.stg_idaci"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": ["urn"], "time_spine": null}, "model.school_compare.stg_idaci": {"database": "school_compare", "schema": "staging", "name": "stg_idaci", "resource_type": "model", "package_name": "school_compare", "path": "staging/stg_idaci.sql", "original_file_path": "models/staging/stg_idaci.sql", "unique_id": "model.school_compare.stg_idaci", "fqn": ["school_compare", "staging", "stg_idaci"], "alias": "stg_idaci", "checksum": {"name": "sha256", "checksum": "840a949c12c1480f1cdd874c0af6fcd3d3cbb4cc6f74cee01202f6ffa9754b7c"}, "config": {"enabled": true, "alias": null, "schema": "staging", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "view", "incremental_strategy": null, "batch_size": null, "lookback": 1, "begin": 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}, "event_time": null, "concurrent_batches": null, "access": "protected", "freshness": null, "on_error": null, "latest_version_pointer": {"enabled": null, "alias": null}}, "tags": [], "description": "", "columns": {}, "meta": {}, "group": null, "docs": {"show": true, "node_color": null}, "patch_path": null, "build_path": null, "unrendered_config": {"materialized": "view", "schema": "staging"}, "created_at": 1784225256.8745248, "relation_name": "\"school_compare\".\"staging\".\"stg_idaci\"", "raw_code": "-- Staging model: Income Deprivation Affecting Children Index\n-- The IDACI tap resolves postcode \u2192 LSOA and joins to IoD2019 data,\n-- so each row already has a URN.\n\nwith source as (\n select * from {{ source('raw', 'idaci') }}\n),\n\nrenamed as (\n select\n cast(urn as integer) as urn,\n lsoa_code,\n cast(idaci_score as numeric) as idaci_score,\n cast(idaci_decile as integer) as idaci_decile\n from source\n where urn is not null\n)\n\nselect * from renamed", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "idaci"]], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["source.school_compare.raw.idaci"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "access": "protected", "constraints": [], "version": null, "latest_version": null, "deprecation_date": null, "primary_key": [], "time_spine": null}, "test.school_compare.assert_urns_in_uk_bounds": {"database": "school_compare", "schema": "dbt_test__audit", "name": "assert_urns_in_uk_bounds", "resource_type": "test", "package_name": "school_compare", "path": "assert_urns_in_uk_bounds.sql", "original_file_path": "tests/assert_urns_in_uk_bounds.sql", "unique_id": "test.school_compare.assert_urns_in_uk_bounds", "fqn": ["school_compare", "assert_urns_in_uk_bounds"], "alias": "assert_urns_in_uk_bounds", "checksum": {"name": "sha256", "checksum": "b5bcc4736f23422874d0ec9963b32da568245eb4978170dc680ceccfeb22a153"}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.9002, "relation_name": null, "raw_code": "-- Custom test: All geocoded schools should have coordinates within the UK\n\nselect\n urn,\n easting,\n northing\nfrom {{ ref('dim_location') }}\nwhere easting is not null\n and northing is not null\n and (\n easting < 0 or easting > 700000\n or northing < 0 or northing > 1300000\n )", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_location", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.dim_location"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}, "test.school_compare.assert_no_orphaned_facts": {"database": "school_compare", "schema": "dbt_test__audit", "name": "assert_no_orphaned_facts", "resource_type": "test", "package_name": "school_compare", "path": "assert_no_orphaned_facts.sql", "original_file_path": "tests/assert_no_orphaned_facts.sql", "unique_id": "test.school_compare.assert_no_orphaned_facts", "fqn": ["school_compare", "assert_no_orphaned_facts"], "alias": "assert_no_orphaned_facts", "checksum": {"name": "sha256", "checksum": "fd5287fef72054c2f8bf3ef2450eafe63da791a301642a6b3667d0b2853cc3ee"}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.902774, "relation_name": null, "raw_code": "-- Custom test: All fact table URNs should exist in dim_school\n\nselect f.urn\nfrom {{ ref('fact_ks2_performance') }} f\nleft join {{ ref('dim_school') }} d on f.urn = d.urn\nwhere d.urn is null\nlimit 10", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_performance", "package": null, "version": null}, {"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["model.school_compare.fact_ks2_performance", "model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}, "test.school_compare.assert_gias_code_names_match_seed": {"database": "school_compare", "schema": "dbt_test__audit", "name": "assert_gias_code_names_match_seed", "resource_type": "test", "package_name": "school_compare", "path": "assert_gias_code_names_match_seed.sql", "original_file_path": "tests/assert_gias_code_names_match_seed.sql", "unique_id": "test.school_compare.assert_gias_code_names_match_seed", "fqn": ["school_compare", "assert_gias_code_names_match_seed"], "alias": "assert_gias_code_names_match_seed", "checksum": {"name": "sha256", "checksum": "51084dfebf62e9f965242b1487dd043cf50a85c6305355c3403fcfb28e64967d"}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.90382, "relation_name": null, "raw_code": "-- Warn when the live GIAS CSV carries a (code, name) pair we don't have in\n-- the dictionary seed \u2014 i.e. DfE added or renamed a value. Fix by rerunning\n-- pipeline/scripts/generate_gias_codes.py and committing the regenerated\n-- dictionaries + seed together.\n{{ config(severity='warn') }}\n\nwith raw_pairs as (\n {% for field_key, code_col, name_col in [\n ('school_type', 'TypeOfEstablishment (code)', 'TypeOfEstablishment (name)'),\n ('establishment_status', 'EstablishmentStatus (code)', 'EstablishmentStatus (name)'),\n ('phase_of_education', 'PhaseOfEducation (code)', 'PhaseOfEducation (name)'),\n ('official_sixth_form', 'OfficialSixthForm (code)', 'OfficialSixthForm (name)'),\n ('religious_character', 'ReligiousCharacter (code)', 'ReligiousCharacter (name)'),\n ('admissions_policy', 'AdmissionsPolicy (code)', 'AdmissionsPolicy (name)')\n ] %}\n select distinct\n '{{ field_key }}' as field,\n cast(nullif(trim(\"{{ code_col }}\"), '') as integer) as code,\n nullif(trim(\"{{ name_col }}\"), '') as name\n from {{ source('raw', 'gias_establishments') }}\n where nullif(trim(\"{{ code_col }}\"), '') is not null\n and nullif(trim(\"{{ name_col }}\"), '') is not null\n {% if not loop.last %}union all{% endif %}\n {% endfor %}\n)\n\nselect r.*\nfrom raw_pairs r\nleft join {{ ref('gias_code_names') }} s\n on s.field = r.field\n and s.code = r.code\n and s.name = r.name\nwhere s.field is null", "doc_blocks": [], "language": "sql", "refs": [{"name": "gias_code_names", "package": null, "version": null}], "sources": [["raw", "gias_establishments"], ["raw", "gias_establishments"], ["raw", "gias_establishments"], ["raw", "gias_establishments"], ["raw", "gias_establishments"], ["raw", "gias_establishments"]], "metrics": [], "functions": [], "depends_on": {"macros": [], "nodes": ["source.school_compare.raw.gias_establishments", "seed.school_compare.gias_code_names"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}}, "test.school_compare.not_null_dim_location_urn.aefc04518b": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_location_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_location_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_location_urn.aefc04518b", "fqn": ["school_compare", "marts", "not_null_dim_location_urn"], "alias": "not_null_dim_location_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.980829, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_location", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_location"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.dim_location", "attached_node": "model.school_compare.dim_location", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('dim_location')) }}"}, "namespace": null}}, "test.school_compare.unique_dim_location_urn.7acc2482eb": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_dim_location_urn", "resource_type": "test", "package_name": "school_compare", "path": "unique_dim_location_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_dim_location_urn.7acc2482eb", "fqn": ["school_compare", "marts", "unique_dim_location_urn"], "alias": "unique_dim_location_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.981445, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_location", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.dim_location"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.dim_location", "attached_node": "model.school_compare.dim_location", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('dim_location')) }}"}, "namespace": null}}, "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a": {"database": "school_compare", "schema": "dbt_test__audit", "name": "relationships_dim_location_urn__urn__ref_dim_school_", "resource_type": "test", "package_name": "school_compare", "path": "relationships_dim_location_urn__urn__ref_dim_school_.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a", "fqn": ["school_compare", "marts", "relationships_dim_location_urn__urn__ref_dim_school_"], "alias": "relationships_dim_location_urn__urn__ref_dim_school_", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.982482, "relation_name": null, "raw_code": "{{ test_relationships(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}, {"name": "dim_location", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_relationships", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school", "model.school_compare.dim_location"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.dim_location", "attached_node": "model.school_compare.dim_location", "test_metadata": {"name": "relationships", "kwargs": {"to": "ref('dim_school')", "field": "urn", "column_name": "urn", "model": "{{ get_where_subquery(ref('dim_location')) }}"}, "namespace": null}}, "test.school_compare.not_null_dim_location_postcode.1693ab4948": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_location_postcode", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_location_postcode.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_location_postcode.1693ab4948", "fqn": ["school_compare", "marts", "not_null_dim_location_postcode"], "alias": "not_null_dim_location_postcode", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.987798, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_location", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_location"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "postcode", "file_key_name": "models.dim_location", "attached_node": "model.school_compare.dim_location", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "postcode", "model": "{{ get_where_subquery(ref('dim_location')) }}"}, "namespace": null}}, "test.school_compare.not_null_dim_school_urn.06fbd2ff26": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_school_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_school_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_school_urn.06fbd2ff26", "fqn": ["school_compare", "marts", "not_null_dim_school_urn"], "alias": "not_null_dim_school_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.988222, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.unique_dim_school_urn.9851fcd288": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_dim_school_urn", "resource_type": "test", "package_name": "school_compare", "path": "unique_dim_school_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_dim_school_urn.9851fcd288", "fqn": ["school_compare", "marts", "unique_dim_school_urn"], "alias": "unique_dim_school_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.988626, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.not_null_dim_school_school_name.2a2e381565": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_school_school_name", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_school_school_name.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_school_school_name.2a2e381565", "fqn": ["school_compare", "marts", "not_null_dim_school_school_name"], "alias": "not_null_dim_school_school_name", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.9890718, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "school_name", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "school_name", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.not_null_dim_school_phase_code.3140ca1112": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_school_phase_code", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_school_phase_code.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_school_phase_code.3140ca1112", "fqn": ["school_compare", "marts", "not_null_dim_school_phase_code"], "alias": "not_null_dim_school_phase_code", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.989849, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\") }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "phase_code", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "phase_code", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.not_null_dim_school_has_sixth_form.ea8e313799": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_dim_school_has_sixth_form", "resource_type": "test", "package_name": "school_compare", "path": "not_null_dim_school_has_sixth_form.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_dim_school_has_sixth_form.ea8e313799", "fqn": ["school_compare", "marts", "not_null_dim_school_has_sixth_form"], "alias": "not_null_dim_school_has_sixth_form", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.990271, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "has_sixth_form", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "has_sixth_form", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_dim_school_has_sixth_form__True__False.41eaa1ffd6": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_dim_school_has_sixth_form__True__False", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_dim_school_has_sixth_form__True__False.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_dim_school_has_sixth_form__True__False.41eaa1ffd6", "fqn": ["school_compare", "marts", "accepted_values_dim_school_has_sixth_form__True__False"], "alias": "accepted_values_dim_school_has_sixth_form__True__False", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.9906812, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "has_sixth_form", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "accepted_values", "kwargs": {"values": [true, false], "column_name": "has_sixth_form", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_dim_school_status_code__1__3.b0a0bd9a3a": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_dim_school_status_code__1__3", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_dim_school_status_code__1__3.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_dim_school_status_code__1__3.b0a0bd9a3a", "fqn": ["school_compare", "marts", "accepted_values_dim_school_status_code__1__3"], "alias": "accepted_values_dim_school_status_code__1__3", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.992705, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "status_code", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "accepted_values", "kwargs": {"values": [1, 3], "column_name": "status_code", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57.66c218b8b6": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_dim_school_acfbcb3c3f27e749b793e06a71dcf52b.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57.66c218b8b6", "fqn": ["school_compare", "marts", "accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57"], "alias": "accepted_values_dim_school_acfbcb3c3f27e749b793e06a71dcf52b", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "accepted_values_dim_school_acfbcb3c3f27e749b793e06a71dcf52b", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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", "alias": "accepted_values_dim_school_acfbcb3c3f27e749b793e06a71dcf52b"}, "created_at": 1784225256.9936929, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\",alias=\"accepted_values_dim_school_acfbcb3c3f27e749b793e06a71dcf52b\") }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "school_type_code", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "accepted_values", "kwargs": {"values": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 18, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 56, 57], "column_name": "school_type_code", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494", "fqn": ["school_compare", "marts", "accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99"], "alias": "accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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", "alias": "accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51"}, "created_at": 1784225256.9949062, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\",alias=\"accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51\") }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "religious_character_code", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "accepted_values", "kwargs": {"values": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 99], "column_name": "religious_character_code", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_dim_school_admissions_policy_code__0__2__4__9", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_dim_school_admissions_policy_code__0__2__4__9.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008", "fqn": ["school_compare", "marts", "accepted_values_dim_school_admissions_policy_code__0__2__4__9"], "alias": "accepted_values_dim_school_admissions_policy_code__0__2__4__9", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.996076, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\") }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "dim_school", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.dim_school"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "admissions_policy_code", "file_key_name": "models.dim_school", "attached_node": "model.school_compare.dim_school", "test_metadata": {"name": "accepted_values", "kwargs": {"values": [0, 2, 4, 9], "column_name": "admissions_policy_code", "model": "{{ get_where_subquery(ref('dim_school')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks2_performance_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks2_performance_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10", "fqn": ["school_compare", "marts", "not_null_fact_ks2_performance_urn"], "alias": "not_null_fact_ks2_performance_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.997118, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks2_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_ks2_performance", "attached_node": "model.school_compare.fact_ks2_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_ks2_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks2_performance_year.bf28467bae": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks2_performance_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks2_performance_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks2_performance_year.bf28467bae", "fqn": ["school_compare", "marts", "not_null_fact_ks2_performance_year"], "alias": "not_null_fact_ks2_performance_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.99752, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks2_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks2_performance", "attached_node": "model.school_compare.fact_ks2_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks2_performance')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_ks2_performance_urn_year.240e6de465": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_ks2_performance_urn_year", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_ks2_performance_urn_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_ks2_performance_urn_year.240e6de465", "fqn": ["school_compare", "marts", "unique_fact_ks2_performance_urn_year"], "alias": "unique_fact_ks2_performance_urn_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.9979892, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_ks2_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.fact_ks2_performance", "attached_node": "model.school_compare.fact_ks2_performance", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn || '-' || year", "model": "{{ get_where_subquery(ref('fact_ks2_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_performance_urn.334fe56f01": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_performance_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_performance_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_performance_urn.334fe56f01", "fqn": ["school_compare", "marts", "not_null_fact_performance_urn"], "alias": "not_null_fact_performance_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.998399, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_performance", "attached_node": "model.school_compare.fact_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_performance_year.eed5795761": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_performance_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_performance_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_performance_year.eed5795761", "fqn": ["school_compare", "marts", "not_null_fact_performance_year"], "alias": "not_null_fact_performance_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.998792, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_performance", "attached_node": "model.school_compare.fact_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_performance')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_performance_urn_year.f5c028dcb0": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_performance_urn_year", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_performance_urn_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_performance_urn_year.f5c028dcb0", "fqn": ["school_compare", "marts", "unique_fact_performance_urn_year"], "alias": "unique_fact_performance_urn_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.999189, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.fact_performance", "attached_node": "model.school_compare.fact_performance", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn || '-' || year", "model": "{{ get_where_subquery(ref('fact_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks4_performance_urn.dc24537cea": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks4_performance_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks4_performance_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks4_performance_urn.dc24537cea", "fqn": ["school_compare", "marts", "not_null_fact_ks4_performance_urn"], "alias": "not_null_fact_ks4_performance_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225256.999593, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks4_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_ks4_performance", "attached_node": "model.school_compare.fact_ks4_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_ks4_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks4_performance_year.ca2d34b977": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks4_performance_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks4_performance_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks4_performance_year.ca2d34b977", "fqn": ["school_compare", "marts", "not_null_fact_ks4_performance_year"], "alias": "not_null_fact_ks4_performance_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.000018, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks4_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks4_performance", "attached_node": "model.school_compare.fact_ks4_performance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks4_performance')) }}"}, "namespace": null}}, "test.school_compare.accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average.1f92b23f9b": {"database": "school_compare", "schema": "dbt_test__audit", "name": "accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average", "resource_type": "test", "package_name": "school_compare", "path": "accepted_values_fact_ks4_perfo_cae327e9ae1b05c2c878e063014181be.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average.1f92b23f9b", "fqn": ["school_compare", "marts", "accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average"], "alias": "accepted_values_fact_ks4_perfo_cae327e9ae1b05c2c878e063014181be", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": "accepted_values_fact_ks4_perfo_cae327e9ae1b05c2c878e063014181be", "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "warn", "store_failures": null, "store_failures_as": null, "sql_header": null, "where": "progress_8_banding is not 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", "where": "progress_8_banding is not null", "alias": "accepted_values_fact_ks4_perfo_cae327e9ae1b05c2c878e063014181be"}, "created_at": 1784225257.0005372, "relation_name": null, "raw_code": "{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity=\"warn\",where=\"progress_8_banding is not null\",alias=\"accepted_values_fact_ks4_perfo_cae327e9ae1b05c2c878e063014181be\") }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_accepted_values", "macro.dbt.get_where_subquery"], "nodes": ["model.school_compare.fact_ks4_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "progress_8_banding", "file_key_name": "models.fact_ks4_performance", "attached_node": "model.school_compare.fact_ks4_performance", "test_metadata": {"name": "accepted_values", "kwargs": {"values": ["Well above average", "Above average", "Average", "Below average", "Well below average"], "column_name": "progress_8_banding", "model": "{{ get_where_subquery(ref('fact_ks4_performance')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_ks4_performance_urn_year.eba97e8000": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_ks4_performance_urn_year", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_ks4_performance_urn_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_ks4_performance_urn_year.eba97e8000", "fqn": ["school_compare", "marts", "unique_fact_ks4_performance_urn_year"], "alias": "unique_fact_ks4_performance_urn_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.002696, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_performance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_ks4_performance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": null, "file_key_name": "models.fact_ks4_performance", "attached_node": "model.school_compare.fact_ks4_performance", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn || '-' || year", "model": "{{ get_where_subquery(ref('fact_ks4_performance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks4_national_averages_year.43387931fd": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks4_national_averages_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks4_national_averages_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks4_national_averages_year.43387931fd", "fqn": ["school_compare", "marts", "not_null_fact_ks4_national_averages_year"], "alias": "not_null_fact_ks4_national_averages_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.003171, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_national_averages", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks4_national_averages"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks4_national_averages", "attached_node": "model.school_compare.fact_ks4_national_averages", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks4_national_averages')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_ks4_national_averages_year.9e4ab94935": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_ks4_national_averages_year", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_ks4_national_averages_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_ks4_national_averages_year.9e4ab94935", "fqn": ["school_compare", "marts", "unique_fact_ks4_national_averages_year"], "alias": "unique_fact_ks4_national_averages_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0036201, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks4_national_averages", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_ks4_national_averages"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks4_national_averages", "attached_node": "model.school_compare.fact_ks4_national_averages", "test_metadata": {"name": "unique", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks4_national_averages')) }}"}, "namespace": null}}, "test.school_compare.not_null_map_school_lineage_urn.24da1a9909": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_map_school_lineage_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_map_school_lineage_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_map_school_lineage_urn.24da1a9909", "fqn": ["school_compare", "marts", "not_null_map_school_lineage_urn"], "alias": "not_null_map_school_lineage_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0040388, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "map_school_lineage", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.map_school_lineage"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.map_school_lineage", "attached_node": "model.school_compare.map_school_lineage", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('map_school_lineage')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ofsted_inspection_urn.65304a896d": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ofsted_inspection_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ofsted_inspection_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ofsted_inspection_urn.65304a896d", "fqn": ["school_compare", "marts", "not_null_fact_ofsted_inspection_urn"], "alias": "not_null_fact_ofsted_inspection_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.00444, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ofsted_inspection", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ofsted_inspection"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_ofsted_inspection", "attached_node": "model.school_compare.fact_ofsted_inspection", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_ofsted_inspection')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ofsted_inspection_inspection_date.5aa4bf0513": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ofsted_inspection_inspection_date", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ofsted_inspection_inspection_date.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ofsted_inspection_inspection_date.5aa4bf0513", "fqn": ["school_compare", "marts", "not_null_fact_ofsted_inspection_inspection_date"], "alias": "not_null_fact_ofsted_inspection_inspection_date", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0048928, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ofsted_inspection", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ofsted_inspection"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "inspection_date", "file_key_name": "models.fact_ofsted_inspection", "attached_node": "model.school_compare.fact_ofsted_inspection", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "inspection_date", "model": "{{ get_where_subquery(ref('fact_ofsted_inspection')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_pupil_characteristics_urn.bdeebf869b": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_pupil_characteristics_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_pupil_characteristics_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_pupil_characteristics_urn.bdeebf869b", "fqn": ["school_compare", "marts", "not_null_fact_pupil_characteristics_urn"], "alias": "not_null_fact_pupil_characteristics_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0053, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_pupil_characteristics", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_pupil_characteristics"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_pupil_characteristics", "attached_node": "model.school_compare.fact_pupil_characteristics", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_pupil_characteristics')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_pupil_characteristics_year.19bec90c81": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_pupil_characteristics_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_pupil_characteristics_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_pupil_characteristics_year.19bec90c81", "fqn": ["school_compare", "marts", "not_null_fact_pupil_characteristics_year"], "alias": "not_null_fact_pupil_characteristics_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0057049, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_pupil_characteristics", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_pupil_characteristics"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_pupil_characteristics", "attached_node": "model.school_compare.fact_pupil_characteristics", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_pupil_characteristics')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_census_benchmarks_phase.c4c9ad96c1": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_census_benchmarks_phase", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_census_benchmarks_phase.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_census_benchmarks_phase.c4c9ad96c1", "fqn": ["school_compare", "marts", "not_null_fact_census_benchmarks_phase"], "alias": "not_null_fact_census_benchmarks_phase", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.006102, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_census_benchmarks", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_census_benchmarks"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "phase", "file_key_name": "models.fact_census_benchmarks", "attached_node": "model.school_compare.fact_census_benchmarks", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "phase", "model": "{{ get_where_subquery(ref('fact_census_benchmarks')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_census_benchmarks_phase.c06d73d097": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_census_benchmarks_phase", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_census_benchmarks_phase.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_census_benchmarks_phase.c06d73d097", "fqn": ["school_compare", "marts", "unique_fact_census_benchmarks_phase"], "alias": "unique_fact_census_benchmarks_phase", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.006498, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_census_benchmarks", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_census_benchmarks"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "phase", "file_key_name": "models.fact_census_benchmarks", "attached_node": "model.school_compare.fact_census_benchmarks", "test_metadata": {"name": "unique", "kwargs": {"column_name": "phase", "model": "{{ get_where_subquery(ref('fact_census_benchmarks')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_admissions_urn.fdf334f63c": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_admissions_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_admissions_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_admissions_urn.fdf334f63c", "fqn": ["school_compare", "marts", "not_null_fact_admissions_urn"], "alias": "not_null_fact_admissions_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0069299, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_admissions", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_admissions"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_admissions", "attached_node": "model.school_compare.fact_admissions", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_admissions')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_admissions_year.11169d1a1f": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_admissions_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_admissions_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_admissions_year.11169d1a1f", "fqn": ["school_compare", "marts", "not_null_fact_admissions_year"], "alias": "not_null_fact_admissions_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.007335, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_admissions", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_admissions"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_admissions", "attached_node": "model.school_compare.fact_admissions", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_admissions')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_ks2_national_averages_year.84b854a9ce": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_ks2_national_averages_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_ks2_national_averages_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_ks2_national_averages_year.84b854a9ce", "fqn": ["school_compare", "marts", "not_null_fact_ks2_national_averages_year"], "alias": "not_null_fact_ks2_national_averages_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.007735, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_national_averages", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_ks2_national_averages"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks2_national_averages", "attached_node": "model.school_compare.fact_ks2_national_averages", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks2_national_averages')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_ks2_national_averages_year.99f3ae39bb": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_ks2_national_averages_year", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_ks2_national_averages_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_ks2_national_averages_year.99f3ae39bb", "fqn": ["school_compare", "marts", "unique_fact_ks2_national_averages_year"], "alias": "unique_fact_ks2_national_averages_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.008128, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_ks2_national_averages", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_ks2_national_averages"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_ks2_national_averages", "attached_node": "model.school_compare.fact_ks2_national_averages", "test_metadata": {"name": "unique", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_ks2_national_averages')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_finance_urn.162f08d129": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_finance_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_finance_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_finance_urn.162f08d129", "fqn": ["school_compare", "marts", "not_null_fact_finance_urn"], "alias": "not_null_fact_finance_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.008537, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_finance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_finance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_finance", "attached_node": "model.school_compare.fact_finance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_finance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_finance_year.d96868883e": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_finance_year", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_finance_year.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_finance_year.d96868883e", "fqn": ["school_compare", "marts", "not_null_fact_finance_year"], "alias": "not_null_fact_finance_year", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.008935, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_finance", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_finance"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "year", "file_key_name": "models.fact_finance", "attached_node": "model.school_compare.fact_finance", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "year", "model": "{{ get_where_subquery(ref('fact_finance')) }}"}, "namespace": null}}, "test.school_compare.not_null_fact_deprivation_urn.96d84c2c61": {"database": "school_compare", "schema": "dbt_test__audit", "name": "not_null_fact_deprivation_urn", "resource_type": "test", "package_name": "school_compare", "path": "not_null_fact_deprivation_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.not_null_fact_deprivation_urn.96d84c2c61", "fqn": ["school_compare", "marts", "not_null_fact_deprivation_urn"], "alias": "not_null_fact_deprivation_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0093708, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_deprivation", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["model.school_compare.fact_deprivation"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_deprivation", "attached_node": "model.school_compare.fact_deprivation", "test_metadata": {"name": "not_null", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_deprivation')) }}"}, "namespace": null}}, "test.school_compare.unique_fact_deprivation_urn.194d6d1f01": {"database": "school_compare", "schema": "dbt_test__audit", "name": "unique_fact_deprivation_urn", "resource_type": "test", "package_name": "school_compare", "path": "unique_fact_deprivation_urn.sql", "original_file_path": "models/marts/_marts_schema.yml", "unique_id": "test.school_compare.unique_fact_deprivation_urn.194d6d1f01", "fqn": ["school_compare", "marts", "unique_fact_deprivation_urn"], "alias": "unique_fact_deprivation_urn", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.009774, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [{"name": "fact_deprivation", "package": null, "version": null}], "sources": [], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["model.school_compare.fact_deprivation"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "urn", "file_key_name": "models.fact_deprivation", "attached_node": "model.school_compare.fact_deprivation", "test_metadata": {"name": "unique", "kwargs": {"column_name": "urn", "model": "{{ get_where_subquery(ref('fact_deprivation')) }}"}, "namespace": null}}, "test.school_compare.source_not_null_raw_gias_establishments__URN_.daa9473baf": {"database": "school_compare", "schema": "dbt_test__audit", "name": "source_not_null_raw_gias_establishments__URN_", "resource_type": "test", "package_name": "school_compare", "path": "source_not_null_raw_gias_establishments__URN_.sql", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "test.school_compare.source_not_null_raw_gias_establishments__URN_.daa9473baf", "fqn": ["school_compare", "staging", "source_not_null_raw_gias_establishments__URN_"], "alias": "source_not_null_raw_gias_establishments__URN_", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.036978, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "gias_establishments"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["source.school_compare.raw.gias_establishments"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "\"URN\"", "file_key_name": "sources.raw", "attached_node": null, "test_metadata": {"name": "not_null", "kwargs": {"column_name": "\"URN\"", "model": "{{ get_where_subquery(source('raw', 'gias_establishments')) }}"}, "namespace": null}}, "test.school_compare.source_unique_raw_gias_establishments__URN_.9f6d358797": {"database": "school_compare", "schema": "dbt_test__audit", "name": "source_unique_raw_gias_establishments__URN_", "resource_type": "test", "package_name": "school_compare", "path": "source_unique_raw_gias_establishments__URN_.sql", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "test.school_compare.source_unique_raw_gias_establishments__URN_.9f6d358797", "fqn": ["school_compare", "staging", "source_unique_raw_gias_establishments__URN_"], "alias": "source_unique_raw_gias_establishments__URN_", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0374432, "relation_name": null, "raw_code": "{{ test_unique(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "gias_establishments"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_unique"], "nodes": ["source.school_compare.raw.gias_establishments"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "\"URN\"", "file_key_name": "sources.raw", "attached_node": null, "test_metadata": {"name": "unique", "kwargs": {"column_name": "\"URN\"", "model": "{{ get_where_subquery(source('raw', 'gias_establishments')) }}"}, "namespace": null}}, "test.school_compare.source_not_null_raw_gias_links__URN_.588070236c": {"database": "school_compare", "schema": "dbt_test__audit", "name": "source_not_null_raw_gias_links__URN_", "resource_type": "test", "package_name": "school_compare", "path": "source_not_null_raw_gias_links__URN_.sql", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "test.school_compare.source_not_null_raw_gias_links__URN_.588070236c", "fqn": ["school_compare", "staging", "source_not_null_raw_gias_links__URN_"], "alias": "source_not_null_raw_gias_links__URN_", "checksum": {"name": "none", "checksum": ""}, "config": {"enabled": true, "alias": null, "schema": "dbt_test__audit", "database": null, "tags": [], "meta": {}, "group": null, "static_analysis": null, "materialized": "test", "severity": "ERROR", "store_failures": null, "store_failures_as": null, "sql_header": 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": 1784225257.0445042, "relation_name": null, "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}", "doc_blocks": [], "language": "sql", "refs": [], "sources": [["raw", "gias_links"]], "metrics": [], "functions": [], "depends_on": {"macros": ["macro.dbt.test_not_null"], "nodes": ["source.school_compare.raw.gias_links"]}, "compiled_path": null, "contract": {"enforced": false, "alias_types": true, "checksum": null}, "column_name": "\"URN\"", "file_key_name": "sources.raw", "attached_node": null, "test_metadata": {"name": "not_null", "kwargs": {"column_name": "\"URN\"", "model": "{{ get_where_subquery(source('raw', 'gias_links')) }}"}, "namespace": null}}}, "sources": {"source.school_compare.raw.gias_establishments": {"database": "school_compare", "schema": "raw", "name": "gias_establishments", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.gias_establishments", "fqn": ["school_compare", "staging", "raw", "gias_establishments"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "gias_establishments", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "GIAS bulk establishment data (one row per URN)", "columns": {"URN": {"name": "URN", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": true, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"gias_establishments\"", "created_at": 1784225257.0438552, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.gias_links": {"database": "school_compare", "schema": "raw", "name": "gias_links", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.gias_links", "fqn": ["school_compare", "staging", "raw", "gias_links"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "gias_links", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "GIAS predecessor/successor links between schools", "columns": {"URN": {"name": "URN", "description": "", "meta": {}, "data_type": null, "constraints": [], "quote": true, "config": {"meta": {}, "tags": []}, "tags": [], "granularity": null, "dimension": null, "entity": null, "doc_blocks": []}}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"gias_links\"", "created_at": 1784225257.044908, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ofsted_inspections": {"database": "school_compare", "schema": "raw", "name": "ofsted_inspections", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ofsted_inspections", "fqn": ["school_compare", "staging", "raw", "ofsted_inspections"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ofsted_inspections", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Ofsted Management Information inspection records", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ofsted_inspections\"", "created_at": 1784225257.0450501, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks2_attainment": {"database": "school_compare", "schema": "raw", "name": "ees_ks2_attainment", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks2_attainment", "fqn": ["school_compare", "staging", "raw", "ees_ks2_attainment"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks2_attainment", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "KS2 school attainment (long format \u2014 one row per school \u00d7 subject \u00d7 breakdown)", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks2_attainment\"", "created_at": 1784225257.045182, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks2_info": {"database": "school_compare", "schema": "raw", "name": "ees_ks2_info", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks2_info", "fqn": ["school_compare", "staging", "raw", "ees_ks2_info"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks2_info", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "KS2 school information (wide format \u2014 context/demographics per school)", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks2_info\"", "created_at": 1784225257.045315, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.legacy_ks2": {"database": "school_compare", "schema": "raw", "name": "legacy_ks2", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.legacy_ks2", "fqn": ["school_compare", "staging", "raw", "legacy_ks2"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "legacy_ks2", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Pre-COVID KS2 school-level data (2015-16 to 2018-19) from DfE performance tables", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"legacy_ks2\"", "created_at": 1784225257.045443, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks4_performance": {"database": "school_compare", "schema": "raw", "name": "ees_ks4_performance", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks4_performance", "fqn": ["school_compare", "staging", "raw", "ees_ks4_performance"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks4_performance", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "KS4 performance tables (long format \u2014 one row per school \u00d7 breakdown \u00d7 sex)", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks4_performance\"", "created_at": 1784225257.045571, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks4_info": {"database": "school_compare", "schema": "raw", "name": "ees_ks4_info", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks4_info", "fqn": ["school_compare", "staging", "raw", "ees_ks4_info"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks4_info", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "KS4 school information (wide format \u2014 context/demographics per school)", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks4_info\"", "created_at": 1784225257.0456982, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.legacy_ks4": {"database": "school_compare", "schema": "raw", "name": "legacy_ks4", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.legacy_ks4", "fqn": ["school_compare", "staging", "raw", "legacy_ks4"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "legacy_ks4", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Pre-EES KS4 school-level data (2015/16\u20132018/19) from DfE Compare School Performance ZIPs", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"legacy_ks4\"", "created_at": 1784225257.045825, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_census": {"database": "school_compare", "schema": "raw", "name": "ees_census", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_census", "fqn": ["school_compare", "staging", "raw", "ees_census"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_census", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "School census pupil characteristics", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_census\"", "created_at": 1784225257.0459478, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_admissions": {"database": "school_compare", "schema": "raw", "name": "ees_admissions", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_admissions", "fqn": ["school_compare", "staging", "raw", "ees_admissions"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_admissions", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Primary and secondary school admissions data", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_admissions\"", "created_at": 1784225257.046114, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks2_national": {"database": "school_compare", "schema": "raw", "name": "ees_ks2_national", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks2_national", "fqn": ["school_compare", "staging", "raw", "ees_ks2_national"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks2_national", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "KS2 national headline averages from DfE EES data catalogue \u2014 one row per academic year", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks2_national\"", "created_at": 1784225257.0462809, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.ees_ks4_national": {"database": "school_compare", "schema": "raw", "name": "ees_ks4_national", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.ees_ks4_national", "fqn": ["school_compare", "staging", "raw", "ees_ks4_national"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "ees_ks4_national", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Official KS4 national headline averages from DfE EES data catalogue \u2014 one row per academic year", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"ees_ks4_national\"", "created_at": 1784225257.046441, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.fbit_finance": {"database": "school_compare", "schema": "raw", "name": "fbit_finance", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.fbit_finance", "fqn": ["school_compare", "staging", "raw", "fbit_finance"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "fbit_finance", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Financial benchmarking data from FBIT API", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"fbit_finance\"", "created_at": 1784225257.046582, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}, "source.school_compare.raw.idaci": {"database": "school_compare", "schema": "raw", "name": "idaci", "resource_type": "source", "package_name": "school_compare", "path": "models/staging/_stg_sources.yml", "original_file_path": "models/staging/_stg_sources.yml", "unique_id": "source.school_compare.raw.idaci", "fqn": ["school_compare", "staging", "raw", "idaci"], "source_name": "raw", "source_description": "Raw data loaded by Meltano Singer taps into the raw schema", "loader": "", "identifier": "idaci", "quoting": {"database": null, "schema": null, "identifier": null, "column": null}, "loaded_at_field": null, "loaded_at_query": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "external": null, "description": "Income Deprivation Affecting Children Index lookups", "columns": {}, "meta": {}, "source_meta": {}, "tags": [], "config": {"enabled": true, "event_time": null, "freshness": {"warn_after": {"count": null, "period": null}, "error_after": {"count": null, "period": null}, "filter": null}, "loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": [], "static_analysis": null}, "patch_path": null, "unrendered_config": {"loaded_at_field": null, "loaded_at_query": null, "meta": {}, "tags": []}, "relation_name": "\"school_compare\".\"raw\".\"idaci\"", "created_at": 1784225257.0467148, "unrendered_database": null, "unrendered_schema": "raw", "doc_blocks": []}}, "macros": {"macro.school_compare.parse_ofsted_grade": {"name": "parse_ofsted_grade", "resource_type": "macro", "package_name": "school_compare", "path": "macros/parse_ofsted_grade.sql", "original_file_path": "macros/parse_ofsted_grade.sql", "unique_id": "macro.school_compare.parse_ofsted_grade", "macro_sql": "{% macro parse_ofsted_grade(column) %}\n case\n when {{ column }}::text in ('1', 'Outstanding') then 1\n when {{ column }}::text in ('2', 'Good') then 2\n when {{ column }}::text in ('3', 'Requires improvement', 'Requires Improvement', 'Satisfactory') then 3\n when {{ column }}::text in ('4', 'Inadequate') then 4\n when {{ column }}::text in ('9', 'SWK', 'Serious Weaknesses') then 4\n when {{ column }}::text in ('SM', 'Special Measures') then 4\n else null\n end\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "column", "type": null, "description": ""}], "created_at": 1784225035.212215, "supported_languages": null}, "macro.school_compare.validate_uk_coordinates": {"name": "validate_uk_coordinates", "resource_type": "macro", "package_name": "school_compare", "path": "macros/validate_uk_coordinates.sql", "original_file_path": "macros/validate_uk_coordinates.sql", "unique_id": "macro.school_compare.validate_uk_coordinates", "macro_sql": "{% macro validate_uk_coordinates(lat_col, lng_col) %}\n (\n {{ lat_col }} between 49.0 and 61.0\n and {{ lng_col }} between -8.0 and 2.0\n )\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "lat_col", "type": null, "description": ""}, {"name": "lng_col", "type": null, "description": ""}], "created_at": 1784225035.212335, "supported_languages": null}, "macro.school_compare.parse_report_card_grade": {"name": "parse_report_card_grade", "resource_type": "macro", "package_name": "school_compare", "path": "macros/parse_report_card_grade.sql", "original_file_path": "macros/parse_report_card_grade.sql", "unique_id": "macro.school_compare.parse_report_card_grade", "macro_sql": "{% macro parse_report_card_grade(column_name) %}\n case lower(trim(nullif({{ column_name }}, 'NULL')))\n when 'exceptional' then 1\n when 'strong standard' then 2\n when 'expected standard' then 3\n when 'needs attention' then 4\n when 'urgent improvement' then 5\n else null\n end\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "column_name", "type": null, "description": ""}], "created_at": 1784225035.212427, "supported_languages": null}, "macro.school_compare.parse_ungraded_outcome": {"name": "parse_ungraded_outcome", "resource_type": "macro", "package_name": "school_compare", "path": "macros/parse_ungraded_outcome.sql", "original_file_path": "macros/parse_ungraded_outcome.sql", "unique_id": "macro.school_compare.parse_ungraded_outcome", "macro_sql": "{% macro parse_ungraded_outcome(column) %}\n case\n when {{ column }} ilike '%remains Outstanding%' then 1\n when {{ column }} ilike '%remains Good%' then 2\n else null\n end\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "column", "type": null, "description": ""}], "created_at": 1784225035.2125282, "supported_languages": null}, "macro.school_compare.generate_schema_name": {"name": "generate_schema_name", "resource_type": "macro", "package_name": "school_compare", "path": "macros/generate_schema_name.sql", "original_file_path": "macros/generate_schema_name.sql", "unique_id": "macro.school_compare.generate_schema_name", "macro_sql": "{% macro generate_schema_name(custom_schema_name, node) -%}\n {%- if custom_schema_name is not none -%}\n {{ custom_schema_name | trim }}\n {%- else -%}\n {{ target.schema }}\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_schema_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.212668, "supported_languages": null}, "macro.school_compare.safe_numeric": {"name": "safe_numeric", "resource_type": "macro", "package_name": "school_compare", "path": "macros/safe_numeric.sql", "original_file_path": "macros/safe_numeric.sql", "unique_id": "macro.school_compare.safe_numeric", "macro_sql": "{% macro safe_numeric(col) -%}\n CASE WHEN {{ col }} ~ '^-?[0-9]+(\\.[0-9]+)?$' THEN {{ col }}::numeric ELSE NULL END\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "col", "type": null, "description": ""}], "created_at": 1784225035.212754, "supported_languages": null}, "macro.school_compare.chain_lineage": {"name": "chain_lineage", "resource_type": "macro", "package_name": "school_compare", "path": "macros/chain_lineage.sql", "original_file_path": "macros/chain_lineage.sql", "unique_id": "macro.school_compare.chain_lineage", "macro_sql": "{% macro chain_lineage(source_ref, urn_col='urn', year_col='year') %}\n\nwith current_data as (\n select\n {{ urn_col }} as current_urn,\n {{ urn_col }} as source_urn,\n *\n from {{ source_ref }}\n),\n\npredecessor_data as (\n select\n lin.current_urn,\n src.{{ urn_col }} as source_urn,\n src.*\n from {{ source_ref }} src\n inner join {{ ref('int_school_lineage') }} lin\n on src.{{ urn_col }} = lin.predecessor_urn\n where not exists (\n select 1 from {{ source_ref }} curr\n where curr.{{ urn_col }} = lin.current_urn\n and curr.{{ year_col }} = src.{{ year_col }}\n )\n),\n\ncombined as (\n select * from current_data\n union all\n select * from predecessor_data\n)\n\nselect * from combined\n\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_ref", "type": null, "description": ""}, {"name": "urn_col", "type": null, "description": ""}, {"name": "year_col", "type": null, "description": ""}], "created_at": 1784225035.2130072, "supported_languages": null}, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.213104, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "timestamp", "type": null, "description": ""}], "created_at": 1784225035.21347, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2135198, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.213564, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2136068, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "relations", "type": null, "description": ""}], "created_at": 1784225035.214046, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schemas", "type": null, "description": ""}], "created_at": 1784225035.2141912, "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 select distinct\n dependent_namespace.nspname as dependent_schema,\n dependent_class.relname as dependent_name,\n referenced_namespace.nspname as referenced_schema,\n referenced_class.relname as referenced_name\n\n -- Query for views: views are entries in pg_class with an entry in pg_rewrite, but we avoid\n -- a seq scan on pg_rewrite by leveraging the fact there is an \"internal\" row in pg_depend for\n -- the view...\n from pg_class as dependent_class\n join pg_namespace as dependent_namespace on dependent_namespace.oid = dependent_class.relnamespace\n join pg_depend as dependent_depend on dependent_depend.refobjid = dependent_class.oid\n and dependent_depend.classid = 'pg_rewrite'::regclass\n and dependent_depend.refclassid = 'pg_class'::regclass\n and dependent_depend.deptype = 'i'\n\n -- ... and via pg_depend (that has a row per column, hence the need for \"distinct\" above, and\n -- making sure to exclude the internal row to avoid a view appearing to depend on itself)...\n join pg_depend as joining_depend on joining_depend.objid = dependent_depend.objid\n and joining_depend.classid = 'pg_rewrite'::regclass\n and joining_depend.refclassid = 'pg_class'::regclass\n and joining_depend.refobjid != dependent_depend.refobjid\n\n -- ... we can find the tables they query from in pg_class, but excluding system tables. Note we\n -- don't need need to exclude _dependent_ system tables, because they only query from other\n -- system tables, and so are automatically excluded by excluding _referenced_ system tables\n join pg_class as referenced_class on referenced_class.oid = joining_depend.refobjid\n join pg_namespace as referenced_namespace on referenced_namespace.oid = referenced_class.relnamespace\n and referenced_namespace.nspname != 'information_schema'\n and referenced_namespace.nspname not like 'pg\\_%'\n\n order by\n dependent_schema, dependent_name, referenced_schema, referenced_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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.214432, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2144818, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "temporary", "type": null, "description": ""}, {"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.215414, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_dict", "type": null, "description": ""}], "created_at": 1784225035.2156029, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.215725, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.215845, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2160242, "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 union all\n select distinct\n '{{ schema_relation.database }}' as database,\n proname as name,\n ns.nspname as schema,\n 'function' as type\n from pg_proc\n join pg_namespace as ns on pronamespace = ns.oid\n where ns.nspname 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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_relation", "type": null, "description": ""}], "created_at": 1784225035.216217, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.216286, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.216414, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schema", "type": null, "description": ""}], "created_at": 1784225035.216556, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}, {"name": "dstring", "type": null, "description": ""}], "created_at": 1784225035.216872, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.2169468, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.2170691, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "backup_relation_type", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.217172, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "comment", "type": null, "description": ""}], "created_at": 1784225035.217377, "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 {% if relation.type == 'materialized_view' -%}\n {% set relation_type = \"materialized view\" %}\n {%- else -%}\n {%- set relation_type = relation.type -%}\n {%- endif -%}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "comment", "type": null, "description": ""}], "created_at": 1784225035.217526, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_dict", "type": null, "description": ""}], "created_at": 1784225035.2177532, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.217837, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2178838, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.217956, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_name", "type": null, "description": ""}], "created_at": 1784225035.2180102, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.218184, "supported_languages": null}, "macro.dbt_postgres.postgres__get_incremental_microbatch_sql": {"name": "postgres__get_incremental_microbatch_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_microbatch_sql", "macro_sql": "{% macro postgres__get_incremental_microbatch_sql(arg_dict) %}\n\n {% if arg_dict[\"unique_key\"] %}\n {% do return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) %}\n {% else %}\n {{ exceptions.raise_compiler_error(\"dbt-postgres 'microbatch' requires a `unique_key` config\") }}\n {% endif %}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_incremental_merge_sql", "macro.dbt.default__get_incremental_merge_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.2183092, "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 {%- set columns = config.get(\"snapshot_table_column_names\") or get_snapshot_table_column_names() -%}\n\n update {{ target }}\n set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}\n from {{ source }} as DBT_INTERNAL_SOURCE\n where DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }}::text = {{ target }}.{{ columns.dbt_scd_id }}::text\n and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)\n {% if config.get(\"dbt_valid_to_current\") %}\n and ({{ target }}.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or {{ target }}.{{ columns.dbt_valid_to }} is null);\n {% else %}\n and {{ target }}.{{ columns.dbt_valid_to }} is null;\n {% endif %}\n\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": ["macro.dbt.get_snapshot_table_column_names"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "insert_cols", "type": null, "description": ""}], "created_at": 1784225035.218737, "supported_languages": null}, "macro.dbt_postgres.postgres__formatted_scalar_function_args_sql": {"name": "postgres__formatted_scalar_function_args_sql", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt_postgres.postgres__formatted_scalar_function_args_sql", "macro_sql": "{% macro postgres__formatted_scalar_function_args_sql() %}\n {% set args = [] %}\n {% for arg in model.arguments -%}\n {% set default_value = arg.get('default_value', none) %}\n {% if default_value != none %}\n {%- do args.append(arg.name ~ ' ' ~ arg.data_type ~ ' DEFAULT ' ~ default_value) -%}\n {% else %}\n {%- do args.append(arg.name ~ ' ' ~ arg.data_type) -%}\n {% endif %}\n {%- endfor %}\n {{ args | join(', ') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.219011, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.219073, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.219189, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.219249, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.219317, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "configuration_changes", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}], "created_at": 1784225035.219558, "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\t{{ ';' if not loop.last else \"\" }}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_changes", "type": null, "description": ""}], "created_at": 1784225035.219774, "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.model) %}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "new_config", "type": null, "description": ""}], "created_at": 1784225035.219894, "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) -}}{{ ';' if not loop.last else \"\" }}\n {%- endfor -%}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_create_index_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.220066, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.220125, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.220371, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.220448, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2205088, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.220763, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.220841, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "interval", "type": null, "description": ""}, {"name": "from_date_or_timestamp", "type": null, "description": ""}], "created_at": 1784225035.220931, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "measure", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "order_by_clause", "type": null, "description": ""}, {"name": "limit_num", "type": null, "description": ""}], "created_at": 1784225035.2211368, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "first_date", "type": null, "description": ""}, {"name": "second_date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.222014, "supported_languages": null}, "macro.dbt_postgres.postgres__equals": {"name": "postgres__equals", "resource_type": "macro", "package_name": "dbt_postgres", "path": "macros/utils/equals.sql", "original_file_path": "macros/utils/equals.sql", "unique_id": "macro.dbt_postgres.postgres__equals", "macro_sql": "{% macro postgres__equals(expr1, expr2) -%}\n{%- if adapter.behavior.enable_truthy_nulls_equals_macro.no_warn %}\n ({{ expr1 }} IS NOT DISTINCT FROM {{ expr2 }})\n{%- else -%}\n ({{ expr1 }} = {{ expr2 }})\n{%- endif %}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expr1", "type": null, "description": ""}, {"name": "expr2", "type": null, "description": ""}], "created_at": 1784225035.2221708, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.2222452, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.2224572, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "part_number", "type": null, "description": ""}], "created_at": 1784225035.222636, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "hooks", "type": null, "description": ""}, {"name": "inside_transaction", "type": null, "description": ""}], "created_at": 1784225035.222998, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}, {"name": "inside_transaction", "type": null, "description": ""}], "created_at": 1784225035.2230809, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.22314, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2231948, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.223249, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "config", "type": null, "description": ""}], "created_at": 1784225035.223378, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.223497, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.223615, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "insert_cols", "type": null, "description": ""}], "created_at": 1784225035.223797, "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\t{% set source_unique_key = (\"DBT_INTERNAL_DEST.\" ~ columns.dbt_valid_to) | trim %}\n\t{% set target_unique_key = config.get('dbt_valid_to_current') | trim %}\n\tand ({{ equals(source_unique_key, target_unique_key) }} or {{ source_unique_key }} is null)\n\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", "macro.dbt.equals"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "insert_cols", "type": null, "description": ""}], "created_at": 1784225035.224118, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "name", "type": null, "description": ""}], "created_at": 1784225035.225087, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "args", "type": null, "description": ""}], "created_at": 1784225035.225164, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "args", "type": null, "description": ""}], "created_at": 1784225035.225264, "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 hard_deletes = adapter.get_hard_deletes_behavior(config) %}\n {% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}\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 \"hard_deletes\": 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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "node", "type": null, "description": ""}, {"name": "snapshotted_rel", "type": null, "description": ""}, {"name": "current_rel", "type": null, "description": ""}, {"name": "model_config", "type": null, "description": ""}, {"name": "target_exists", "type": null, "description": ""}], "created_at": 1784225035.225667, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "timestamp", "type": null, "description": ""}], "created_at": 1784225035.225736, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "timestamp", "type": null, "description": ""}], "created_at": 1784225035.225808, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "node", "type": null, "description": ""}, {"name": "target_exists", "type": null, "description": ""}, {"name": "check_cols_config", "type": null, "description": ""}], "created_at": 1784225035.226366, "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 hard_deletes = adapter.get_hard_deletes_behavior(config) %}\n {% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}\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 \"hard_deletes\": 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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "node", "type": null, "description": ""}, {"name": "snapshotted_rel", "type": null, "description": ""}, {"name": "current_rel", "type": null, "description": ""}, {"name": "model_config", "type": null, "description": ""}, {"name": "target_exists", "type": null, "description": ""}], "created_at": 1784225035.226913, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.22782, "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 {{ adapter.quote(column.name) }} {{ column.expanded_data_type }};\n {% endcall %}\n {% endfor %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.227948, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "staging_relation", "type": null, "description": ""}], "created_at": 1784225035.2280169, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "staging_relation", "type": null, "description": ""}], "created_at": 1784225035.228054, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.228112, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.228158, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "source_sql", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.228236, "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', 'dbt_is_deleted': 'dbt_is_deleted'}) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.228341, "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 {% if strategy.hard_deletes == 'new_record' %}\n {% set new_scd_id = snapshot_hash_arguments([columns.dbt_scd_id, snapshot_get_time()]) %}\n {% endif %}\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\t\t{% set source_unique_key = columns.dbt_valid_to | trim %}\n\t\t{% set target_unique_key = config.get('dbt_valid_to_current') | trim %}\n\n\t\t{# The exact equals semantics between NULL values depends on the current behavior flag set. Also, update records if the source field is null #}\n ( {{ equals(source_unique_key, target_unique_key) }} or {{ source_unique_key }} 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.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}\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 {%- if strategy.hard_deletes == 'new_record' -%}\n ,'False' as {{ columns.dbt_is_deleted }}\n {%- endif %}\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 (\n {{ strategy.row_changed }} {%- if strategy.hard_deletes == 'new_record' -%} or snapshotted_data.{{ columns.dbt_is_deleted }} = 'True' {% endif %}\n )\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 {%- if strategy.hard_deletes == 'new_record' -%}\n , snapshotted_data.{{ columns.dbt_is_deleted }}\n {%- endif %}\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 }} {%- if strategy.hard_deletes == 'new_record' -%} or snapshotted_data.{{ columns.dbt_is_deleted }} = 'True' {% endif %}\n )\n )\n\n {%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}\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 {%- if strategy.hard_deletes == 'new_record' -%}\n , snapshotted_data.{{ columns.dbt_is_deleted }}\n {%- endif %}\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 {%- if strategy.hard_deletes == 'new_record' %}\n and not (\n --avoid updating the record's valid_to if the latest entry is marked as deleted\n snapshotted_data.{{ columns.dbt_is_deleted }} = 'True'\n and\n {% if config.get('dbt_valid_to_current') -%}\n snapshotted_data.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }}\n {%- else -%}\n snapshotted_data.{{ columns.dbt_valid_to }} is null\n {%- endif %}\n )\n {%- endif %}\n )\n {%- endif %}\n\n {%- if strategy.hard_deletes == 'new_record' %}\n {% set snapshotted_cols = get_list_of_column_names(get_columns_in_relation(target_relation)) %}\n {% set source_col_names = get_columns_in_query(source_sql) %}\n ,\n deletion_records as (\n\n select\n 'insert' as dbt_change_type,\n {%- for col_name in source_col_names -%}\n {%- if col_name in snapshotted_cols -%}\n snapshotted_data.{{ adapter.quote(col_name) }},\n {%- else -%}\n source_data.{{ adapter.quote(col_name) }},\n {%- endif -%}\n {% endfor -%}\n {%- if strategy.unique_key | is_list -%}\n {%- for key in strategy.unique_key -%}\n snapshotted_data.{{ key }} as dbt_unique_key_{{ loop.index }},\n {% endfor -%}\n {%- else -%}\n snapshotted_data.dbt_unique_key as dbt_unique_key,\n {% endif -%}\n {{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},\n {{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},\n snapshotted_data.{{ columns.dbt_valid_to }} as {{ columns.dbt_valid_to }},\n {{ new_scd_id }} as {{ columns.dbt_scd_id }},\n 'True' as {{ columns.dbt_is_deleted }}\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 and not (\n --avoid inserting a new record if the latest one is marked as deleted\n snapshotted_data.{{ columns.dbt_is_deleted }} = 'True'\n and\n {% if config.get('dbt_valid_to_current') -%}\n snapshotted_data.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }}\n {%- else -%}\n snapshotted_data.{{ columns.dbt_valid_to }} is null\n {%- endif %}\n )\n\n )\n {%- endif %}\n\n select * from insertions\n union all\n select * from updates\n {%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}\n union all\n select * from deletes\n {%- endif %}\n {%- if strategy.hard_deletes == 'new_record' %}\n union all\n select * from deletion_records\n {%- endif %}\n\n\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.get_snapshot_table_column_names", "macro.dbt.snapshot_hash_arguments", "macro.dbt.snapshot_get_time", "macro.dbt.unique_key_fields", "macro.dbt.equals", "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.get_list_of_column_names", "macro.dbt.get_columns_in_relation", "macro.dbt.get_columns_in_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "source_sql", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.2300842, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.230189, "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 {%- if strategy.hard_deletes == 'new_record' -%}\n , 'False' as {{ columns.dbt_is_deleted }}\n {% endif -%}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.230402, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.230578, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "snapshot_sql", "type": null, "description": ""}], "created_at": 1784225035.23084, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2310138, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "strategy", "type": null, "description": ""}, {"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.2311318, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "unique_key", "type": null, "description": ""}], "created_at": 1784225035.231342, "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\t {% set source_unique_key = (identifier ~ \".dbt_unique_key_\" ~ loop.index) | trim %}\n\t {% set target_unique_key = (from_identifier ~ \".dbt_unique_key_\" ~ loop.index) | trim %}\n\t {{ equals(source_unique_key, target_unique_key) }}\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": ["macro.dbt.equals"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "unique_key", "type": null, "description": ""}, {"name": "identifier", "type": null, "description": ""}, {"name": "from_identifier", "type": null, "description": ""}], "created_at": 1784225035.2316, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "unique_key", "type": null, "description": ""}, {"name": "identifier", "type": null, "description": ""}], "created_at": 1784225035.231696, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "unique_key", "type": null, "description": ""}, {"name": "identifier", "type": null, "description": ""}], "created_at": 1784225035.231779, "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.assert_valid_snapshot_target_given_strategy(target_relation, columns, strategy) }}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.233463, "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 {% set limit = config.get('limit') %}\n {% set sql_header = config.get('sql_header') if flags.REQUIRE_SQL_HEADER_IN_TEST_CONFIGS else none %}\n\n {% set sql_with_limit %}\n {{ get_limit_subquery_sql(sql, limit) }}\n {% endset %}\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 {% if sql_header %}{{ sql_header }}{% endif %}\n {{ get_create_sql(target_relation, sql_with_limit) }}\n {% endcall %}\n\n {% do relations.append(target_relation) %}\n\n {# Since the test failures have already been saved to the database, reuse that result rather than querying again #}\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_with_limit %}\n\n {% endif %}\n\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 {% if sql_header %}{{ sql_header }}{% endif %}\n {# The limit has already been included above, and we do not want to duplicate it again. We also want to be safe for macro overrides treating `limit` as a required parameter. #}\n {{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit=none)}}\n\n {%- endcall %}\n\n {{ return({'relations': relations}) }}\n\n{%- endmaterialization -%}", "depends_on": {"macros": ["macro.dbt.get_limit_subquery_sql", "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.2344708, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "main_sql", "type": null, "description": ""}, {"name": "fail_calc", "type": null, "description": ""}, {"name": "warn_if", "type": null, "description": ""}, {"name": "error_if", "type": null, "description": ""}, {"name": "limit", "type": null, "description": ""}], "created_at": 1784225035.234706, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "main_sql", "type": null, "description": ""}, {"name": "fail_calc", "type": null, "description": ""}, {"name": "warn_if", "type": null, "description": ""}, {"name": "error_if", "type": null, "description": ""}, {"name": "limit", "type": null, "description": ""}], "created_at": 1784225035.234825, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "main_sql", "type": null, "description": ""}, {"name": "expected_fixture_sql", "type": null, "description": ""}, {"name": "expected_column_names", "type": null, "description": ""}], "created_at": 1784225035.234905, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "main_sql", "type": null, "description": ""}, {"name": "expected_fixture_sql", "type": null, "description": ""}, {"name": "expected_column_names", "type": null, "description": ""}], "created_at": 1784225035.235138, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.235272, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2354162, "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 {% set sql_header = config.get('sql_header') if flags.REQUIRE_SQL_HEADER_IN_TEST_CONFIGS else none %}\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 {%- set column_name_to_quoted = {} -%}\n {%- for column in columns_in_relation -%}\n {%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n {%- do column_name_to_quoted.update({column.name|lower: column.quoted}) -%}\n {%- endfor -%}\n\n {%- set expected_column_names_quoted = [] -%}\n {%- for column_name in tested_expected_column_names -%}\n {%- do expected_column_names_quoted.append(column_name_to_quoted[column_name|lower]) -%}\n {%- endfor -%}\n\n {% if not expected_sql %}\n {% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types, column_name_to_quoted) %}\n {% endif %}\n {% set unit_test_sql = get_unit_test_sql(sql, expected_sql, expected_column_names_quoted) %}\n\n {% call statement('main', fetch_result=True) -%}\n\n {% if sql_header %}{{ sql_header }}{% endif %}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.236189, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.23681, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}, {"name": "pre_hooks", "type": null, "description": ""}], "created_at": 1784225035.2369611, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}, {"name": "post_hooks", "type": null, "description": ""}], "created_at": 1784225035.237083, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}], "created_at": 1784225035.237568, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.237663, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "build_sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "post_hooks", "type": null, "description": ""}], "created_at": 1784225035.237908, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.238715, "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 {% do create_indexes(intermediate_relation) %}\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 {{ 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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.2395608, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "column_names", "type": null, "description": ""}], "created_at": 1784225035.239943, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_columns", "type": null, "description": ""}, {"name": "target_columns", "type": null, "description": ""}], "created_at": 1784225035.240166, "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 {{ return(adapter.dispatch('diff_column_data_types', 'dbt')(source_columns, target_columns)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__diff_column_data_types"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_columns", "type": null, "description": ""}, {"name": "target_columns", "type": null, "description": ""}], "created_at": 1784225035.240252, "supported_languages": null}, "macro.dbt.default__diff_column_data_types": {"name": "default__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.default__diff_column_data_types", "macro_sql": "{% macro default__diff_column_data_types(source_columns, target_columns) %}\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.expanded_data_type != tc.expanded_data_type and not sc.can_expand_to(other_column=tc) %}\n {{ result.append( { 'column_name': tc.name, 'new_type': sc.expanded_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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_columns", "type": null, "description": ""}, {"name": "target_columns", "type": null, "description": ""}], "created_at": 1784225035.240507, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "merge_update_columns", "type": null, "description": ""}, {"name": "merge_exclude_columns", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}], "created_at": 1784225035.2406049, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "merge_update_columns", "type": null, "description": ""}, {"name": "merge_exclude_columns", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}], "created_at": 1784225035.240895, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "unique_key", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "incremental_predicates", "type": null, "description": ""}], "created_at": 1784225035.241386, "supported_languages": null}, "macro.dbt.get_merge_unique_key_match": {"name": "get_merge_unique_key_match", "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_unique_key_match", "macro_sql": "{% macro get_merge_unique_key_match(source_unique_key, target_unique_key) %}\n {{ return(adapter.dispatch('get_merge_unique_key_match', 'dbt')(source_unique_key, target_unique_key)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_merge_unique_key_match"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_unique_key", "type": null, "description": ""}, {"name": "target_unique_key", "type": null, "description": ""}], "created_at": 1784225035.241468, "supported_languages": null}, "macro.dbt.default__get_merge_unique_key_match": {"name": "default__get_merge_unique_key_match", "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_unique_key_match", "macro_sql": "{% macro default__get_merge_unique_key_match(source_unique_key, target_unique_key) -%}\n {{ return(equals(source_unique_key, target_unique_key) | trim) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.equals"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_unique_key", "type": null, "description": ""}, {"name": "target_unique_key", "type": null, "description": ""}], "created_at": 1784225035.241533, "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 source_unique_key = (\"DBT_INTERNAL_SOURCE.\" ~ unique_key) | trim %}\n {% set target_unique_key = (\"DBT_INTERNAL_DEST.\" ~ unique_key) | trim %}\n {% set unique_key_match = get_merge_unique_key_match(source_unique_key, target_unique_key) %}\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", "macro.dbt.get_merge_unique_key_match"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "unique_key", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "incremental_predicates", "type": null, "description": ""}], "created_at": 1784225035.242184, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "unique_key", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "incremental_predicates", "type": null, "description": ""}], "created_at": 1784225035.2422888, "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 string %}\n {% set unique_key = [unique_key] %}\n {% endif %}\n\n {%- set unique_key_str = unique_key|join(', ') -%}\n\n delete from {{ target }} as DBT_INTERNAL_DEST\n where ({{ unique_key_str }}) in (\n select distinct {{ unique_key_str }}\n from {{ source }} as DBT_INTERNAL_SOURCE\n )\n {%- if incremental_predicates %}\n {% for predicate in incremental_predicates %}\n and {{ predicate }}\n {% endfor %}\n {%- endif -%};\n\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "unique_key", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "incremental_predicates", "type": null, "description": ""}], "created_at": 1784225035.242562, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "predicates", "type": null, "description": ""}, {"name": "include_sql_header", "type": null, "description": ""}], "created_at": 1784225035.242666, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target", "type": null, "description": ""}, {"name": "source", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}, {"name": "predicates", "type": null, "description": ""}, {"name": "include_sql_header", "type": null, "description": ""}], "created_at": 1784225035.242919, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2431629, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.2434292, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.24352, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.2435899, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.243697, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.243812, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.243924, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.243996, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.244092, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.244164, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.244222, "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_postgres.postgres__get_incremental_microbatch_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.244291, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "arg_dict", "type": null, "description": ""}], "created_at": 1784225035.2443562, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}, {"name": "temp_relation", "type": null, "description": ""}, {"name": "dest_columns", "type": null, "description": ""}], "created_at": 1784225035.244462, "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 {% set relation_for_indexes = target_relation %}\n {% elif full_refresh_mode %}\n {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n {% set relation_for_indexes = intermediate_relation %}\n {% set need_swap = true %}\n {% else %}\n {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n {% set relation_for_indexes = temp_relation %}\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 existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n {% do create_indexes(relation_for_indexes) %}\n {% endif %}\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 {{ 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.create_indexes", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.246111, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "on_schema_change", "type": null, "description": ""}, {"name": "default", "type": null, "description": ""}], "created_at": 1784225035.246672, "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 {{ return(adapter.dispatch('check_for_schema_changes', 'dbt')(source_relation, target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__check_for_schema_changes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.246758, "supported_languages": null}, "macro.dbt.default__check_for_schema_changes": {"name": "default__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.default__check_for_schema_changes", "macro_sql": "{% macro default__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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.247231, "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 {{ return(adapter.dispatch('sync_column_schemas', 'dbt')(on_schema_change, target_relation, schema_changes_dict)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__sync_column_schemas"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "on_schema_change", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "schema_changes_dict", "type": null, "description": ""}], "created_at": 1784225035.247332, "supported_languages": null}, "macro.dbt.default__sync_column_schemas": {"name": "default__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.default__sync_column_schemas", "macro_sql": "{% macro default__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 {%- 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 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\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "on_schema_change", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "schema_changes_dict", "type": null, "description": ""}], "created_at": 1784225035.2477949, "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 {{ return(adapter.dispatch('process_schema_changes', 'dbt')(on_schema_change, source_relation, target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__process_schema_changes"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "on_schema_change", "type": null, "description": ""}, {"name": "source_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.247891, "supported_languages": null}, "macro.dbt.default__process_schema_changes": {"name": "default__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.default__process_schema_changes", "macro_sql": "{% macro default__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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "on_schema_change", "type": null, "description": ""}, {"name": "source_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.2482262, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2483351, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.248387, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "this_relation", "type": null, "description": ""}, {"name": "defer_relation", "type": null, "description": ""}], "created_at": 1784225035.248508, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "this_relation", "type": null, "description": ""}, {"name": "defer_relation", "type": null, "description": ""}], "created_at": 1784225035.2485812, "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 {%- set grant_config = config.get('grants') -%}\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 {% if target_relation.database == defer_relation.database and\n target_relation.schema == defer_relation.schema and\n target_relation.identifier == defer_relation.identifier %}\n {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation.render()) }}\n {% else %}\n {% call statement('main') %}\n {{ create_or_replace_clone(target_relation, defer_relation) }}\n {% endcall %}\n {% endif %}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.2496881, "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 = \"\" %}\n {% if rows_affected > 0 %}\n {% set sql = load_csv_rows(model, agate_table) %}\n {% endif %}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.250761, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.251154, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.251488, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "full_refresh", "type": null, "description": ""}, {"name": "old_relation", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.2515788, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "full_refresh", "type": null, "description": ""}, {"name": "old_relation", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.2517602, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "create_or_truncate_sql", "type": null, "description": ""}, {"name": "insert_sql", "type": null, "description": ""}], "created_at": 1784225035.2518358, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "create_or_truncate_sql", "type": null, "description": ""}, {"name": "insert_sql", "type": null, "description": ""}], "created_at": 1784225035.25189, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2519438, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.252042, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2521029, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.252149, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "column_names", "type": null, "description": ""}], "created_at": 1784225035.252327, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.2524009, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "agate_table", "type": null, "description": ""}], "created_at": 1784225035.2528582, "supported_languages": null}, "macro.dbt.scalar_function_sql": {"name": "scalar_function_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.scalar_function_sql", "macro_sql": "{% macro scalar_function_sql(target_relation) %}\n {{ return(adapter.dispatch('scalar_function_sql', 'dbt')(target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__scalar_function_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.253196, "supported_languages": null}, "macro.dbt.default__scalar_function_sql": {"name": "default__scalar_function_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__scalar_function_sql", "macro_sql": "{% macro default__scalar_function_sql(target_relation) %}\n {{ scalar_function_create_replace_signature_sql(target_relation) }}\n {{ scalar_function_body_sql() }};\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.scalar_function_create_replace_signature_sql", "macro.dbt.scalar_function_body_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.253268, "supported_languages": null}, "macro.dbt.scalar_function_create_replace_signature_sql": {"name": "scalar_function_create_replace_signature_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.scalar_function_create_replace_signature_sql", "macro_sql": "{% macro scalar_function_create_replace_signature_sql(target_relation) %}\n {{ return(adapter.dispatch('scalar_function_create_replace_signature_sql', 'dbt')(target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__scalar_function_create_replace_signature_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.253338, "supported_languages": null}, "macro.dbt.default__scalar_function_create_replace_signature_sql": {"name": "default__scalar_function_create_replace_signature_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__scalar_function_create_replace_signature_sql", "macro_sql": "{% macro default__scalar_function_create_replace_signature_sql(target_relation) %}\n CREATE OR REPLACE FUNCTION {{ target_relation.render() }} ({{ formatted_scalar_function_args_sql()}})\n RETURNS {{ model.returns.data_type }}\n {{ scalar_function_volatility_sql() }}\n AS\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.formatted_scalar_function_args_sql", "macro.dbt.scalar_function_volatility_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.253428, "supported_languages": null}, "macro.dbt.formatted_scalar_function_args_sql": {"name": "formatted_scalar_function_args_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.formatted_scalar_function_args_sql", "macro_sql": "{% macro formatted_scalar_function_args_sql() %}\n {{ return(adapter.dispatch('formatted_scalar_function_args_sql', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__formatted_scalar_function_args_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2534971, "supported_languages": null}, "macro.dbt.formatted_scalar_function_args_javascript": {"name": "formatted_scalar_function_args_javascript", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.formatted_scalar_function_args_javascript", "macro_sql": "{% macro formatted_scalar_function_args_javascript() %}\n {{ return(adapter.dispatch('formatted_scalar_function_args_javascript', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__formatted_scalar_function_args_javascript"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2535748, "supported_languages": null}, "macro.dbt.default__formatted_scalar_function_args_sql": {"name": "default__formatted_scalar_function_args_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__formatted_scalar_function_args_sql", "macro_sql": "{% macro default__formatted_scalar_function_args_sql() %}\n {% set args = [] %}\n {% for arg in model.arguments -%}\n {%- do args.append(arg.name ~ ' ' ~ arg.data_type) -%}\n {%- endfor %}\n {{ args | join(', ') }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.253711, "supported_languages": null}, "macro.dbt.default__formatted_scalar_function_args_javascript": {"name": "default__formatted_scalar_function_args_javascript", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__formatted_scalar_function_args_javascript", "macro_sql": "{% macro default__formatted_scalar_function_args_javascript() %}\n {% set msg = \"formatted_scalar_function_args_javascript not implemented for adapter \" ~ adapter.type() %}\n {% do exceptions.raise_compiler_error(msg) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.253796, "supported_languages": null}, "macro.dbt.scalar_function_body_sql": {"name": "scalar_function_body_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.scalar_function_body_sql", "macro_sql": "{% macro scalar_function_body_sql() %}\n {{ return(adapter.dispatch('scalar_function_body_sql', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__scalar_function_body_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.253859, "supported_languages": null}, "macro.dbt.default__scalar_function_body_sql": {"name": "default__scalar_function_body_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__scalar_function_body_sql", "macro_sql": "{% macro default__scalar_function_body_sql() %}\n $$\n {{ model.compiled_code }}\n $$ LANGUAGE SQL\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2539022, "supported_languages": null}, "macro.dbt.scalar_function_volatility_sql": {"name": "scalar_function_volatility_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.scalar_function_volatility_sql", "macro_sql": "{% macro scalar_function_volatility_sql() %}\n {{ return(adapter.dispatch('scalar_function_volatility_sql', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__scalar_function_volatility_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.253964, "supported_languages": null}, "macro.dbt.scalar_function_volatility_javascript": {"name": "scalar_function_volatility_javascript", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.scalar_function_volatility_javascript", "macro_sql": "{% macro scalar_function_volatility_javascript() %}\n {{ return(adapter.dispatch('scalar_function_volatility_javascript', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__scalar_function_volatility_javascript"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.254025, "supported_languages": null}, "macro.dbt.default__scalar_function_volatility_javascript": {"name": "default__scalar_function_volatility_javascript", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__scalar_function_volatility_javascript", "macro_sql": "{% macro default__scalar_function_volatility_javascript() %}\n {% set volatility = model.config.get('volatility') %}\n {% if volatility != none %}\n {% set msg = \"Volatility is not supported by \" ~ adapter.type() ~ \" in javascript UDF and will be ignored\" %}\n {% do exceptions.warn(msg) %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.254156, "supported_languages": null}, "macro.dbt.default__scalar_function_volatility_sql": {"name": "default__scalar_function_volatility_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__scalar_function_volatility_sql", "macro_sql": "{% macro default__scalar_function_volatility_sql() %}\n {% set volatility = model.config.get('volatility') %}\n {% if volatility == 'deterministic' %}\n IMMUTABLE\n {% elif volatility == 'stable' %}\n STABLE\n {% elif volatility == 'non-deterministic' %}\n VOLATILE\n {% elif volatility != none %}\n {# This shouldn't happen unless a new volatility is invented #}\n {% do unsupported_volatility_warning(volatility) %}\n {% endif %}\n {# If no volatility is set, don't add anything and let the data warehouse default it #}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.unsupported_volatility_warning"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.254315, "supported_languages": null}, "macro.dbt.unsupported_volatility_warning": {"name": "unsupported_volatility_warning", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.unsupported_volatility_warning", "macro_sql": "{% macro unsupported_volatility_warning(volatility) %}\n {{ return(adapter.dispatch('unsupported_volatility_warning', 'dbt')(volatility)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__unsupported_volatility_warning"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "volatility", "type": null, "description": ""}], "created_at": 1784225035.2543879, "supported_languages": null}, "macro.dbt.default__unsupported_volatility_warning": {"name": "default__unsupported_volatility_warning", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/scalar.sql", "original_file_path": "macros/materializations/functions/scalar.sql", "unique_id": "macro.dbt.default__unsupported_volatility_warning", "macro_sql": "{% macro default__unsupported_volatility_warning(volatility) %}\n {% set msg = \"Found `\" ~ volatility ~ \"` volatility specified on function `\" ~ model.name ~ \"`. This volatility is not supported by \" ~ adapter.type() ~ \", and will be ignored\" %}\n {% do exceptions.warn(msg) %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "volatility", "type": null, "description": ""}], "created_at": 1784225035.2544901, "supported_languages": null}, "macro.dbt.function_execute_build_sql": {"name": "function_execute_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/helpers.sql", "original_file_path": "macros/materializations/functions/helpers.sql", "unique_id": "macro.dbt.function_execute_build_sql", "macro_sql": "{% macro function_execute_build_sql(build_sql, existing_relation, target_relation) %}\n {{ return(adapter.dispatch('function_execute_build_sql', 'dbt')(build_sql, existing_relation, target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__function_execute_build_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "build_sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.2546391, "supported_languages": null}, "macro.dbt.default__function_execute_build_sql": {"name": "default__function_execute_build_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/helpers.sql", "original_file_path": "macros/materializations/functions/helpers.sql", "unique_id": "macro.dbt.default__function_execute_build_sql", "macro_sql": "{% macro default__function_execute_build_sql(build_sql, existing_relation, target_relation) %}\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 {{ adapter.commit() }}\n\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.should_revoke", "macro.dbt.apply_grants", "macro.dbt.persist_docs"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "build_sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.254876, "supported_languages": null}, "macro.dbt.get_aggregate_function_create_replace_signature": {"name": "get_aggregate_function_create_replace_signature", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.get_aggregate_function_create_replace_signature", "macro_sql": "{% macro get_aggregate_function_create_replace_signature(target_relation) %}\n {{ return(adapter.dispatch('get_aggregate_function_create_replace_signature', 'dbt')(target_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_aggregate_function_create_replace_signature"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.255144, "supported_languages": null}, "macro.dbt.default__get_aggregate_function_create_replace_signature": {"name": "default__get_aggregate_function_create_replace_signature", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.default__get_aggregate_function_create_replace_signature", "macro_sql": "{% macro default__get_aggregate_function_create_replace_signature(target_relation) %}\n CREATE OR REPLACE AGGREGATE FUNCTION {{ target_relation.render() }} ({{ get_formatted_aggregate_function_args()}})\n RETURNS {{ model.returns.data_type }}\n {{ get_function_language_specifier() }}\n {{ get_aggregate_function_volatility_specifier() }}\n {% if model.get('language') == 'python' %}\n {{ get_function_python_options() }}\n {% endif %}\n AS\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.get_formatted_aggregate_function_args", "macro.dbt.get_function_language_specifier", "macro.dbt.get_aggregate_function_volatility_specifier", "macro.dbt.get_function_python_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "target_relation", "type": null, "description": ""}], "created_at": 1784225035.255285, "supported_languages": null}, "macro.dbt.get_formatted_aggregate_function_args": {"name": "get_formatted_aggregate_function_args", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.get_formatted_aggregate_function_args", "macro_sql": "{% macro get_formatted_aggregate_function_args() %}\n {{ return(adapter.dispatch('get_formatted_aggregate_function_args', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_formatted_aggregate_function_args"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2553542, "supported_languages": null}, "macro.dbt.default__get_formatted_aggregate_function_args": {"name": "default__get_formatted_aggregate_function_args", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.default__get_formatted_aggregate_function_args", "macro_sql": "{% macro default__get_formatted_aggregate_function_args() %}\n {# conveniently we can reuse the sql scalar function args #}\n {{ formatted_scalar_function_args_sql() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.formatted_scalar_function_args_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2554, "supported_languages": null}, "macro.dbt.get_function_language_specifier": {"name": "get_function_language_specifier", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.get_function_language_specifier", "macro_sql": "{% macro get_function_language_specifier() %}\n {{ return(adapter.dispatch('get_function_language_specifier', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_function_language_specifier"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.255462, "supported_languages": null}, "macro.dbt.default__get_function_language_specifier": {"name": "default__get_function_language_specifier", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.default__get_function_language_specifier", "macro_sql": "{% macro default__get_function_language_specifier() %}\n {% set language = model.get('language') %}\n {% if language == 'sql' %}\n {# generally you dont need to specify the language for sql functions #}\n {% elif language == 'python' %}\n LANGUAGE PYTHON\n {% elif language == 'javascript' %}\n LANGUAGE js\n {% else %}\n {{ 'LANGUAGE ' ~ language.upper() }}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.255601, "supported_languages": null}, "macro.dbt.get_aggregate_function_volatility_specifier": {"name": "get_aggregate_function_volatility_specifier", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.get_aggregate_function_volatility_specifier", "macro_sql": "{% macro get_aggregate_function_volatility_specifier() %}\n {{ return(adapter.dispatch('get_aggregate_function_volatility_specifier', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_aggregate_function_volatility_specifier"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.255667, "supported_languages": null}, "macro.dbt.default__get_aggregate_function_volatility_specifier": {"name": "default__get_aggregate_function_volatility_specifier", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.default__get_aggregate_function_volatility_specifier", "macro_sql": "{% macro default__get_aggregate_function_volatility_specifier() %}\n {{ scalar_function_volatility_sql() }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.scalar_function_volatility_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2557068, "supported_languages": null}, "macro.dbt.get_function_python_options": {"name": "get_function_python_options", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.get_function_python_options", "macro_sql": "{% macro get_function_python_options() %}\n {{ return(adapter.dispatch('get_function_python_options', 'dbt')()) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__get_function_python_options"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.255768, "supported_languages": null}, "macro.dbt.default__get_function_python_options": {"name": "default__get_function_python_options", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/aggregate.sql", "original_file_path": "macros/materializations/functions/aggregate.sql", "unique_id": "macro.dbt.default__get_function_python_options", "macro_sql": "{% macro default__get_function_python_options() %}\n RUNTIME_VERSION = '{{ model.config.get('runtime_version') }}'\n HANDLER = '{{ model.config.get('entry_point') }}'\n {% set packages = model.config.get('packages', []) %}\n {% if packages %}\n PACKAGES = ('{{ packages | join(\"','\") }}')\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.255906, "supported_languages": null}, "macro.dbt.materialization_function_default": {"name": "materialization_function_default", "resource_type": "macro", "package_name": "dbt", "path": "macros/materializations/functions/function.sql", "original_file_path": "macros/materializations/functions/function.sql", "unique_id": "macro.dbt.materialization_function_default", "macro_sql": "{% materialization function, default, supported_languages=['sql', 'python', 'javascript'] %}\n {% set existing_relation = load_cached_relation(this) %}\n {% set target_relation = this.incorporate(type=this.Function) %}\n\n {{ run_hooks(pre_hooks) }}\n\n {% set function_config = this.get_function_config(model) %}\n {% set macro_name = this.get_function_macro_name(function_config) %}\n\n {# Doing this aliasing of adapter.dispatch is a hacky way to disable the static analysis of actually calling adapter.dispatch #}\n {# This is necessary because the static analysis breaks being able to dynamically pass a macro_name #}\n {% set _dispatch = adapter.dispatch %}\n\n {% set build_sql = _dispatch(macro_name, 'dbt')(target_relation) %}\n {{ function_execute_build_sql(build_sql, existing_relation, target_relation) }}\n {{ run_hooks(post_hooks) }}\n\n {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}", "depends_on": {"macros": ["macro.dbt.load_cached_relation", "macro.dbt.run_hooks", "macro.dbt.function_execute_build_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "supported_languages", "type": null, "description": ""}], "created_at": 1784225035.256268, "supported_languages": ["sql", "python", "javascript"]}, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_alias_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.256427, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_alias_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.256581, "supported_languages": null}, "macro.dbt.generate_latest_version_pointer_alias": {"name": "generate_latest_version_pointer_alias", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_latest_version_pointer_alias.sql", "original_file_path": "macros/get_custom_name/get_latest_version_pointer_alias.sql", "unique_id": "macro.dbt.generate_latest_version_pointer_alias", "macro_sql": "{% macro generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}\n {% do return(adapter.dispatch('generate_latest_version_pointer_alias', 'dbt')(custom_alias_name, node)) %}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt.default__generate_latest_version_pointer_alias"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_alias_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.2567308, "supported_languages": null}, "macro.dbt.default__generate_latest_version_pointer_alias": {"name": "default__generate_latest_version_pointer_alias", "resource_type": "macro", "package_name": "dbt", "path": "macros/get_custom_name/get_latest_version_pointer_alias.sql", "original_file_path": "macros/get_custom_name/get_latest_version_pointer_alias.sql", "unique_id": "macro.dbt.default__generate_latest_version_pointer_alias", "macro_sql": "{% macro default__generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}\n {%- if custom_alias_name -%}\n {{ custom_alias_name | trim }}\n {%- else -%}\n {{ node.name }}\n {%- endif -%}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_alias_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.2568169, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_schema_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.2569962, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_schema_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.257099, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_schema_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.257215, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_database_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.2573838, "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 node is not none and node|attr('database') -%}\n {%- set catalog_relation = adapter.build_catalog_relation(node) -%}\n {%- if catalog_relation and catalog_relation|attr('catalog_database') -%}\n {{ return(catalog_relation.catalog_database) }}\n {%- endif -%}\n {%- endif -%}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "custom_database_name", "type": null, "description": ""}, {"name": "node", "type": null, "description": ""}], "created_at": 1784225035.257584, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.257782, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.257984, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.258065, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.258147, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.258226, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.258467, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "target_relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.258959, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.259108, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2592041, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_name", "type": null, "description": ""}], "created_at": 1784225035.2593122, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_name", "type": null, "description": ""}], "created_at": 1784225035.259392, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.259509, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.259636, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.259831, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.259997, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "from_relation", "type": null, "description": ""}, {"name": "to_relation", "type": null, "description": ""}], "created_at": 1784225035.2600782, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "from_relation", "type": null, "description": ""}, {"name": "to_relation", "type": null, "description": ""}], "created_at": 1784225035.260192, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.260319, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.260422, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2605708, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.260739, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2608619, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.260944, "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_postgres.postgres__drop_materialized_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.261044, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.261256, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.261365, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.261426, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.261554, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.261606, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.261732, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.2617931, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "configuration_changes", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}], "created_at": 1784225035.2620091, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "configuration_changes", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}, {"name": "existing_relation", "type": null, "description": ""}, {"name": "backup_relation", "type": null, "description": ""}, {"name": "intermediate_relation", "type": null, "description": ""}], "created_at": 1784225035.262083, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "new_config", "type": null, "description": ""}], "created_at": 1784225035.262196, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "new_config", "type": null, "description": ""}], "created_at": 1784225035.262254, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.262363, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.26242, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.26273, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.262778, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.26298, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2630458, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.263098, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.263626, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.263776, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "column", "type": null, "description": ""}], "created_at": 1784225035.2639081, "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_postgres.postgres__drop_table"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.264013, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.264063, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.26417, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.264226, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.264332, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.264388, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "temporary", "type": null, "description": ""}, {"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2646348, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "temporary", "type": null, "description": ""}, {"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.264703, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "temporary", "type": null, "description": ""}, {"name": "relation", "type": null, "description": ""}, {"name": "compiled_code", "type": null, "description": ""}, {"name": "language", "type": null, "description": ""}], "created_at": 1784225035.264863, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "temporary", "type": null, "description": ""}, {"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.265124, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.265305, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.265376, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.265443, "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_postgres.postgres__drop_view"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.265549, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.265598, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2658062, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.265864, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2663622, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "full_refresh", "type": null, "description": ""}, {"name": "old_relation", "type": null, "description": ""}], "created_at": 1784225035.266449, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "full_refresh", "type": null, "description": ""}, {"name": "old_relation", "type": null, "description": ""}], "created_at": 1784225035.2665448, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.266664, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "new_name", "type": null, "description": ""}], "created_at": 1784225035.266725, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2668831, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.266947, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.267017, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.267191, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}, {"name": "to", "type": null, "description": ""}, {"name": "field", "type": null, "description": ""}], "created_at": 1784225035.267328, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}], "created_at": 1784225035.267445, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}], "created_at": 1784225035.26754, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}, {"name": "values", "type": null, "description": ""}, {"name": "quote", "type": null, "description": ""}], "created_at": 1784225035.2677429, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "name", "type": null, "description": ""}, {"name": "fetch_result", "type": null, "description": ""}, {"name": "auto_begin", "type": null, "description": ""}, {"name": "language", "type": null, "description": ""}], "created_at": 1784225035.268249, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "name", "type": null, "description": ""}, {"name": "message", "type": null, "description": ""}, {"name": "code", "type": null, "description": ""}, {"name": "rows_affected", "type": null, "description": ""}, {"name": "res", "type": null, "description": ""}], "created_at": 1784225035.268476, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2685912, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "date_str", "type": null, "description": ""}, {"name": "date_fmt", "type": null, "description": ""}], "created_at": 1784225035.268883, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "start_date_str", "type": null, "description": ""}, {"name": "end_date_str", "type": null, "description": ""}, {"name": "in_fmt", "type": null, "description": ""}, {"name": "out_fmt", "type": null, "description": ""}], "created_at": 1784225035.2693288, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "raw_partition_date", "type": null, "description": ""}, {"name": "date_fmt", "type": null, "description": ""}], "created_at": 1784225035.269717, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.269832, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.269933, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2699661, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "start_date", "type": null, "description": ""}, {"name": "end_date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.2701728, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "start_date", "type": null, "description": ""}, {"name": "end_date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.270414, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "start_date", "type": null, "description": ""}, {"name": "end_date", "type": null, "description": ""}], "created_at": 1784225035.270505, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "start_date", "type": null, "description": ""}, {"name": "end_date", "type": null, "description": ""}], "created_at": 1784225035.2706492, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "year", "type": null, "description": ""}, {"name": "month", "type": null, "description": ""}, {"name": "day", "type": null, "description": ""}], "created_at": 1784225035.2707798, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "year", "type": null, "description": ""}, {"name": "month", "type": null, "description": ""}, {"name": "day", "type": null, "description": ""}], "created_at": 1784225035.2708921, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "old_chars", "type": null, "description": ""}, {"name": "new_chars", "type": null, "description": ""}], "created_at": 1784225035.271019, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "old_chars", "type": null, "description": ""}, {"name": "new_chars", "type": null, "description": ""}], "created_at": 1784225035.2710881, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "fields", "type": null, "description": ""}], "created_at": 1784225035.271189, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "fields", "type": null, "description": ""}], "created_at": 1784225035.27124, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "upper_bound", "type": null, "description": ""}], "created_at": 1784225035.2714188, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "upper_bound", "type": null, "description": ""}], "created_at": 1784225035.271582, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "upper_bound", "type": null, "description": ""}], "created_at": 1784225035.2716532, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "upper_bound", "type": null, "description": ""}], "created_at": 1784225035.271859, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.2719731, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.2720158, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "interval", "type": null, "description": ""}, {"name": "from_date_or_timestamp", "type": null, "description": ""}], "created_at": 1784225035.27214, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "interval", "type": null, "description": ""}, {"name": "from_date_or_timestamp", "type": null, "description": ""}], "created_at": 1784225035.272204, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.272293, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.272367, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.272479, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.272537, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "length_expression", "type": null, "description": ""}], "created_at": 1784225035.272651, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "length_expression", "type": null, "description": ""}], "created_at": 1784225035.272707, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "measure", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "order_by_clause", "type": null, "description": ""}, {"name": "limit_num", "type": null, "description": ""}], "created_at": 1784225035.272888, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "measure", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "order_by_clause", "type": null, "description": ""}, {"name": "limit_num", "type": null, "description": ""}], "created_at": 1784225035.273042, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "first_date", "type": null, "description": ""}, {"name": "second_date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.2731678, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "first_date", "type": null, "description": ""}, {"name": "second_date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.273233, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.2733471, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.273403, "supported_languages": null}, "macro.dbt.equals": {"name": "equals", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/equals.sql", "original_file_path": "macros/utils/equals.sql", "unique_id": "macro.dbt.equals", "macro_sql": "{% macro equals(expr1, expr2) %}\n {{ return(adapter.dispatch('equals', 'dbt') (expr1, expr2)) }}\n{%- endmacro %}", "depends_on": {"macros": ["macro.dbt_postgres.postgres__equals"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expr1", "type": null, "description": ""}, {"name": "expr2", "type": null, "description": ""}], "created_at": 1784225035.273529, "supported_languages": null}, "macro.dbt.default__equals": {"name": "default__equals", "resource_type": "macro", "package_name": "dbt", "path": "macros/utils/equals.sql", "original_file_path": "macros/utils/equals.sql", "unique_id": "macro.dbt.default__equals", "macro_sql": "{% macro default__equals(expr1, expr2) -%}\n{%- if adapter.behavior.enable_truthy_nulls_equals_macro.no_warn %}\n case when (({{ expr1 }} = {{ expr2 }}) or ({{ expr1 }} is null and {{ expr2 }} is null))\n then 0\n else 1\n end = 0\n{%- else -%}\n ({{ expr1 }} = {{ expr2 }})\n{%- endif %}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expr1", "type": null, "description": ""}, {"name": "expr2", "type": null, "description": ""}], "created_at": 1784225035.273648, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}], "created_at": 1784225035.273751, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}], "created_at": 1784225035.273814, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}], "created_at": 1784225035.273911, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}], "created_at": 1784225035.273973, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.274086, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "field", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.2741382, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.274237, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.274292, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "substring_text", "type": null, "description": ""}, {"name": "string_text", "type": null, "description": ""}], "created_at": 1784225035.274412, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "substring_text", "type": null, "description": ""}, {"name": "string_text", "type": null, "description": ""}], "created_at": 1784225035.274518, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "value", "type": null, "description": ""}], "created_at": 1784225035.274627, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "value", "type": null, "description": ""}], "created_at": 1784225035.274672, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.274988, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275048, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275115, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275172, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275233, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275297, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275368, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275438, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275499, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275559, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275618, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2756748, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275737, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.275792, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "array_1", "type": null, "description": ""}, {"name": "array_2", "type": null, "description": ""}], "created_at": 1784225035.275908, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "array_1", "type": null, "description": ""}, {"name": "array_2", "type": null, "description": ""}], "created_at": 1784225035.275962, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.2760599, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "expression", "type": null, "description": ""}], "created_at": 1784225035.276101, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.276224, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.276372, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "date", "type": null, "description": ""}, {"name": "datepart", "type": null, "description": ""}], "created_at": 1784225035.276434, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "part_number", "type": null, "description": ""}], "created_at": 1784225035.276583, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "part_number", "type": null, "description": ""}], "created_at": 1784225035.276649, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "string_text", "type": null, "description": ""}, {"name": "delimiter_text", "type": null, "description": ""}, {"name": "part_number", "type": null, "description": ""}], "created_at": 1784225035.276733, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "date", "type": null, "description": ""}], "created_at": 1784225035.276843, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "datepart", "type": null, "description": ""}, {"name": "date", "type": null, "description": ""}], "created_at": 1784225035.276897, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "inputs", "type": null, "description": ""}, {"name": "data_type", "type": null, "description": ""}], "created_at": 1784225035.277044, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "inputs", "type": null, "description": ""}, {"name": "data_type", "type": null, "description": ""}], "created_at": 1784225035.27715, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "array", "type": null, "description": ""}, {"name": "new_element", "type": null, "description": ""}], "created_at": 1784225035.277266, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "array", "type": null, "description": ""}, {"name": "new_element", "type": null, "description": ""}], "created_at": 1784225035.277319, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2774458, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.277517, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.277577, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.277645, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.277834, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.277892, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.277945, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.277985, "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_postgres.postgres__snapshot_get_time", "macro.dbt.get_column_schema_from_query"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2781398, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2782028, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2782369, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.278307, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.278421, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_dict", "type": null, "description": ""}], "created_at": 1784225035.27862, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_dict", "type": null, "description": ""}], "created_at": 1784225035.2786748, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.278738, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2788858, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_name", "type": null, "description": ""}], "created_at": 1784225035.278961, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "index_name", "type": null, "description": ""}], "created_at": 1784225035.279016, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.279076, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2791219, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.279399, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.2794619, "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 {#-- This ensures microbatch batches get unique temp relations to avoid clobbering --#}\n {% if suffix == '__dbt_tmp' and model.batch %}\n {% set suffix = suffix ~ '_' ~ model.batch.id %}\n {% endif %}\n\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.279677, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.279831, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "backup_relation_type", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.2799392, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "base_relation", "type": null, "description": ""}, {"name": "backup_relation_type", "type": null, "description": ""}, {"name": "suffix", "type": null, "description": ""}], "created_at": 1784225035.280067, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.280139, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.28021, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}, {"name": "schema", "type": null, "description": ""}, {"name": "identifier", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.2803042, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}, {"name": "schema", "type": null, "description": ""}, {"name": "identifier", "type": null, "description": ""}, {"name": "type", "type": null, "description": ""}], "created_at": 1784225035.280512, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2806022, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.280659, "supported_languages": null}, "macro.dbt.is_core_v2": {"name": "is_core_v2", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/runtime.sql", "original_file_path": "macros/adapters/runtime.sql", "unique_id": "macro.dbt.is_core_v2", "macro_sql": "{% macro is_core_v2() -%}\n {%- set major_version = (dbt_version.split('.') | first) | int -%}\n {{ return(major_version == 2) }}\n{%- endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.280787, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source", "type": null, "description": ""}, {"name": "loaded_at_field", "type": null, "description": ""}, {"name": "filter", "type": null, "description": ""}], "created_at": 1784225035.2810292, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source", "type": null, "description": ""}, {"name": "loaded_at_field", "type": null, "description": ""}, {"name": "filter", "type": null, "description": ""}], "created_at": 1784225035.281193, "supported_languages": null}, "macro.dbt.collect_freshness_custom_sql": {"name": "collect_freshness_custom_sql", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/freshness.sql", "original_file_path": "macros/adapters/freshness.sql", "unique_id": "macro.dbt.collect_freshness_custom_sql", "macro_sql": "{% macro collect_freshness_custom_sql(source, loaded_at_query) %}\n {{ return(adapter.dispatch('collect_freshness_custom_sql', 'dbt')(source, loaded_at_query))}}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__collect_freshness_custom_sql"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source", "type": null, "description": ""}, {"name": "loaded_at_query", "type": null, "description": ""}], "created_at": 1784225035.281279, "supported_languages": null}, "macro.dbt.default__collect_freshness_custom_sql": {"name": "default__collect_freshness_custom_sql", "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_custom_sql", "macro_sql": "{% macro default__collect_freshness_custom_sql(source, loaded_at_query) %}\n {% call statement('collect_freshness_custom_sql', fetch_result=True, auto_begin=False) -%}\n with source_query as (\n {{ loaded_at_query }}\n )\n select\n (select * from source_query) as max_loaded_at,\n {{ current_timestamp() }} as snapshotted_at\n {% endcall %}\n {{ return(load_result('collect_freshness_custom_sql')) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.statement", "macro.dbt.current_timestamp"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "source", "type": null, "description": ""}, {"name": "loaded_at_query", "type": null, "description": ""}], "created_at": 1784225035.2814121, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.2815292, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}], "created_at": 1784225035.281624, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2820969, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.282142, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2822049, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.282249, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "existing_relation", "type": null, "description": ""}, {"name": "full_refresh_mode", "type": null, "description": ""}], "created_at": 1784225035.282384, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.282457, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.282503, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "privilege", "type": null, "description": ""}, {"name": "grantees", "type": null, "description": ""}], "created_at": 1784225035.2825952, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "privilege", "type": null, "description": ""}, {"name": "grantees", "type": null, "description": ""}], "created_at": 1784225035.282686, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "privilege", "type": null, "description": ""}, {"name": "grantees", "type": null, "description": ""}], "created_at": 1784225035.282781, "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 {%- set quoted_grantees = [] -%}\n {%- for grantee in grantees -%}\n {%- do quoted_grantees.append(adapter.quote(grantee)) -%}\n {%- endfor -%}\n revoke {{ privilege }} on {{ relation.render() }} from {{ quoted_grantees | join(', ') }}\n{%- endmacro -%}\n\n\n", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "privilege", "type": null, "description": ""}, {"name": "grantees", "type": null, "description": ""}], "created_at": 1784225035.282943, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "grant_config", "type": null, "description": ""}, {"name": "get_dcl_macro", "type": null, "description": ""}], "created_at": 1784225035.283037, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "grant_config", "type": null, "description": ""}, {"name": "get_dcl_macro", "type": null, "description": ""}], "created_at": 1784225035.2833128, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "dcl_statement_list", "type": null, "description": ""}], "created_at": 1784225035.2833889, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "dcl_statement_list", "type": null, "description": ""}], "created_at": 1784225035.28349, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "grant_config", "type": null, "description": ""}, {"name": "should_revoke", "type": null, "description": ""}], "created_at": 1784225035.2836301, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "grant_config", "type": null, "description": ""}, {"name": "should_revoke", "type": null, "description": ""}], "created_at": 1784225035.284075, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "compiled_code", "type": null, "description": ""}, {"name": "sql_header", "type": null, "description": ""}, {"name": "limit", "type": null, "description": ""}], "created_at": 1784225035.284245, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}, {"name": "limit", "type": null, "description": ""}], "created_at": 1784225035.284317, "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 {{ sql }}\n {% if limit is not none %}\n limit {{ limit }}\n {%- endif -%}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "sql", "type": null, "description": ""}, {"name": "limit", "type": null, "description": ""}], "created_at": 1784225035.2843919, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_dict", "type": null, "description": ""}], "created_at": 1784225035.284659, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_dict", "type": null, "description": ""}], "created_at": 1784225035.284723, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "relation_comment", "type": null, "description": ""}], "created_at": 1784225035.2848, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "relation_comment", "type": null, "description": ""}], "created_at": 1784225035.284864, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "model", "type": null, "description": ""}, {"name": "for_relation", "type": null, "description": ""}, {"name": "for_columns", "type": null, "description": ""}], "created_at": 1784225035.284965, "supported_languages": null}, "macro.dbt.validate_doc_columns": {"name": "validate_doc_columns", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/persist_docs.sql", "original_file_path": "macros/adapters/persist_docs.sql", "unique_id": "macro.dbt.validate_doc_columns", "macro_sql": "{% macro validate_doc_columns(relation, column_dict, existing_column_names) %}\n {% set existing_lower = existing_column_names | map(\"lower\") | list %}\n {% set missing = [] %}\n {% set filtered = {} %}\n {% for col_name in column_dict %}\n {% set is_quoted = column_dict[col_name]['quote'] %}\n {% if is_quoted %}\n {% set present = col_name in existing_column_names %}\n {% else %}\n {% set present = col_name | lower in existing_lower %}\n {% endif %}\n {% if present %}\n {% do filtered.update({col_name: column_dict[col_name]}) %}\n {% else %}\n {% do missing.append(col_name) %}\n {% endif %}\n {% endfor %}\n {% if missing | length > 0 %}\n {{ exceptions.warn(\"In relation \" ~ relation.render() ~ \": The following columns are specified in the schema but are not present in the database: \" ~ missing | join(\", \")) }}\n {% endif %}\n {{ return(filtered) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_dict", "type": null, "description": ""}, {"name": "existing_column_names", "type": null, "description": ""}], "created_at": 1784225035.285355, "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 {% set existing_columns = adapter.get_columns_in_relation(relation) | map(attribute=\"name\") | list %}\n {% set filtered_columns = validate_doc_columns(relation, model.columns, existing_columns) %}\n {% set alter_comment_sql = alter_column_comment(relation, filtered_columns) %}\n {% if alter_comment_sql and alter_comment_sql | trim | length > 0 %}\n {% do run_query(alter_comment_sql) %}\n {% endif %}\n {% endif %}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.run_query", "macro.dbt.alter_relation_comment", "macro.dbt.validate_doc_columns", "macro.dbt.alter_column_comment"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "model", "type": null, "description": ""}, {"name": "for_relation", "type": null, "description": ""}, {"name": "for_columns", "type": null, "description": ""}], "created_at": 1784225035.2856882, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "relations", "type": null, "description": ""}], "created_at": 1784225035.286056, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "relations", "type": null, "description": ""}], "created_at": 1784225035.286159, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schemas", "type": null, "description": ""}], "created_at": 1784225035.2862358, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schemas", "type": null, "description": ""}], "created_at": 1784225035.2863371, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.2864058, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.28647, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.286538, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "database", "type": null, "description": ""}], "created_at": 1784225035.286628, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schema", "type": null, "description": ""}], "created_at": 1784225035.286707, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "schema", "type": null, "description": ""}], "created_at": 1784225035.28688, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_relation", "type": null, "description": ""}], "created_at": 1784225035.286956, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_relation", "type": null, "description": ""}], "created_at": 1784225035.287022, "supported_languages": null}, "macro.dbt.list_function_relations_without_caching": {"name": "list_function_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_function_relations_without_caching", "macro_sql": "{% macro list_function_relations_without_caching(schema_relation) %}\n {{ return(adapter.dispatch('list_function_relations_without_caching', 'dbt')(schema_relation)) }}\n{% endmacro %}", "depends_on": {"macros": ["macro.dbt.default__list_function_relations_without_caching"]}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_relation", "type": null, "description": ""}], "created_at": 1784225035.2870898, "supported_languages": null}, "macro.dbt.default__list_function_relations_without_caching": {"name": "default__list_function_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_function_relations_without_caching", "macro_sql": "{% macro default__list_function_relations_without_caching(schema_relation) %}\n {{ exceptions.raise_not_implemented(\n 'list_function_relations_without_caching macro not implemented for adapter '+adapter.type()) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "schema_relation", "type": null, "description": ""}], "created_at": 1784225035.287151, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.287221, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2872808, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.287342, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2873979, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "relations", "type": null, "description": ""}], "created_at": 1784225035.287474, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "information_schema", "type": null, "description": ""}, {"name": "relations", "type": null, "description": ""}], "created_at": 1784225035.287539, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.2880151, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}], "created_at": 1784225035.288077, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "table", "type": null, "description": ""}], "created_at": 1784225035.288196, "supported_languages": null}, "macro.dbt.get_list_of_column_names": {"name": "get_list_of_column_names", "resource_type": "macro", "package_name": "dbt", "path": "macros/adapters/columns.sql", "original_file_path": "macros/adapters/columns.sql", "unique_id": "macro.dbt.get_list_of_column_names", "macro_sql": "\n\n{%- macro get_list_of_column_names(columns) -%}\n {% set col_names = [] %}\n {% for col in columns %}\n {% do col_names.append(col.name) %}\n {% endfor %}\n {{ return(col_names) }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.2883031, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "select_sql", "type": null, "description": ""}, {"name": "select_sql_header", "type": null, "description": ""}], "created_at": 1784225035.288387, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "select_sql", "type": null, "description": ""}, {"name": "select_sql_header", "type": null, "description": ""}], "created_at": 1784225035.288468, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.2885382, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "columns", "type": null, "description": ""}], "created_at": 1784225035.2889779, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "select_sql", "type": null, "description": ""}, {"name": "select_sql_header", "type": null, "description": ""}], "created_at": 1784225035.2891579, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "select_sql", "type": null, "description": ""}], "created_at": 1784225035.2892318, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "select_sql", "type": null, "description": ""}], "created_at": 1784225035.289361, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}, {"name": "new_column_type", "type": null, "description": ""}], "created_at": 1784225035.289449, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "column_name", "type": null, "description": ""}, {"name": "new_column_type", "type": null, "description": ""}], "created_at": 1784225035.289737, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "add_columns", "type": null, "description": ""}, {"name": "remove_columns", "type": null, "description": ""}], "created_at": 1784225035.2898428, "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.quoted }} {{ column.expanded_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.quoted }}{{ ',' 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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "relation", "type": null, "description": ""}, {"name": "add_columns", "type": null, "description": ""}, {"name": "remove_columns", "type": null, "description": ""}], "created_at": 1784225035.2901492, "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{%- set column_name_to_quoted = {} -%}\n{%- for column in columns_in_relation -%}\n\n{#-- This needs to be a case-insensitive comparison --#}\n{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%- do column_name_to_quoted.update({column.name|lower: column.quoted}) -%}\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_to_quoted[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_to_quoted[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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "rows", "type": null, "description": ""}, {"name": "column_name_to_data_types", "type": null, "description": ""}], "created_at": 1784225035.2912042, "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, column_name_to_quoted) %}\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_to_quoted[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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "rows", "type": null, "description": ""}, {"name": "column_name_to_data_types", "type": null, "description": ""}, {"name": "column_name_to_quoted", "type": null, "description": ""}], "created_at": 1784225035.291439, "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 {#-- For string fixture values, strip varchar length to prevent silent truncation (GH-11974) --#}\n {%- if column_value is string and 'varying' in column_type -%}\n {%- set column_type = column_type.split('(')[0] -%}\n {%- endif -%}\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "row", "type": null, "description": ""}, {"name": "column_name_to_data_types", "type": null, "description": ""}], "created_at": 1784225035.2919302, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "rows", "type": null, "description": ""}, {"name": "row_number", "type": null, "description": ""}], "created_at": 1784225035.292015, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "rows", "type": null, "description": ""}, {"name": "row_number", "type": null, "description": ""}], "created_at": 1784225035.292057, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "input_model_name", "type": null, "description": ""}], "created_at": 1784225035.292395, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "input_model_name", "type": null, "description": ""}], "created_at": 1784225035.292458, "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\n {#\n We want to get the string of the returned relation by calling .render() in order to skip sample/empty\n mode rendering logic. However, people override the default ref macro, and often return a string instead\n of a relation (like the ref macro does by default). Thus, to make sure we dont blow things up, we have\n to ensure the resolved relation has a .render() method.\n #}\n {%- if resolved.render is defined and resolved.render is callable -%}\n {%- set resolved = resolved.render() -%}\n {%- endif -%}\n\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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}], "created_at": 1784225035.2928388, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}], "created_at": 1784225035.2929978, "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 -%}\n {# Handle dbt.config.meta_get() calls - use separate dict to avoid overwriting native configs #}\n {%- set meta_dict = {} -%}\n {%- if model.config.meta_keys_used -%}\n {% set meta_dbt_used = zip(model.config.meta_keys_used, model.config.meta_keys_defaults) | list %}\n {%- for key, default in meta_dbt_used -%}\n {%- if model.config.meta and key in model.config.meta -%}\n {%- set value = model.config.meta[key] -%}\n {%- else -%}\n {%- set value = default -%}\n {%- endif -%}\n {%- do meta_dict.update({key: value}) -%}\n {%- endfor -%}\n {%- endif -%}\nconfig_dict = {{ config_dict }}\nmeta_dict = {{ meta_dict }}\n{% endmacro %}", "depends_on": {"macros": []}, "description": "", "meta": {}, "docs": {"show": true, "node_color": null}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}], "created_at": 1784225035.293438, "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\n @staticmethod\n def meta_get(key, default=None):\n return meta_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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [{"name": "model", "type": null, "description": ""}], "created_at": 1784225035.293633, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2936661, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2938628, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.293963, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.29408, "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}, "config": {"meta": {}, "docs": {"show": true, "node_color": null}}, "patch_path": null, "arguments": [], "created_at": 1784225035.2943518, "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"}}, "exposures": {}, "metrics": {}, "groups": {}, "selectors": {}, "disabled": {}, "parent_map": {"seed.school_compare.la_code_names": [], "seed.school_compare.gias_code_names": [], "seed.school_compare.school_type_codes": [], "model.school_compare.stg_ees_ks4_national": ["source.school_compare.raw.ees_ks4_national"], "model.school_compare.dim_location": ["model.school_compare.stg_gias_establishments"], "model.school_compare.dim_school": ["model.school_compare.int_ofsted_latest", "model.school_compare.stg_gias_establishments"], "model.school_compare.stg_gias_establishments": ["source.school_compare.raw.gias_establishments"], "model.school_compare.fact_performance": ["model.school_compare.fact_ks2_performance", "model.school_compare.fact_ks4_performance"], "model.school_compare.fact_ks2_performance": ["model.school_compare.int_ks2_with_lineage"], "model.school_compare.int_ks2_with_lineage": ["model.school_compare.int_school_lineage", "model.school_compare.stg_ees_ks2", "model.school_compare.stg_legacy_ks2"], "model.school_compare.fact_ks4_national_averages": ["model.school_compare.stg_ees_ks4_national"], "model.school_compare.fact_ks4_performance": ["model.school_compare.int_ks4_with_lineage"], "model.school_compare.int_ks4_with_lineage": ["model.school_compare.int_school_lineage", "model.school_compare.stg_ees_ks4", "model.school_compare.stg_legacy_ks4"], "model.school_compare.map_school_lineage": ["model.school_compare.int_school_lineage"], "model.school_compare.int_school_lineage": ["model.school_compare.stg_gias_links"], "model.school_compare.stg_gias_links": ["source.school_compare.raw.gias_links"], "model.school_compare.fact_ofsted_inspection": ["model.school_compare.stg_ofsted_inspections"], "model.school_compare.int_ofsted_latest": ["model.school_compare.stg_ofsted_inspections"], "model.school_compare.stg_ofsted_inspections": ["source.school_compare.raw.ofsted_inspections"], "model.school_compare.stg_ees_ks2": ["source.school_compare.raw.ees_ks2_attainment", "source.school_compare.raw.ees_ks2_info"], "model.school_compare.stg_legacy_ks2": ["source.school_compare.raw.legacy_ks2"], "model.school_compare.stg_ees_ks4": ["source.school_compare.raw.ees_ks4_info", "source.school_compare.raw.ees_ks4_performance"], "model.school_compare.stg_legacy_ks4": ["source.school_compare.raw.legacy_ks4"], "model.school_compare.fact_census_benchmarks": ["model.school_compare.fact_pupil_characteristics"], "model.school_compare.fact_pupil_characteristics": ["model.school_compare.int_pupil_chars_merged"], "model.school_compare.int_pupil_chars_merged": ["model.school_compare.stg_ees_census"], "model.school_compare.stg_ees_census": ["source.school_compare.raw.ees_census"], "model.school_compare.fact_admissions": ["model.school_compare.stg_ees_admissions"], "model.school_compare.stg_ees_admissions": ["source.school_compare.raw.ees_admissions"], "model.school_compare.fact_ks2_national_averages": ["model.school_compare.stg_ees_ks2_national"], "model.school_compare.stg_ees_ks2_national": ["source.school_compare.raw.ees_ks2_national"], "model.school_compare.fact_finance": ["model.school_compare.stg_fbit_finance"], "model.school_compare.stg_fbit_finance": ["source.school_compare.raw.fbit_finance"], "model.school_compare.fact_deprivation": ["model.school_compare.stg_idaci"], "model.school_compare.stg_idaci": ["source.school_compare.raw.idaci"], "test.school_compare.assert_urns_in_uk_bounds": ["model.school_compare.dim_location"], "test.school_compare.assert_no_orphaned_facts": ["model.school_compare.dim_school", "model.school_compare.fact_ks2_performance"], "test.school_compare.assert_gias_code_names_match_seed": ["seed.school_compare.gias_code_names", "source.school_compare.raw.gias_establishments"], "test.school_compare.not_null_dim_location_urn.aefc04518b": ["model.school_compare.dim_location"], "test.school_compare.unique_dim_location_urn.7acc2482eb": ["model.school_compare.dim_location"], "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a": ["model.school_compare.dim_location", "model.school_compare.dim_school"], "test.school_compare.not_null_dim_location_postcode.1693ab4948": ["model.school_compare.dim_location"], "test.school_compare.not_null_dim_school_urn.06fbd2ff26": ["model.school_compare.dim_school"], "test.school_compare.unique_dim_school_urn.9851fcd288": ["model.school_compare.dim_school"], "test.school_compare.not_null_dim_school_school_name.2a2e381565": ["model.school_compare.dim_school"], "test.school_compare.not_null_dim_school_phase_code.3140ca1112": ["model.school_compare.dim_school"], "test.school_compare.not_null_dim_school_has_sixth_form.ea8e313799": ["model.school_compare.dim_school"], "test.school_compare.accepted_values_dim_school_has_sixth_form__True__False.41eaa1ffd6": ["model.school_compare.dim_school"], "test.school_compare.accepted_values_dim_school_status_code__1__3.b0a0bd9a3a": ["model.school_compare.dim_school"], "test.school_compare.accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57.66c218b8b6": ["model.school_compare.dim_school"], "test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494": ["model.school_compare.dim_school"], "test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008": ["model.school_compare.dim_school"], "test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10": ["model.school_compare.fact_ks2_performance"], "test.school_compare.not_null_fact_ks2_performance_year.bf28467bae": ["model.school_compare.fact_ks2_performance"], "test.school_compare.unique_fact_ks2_performance_urn_year.240e6de465": ["model.school_compare.fact_ks2_performance"], "test.school_compare.not_null_fact_performance_urn.334fe56f01": ["model.school_compare.fact_performance"], "test.school_compare.not_null_fact_performance_year.eed5795761": ["model.school_compare.fact_performance"], "test.school_compare.unique_fact_performance_urn_year.f5c028dcb0": ["model.school_compare.fact_performance"], "test.school_compare.not_null_fact_ks4_performance_urn.dc24537cea": ["model.school_compare.fact_ks4_performance"], "test.school_compare.not_null_fact_ks4_performance_year.ca2d34b977": ["model.school_compare.fact_ks4_performance"], "test.school_compare.accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average.1f92b23f9b": ["model.school_compare.fact_ks4_performance"], "test.school_compare.unique_fact_ks4_performance_urn_year.eba97e8000": ["model.school_compare.fact_ks4_performance"], "test.school_compare.not_null_fact_ks4_national_averages_year.43387931fd": ["model.school_compare.fact_ks4_national_averages"], "test.school_compare.unique_fact_ks4_national_averages_year.9e4ab94935": ["model.school_compare.fact_ks4_national_averages"], "test.school_compare.not_null_map_school_lineage_urn.24da1a9909": ["model.school_compare.map_school_lineage"], "test.school_compare.not_null_fact_ofsted_inspection_urn.65304a896d": ["model.school_compare.fact_ofsted_inspection"], "test.school_compare.not_null_fact_ofsted_inspection_inspection_date.5aa4bf0513": ["model.school_compare.fact_ofsted_inspection"], "test.school_compare.not_null_fact_pupil_characteristics_urn.bdeebf869b": ["model.school_compare.fact_pupil_characteristics"], "test.school_compare.not_null_fact_pupil_characteristics_year.19bec90c81": ["model.school_compare.fact_pupil_characteristics"], "test.school_compare.not_null_fact_census_benchmarks_phase.c4c9ad96c1": ["model.school_compare.fact_census_benchmarks"], "test.school_compare.unique_fact_census_benchmarks_phase.c06d73d097": ["model.school_compare.fact_census_benchmarks"], "test.school_compare.not_null_fact_admissions_urn.fdf334f63c": ["model.school_compare.fact_admissions"], "test.school_compare.not_null_fact_admissions_year.11169d1a1f": ["model.school_compare.fact_admissions"], "test.school_compare.not_null_fact_ks2_national_averages_year.84b854a9ce": ["model.school_compare.fact_ks2_national_averages"], "test.school_compare.unique_fact_ks2_national_averages_year.99f3ae39bb": ["model.school_compare.fact_ks2_national_averages"], "test.school_compare.not_null_fact_finance_urn.162f08d129": ["model.school_compare.fact_finance"], "test.school_compare.not_null_fact_finance_year.d96868883e": ["model.school_compare.fact_finance"], "test.school_compare.not_null_fact_deprivation_urn.96d84c2c61": ["model.school_compare.fact_deprivation"], "test.school_compare.unique_fact_deprivation_urn.194d6d1f01": ["model.school_compare.fact_deprivation"], "test.school_compare.source_not_null_raw_gias_establishments__URN_.daa9473baf": ["source.school_compare.raw.gias_establishments"], "test.school_compare.source_unique_raw_gias_establishments__URN_.9f6d358797": ["source.school_compare.raw.gias_establishments"], "test.school_compare.source_not_null_raw_gias_links__URN_.588070236c": ["source.school_compare.raw.gias_links"], "source.school_compare.raw.gias_establishments": [], "source.school_compare.raw.gias_links": [], "source.school_compare.raw.ofsted_inspections": [], "source.school_compare.raw.ees_ks2_attainment": [], "source.school_compare.raw.ees_ks2_info": [], "source.school_compare.raw.legacy_ks2": [], "source.school_compare.raw.ees_ks4_performance": [], "source.school_compare.raw.ees_ks4_info": [], "source.school_compare.raw.legacy_ks4": [], "source.school_compare.raw.ees_census": [], "source.school_compare.raw.ees_admissions": [], "source.school_compare.raw.ees_ks2_national": [], "source.school_compare.raw.ees_ks4_national": [], "source.school_compare.raw.fbit_finance": [], "source.school_compare.raw.idaci": []}, "child_map": {"seed.school_compare.la_code_names": [], "seed.school_compare.gias_code_names": ["test.school_compare.assert_gias_code_names_match_seed"], "seed.school_compare.school_type_codes": [], "model.school_compare.stg_ees_ks4_national": ["model.school_compare.fact_ks4_national_averages"], "model.school_compare.dim_location": ["test.school_compare.assert_urns_in_uk_bounds", "test.school_compare.not_null_dim_location_postcode.1693ab4948", "test.school_compare.not_null_dim_location_urn.aefc04518b", "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a", "test.school_compare.unique_dim_location_urn.7acc2482eb"], "model.school_compare.dim_school": ["test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008", "test.school_compare.accepted_values_dim_school_has_sixth_form__True__False.41eaa1ffd6", "test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494", "test.school_compare.accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57.66c218b8b6", "test.school_compare.accepted_values_dim_school_status_code__1__3.b0a0bd9a3a", "test.school_compare.assert_no_orphaned_facts", "test.school_compare.not_null_dim_school_has_sixth_form.ea8e313799", "test.school_compare.not_null_dim_school_phase_code.3140ca1112", "test.school_compare.not_null_dim_school_school_name.2a2e381565", "test.school_compare.not_null_dim_school_urn.06fbd2ff26", "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a", "test.school_compare.unique_dim_school_urn.9851fcd288"], "model.school_compare.stg_gias_establishments": ["model.school_compare.dim_location", "model.school_compare.dim_school"], "model.school_compare.fact_performance": ["test.school_compare.not_null_fact_performance_urn.334fe56f01", "test.school_compare.not_null_fact_performance_year.eed5795761", "test.school_compare.unique_fact_performance_urn_year.f5c028dcb0"], "model.school_compare.fact_ks2_performance": ["model.school_compare.fact_performance", "test.school_compare.assert_no_orphaned_facts", "test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10", "test.school_compare.not_null_fact_ks2_performance_year.bf28467bae", "test.school_compare.unique_fact_ks2_performance_urn_year.240e6de465"], "model.school_compare.int_ks2_with_lineage": ["model.school_compare.fact_ks2_performance"], "model.school_compare.fact_ks4_national_averages": ["test.school_compare.not_null_fact_ks4_national_averages_year.43387931fd", "test.school_compare.unique_fact_ks4_national_averages_year.9e4ab94935"], "model.school_compare.fact_ks4_performance": ["model.school_compare.fact_performance", "test.school_compare.accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average.1f92b23f9b", "test.school_compare.not_null_fact_ks4_performance_urn.dc24537cea", "test.school_compare.not_null_fact_ks4_performance_year.ca2d34b977", "test.school_compare.unique_fact_ks4_performance_urn_year.eba97e8000"], "model.school_compare.int_ks4_with_lineage": ["model.school_compare.fact_ks4_performance"], "model.school_compare.map_school_lineage": ["test.school_compare.not_null_map_school_lineage_urn.24da1a9909"], "model.school_compare.int_school_lineage": ["model.school_compare.int_ks2_with_lineage", "model.school_compare.int_ks4_with_lineage", "model.school_compare.map_school_lineage"], "model.school_compare.stg_gias_links": ["model.school_compare.int_school_lineage"], "model.school_compare.fact_ofsted_inspection": ["test.school_compare.not_null_fact_ofsted_inspection_inspection_date.5aa4bf0513", "test.school_compare.not_null_fact_ofsted_inspection_urn.65304a896d"], "model.school_compare.int_ofsted_latest": ["model.school_compare.dim_school"], "model.school_compare.stg_ofsted_inspections": ["model.school_compare.fact_ofsted_inspection", "model.school_compare.int_ofsted_latest"], "model.school_compare.stg_ees_ks2": ["model.school_compare.int_ks2_with_lineage"], "model.school_compare.stg_legacy_ks2": ["model.school_compare.int_ks2_with_lineage"], "model.school_compare.stg_ees_ks4": ["model.school_compare.int_ks4_with_lineage"], "model.school_compare.stg_legacy_ks4": ["model.school_compare.int_ks4_with_lineage"], "model.school_compare.fact_census_benchmarks": ["test.school_compare.not_null_fact_census_benchmarks_phase.c4c9ad96c1", "test.school_compare.unique_fact_census_benchmarks_phase.c06d73d097"], "model.school_compare.fact_pupil_characteristics": ["model.school_compare.fact_census_benchmarks", "test.school_compare.not_null_fact_pupil_characteristics_urn.bdeebf869b", "test.school_compare.not_null_fact_pupil_characteristics_year.19bec90c81"], "model.school_compare.int_pupil_chars_merged": ["model.school_compare.fact_pupil_characteristics"], "model.school_compare.stg_ees_census": ["model.school_compare.int_pupil_chars_merged"], "model.school_compare.fact_admissions": ["test.school_compare.not_null_fact_admissions_urn.fdf334f63c", "test.school_compare.not_null_fact_admissions_year.11169d1a1f"], "model.school_compare.stg_ees_admissions": ["model.school_compare.fact_admissions"], "model.school_compare.fact_ks2_national_averages": ["test.school_compare.not_null_fact_ks2_national_averages_year.84b854a9ce", "test.school_compare.unique_fact_ks2_national_averages_year.99f3ae39bb"], "model.school_compare.stg_ees_ks2_national": ["model.school_compare.fact_ks2_national_averages"], "model.school_compare.fact_finance": ["test.school_compare.not_null_fact_finance_urn.162f08d129", "test.school_compare.not_null_fact_finance_year.d96868883e"], "model.school_compare.stg_fbit_finance": ["model.school_compare.fact_finance"], "model.school_compare.fact_deprivation": ["test.school_compare.not_null_fact_deprivation_urn.96d84c2c61", "test.school_compare.unique_fact_deprivation_urn.194d6d1f01"], "model.school_compare.stg_idaci": ["model.school_compare.fact_deprivation"], "test.school_compare.assert_urns_in_uk_bounds": [], "test.school_compare.assert_no_orphaned_facts": [], "test.school_compare.assert_gias_code_names_match_seed": [], "test.school_compare.not_null_dim_location_urn.aefc04518b": [], "test.school_compare.unique_dim_location_urn.7acc2482eb": [], "test.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a": [], "test.school_compare.not_null_dim_location_postcode.1693ab4948": [], "test.school_compare.not_null_dim_school_urn.06fbd2ff26": [], "test.school_compare.unique_dim_school_urn.9851fcd288": [], "test.school_compare.not_null_dim_school_school_name.2a2e381565": [], "test.school_compare.not_null_dim_school_phase_code.3140ca1112": [], "test.school_compare.not_null_dim_school_has_sixth_form.ea8e313799": [], "test.school_compare.accepted_values_dim_school_has_sixth_form__True__False.41eaa1ffd6": [], "test.school_compare.accepted_values_dim_school_status_code__1__3.b0a0bd9a3a": [], "test.school_compare.accepted_values_dim_school_school_type_code__1__2__3__5__6__7__8__10__11__12__14__15__18__24__25__26__27__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__49__56__57.66c218b8b6": [], "test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494": [], "test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008": [], "test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10": [], "test.school_compare.not_null_fact_ks2_performance_year.bf28467bae": [], "test.school_compare.unique_fact_ks2_performance_urn_year.240e6de465": [], "test.school_compare.not_null_fact_performance_urn.334fe56f01": [], "test.school_compare.not_null_fact_performance_year.eed5795761": [], "test.school_compare.unique_fact_performance_urn_year.f5c028dcb0": [], "test.school_compare.not_null_fact_ks4_performance_urn.dc24537cea": [], "test.school_compare.not_null_fact_ks4_performance_year.ca2d34b977": [], "test.school_compare.accepted_values_fact_ks4_performance_progress_8_banding__Well_above_average__Above_average__Average__Below_average__Well_below_average.1f92b23f9b": [], "test.school_compare.unique_fact_ks4_performance_urn_year.eba97e8000": [], "test.school_compare.not_null_fact_ks4_national_averages_year.43387931fd": [], "test.school_compare.unique_fact_ks4_national_averages_year.9e4ab94935": [], "test.school_compare.not_null_map_school_lineage_urn.24da1a9909": [], "test.school_compare.not_null_fact_ofsted_inspection_urn.65304a896d": [], "test.school_compare.not_null_fact_ofsted_inspection_inspection_date.5aa4bf0513": [], "test.school_compare.not_null_fact_pupil_characteristics_urn.bdeebf869b": [], "test.school_compare.not_null_fact_pupil_characteristics_year.19bec90c81": [], "test.school_compare.not_null_fact_census_benchmarks_phase.c4c9ad96c1": [], "test.school_compare.unique_fact_census_benchmarks_phase.c06d73d097": [], "test.school_compare.not_null_fact_admissions_urn.fdf334f63c": [], "test.school_compare.not_null_fact_admissions_year.11169d1a1f": [], "test.school_compare.not_null_fact_ks2_national_averages_year.84b854a9ce": [], "test.school_compare.unique_fact_ks2_national_averages_year.99f3ae39bb": [], "test.school_compare.not_null_fact_finance_urn.162f08d129": [], "test.school_compare.not_null_fact_finance_year.d96868883e": [], "test.school_compare.not_null_fact_deprivation_urn.96d84c2c61": [], "test.school_compare.unique_fact_deprivation_urn.194d6d1f01": [], "test.school_compare.source_not_null_raw_gias_establishments__URN_.daa9473baf": [], "test.school_compare.source_unique_raw_gias_establishments__URN_.9f6d358797": [], "test.school_compare.source_not_null_raw_gias_links__URN_.588070236c": [], "source.school_compare.raw.gias_establishments": ["model.school_compare.stg_gias_establishments", "test.school_compare.assert_gias_code_names_match_seed", "test.school_compare.source_not_null_raw_gias_establishments__URN_.daa9473baf", "test.school_compare.source_unique_raw_gias_establishments__URN_.9f6d358797"], "source.school_compare.raw.gias_links": ["model.school_compare.stg_gias_links", "test.school_compare.source_not_null_raw_gias_links__URN_.588070236c"], "source.school_compare.raw.ofsted_inspections": ["model.school_compare.stg_ofsted_inspections"], "source.school_compare.raw.ees_ks2_attainment": ["model.school_compare.stg_ees_ks2"], "source.school_compare.raw.ees_ks2_info": ["model.school_compare.stg_ees_ks2"], "source.school_compare.raw.legacy_ks2": ["model.school_compare.stg_legacy_ks2"], "source.school_compare.raw.ees_ks4_performance": ["model.school_compare.stg_ees_ks4"], "source.school_compare.raw.ees_ks4_info": ["model.school_compare.stg_ees_ks4"], "source.school_compare.raw.legacy_ks4": ["model.school_compare.stg_legacy_ks4"], "source.school_compare.raw.ees_census": ["model.school_compare.stg_ees_census"], "source.school_compare.raw.ees_admissions": ["model.school_compare.stg_ees_admissions"], "source.school_compare.raw.ees_ks2_national": ["model.school_compare.stg_ees_ks2_national"], "source.school_compare.raw.ees_ks4_national": ["model.school_compare.stg_ees_ks4_national"], "source.school_compare.raw.fbit_finance": ["model.school_compare.stg_fbit_finance"], "source.school_compare.raw.idaci": ["model.school_compare.stg_idaci"]}, "group_map": {}, "saved_queries": {}, "semantic_models": {}, "unit_tests": {}, "functions": {}} \ No newline at end of file diff --git a/pipeline/transform/target/osi_document.json b/pipeline/transform/target/osi_document.json new file mode 100644 index 0000000..e54060f --- /dev/null +++ b/pipeline/transform/target/osi_document.json @@ -0,0 +1 @@ +{"version": "0.1.1", "dialects": ["ANSI_SQL"], "semantic_model": [{"name": "semantic_model", "datasets": []}]} \ No newline at end of file diff --git a/pipeline/transform/target/partial_parse.msgpack b/pipeline/transform/target/partial_parse.msgpack new file mode 100644 index 0000000000000000000000000000000000000000..222bbcc7cb935f91b7f87b4a49037a53afb81176 GIT binary patch literal 769735 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

+0&BlJ=pm^x%!g2{hWB3-pAYtu!^a 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