Repository: astronomer/astronomer-cosmos

Issue:
Bug: `ExecutionMode.LOCAL` task leveraging the manifest to run task given in the `ProjectConfig.manifest_path`
A customer using Cosmos 1.8.x who defines a DAG using `DatabricksTokenProfileMapping` and the following:
```
        project_config=ProjectConfig(
            dbt_project_path="/path/to/project",
            manifest_path="/path/to/manifest.json",
        ),
        render_config=RenderConfig(
            load_method=LoadMode.DBT_MANIFEST,
        ),
        execution_config=ExecutionConfig(
            execution_mode=ExecutionMode.LOCAL,
            dbt_executable_path="/path/to/dbt"
        ),
        operator_args={
            "install_deps": True,
        }
```

Is seeing the following in their task logs when Cosmos runs the dbt command using ` Running command: ['/usr/local/airflow/dbt_venv/bin/dbt', 'run',`

```
Unable to do partial parsing because saved manifest not found. Starting full parse.
```

Hints from issue comments:
@m1racoli: I have been discussing this issue with the customer. It might be due to a missing `partial_parse.msgpack` file. They will investigate how and where this file is being generated and consider adding it to their instance.

Solution patch:
diff --git a/cosmos/converter.py b/cosmos/converter.py
index cb07bdef..bf3fa126 100644
--- a/cosmos/converter.py
+++ b/cosmos/converter.py
@@ -268,6 +268,7 @@ class DbtToAirflowConverter:
 
         cache_dir = None
         cache_identifier = None
+
         if settings.enable_cache:
             cache_identifier = cache._create_cache_identifier(dag, task_group)
             cache_dir = cache._obtain_cache_dir_path(cache_identifier=cache_identifier)
@@ -303,6 +304,7 @@ class DbtToAirflowConverter:
             "env": env_vars,
             "vars": dbt_vars,
             "cache_dir": cache_dir,
+            "manifest_filepath": project_config.manifest_path,
         }
 
         validate_arguments(
diff --git a/cosmos/dbt/project.py b/cosmos/dbt/project.py
index 2beded2a..df05915f 100644
--- a/cosmos/dbt/project.py
+++ b/cosmos/dbt/project.py
@@ -12,6 +12,7 @@ from cosmos.constants import (
     DBT_DEFAULT_PACKAGES_FOLDER,
     DBT_DEPENDENCIES_FILE_NAMES,
     DBT_LOG_DIR_NAME,
+    DBT_MANIFEST_FILE_NAME,
     DBT_PARTIAL_PARSE_FILE_NAME,
     DBT_PROJECT_FILENAME,
     DBT_TARGET_DIR_NAME,
@@ -70,8 +71,8 @@ def copy_dbt_packages(source_folder: Path, target_folder: Path) -> None:
     """
     Copies the dbt packages related files and directories from source_folder to target_folder.
 
-    :param: source_folder: The base directory where paths are sourced from.
-    :param: target_folder: The directory where paths will be copied to.
+    :param source_folder: The base directory where paths are sourced from.
+    :param target_folder: The directory where paths will be copied to.
     """
     logger.info("Copying dbt packages to temporary folder...")
 
@@ -92,6 +93,22 @@ def copy_dbt_packages(source_folder: Path, target_folder: Path) -> None:
     logger.info("Completed copying dbt packages to temporary folder.")
 
 
+def copy_manifest_file_if_exists(source_manifest: str | Path, dbt_project_folder: str | Path) -> None:
+    """
+    Copies the source manifest.json file, if available, to the given desired dbt project folder.
+
+    :param source_manifest: manifest.json filepath
+    :param dbt_project_folder: destination dbt project folder (it will be copied to the target folder)
+    """
+    dbt_project_folder = Path(dbt_project_folder)
+    if source_manifest and Path(source_manifest).exists():
+        logger.info(f"Copying the manifest from {source_manifest}...")
+        target_folder_path = dbt_project_folder / DBT_TARGET_DIR_NAME
+        tmp_manifest_filepath = target_folder_path / DBT_MANIFEST_FILE_NAME
+        Path(target_folder_path).mkdir(parents=True, exist_ok=True)
+        shutil.copy(source_manifest, tmp_manifest_filepath)
+
+
 def create_symlinks(project_path: Path, tmp_dir: Path, ignore_dbt_packages: bool) -> None:
     """Helper function to create symlinks to the dbt project files."""
     ignore_paths = [DBT_LOG_DIR_NAME, DBT_TARGET_DIR_NAME, PACKAGE_LOCKFILE_YML, "profiles.yml"]
diff --git a/cosmos/operators/local.py b/cosmos/operators/local.py
index 6a8042c4..1ca100fc 100644
--- a/cosmos/operators/local.py
+++ b/cosmos/operators/local.py
@@ -42,7 +42,12 @@ from cosmos.constants import (
     InvocationMode,
 )
 from cosmos.dataset import get_dataset_alias_name
-from cosmos.dbt.project import copy_dbt_packages, get_partial_parse_path, has_non_empty_dependencies_file
+from cosmos.dbt.project import (
+    copy_dbt_packages,
+    copy_manifest_file_if_exists,
+    get_partial_parse_path,
+    has_non_empty_dependencies_file,
+)
 from cosmos.exceptions import AirflowCompatibilityError, CosmosDbtRunError, CosmosValueError
 from cosmos.settings import (
     remote_target_path,
@@ -148,6 +153,7 @@ class AbstractDbtLocalBase(AbstractDbtBase):
     :param install_deps (deprecated): If true, install dependencies before running the command
     :param copy_dbt_packages: If true, copy pre-existing `dbt_packages` (before running dbt deps)
     :param callback: A callback function called on after a dbt run with a path to the dbt project directory.
+    :param manifest_filepath: The path to the user-defined Manifest file. It's "" by default.
     :param target_name: A name to use for the dbt target. If not provided, and no target is found
         in your project's dbt_project.yml, "cosmos_target" is used.
     :param should_store_compiled_sql: If true, store the compiled SQL in the compiled_sql rendered template.
@@ -171,6 +177,7 @@ class AbstractDbtLocalBase(AbstractDbtBase):
         invocation_mode: InvocationMode | None = None,
         install_deps: bool = True,
         copy_dbt_packages: bool = settings.default_copy_dbt_packages,
+        manifest_filepath: str = "",
         callback: Callable[[str], None] | list[Callable[[str], None]] | None = None,
         callback_args: dict[str, Any] | None = None,
         should_store_compiled_sql: bool = True,
@@ -202,6 +209,8 @@ class AbstractDbtLocalBase(AbstractDbtBase):
         self.install_deps = install_deps and has_non_empty_dependencies_file(Path(self.project_dir))
         self.copy_dbt_packages = copy_dbt_packages
 
+        self.manifest_filepath = manifest_filepath
+
     @cached_property
     def subprocess_hook(self) -> FullOutputSubprocessHook:
         """Returns hook for running the bash command."""
@@ -457,6 +466,8 @@ class AbstractDbtLocalBase(AbstractDbtBase):
             copy_dbt_packages(Path(self.project_dir), tmp_dir_path)
             self.log.info("Completed copying dbt packages to temporary folder.")
 
+        copy_manifest_file_if_exists(self.manifest_filepath, Path(tmp_dir_path))
+
     def _handle_partial_parse(self, tmp_dir_path: Path) -> None:
         if self.cache_dir is None:
             return
@@ -575,6 +586,7 @@ class AbstractDbtLocalBase(AbstractDbtBase):
 
             tmp_dir_path = Path(tmp_project_dir)
             env = {k: str(v) for k, v in env.items()}
+
             self._clone_project(tmp_dir_path)
 
             if self.partial_parse:
diff --git a/dev/dags/dbt/jaffle_shop/target/manifest.json b/dev/dags/dbt/jaffle_shop/target/manifest.json
index c8ba9755..e46748c4 100644
--- a/dev/dags/dbt/jaffle_shop/target/manifest.json
+++ b/dev/dags/dbt/jaffle_shop/target/manifest.json
@@ -2,7 +2,6 @@
   "child_map": {
     "model.jaffle_shop.customers": [
       "test.jaffle_shop.not_null_customers_customer_id.5c9bf9911d",
-      "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2",
       "test.jaffle_shop.unique_customers_customer_id.c5af1ff4b1"
     ],
     "model.jaffle_shop.orders": [
@@ -11,10 +10,8 @@
       "test.jaffle_shop.not_null_orders_bank_transfer_amount.7743500c49",
       "test.jaffle_shop.not_null_orders_coupon_amount.ab90c90625",
       "test.jaffle_shop.not_null_orders_credit_card_amount.d3ca593b59",
-      "test.jaffle_shop.not_null_orders_customer_id.c5f02694af",
       "test.jaffle_shop.not_null_orders_gift_card_amount.413a0d2d7a",
       "test.jaffle_shop.not_null_orders_order_id.cf6c17daed",
-      "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2",
       "test.jaffle_shop.unique_orders_order_id.fed79b3a6e"
     ],
     "model.jaffle_shop.stg_customers": [
@@ -53,13 +50,11 @@
     "test.jaffle_shop.not_null_orders_bank_transfer_amount.7743500c49": [],
     "test.jaffle_shop.not_null_orders_coupon_amount.ab90c90625": [],
     "test.jaffle_shop.not_null_orders_credit_card_amount.d3ca593b59": [],
-    "test.jaffle_shop.not_null_orders_customer_id.c5f02694af": [],
     "test.jaffle_shop.not_null_orders_gift_card_amount.413a0d2d7a": [],
     "test.jaffle_shop.not_null_orders_order_id.cf6c17daed": [],
     "test.jaffle_shop.not_null_stg_customers_customer_id.e2cfb1f9aa": [],
     "test.jaffle_shop.not_null_stg_orders_order_id.81cfe2fe64": [],
     "test.jaffle_shop.not_null_stg_payments_payment_id.c19cc50075": [],
-    "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2": [],
     "test.jaffle_shop.unique_customers_customer_id.c5af1ff4b1": [],
     "test.jaffle_shop.unique_orders_order_id.fed79b3a6e": [],
     "test.jaffle_shop.unique_stg_customers_customer_id.c7614daada": [],
@@ -102,7 +97,7 @@
   "macros": {
     "macro.dbt._split_part_negative": {
       "arguments": [],
-      "created_at": 1719485736.555134,
+      "created_at": 1747731927.7531478,
       "depends_on": {
         "macros": []
       },
@@ -124,7 +119,7 @@
     },
     "macro.dbt.after_commit": {
       "arguments": [],
-      "created_at": 1719485736.337471,
+      "created_at": 1747731927.591688,
       "depends_on": {
         "macros": [
           "macro.dbt.make_hook_config"
@@ -148,7 +143,7 @@
     },
     "macro.dbt.alter_column_comment": {
       "arguments": [],
-      "created_at": 1719485736.583679,
+      "created_at": 1747731927.778205,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__alter_column_comment"
@@ -172,7 +167,7 @@
     },
     "macro.dbt.alter_column_type": {
       "arguments": [],
-      "created_at": 1719485736.599694,
+      "created_at": 1747731927.791672,
       "depends_on": {
         "macros": [
           "macro.dbt.default__alter_column_type"
@@ -196,7 +191,7 @@
     },
     "macro.dbt.alter_relation_add_remove_columns": {
       "arguments": [],
-      "created_at": 1719485736.600589,
+      "created_at": 1747731927.792835,
       "depends_on": {
         "macros": [
           "macro.dbt.default__alter_relation_add_remove_columns"
@@ -220,7 +215,7 @@
     },
     "macro.dbt.alter_relation_comment": {
       "arguments": [],
-      "created_at": 1719485736.585442,
+      "created_at": 1747731927.778694,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__alter_relation_comment"
@@ -244,7 +239,7 @@
     },
     "macro.dbt.any_value": {
       "arguments": [],
-      "created_at": 1719485736.542892,
+      "created_at": 1747731927.7449331,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__any_value"
@@ -268,7 +263,7 @@
     },
     "macro.dbt.apply_grants": {
       "arguments": [],
-      "created_at": 1719485736.577766,
+      "created_at": 1747731927.775132,
       "depends_on": {
         "macros": [
           "macro.dbt.default__apply_grants"
@@ -292,7 +287,7 @@
     },
     "macro.dbt.array_append": {
       "arguments": [],
-      "created_at": 1719485736.5569642,
+      "created_at": 1747731927.754894,
       "depends_on": {
         "macros": [
           "macro.dbt.default__array_append"
@@ -316,7 +311,7 @@
     },
     "macro.dbt.array_concat": {
       "arguments": [],
-      "created_at": 1719485736.5521111,
+      "created_at": 1747731927.750371,
       "depends_on": {
         "macros": [
           "macro.dbt.default__array_concat"
@@ -340,7 +335,7 @@
     },
     "macro.dbt.array_construct": {
       "arguments": [],
-      "created_at": 1719485736.556025,
+      "created_at": 1747731927.754187,
       "depends_on": {
         "macros": [
           "macro.dbt.default__array_construct"
@@ -364,7 +359,7 @@
     },
     "macro.dbt.assert_columns_equivalent": {
       "arguments": [],
-      "created_at": 1719485736.5031989,
+      "created_at": 1747731927.709482,
       "depends_on": {
         "macros": [
           "macro.dbt.get_column_schema_from_query",
@@ -390,7 +385,7 @@
     },
     "macro.dbt.before_begin": {
       "arguments": [],
-      "created_at": 1719485736.336732,
+      "created_at": 1747731927.5913181,
       "depends_on": {
         "macros": [
           "macro.dbt.make_hook_config"
@@ -414,7 +409,7 @@
     },
     "macro.dbt.bool_or": {
       "arguments": [],
-      "created_at": 1719485736.5525389,
+      "created_at": 1747731927.7510011,
       "depends_on": {
         "macros": [
           "macro.dbt.default__bool_or"
@@ -438,7 +433,7 @@
     },
     "macro.dbt.build_config_dict": {
       "arguments": [],
-      "created_at": 1719485736.617571,
+      "created_at": 1747731927.803214,
       "depends_on": {
         "macros": []
       },
@@ -460,7 +455,7 @@
     },
     "macro.dbt.build_ref_function": {
       "arguments": [],
-      "created_at": 1719485736.616483,
+      "created_at": 1747731927.801829,
       "depends_on": {
         "macros": [
           "macro.dbt.resolve_model_name"
@@ -484,7 +479,7 @@
     },
     "macro.dbt.build_snapshot_staging_table": {
       "arguments": [],
-      "created_at": 1719485736.358976,
+      "created_at": 1747731927.614965,
       "depends_on": {
         "macros": [
           "macro.dbt.make_temp_relation",
@@ -511,7 +506,7 @@
     },
     "macro.dbt.build_snapshot_table": {
       "arguments": [],
-      "created_at": 1719485736.3569238,
+      "created_at": 1747731927.6137102,
       "depends_on": {
         "macros": [
           "macro.dbt.default__build_snapshot_table"
@@ -535,7 +530,7 @@
     },
     "macro.dbt.build_source_function": {
       "arguments": [],
-      "created_at": 1719485736.616947,
+      "created_at": 1747731927.80235,
       "depends_on": {
         "macros": [
           "macro.dbt.resolve_model_name"
@@ -559,7 +554,7 @@
     },
     "macro.dbt.call_dcl_statements": {
       "arguments": [],
-      "created_at": 1719485736.576986,
+      "created_at": 1747731927.774532,
       "depends_on": {
         "macros": [
           "macro.dbt.default__call_dcl_statements"
@@ -583,7 +578,7 @@
     },
     "macro.dbt.can_clone_table": {
       "arguments": [],
-      "created_at": 1719485736.4429,
+      "created_at": 1747731927.67102,
       "depends_on": {
         "macros": [
           "macro.dbt.default__can_clone_table"
@@ -607,7 +602,7 @@
     },
     "macro.dbt.cast": {
       "arguments": [],
-      "created_at": 1719485736.542182,
+      "created_at": 1747731927.744382,
       "depends_on": {
         "macros": [
           "macro.dbt.default__cast"
@@ -631,7 +626,7 @@
     },
     "macro.dbt.cast_bool_to_text": {
       "arguments": [],
-      "created_at": 1719485736.541704,
+      "created_at": 1747731927.743805,
       "depends_on": {
         "macros": [
           "macro.dbt.default__cast_bool_to_text"
@@ -655,7 +650,7 @@
     },
     "macro.dbt.check_for_schema_changes": {
       "arguments": [],
-      "created_at": 1719485736.43984,
+      "created_at": 1747731927.667893,
       "depends_on": {
         "macros": [
           "macro.dbt.diff_columns",
@@ -680,7 +675,7 @@
     },
     "macro.dbt.check_schema_exists": {
       "arguments": [],
-      "created_at": 1719485736.591485,
+      "created_at": 1747731927.783475,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__check_schema_exists"
@@ -702,9 +697,34 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.check_schema_exists"
     },
+    "macro.dbt.check_time_data_types": {
+      "arguments": [],
+      "created_at": 1747731927.616284,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.get_updated_at_column_data_type",
+          "macro.dbt.get_snapshot_get_time_data_type"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "check_time_data_types",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.check_time_data_types"
+    },
     "macro.dbt.collect_freshness": {
       "arguments": [],
-      "created_at": 1719485736.569225,
+      "created_at": 1747731927.766824,
       "depends_on": {
         "macros": [
           "macro.dbt.default__collect_freshness"
@@ -726,9 +746,33 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.collect_freshness"
     },
+    "macro.dbt.collect_freshness_custom_sql": {
+      "arguments": [],
+      "created_at": 1747731927.767657,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.default__collect_freshness_custom_sql"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "collect_freshness_custom_sql",
+      "original_file_path": "macros/adapters/freshness.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/freshness.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.collect_freshness_custom_sql"
+    },
     "macro.dbt.concat": {
       "arguments": [],
-      "created_at": 1719485736.533403,
+      "created_at": 1747731927.73525,
       "depends_on": {
         "macros": [
           "macro.dbt.default__concat"
@@ -752,7 +796,7 @@
     },
     "macro.dbt.convert_datetime": {
       "arguments": [],
-      "created_at": 1719485736.522349,
+      "created_at": 1747731927.727519,
       "depends_on": {
         "macros": []
       },
@@ -774,7 +818,7 @@
     },
     "macro.dbt.copy_grants": {
       "arguments": [],
-      "created_at": 1719485736.5725539,
+      "created_at": 1747731927.770463,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__copy_grants"
@@ -798,7 +842,7 @@
     },
     "macro.dbt.create_columns": {
       "arguments": [],
-      "created_at": 1719485736.354676,
+      "created_at": 1747731927.607092,
       "depends_on": {
         "macros": [
           "macro.dbt.default__create_columns"
@@ -822,7 +866,7 @@
     },
     "macro.dbt.create_csv_table": {
       "arguments": [],
-      "created_at": 1719485736.45865,
+      "created_at": 1747731927.679952,
       "depends_on": {
         "macros": [
           "macro.dbt.default__create_csv_table"
@@ -846,7 +890,7 @@
     },
     "macro.dbt.create_indexes": {
       "arguments": [],
-      "created_at": 1719485736.561525,
+      "created_at": 1747731927.7599459,
       "depends_on": {
         "macros": [
           "macro.dbt.default__create_indexes"
@@ -870,7 +914,7 @@
     },
     "macro.dbt.create_or_replace_clone": {
       "arguments": [],
-      "created_at": 1719485736.443349,
+      "created_at": 1747731927.6715572,
       "depends_on": {
         "macros": [
           "macro.dbt.default__create_or_replace_clone"
@@ -894,7 +938,7 @@
     },
     "macro.dbt.create_or_replace_view": {
       "arguments": [],
-      "created_at": 1719485736.513715,
+      "created_at": 1747731927.718994,
       "depends_on": {
         "macros": [
           "macro.dbt.run_hooks",
@@ -924,7 +968,7 @@
     },
     "macro.dbt.create_schema": {
       "arguments": [],
-      "created_at": 1719485736.558099,
+      "created_at": 1747731927.7555032,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__create_schema"
@@ -948,7 +992,7 @@
     },
     "macro.dbt.create_table_as": {
       "arguments": [],
-      "created_at": 1719485736.508673,
+      "created_at": 1747731927.713867,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__create_table_as"
@@ -972,7 +1016,7 @@
     },
     "macro.dbt.create_view_as": {
       "arguments": [],
-      "created_at": 1719485736.515506,
+      "created_at": 1747731927.721162,
       "depends_on": {
         "macros": [
           "macro.dbt.default__create_view_as"
@@ -996,7 +1040,7 @@
     },
     "macro.dbt.current_timestamp": {
       "arguments": [],
-      "created_at": 1719485736.55921,
+      "created_at": 1747731927.7569978,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__current_timestamp"
@@ -1020,7 +1064,7 @@
     },
     "macro.dbt.current_timestamp_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.559824,
+      "created_at": 1747731927.758385,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__current_timestamp_backcompat"
@@ -1044,7 +1088,7 @@
     },
     "macro.dbt.current_timestamp_in_utc_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.5600908,
+      "created_at": 1747731927.758695,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat"
@@ -1068,7 +1112,7 @@
     },
     "macro.dbt.date": {
       "arguments": [],
-      "created_at": 1719485736.531044,
+      "created_at": 1747731927.7339132,
       "depends_on": {
         "macros": [
           "macro.dbt.default__date"
@@ -1092,7 +1136,7 @@
     },
     "macro.dbt.date_spine": {
       "arguments": [],
-      "created_at": 1719485736.529869,
+      "created_at": 1747731927.7328708,
       "depends_on": {
         "macros": [
           "macro.dbt.default__date_spine"
@@ -1116,7 +1160,7 @@
     },
     "macro.dbt.date_trunc": {
       "arguments": [],
-      "created_at": 1719485736.55547,
+      "created_at": 1747731927.753514,
       "depends_on": {
         "macros": [
           "macro.dbt.default__date_trunc"
@@ -1140,7 +1184,7 @@
     },
     "macro.dbt.dateadd": {
       "arguments": [],
-      "created_at": 1719485736.5368361,
+      "created_at": 1747731927.7383602,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__dateadd"
@@ -1164,7 +1208,7 @@
     },
     "macro.dbt.datediff": {
       "arguments": [],
-      "created_at": 1719485736.5402482,
+      "created_at": 1747731927.742094,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__datediff"
@@ -1188,7 +1232,7 @@
     },
     "macro.dbt.dates_in_range": {
       "arguments": [],
-      "created_at": 1719485736.524234,
+      "created_at": 1747731927.7292109,
       "depends_on": {
         "macros": [
           "macro.dbt.convert_datetime"
@@ -1212,7 +1256,7 @@
     },
     "macro.dbt.default__alter_column_comment": {
       "arguments": [],
-      "created_at": 1719485736.5851688,
+      "created_at": 1747731927.778427,
       "depends_on": {
         "macros": []
       },
@@ -1234,7 +1278,7 @@
     },
     "macro.dbt.default__alter_column_type": {
       "arguments": [],
-      "created_at": 1719485736.6003149,
+      "created_at": 1747731927.792504,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -1245,7 +1289,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__alter_column_type(relation, column_name, new_column_type) -%}\n  {#\n    1. Create a new column (w/ temp name and correct type)\n    2. Copy data over to it\n    3. Drop the existing column (cascade!)\n    4. Rename the new column to existing column\n  #}\n  {%- set tmp_column = column_name + \"__dbt_alter\" -%}\n\n  {% call statement('alter_column_type') %}\n    alter table {{ relation }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};\n    update {{ relation }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};\n    alter table {{ relation }} drop column {{ adapter.quote(column_name) }} cascade;\n    alter table {{ relation }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}\n  {% endcall %}\n\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__alter_column_type",
       "original_file_path": "macros/adapters/columns.sql",
@@ -1258,7 +1302,7 @@
     },
     "macro.dbt.default__alter_relation_add_remove_columns": {
       "arguments": [],
-      "created_at": 1719485736.601542,
+      "created_at": 1747731927.793906,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query"
@@ -1269,7 +1313,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n  {% if add_columns is none %}\n    {% set add_columns = [] %}\n  {% endif %}\n  {% if remove_columns is none %}\n    {% set remove_columns = [] %}\n  {% endif %}\n\n  {% set sql -%}\n\n     alter {{ relation.type }} {{ relation }}\n\n            {% for column in add_columns %}\n               add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n            {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n            {% for column in remove_columns %}\n                drop column {{ column.name }}{{ ',' if not loop.last }}\n            {% endfor %}\n\n  {%- endset -%}\n\n  {% do run_query(sql) %}\n\n{% endmacro %}",
+      "macro_sql": "{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}\n\n  {% if add_columns is none %}\n    {% set add_columns = [] %}\n  {% endif %}\n  {% if remove_columns is none %}\n    {% set remove_columns = [] %}\n  {% endif %}\n\n  {% set sql -%}\n\n     alter {{ relation.type }} {{ relation.render() }}\n\n            {% for column in add_columns %}\n               add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}\n            {% endfor %}{{ ',' if add_columns and remove_columns }}\n\n            {% for column in remove_columns %}\n                drop column {{ column.name }}{{ ',' if not loop.last }}\n            {% endfor %}\n\n  {%- endset -%}\n\n  {% do run_query(sql) %}\n\n{% endmacro %}",
       "meta": {},
       "name": "default__alter_relation_add_remove_columns",
       "original_file_path": "macros/adapters/columns.sql",
@@ -1282,7 +1326,7 @@
     },
     "macro.dbt.default__alter_relation_comment": {
       "arguments": [],
-      "created_at": 1719485736.585629,
+      "created_at": 1747731927.7789161,
       "depends_on": {
         "macros": []
       },
@@ -1304,7 +1348,7 @@
     },
     "macro.dbt.default__any_value": {
       "arguments": [],
-      "created_at": 1719485736.5430348,
+      "created_at": 1747731927.745183,
       "depends_on": {
         "macros": []
       },
@@ -1326,7 +1370,7 @@
     },
     "macro.dbt.default__apply_grants": {
       "arguments": [],
-      "created_at": 1719485736.580575,
+      "created_at": 1747731927.776596,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query",
@@ -1340,7 +1384,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}\n    {#-- If grant_config is {} or None, this is a no-op --#}\n    {% if grant_config %}\n        {% if should_revoke %}\n            {#-- We think previous grants may have carried over --#}\n            {#-- Show current grants and calculate diffs --#}\n            {% set current_grants_table = run_query(get_show_grant_sql(relation)) %}\n            {% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}\n            {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}\n            {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}\n            {% if not (needs_granting or needs_revoking) %}\n                {{ log('On ' ~ relation ~': All grants are in place, no revocation or granting needed.')}}\n            {% endif %}\n        {% else %}\n            {#-- We don't think there's any chance of previous grants having carried over. --#}\n            {#-- Jump straight to granting what the user has configured. --#}\n            {% set needs_revoking = {} %}\n            {% set needs_granting = grant_config %}\n        {% endif %}\n        {% if needs_granting or needs_revoking %}\n            {% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}\n            {% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}\n            {% set dcl_statement_list = revoke_statement_list + grant_statement_list %}\n            {% if dcl_statement_list %}\n                {{ call_dcl_statements(dcl_statement_list) }}\n            {% endif %}\n        {% endif %}\n    {% endif %}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__apply_grants",
       "original_file_path": "macros/adapters/apply_grants.sql",
@@ -1353,7 +1397,7 @@
     },
     "macro.dbt.default__array_append": {
       "arguments": [],
-      "created_at": 1719485736.557557,
+      "created_at": 1747731927.7550652,
       "depends_on": {
         "macros": []
       },
@@ -1375,7 +1419,7 @@
     },
     "macro.dbt.default__array_concat": {
       "arguments": [],
-      "created_at": 1719485736.552268,
+      "created_at": 1747731927.7506618,
       "depends_on": {
         "macros": []
       },
@@ -1397,7 +1441,7 @@
     },
     "macro.dbt.default__array_construct": {
       "arguments": [],
-      "created_at": 1719485736.556629,
+      "created_at": 1747731927.7545059,
       "depends_on": {
         "macros": []
       },
@@ -1419,7 +1463,7 @@
     },
     "macro.dbt.default__bool_or": {
       "arguments": [],
-      "created_at": 1719485736.552653,
+      "created_at": 1747731927.751136,
       "depends_on": {
         "macros": []
       },
@@ -1441,16 +1485,19 @@
     },
     "macro.dbt.default__build_snapshot_table": {
       "arguments": [],
-      "created_at": 1719485736.3577101,
+      "created_at": 1747731927.6143968,
       "depends_on": {
-        "macros": []
+        "macros": [
+          "macro.dbt.get_snapshot_table_column_names",
+          "macro.dbt.get_dbt_valid_to_current"
+        ]
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__build_snapshot_table(strategy, sql) %}\n\n    select *,\n        {{ strategy.scd_id }} as dbt_scd_id,\n        {{ strategy.updated_at }} as dbt_updated_at,\n        {{ strategy.updated_at }} as dbt_valid_from,\n        nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to\n    from (\n        {{ sql }}\n    ) sbq\n\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__build_snapshot_table",
       "original_file_path": "macros/materializations/snapshots/helpers.sql",
@@ -1463,7 +1510,7 @@
     },
     "macro.dbt.default__call_dcl_statements": {
       "arguments": [],
-      "created_at": 1719485736.577475,
+      "created_at": 1747731927.774842,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -1487,7 +1534,7 @@
     },
     "macro.dbt.default__can_clone_table": {
       "arguments": [],
-      "created_at": 1719485736.443028,
+      "created_at": 1747731927.671176,
       "depends_on": {
         "macros": []
       },
@@ -1509,7 +1556,7 @@
     },
     "macro.dbt.default__cast": {
       "arguments": [],
-      "created_at": 1719485736.5423732,
+      "created_at": 1747731927.744554,
       "depends_on": {
         "macros": []
       },
@@ -1531,7 +1578,7 @@
     },
     "macro.dbt.default__cast_bool_to_text": {
       "arguments": [],
-      "created_at": 1719485736.541875,
+      "created_at": 1747731927.744014,
       "depends_on": {
         "macros": []
       },
@@ -1553,7 +1600,7 @@
     },
     "macro.dbt.default__check_schema_exists": {
       "arguments": [],
-      "created_at": 1719485736.591805,
+      "created_at": 1747731927.7838552,
       "depends_on": {
         "macros": [
           "macro.dbt.replace",
@@ -1578,7 +1625,7 @@
     },
     "macro.dbt.default__collect_freshness": {
       "arguments": [],
-      "created_at": 1719485736.569667,
+      "created_at": 1747731927.767362,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -1601,9 +1648,34 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.default__collect_freshness"
     },
+    "macro.dbt.default__collect_freshness_custom_sql": {
+      "arguments": [],
+      "created_at": 1747731927.768078,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.statement",
+          "macro.dbt.current_timestamp"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "default__collect_freshness_custom_sql",
+      "original_file_path": "macros/adapters/freshness.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/freshness.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.default__collect_freshness_custom_sql"
+    },
     "macro.dbt.default__concat": {
       "arguments": [],
-      "created_at": 1719485736.5335412,
+      "created_at": 1747731927.735413,
       "depends_on": {
         "macros": []
       },
@@ -1625,7 +1697,7 @@
     },
     "macro.dbt.default__copy_grants": {
       "arguments": [],
-      "created_at": 1719485736.5727968,
+      "created_at": 1747731927.770632,
       "depends_on": {
         "macros": []
       },
@@ -1647,7 +1719,7 @@
     },
     "macro.dbt.default__create_columns": {
       "arguments": [],
-      "created_at": 1719485736.354986,
+      "created_at": 1747731927.6075032,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -1658,7 +1730,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__create_columns(relation, columns) %}\n  {% for column in columns %}\n    {% call statement() %}\n      alter table {{ relation }} add column \"{{ column.name }}\" {{ column.data_type }};\n    {% endcall %}\n  {% endfor %}\n{% endmacro %}",
+      "macro_sql": "{% macro default__create_columns(relation, columns) %}\n  {% for column in columns %}\n    {% call statement() %}\n      alter table {{ relation.render() }} add column \"{{ column.name }}\" {{ column.data_type }};\n    {% endcall %}\n  {% endfor %}\n{% endmacro %}",
       "meta": {},
       "name": "default__create_columns",
       "original_file_path": "macros/materializations/snapshots/helpers.sql",
@@ -1671,7 +1743,7 @@
     },
     "macro.dbt.default__create_csv_table": {
       "arguments": [],
-      "created_at": 1719485736.4600089,
+      "created_at": 1747731927.6811981,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -1695,7 +1767,7 @@
     },
     "macro.dbt.default__create_indexes": {
       "arguments": [],
-      "created_at": 1719485736.562071,
+      "created_at": 1747731927.760452,
       "depends_on": {
         "macros": [
           "macro.dbt.get_create_index_sql",
@@ -1720,7 +1792,7 @@
     },
     "macro.dbt.default__create_or_replace_clone": {
       "arguments": [],
-      "created_at": 1719485736.4434948,
+      "created_at": 1747731927.671776,
       "depends_on": {
         "macros": []
       },
@@ -1729,7 +1801,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__create_or_replace_clone(this_relation, defer_relation) %}\n    create or replace table {{ this_relation }} clone {{ defer_relation }}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__create_or_replace_clone",
       "original_file_path": "macros/materializations/models/clone/create_or_replace_clone.sql",
@@ -1742,7 +1814,7 @@
     },
     "macro.dbt.default__create_schema": {
       "arguments": [],
-      "created_at": 1719485736.5583,
+      "created_at": 1747731927.755875,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -1766,7 +1838,7 @@
     },
     "macro.dbt.default__create_table_as": {
       "arguments": [],
-      "created_at": 1719485736.509567,
+      "created_at": 1747731927.714765,
       "depends_on": {
         "macros": [
           "macro.dbt.get_assert_columns_equivalent",
@@ -1792,7 +1864,7 @@
     },
     "macro.dbt.default__create_view_as": {
       "arguments": [],
-      "created_at": 1719485736.515955,
+      "created_at": 1747731927.721749,
       "depends_on": {
         "macros": [
           "macro.dbt.get_assert_columns_equivalent"
@@ -1803,7 +1875,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__create_view_as(relation, sql) -%}\n  {%- set sql_header = config.get('sql_header', none) -%}\n\n  {{ sql_header if sql_header is not none }}\n  create view {{ relation }}\n    {% set contract_config = config.get('contract') %}\n    {% if contract_config.enforced %}\n      {{ get_assert_columns_equivalent(sql) }}\n    {%- endif %}\n  as (\n    {{ sql }}\n  );\n{%- endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__create_view_as",
       "original_file_path": "macros/relations/view/create.sql",
@@ -1816,7 +1888,7 @@
     },
     "macro.dbt.default__current_timestamp": {
       "arguments": [],
-      "created_at": 1719485736.5593758,
+      "created_at": 1747731927.757301,
       "depends_on": {
         "macros": []
       },
@@ -1838,7 +1910,7 @@
     },
     "macro.dbt.default__current_timestamp_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.559911,
+      "created_at": 1747731927.758484,
       "depends_on": {
         "macros": []
       },
@@ -1860,7 +1932,7 @@
     },
     "macro.dbt.default__current_timestamp_in_utc_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.560272,
+      "created_at": 1747731927.7589061,
       "depends_on": {
         "macros": [
           "macro.dbt.current_timestamp_backcompat",
@@ -1885,7 +1957,7 @@
     },
     "macro.dbt.default__date": {
       "arguments": [],
-      "created_at": 1719485736.531544,
+      "created_at": 1747731927.734285,
       "depends_on": {
         "macros": []
       },
@@ -1907,7 +1979,7 @@
     },
     "macro.dbt.default__date_spine": {
       "arguments": [],
-      "created_at": 1719485736.53054,
+      "created_at": 1747731927.733346,
       "depends_on": {
         "macros": [
           "macro.dbt.generate_series",
@@ -1933,7 +2005,7 @@
     },
     "macro.dbt.default__date_trunc": {
       "arguments": [],
-      "created_at": 1719485736.555618,
+      "created_at": 1747731927.753688,
       "depends_on": {
         "macros": []
       },
@@ -1955,7 +2027,7 @@
     },
     "macro.dbt.default__dateadd": {
       "arguments": [],
-      "created_at": 1719485736.537018,
+      "created_at": 1747731927.738684,
       "depends_on": {
         "macros": []
       },
@@ -1977,7 +2049,7 @@
     },
     "macro.dbt.default__datediff": {
       "arguments": [],
-      "created_at": 1719485736.540429,
+      "created_at": 1747731927.742321,
       "depends_on": {
         "macros": []
       },
@@ -1999,7 +2071,7 @@
     },
     "macro.dbt.default__drop_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.4865391,
+      "created_at": 1747731927.701109,
       "depends_on": {
         "macros": []
       },
@@ -2008,7 +2080,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n    drop materialized view if exists {{ relation }} cascade\n{%- endmacro %}",
+      "macro_sql": "{% macro default__drop_materialized_view(relation) -%}\n    drop materialized view if exists {{ relation.render() }} cascade\n{%- endmacro %}",
       "meta": {},
       "name": "default__drop_materialized_view",
       "original_file_path": "macros/relations/materialized_view/drop.sql",
@@ -2021,7 +2093,7 @@
     },
     "macro.dbt.default__drop_relation": {
       "arguments": [],
-      "created_at": 1719485736.4714549,
+      "created_at": 1747731927.690887,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -2046,7 +2118,7 @@
     },
     "macro.dbt.default__drop_schema": {
       "arguments": [],
-      "created_at": 1719485736.558672,
+      "created_at": 1747731927.756342,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -2070,7 +2142,7 @@
     },
     "macro.dbt.default__drop_schema_named": {
       "arguments": [],
-      "created_at": 1719485736.476362,
+      "created_at": 1747731927.695164,
       "depends_on": {
         "macros": []
       },
@@ -2092,7 +2164,7 @@
     },
     "macro.dbt.default__drop_table": {
       "arguments": [],
-      "created_at": 1719485736.505599,
+      "created_at": 1747731927.711045,
       "depends_on": {
         "macros": []
       },
@@ -2101,7 +2173,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__drop_table(relation) -%}\n    drop table if exists {{ relation }} cascade\n{%- endmacro %}",
+      "macro_sql": "{% macro default__drop_table(relation) -%}\n    drop table if exists {{ relation.render() }} cascade\n{%- endmacro %}",
       "meta": {},
       "name": "default__drop_table",
       "original_file_path": "macros/relations/table/drop.sql",
@@ -2114,7 +2186,7 @@
     },
     "macro.dbt.default__drop_view": {
       "arguments": [],
-      "created_at": 1719485736.511198,
+      "created_at": 1747731927.716324,
       "depends_on": {
         "macros": []
       },
@@ -2123,7 +2195,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__drop_view(relation) -%}\n    drop view if exists {{ relation }} cascade\n{%- endmacro %}",
+      "macro_sql": "{% macro default__drop_view(relation) -%}\n    drop view if exists {{ relation.render() }} cascade\n{%- endmacro %}",
       "meta": {},
       "name": "default__drop_view",
       "original_file_path": "macros/relations/view/drop.sql",
@@ -2136,7 +2208,7 @@
     },
     "macro.dbt.default__escape_single_quotes": {
       "arguments": [],
-      "created_at": 1719485736.538025,
+      "created_at": 1747731927.739678,
       "depends_on": {
         "macros": []
       },
@@ -2158,7 +2230,7 @@
     },
     "macro.dbt.default__except": {
       "arguments": [],
-      "created_at": 1719485736.526438,
+      "created_at": 1747731927.730975,
       "depends_on": {
         "macros": []
       },
@@ -2180,7 +2252,7 @@
     },
     "macro.dbt.default__format_column": {
       "arguments": [],
-      "created_at": 1719485736.504833,
+      "created_at": 1747731927.710492,
       "depends_on": {
         "macros": []
       },
@@ -2202,7 +2274,7 @@
     },
     "macro.dbt.default__generate_alias_name": {
       "arguments": [],
-      "created_at": 1719485736.466625,
+      "created_at": 1747731927.68687,
       "depends_on": {
         "macros": []
       },
@@ -2224,7 +2296,7 @@
     },
     "macro.dbt.default__generate_database_name": {
       "arguments": [],
-      "created_at": 1719485736.469049,
+      "created_at": 1747731927.689066,
       "depends_on": {
         "macros": []
       },
@@ -2246,7 +2318,7 @@
     },
     "macro.dbt.default__generate_schema_name": {
       "arguments": [],
-      "created_at": 1719485736.4677172,
+      "created_at": 1747731927.687853,
       "depends_on": {
         "macros": []
       },
@@ -2268,7 +2340,7 @@
     },
     "macro.dbt.default__generate_series": {
       "arguments": [],
-      "created_at": 1719485736.535907,
+      "created_at": 1747731927.7374568,
       "depends_on": {
         "macros": [
           "macro.dbt.get_powers_of_two"
@@ -2292,7 +2364,7 @@
     },
     "macro.dbt.default__get_alter_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.4936142,
+      "created_at": 1747731927.7040021,
       "depends_on": {
         "macros": []
       },
@@ -2314,7 +2386,7 @@
     },
     "macro.dbt.default__get_assert_columns_equivalent": {
       "arguments": [],
-      "created_at": 1719485736.501285,
+      "created_at": 1747731927.7077289,
       "depends_on": {
         "macros": [
           "macro.dbt.assert_columns_equivalent"
@@ -2338,7 +2410,7 @@
     },
     "macro.dbt.default__get_batch_size": {
       "arguments": [],
-      "created_at": 1719485736.4618182,
+      "created_at": 1747731927.6832871,
       "depends_on": {
         "macros": []
       },
@@ -2360,7 +2432,7 @@
     },
     "macro.dbt.default__get_binding_char": {
       "arguments": [],
-      "created_at": 1719485736.461474,
+      "created_at": 1747731927.682925,
       "depends_on": {
         "macros": []
       },
@@ -2382,7 +2454,7 @@
     },
     "macro.dbt.default__get_catalog": {
       "arguments": [],
-      "created_at": 1719485736.590454,
+      "created_at": 1747731927.7822511,
       "depends_on": {
         "macros": []
       },
@@ -2402,9 +2474,31 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.default__get_catalog"
     },
+    "macro.dbt.default__get_catalog_for_single_relation": {
+      "arguments": [],
+      "created_at": 1747731927.784731,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "default__get_catalog_for_single_relation",
+      "original_file_path": "macros/adapters/metadata.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/metadata.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.default__get_catalog_for_single_relation"
+    },
     "macro.dbt.default__get_catalog_relations": {
       "arguments": [],
-      "created_at": 1719485736.589964,
+      "created_at": 1747731927.781642,
       "depends_on": {
         "macros": []
       },
@@ -2426,7 +2520,7 @@
     },
     "macro.dbt.default__get_column_names": {
       "arguments": [],
-      "created_at": 1719485736.5100741,
+      "created_at": 1747731927.715374,
       "depends_on": {
         "macros": []
       },
@@ -2448,7 +2542,7 @@
     },
     "macro.dbt.default__get_columns_in_query": {
       "arguments": [],
-      "created_at": 1719485736.599448,
+      "created_at": 1747731927.79138,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -2473,7 +2567,7 @@
     },
     "macro.dbt.default__get_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.59628,
+      "created_at": 1747731927.7875772,
       "depends_on": {
         "macros": []
       },
@@ -2495,7 +2589,7 @@
     },
     "macro.dbt.default__get_create_backup_sql": {
       "arguments": [],
-      "created_at": 1719485736.47981,
+      "created_at": 1747731927.698654,
       "depends_on": {
         "macros": [
           "macro.dbt.make_backup_relation",
@@ -2521,7 +2615,7 @@
     },
     "macro.dbt.default__get_create_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.561354,
+      "created_at": 1747731927.7597451,
       "depends_on": {
         "macros": []
       },
@@ -2543,7 +2637,7 @@
     },
     "macro.dbt.default__get_create_intermediate_sql": {
       "arguments": [],
-      "created_at": 1719485736.475838,
+      "created_at": 1747731927.694537,
       "depends_on": {
         "macros": [
           "macro.dbt.make_intermediate_relation",
@@ -2569,7 +2663,7 @@
     },
     "macro.dbt.default__get_create_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.494792,
+      "created_at": 1747731927.7051551,
       "depends_on": {
         "macros": []
       },
@@ -2591,7 +2685,7 @@
     },
     "macro.dbt.default__get_create_sql": {
       "arguments": [],
-      "created_at": 1719485736.483476,
+      "created_at": 1747731927.699806,
       "depends_on": {
         "macros": [
           "macro.dbt.get_create_view_as_sql",
@@ -2617,7 +2711,7 @@
     },
     "macro.dbt.default__get_create_table_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.508211,
+      "created_at": 1747731927.713313,
       "depends_on": {
         "macros": [
           "macro.dbt.create_table_as"
@@ -2641,7 +2735,7 @@
     },
     "macro.dbt.default__get_create_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.515317,
+      "created_at": 1747731927.720923,
       "depends_on": {
         "macros": [
           "macro.dbt.create_view_as"
@@ -2665,7 +2759,7 @@
     },
     "macro.dbt.default__get_csv_sql": {
       "arguments": [],
-      "created_at": 1719485736.461133,
+      "created_at": 1747731927.682581,
       "depends_on": {
         "macros": []
       },
@@ -2687,7 +2781,7 @@
     },
     "macro.dbt.default__get_dcl_statement_list": {
       "arguments": [],
-      "created_at": 1719485736.5756311,
+      "created_at": 1747731927.774283,
       "depends_on": {
         "macros": [
           "macro.dbt.support_multiple_grantees_per_dcl_statement"
@@ -2711,7 +2805,7 @@
     },
     "macro.dbt.default__get_delete_insert_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.415282,
+      "created_at": 1747731927.652731,
       "depends_on": {
         "macros": [
           "macro.dbt.get_quoted_csv"
@@ -2735,7 +2829,7 @@
     },
     "macro.dbt.default__get_drop_backup_sql": {
       "arguments": [],
-      "created_at": 1719485736.476908,
+      "created_at": 1747731927.695827,
       "depends_on": {
         "macros": [
           "macro.dbt.make_backup_relation",
@@ -2760,7 +2854,7 @@
     },
     "macro.dbt.default__get_drop_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.562772,
+      "created_at": 1747731927.760863,
       "depends_on": {
         "macros": []
       },
@@ -2782,7 +2876,7 @@
     },
     "macro.dbt.default__get_drop_sql": {
       "arguments": [],
-      "created_at": 1719485736.471034,
+      "created_at": 1747731927.6902988,
       "depends_on": {
         "macros": [
           "macro.dbt.drop_view",
@@ -2795,7 +2889,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{%- macro default__get_drop_sql(relation) -%}\n\n    {%- if relation.is_view -%}\n        {{ drop_view(relation) }}\n\n    {%- elif relation.is_table -%}\n        {{ drop_table(relation) }}\n\n    {%- elif relation.is_materialized_view -%}\n        {{ drop_materialized_view(relation) }}\n\n    {%- else -%}\n        drop {{ relation.type }} if exists {{ relation }} cascade\n\n    {%- endif -%}\n\n{%- endmacro -%}\n\n\n",
+      "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",
       "meta": {},
       "name": "default__get_drop_sql",
       "original_file_path": "macros/relations/drop.sql",
@@ -2808,7 +2902,7 @@
     },
     "macro.dbt.default__get_empty_schema_sql": {
       "arguments": [],
-      "created_at": 1719485736.5985012,
+      "created_at": 1747731927.790267,
       "depends_on": {
         "macros": [
           "macro.dbt.cast"
@@ -2832,7 +2926,7 @@
     },
     "macro.dbt.default__get_empty_subquery_sql": {
       "arguments": [],
-      "created_at": 1719485736.597066,
+      "created_at": 1747731927.788509,
       "depends_on": {
         "macros": []
       },
@@ -2854,7 +2948,7 @@
     },
     "macro.dbt.default__get_grant_sql": {
       "arguments": [],
-      "created_at": 1719485736.5742211,
+      "created_at": 1747731927.772546,
       "depends_on": {
         "macros": []
       },
@@ -2863,7 +2957,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "\n\n{%- macro default__get_grant_sql(relation, privilege, grantees) -%}\n    grant {{ privilege }} on {{ relation }} to {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n",
+      "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",
       "meta": {},
       "name": "default__get_grant_sql",
       "original_file_path": "macros/adapters/apply_grants.sql",
@@ -2876,7 +2970,7 @@
     },
     "macro.dbt.default__get_incremental_append_sql": {
       "arguments": [],
-      "created_at": 1719485736.418623,
+      "created_at": 1747731927.656011,
       "depends_on": {
         "macros": [
           "macro.dbt.get_insert_into_sql"
@@ -2900,7 +2994,7 @@
     },
     "macro.dbt.default__get_incremental_default_sql": {
       "arguments": [],
-      "created_at": 1719485736.4215739,
+      "created_at": 1747731927.65827,
       "depends_on": {
         "macros": [
           "macro.dbt.get_incremental_append_sql"
@@ -2924,7 +3018,7 @@
     },
     "macro.dbt.default__get_incremental_delete_insert_sql": {
       "arguments": [],
-      "created_at": 1719485736.419171,
+      "created_at": 1747731927.656642,
       "depends_on": {
         "macros": [
           "macro.dbt.get_delete_insert_merge_sql"
@@ -2948,7 +3042,7 @@
     },
     "macro.dbt.default__get_incremental_insert_overwrite_sql": {
       "arguments": [],
-      "created_at": 1719485736.421212,
+      "created_at": 1747731927.6578429,
       "depends_on": {
         "macros": [
           "macro.dbt.get_insert_overwrite_merge_sql"
@@ -2972,7 +3066,7 @@
     },
     "macro.dbt.default__get_incremental_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.420272,
+      "created_at": 1747731927.657262,
       "depends_on": {
         "macros": [
           "macro.dbt.get_merge_sql"
@@ -2994,9 +3088,31 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.default__get_incremental_merge_sql"
     },
+    "macro.dbt.default__get_incremental_microbatch_sql": {
+      "arguments": [],
+      "created_at": 1747731927.658707,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "default__get_incremental_microbatch_sql",
+      "original_file_path": "macros/materializations/models/incremental/strategies.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/models/incremental/strategies.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.default__get_incremental_microbatch_sql"
+    },
     "macro.dbt.default__get_insert_overwrite_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.416304,
+      "created_at": 1747731927.6539059,
       "depends_on": {
         "macros": [
           "macro.dbt.get_quoted_csv"
@@ -3020,7 +3136,7 @@
     },
     "macro.dbt.default__get_intervals_between": {
       "arguments": [],
-      "created_at": 1719485736.5290911,
+      "created_at": 1747731927.732573,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -3043,9 +3159,9 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.default__get_intervals_between"
     },
-    "macro.dbt.default__get_limit_subquery_sql": {
+    "macro.dbt.default__get_limit_sql": {
       "arguments": [],
-      "created_at": 1719485736.581942,
+      "created_at": 1747731927.777602,
       "depends_on": {
         "macros": []
       },
@@ -3054,20 +3170,20 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__get_limit_subquery_sql(sql, limit) %}\n    select *\n    from (\n        {{ sql }}\n    ) as model_limit_subq\n    limit {{ limit }}\n{% endmacro %}",
+      "macro_sql": "{% macro default__get_limit_sql(sql, limit) %}\n  {{ sql }}\n  {% if limit is not none %}\n  limit {{ limit }}\n  {%- endif -%}\n{% endmacro %}",
       "meta": {},
-      "name": "default__get_limit_subquery_sql",
+      "name": "default__get_limit_sql",
       "original_file_path": "macros/adapters/show.sql",
       "package_name": "dbt",
       "patch_path": null,
       "path": "macros/adapters/show.sql",
       "resource_type": "macro",
       "supported_languages": null,
-      "unique_id": "macro.dbt.default__get_limit_subquery_sql"
+      "unique_id": "macro.dbt.default__get_limit_sql"
     },
     "macro.dbt.default__get_materialized_view_configuration_changes": {
       "arguments": [],
-      "created_at": 1719485736.4943428,
+      "created_at": 1747731927.704607,
       "depends_on": {
         "macros": []
       },
@@ -3089,7 +3205,7 @@
     },
     "macro.dbt.default__get_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.413476,
+      "created_at": 1747731927.6510909,
       "depends_on": {
         "macros": [
           "macro.dbt.get_quoted_csv",
@@ -3114,7 +3230,7 @@
     },
     "macro.dbt.default__get_merge_update_columns": {
       "arguments": [],
-      "created_at": 1719485736.399054,
+      "created_at": 1747731927.646931,
       "depends_on": {
         "macros": []
       },
@@ -3136,7 +3252,7 @@
     },
     "macro.dbt.default__get_or_create_relation": {
       "arguments": [],
-      "created_at": 1719485736.568331,
+      "created_at": 1747731927.7655392,
       "depends_on": {
         "macros": []
       },
@@ -3158,7 +3274,7 @@
     },
     "macro.dbt.default__get_powers_of_two": {
       "arguments": [],
-      "created_at": 1719485736.534994,
+      "created_at": 1747731927.736556,
       "depends_on": {
         "macros": []
       },
@@ -3180,7 +3296,7 @@
     },
     "macro.dbt.default__get_relation_last_modified": {
       "arguments": [],
-      "created_at": 1719485736.5935519,
+      "created_at": 1747731927.785716,
       "depends_on": {
         "macros": []
       },
@@ -3202,7 +3318,7 @@
     },
     "macro.dbt.default__get_relations": {
       "arguments": [],
-      "created_at": 1719485736.592618,
+      "created_at": 1747731927.785134,
       "depends_on": {
         "macros": []
       },
@@ -3224,7 +3340,7 @@
     },
     "macro.dbt.default__get_rename_intermediate_sql": {
       "arguments": [],
-      "created_at": 1719485736.485399,
+      "created_at": 1747731927.700591,
       "depends_on": {
         "macros": [
           "macro.dbt.make_intermediate_relation",
@@ -3249,7 +3365,7 @@
     },
     "macro.dbt.default__get_rename_materialized_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.491203,
+      "created_at": 1747731927.702991,
       "depends_on": {
         "macros": []
       },
@@ -3271,7 +3387,7 @@
     },
     "macro.dbt.default__get_rename_sql": {
       "arguments": [],
-      "created_at": 1719485736.4781098,
+      "created_at": 1747731927.6970391,
       "depends_on": {
         "macros": [
           "macro.dbt.get_rename_view_sql",
@@ -3297,7 +3413,7 @@
     },
     "macro.dbt.default__get_rename_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.507071,
+      "created_at": 1747731927.712139,
       "depends_on": {
         "macros": []
       },
@@ -3319,7 +3435,7 @@
     },
     "macro.dbt.default__get_rename_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.514697,
+      "created_at": 1747731927.72008,
       "depends_on": {
         "macros": []
       },
@@ -3341,7 +3457,7 @@
     },
     "macro.dbt.default__get_replace_materialized_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.4885828,
+      "created_at": 1747731927.7017732,
       "depends_on": {
         "macros": []
       },
@@ -3363,7 +3479,7 @@
     },
     "macro.dbt.default__get_replace_sql": {
       "arguments": [],
-      "created_at": 1719485736.475151,
+      "created_at": 1747731927.693742,
       "depends_on": {
         "macros": [
           "macro.dbt.get_replace_view_sql",
@@ -3382,7 +3498,7 @@
         "node_color": null,
         "show": true
       },
-      "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 %}",
+      "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 %}",
       "meta": {},
       "name": "default__get_replace_sql",
       "original_file_path": "macros/relations/replace.sql",
@@ -3395,7 +3511,7 @@
     },
     "macro.dbt.default__get_replace_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.506342,
+      "created_at": 1747731927.7115898,
       "depends_on": {
         "macros": []
       },
@@ -3417,7 +3533,7 @@
     },
     "macro.dbt.default__get_replace_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.512308,
+      "created_at": 1747731927.71724,
       "depends_on": {
         "macros": []
       },
@@ -3439,7 +3555,7 @@
     },
     "macro.dbt.default__get_revoke_sql": {
       "arguments": [],
-      "created_at": 1719485736.574667,
+      "created_at": 1747731927.773101,
       "depends_on": {
         "macros": []
       },
@@ -3448,7 +3564,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n    revoke {{ privilege }} on {{ relation }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n",
+      "macro_sql": "\n\n{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}\n    revoke {{ privilege }} on {{ relation.render() }} from {{ grantees | join(', ') }}\n{%- endmacro -%}\n\n\n",
       "meta": {},
       "name": "default__get_revoke_sql",
       "original_file_path": "macros/adapters/apply_grants.sql",
@@ -3461,7 +3577,7 @@
     },
     "macro.dbt.default__get_select_subquery": {
       "arguments": [],
-      "created_at": 1719485736.510467,
+      "created_at": 1747731927.715831,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_column_names"
@@ -3485,7 +3601,7 @@
     },
     "macro.dbt.default__get_show_grant_sql": {
       "arguments": [],
-      "created_at": 1719485736.573777,
+      "created_at": 1747731927.771996,
       "depends_on": {
         "macros": []
       },
@@ -3494,7 +3610,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n    show grants on {{ relation }}\n{% endmacro %}",
+      "macro_sql": "{% macro default__get_show_grant_sql(relation) %}\n    show grants on {{ relation.render() }}\n{% endmacro %}",
       "meta": {},
       "name": "default__get_show_grant_sql",
       "original_file_path": "macros/adapters/apply_grants.sql",
@@ -3507,7 +3623,7 @@
     },
     "macro.dbt.default__get_show_indexes_sql": {
       "arguments": [],
-      "created_at": 1719485736.563092,
+      "created_at": 1747731927.761222,
       "depends_on": {
         "macros": []
       },
@@ -3529,7 +3645,7 @@
     },
     "macro.dbt.default__get_table_columns_and_constraints": {
       "arguments": [],
-      "created_at": 1719485736.497637,
+      "created_at": 1747731927.706486,
       "depends_on": {
         "macros": [
           "macro.dbt.table_columns_and_constraints"
@@ -3553,7 +3669,7 @@
     },
     "macro.dbt.default__get_test_sql": {
       "arguments": [],
-      "created_at": 1719485736.372639,
+      "created_at": 1747731927.627583,
       "depends_on": {
         "macros": []
       },
@@ -3575,7 +3691,7 @@
     },
     "macro.dbt.default__get_true_sql": {
       "arguments": [],
-      "created_at": 1719485736.3555431,
+      "created_at": 1747731927.608193,
       "depends_on": {
         "macros": []
       },
@@ -3597,7 +3713,7 @@
     },
     "macro.dbt.default__get_unit_test_sql": {
       "arguments": [],
-      "created_at": 1719485736.3736708,
+      "created_at": 1747731927.6286259,
       "depends_on": {
         "macros": [
           "macro.dbt.string_literal"
@@ -3621,7 +3737,7 @@
     },
     "macro.dbt.default__get_where_subquery": {
       "arguments": [],
-      "created_at": 1719485736.374502,
+      "created_at": 1747731927.629546,
       "depends_on": {
         "macros": []
       },
@@ -3643,7 +3759,7 @@
     },
     "macro.dbt.default__handle_existing_table": {
       "arguments": [],
-      "created_at": 1719485736.514176,
+      "created_at": 1747731927.719549,
       "depends_on": {
         "macros": []
       },
@@ -3652,7 +3768,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__handle_existing_table(full_refresh, old_relation) %}\n    {{ log(\"Dropping relation \" ~ old_relation ~ \" because it is of type \" ~ old_relation.type) }}\n    {{ adapter.drop_relation(old_relation) }}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__handle_existing_table",
       "original_file_path": "macros/relations/view/replace.sql",
@@ -3665,7 +3781,7 @@
     },
     "macro.dbt.default__hash": {
       "arguments": [],
-      "created_at": 1719485736.541434,
+      "created_at": 1747731927.743469,
       "depends_on": {
         "macros": []
       },
@@ -3687,7 +3803,7 @@
     },
     "macro.dbt.default__information_schema_name": {
       "arguments": [],
-      "created_at": 1719485736.590823,
+      "created_at": 1747731927.782689,
       "depends_on": {
         "macros": []
       },
@@ -3709,7 +3825,7 @@
     },
     "macro.dbt.default__intersect": {
       "arguments": [],
-      "created_at": 1719485736.537451,
+      "created_at": 1747731927.7391071,
       "depends_on": {
         "macros": []
       },
@@ -3731,7 +3847,7 @@
     },
     "macro.dbt.default__last_day": {
       "arguments": [],
-      "created_at": 1719485736.55349,
+      "created_at": 1747731927.752128,
       "depends_on": {
         "macros": [
           "macro.dbt.default_last_day"
@@ -3755,7 +3871,7 @@
     },
     "macro.dbt.default__length": {
       "arguments": [],
-      "created_at": 1719485736.536426,
+      "created_at": 1747731927.737946,
       "depends_on": {
         "macros": []
       },
@@ -3777,7 +3893,7 @@
     },
     "macro.dbt.default__list_relations_without_caching": {
       "arguments": [],
-      "created_at": 1719485736.592287,
+      "created_at": 1747731927.784299,
       "depends_on": {
         "macros": []
       },
@@ -3799,7 +3915,7 @@
     },
     "macro.dbt.default__list_schemas": {
       "arguments": [],
-      "created_at": 1719485736.591269,
+      "created_at": 1747731927.783221,
       "depends_on": {
         "macros": [
           "macro.dbt.information_schema_name",
@@ -3824,7 +3940,7 @@
     },
     "macro.dbt.default__listagg": {
       "arguments": [],
-      "created_at": 1719485736.539655,
+      "created_at": 1747731927.7416582,
       "depends_on": {
         "macros": []
       },
@@ -3846,7 +3962,7 @@
     },
     "macro.dbt.default__load_csv_rows": {
       "arguments": [],
-      "created_at": 1719485736.465408,
+      "created_at": 1747731927.6858292,
       "depends_on": {
         "macros": [
           "macro.dbt.get_batch_size",
@@ -3872,7 +3988,7 @@
     },
     "macro.dbt.default__make_backup_relation": {
       "arguments": [],
-      "created_at": 1719485736.5670989,
+      "created_at": 1747731927.7640681,
       "depends_on": {
         "macros": []
       },
@@ -3894,7 +4010,7 @@
     },
     "macro.dbt.default__make_intermediate_relation": {
       "arguments": [],
-      "created_at": 1719485736.56591,
+      "created_at": 1747731927.762398,
       "depends_on": {
         "macros": [
           "macro.dbt.default__make_temp_relation"
@@ -3918,7 +4034,7 @@
     },
     "macro.dbt.default__make_temp_relation": {
       "arguments": [],
-      "created_at": 1719485736.566462,
+      "created_at": 1747731927.763351,
       "depends_on": {
         "macros": []
       },
@@ -3940,7 +4056,7 @@
     },
     "macro.dbt.default__persist_docs": {
       "arguments": [],
-      "created_at": 1719485736.586432,
+      "created_at": 1747731927.779957,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query",
@@ -3966,7 +4082,7 @@
     },
     "macro.dbt.default__position": {
       "arguments": [],
-      "created_at": 1719485736.543534,
+      "created_at": 1747731927.745738,
       "depends_on": {
         "macros": []
       },
@@ -3988,7 +4104,7 @@
     },
     "macro.dbt.default__post_snapshot": {
       "arguments": [],
-      "created_at": 1719485736.3552608,
+      "created_at": 1747731927.6078432,
       "depends_on": {
         "macros": []
       },
@@ -4010,7 +4126,7 @@
     },
     "macro.dbt.default__refresh_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.49013,
+      "created_at": 1747731927.7024262,
       "depends_on": {
         "macros": []
       },
@@ -4032,7 +4148,7 @@
     },
     "macro.dbt.default__rename_relation": {
       "arguments": [],
-      "created_at": 1719485736.4786189,
+      "created_at": 1747731927.6977248,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -4043,7 +4159,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__rename_relation(from_relation, to_relation) -%}\n  {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}\n  {% call statement('rename_relation') -%}\n    alter table {{ from_relation }} rename to {{ target_name }}\n  {%- endcall %}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__rename_relation",
       "original_file_path": "macros/relations/rename.sql",
@@ -4056,7 +4172,7 @@
     },
     "macro.dbt.default__replace": {
       "arguments": [],
-      "created_at": 1719485736.533091,
+      "created_at": 1747731927.734913,
       "depends_on": {
         "macros": []
       },
@@ -4078,7 +4194,7 @@
     },
     "macro.dbt.default__reset_csv_table": {
       "arguments": [],
-      "created_at": 1719485736.460783,
+      "created_at": 1747731927.682154,
       "depends_on": {
         "macros": [
           "macro.dbt.create_csv_table"
@@ -4089,7 +4205,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}\n    {% set sql = \"\" %}\n    {% if full_refresh %}\n        {{ adapter.drop_relation(old_relation) }}\n        {% set sql = create_csv_table(model, agate_table) %}\n    {% else %}\n        {{ adapter.truncate_relation(old_relation) }}\n        {% set sql = \"truncate table \" ~ old_relation %}\n    {% endif %}\n\n    {{ return(sql) }}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "default__reset_csv_table",
       "original_file_path": "macros/materializations/seeds/helpers.sql",
@@ -4102,7 +4218,7 @@
     },
     "macro.dbt.default__resolve_model_name": {
       "arguments": [],
-      "created_at": 1719485736.615371,
+      "created_at": 1747731927.8007932,
       "depends_on": {
         "macros": []
       },
@@ -4124,7 +4240,7 @@
     },
     "macro.dbt.default__right": {
       "arguments": [],
-      "created_at": 1719485736.538501,
+      "created_at": 1747731927.740396,
       "depends_on": {
         "macros": []
       },
@@ -4146,7 +4262,7 @@
     },
     "macro.dbt.default__safe_cast": {
       "arguments": [],
-      "created_at": 1719485736.540907,
+      "created_at": 1747731927.742908,
       "depends_on": {
         "macros": []
       },
@@ -4168,7 +4284,7 @@
     },
     "macro.dbt.default__snapshot_get_time": {
       "arguments": [],
-      "created_at": 1719485736.559646,
+      "created_at": 1747731927.757626,
       "depends_on": {
         "macros": [
           "macro.dbt.current_timestamp"
@@ -4192,7 +4308,7 @@
     },
     "macro.dbt.default__snapshot_hash_arguments": {
       "arguments": [],
-      "created_at": 1719485736.345648,
+      "created_at": 1747731927.5983949,
       "depends_on": {
         "macros": []
       },
@@ -4214,16 +4330,18 @@
     },
     "macro.dbt.default__snapshot_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.340331,
+      "created_at": 1747731927.5943701,
       "depends_on": {
-        "macros": []
+        "macros": [
+          "macro.dbt.get_snapshot_table_column_names"
+        ]
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n    {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n    merge into {{ target }} as DBT_INTERNAL_DEST\n    using {{ source }} as DBT_INTERNAL_SOURCE\n    on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id\n\n    when matched\n     and DBT_INTERNAL_DEST.dbt_valid_to is null\n     and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n        then update\n        set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n\n    when not matched\n     and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n        then insert ({{ insert_cols_csv }})\n        values ({{ insert_cols_csv }})\n\n{% endmacro %}",
+      "macro_sql": "{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}\n    {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n    {%- set columns = config.get(\"snapshot_table_column_names\") or get_snapshot_table_column_names() -%}\n\n    merge into {{ target.render() }} as DBT_INTERNAL_DEST\n    using {{ source }} as DBT_INTERNAL_SOURCE\n    on DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }} = DBT_INTERNAL_DEST.{{ columns.dbt_scd_id }}\n\n    when matched\n     {% if config.get(\"dbt_valid_to_current\") %}\n       and (DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or\n            DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null)\n     {% else %}\n       and DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null\n     {% endif %}\n     and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')\n        then update\n        set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}\n\n    when not matched\n     and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'\n        then insert ({{ insert_cols_csv }})\n        values ({{ insert_cols_csv }})\n\n{% endmacro %}",
       "meta": {},
       "name": "default__snapshot_merge_sql",
       "original_file_path": "macros/materializations/snapshots/snapshot_merge.sql",
@@ -4236,10 +4354,18 @@
     },
     "macro.dbt.default__snapshot_staging_table": {
       "arguments": [],
-      "created_at": 1719485736.356719,
+      "created_at": 1747731927.613434,
       "depends_on": {
         "macros": [
-          "macro.dbt.snapshot_get_time"
+          "macro.dbt.get_snapshot_table_column_names",
+          "macro.dbt.snapshot_hash_arguments",
+          "macro.dbt.snapshot_get_time",
+          "macro.dbt.unique_key_fields",
+          "macro.dbt.get_dbt_valid_to_current",
+          "macro.dbt.unique_key_join_on",
+          "macro.dbt.unique_key_is_null",
+          "macro.dbt.unique_key_is_not_null",
+          "macro.dbt.get_column_schema_from_query"
         ]
       },
       "description": "",
@@ -4247,7 +4373,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}\n\n    with snapshot_query as (\n\n        {{ source_sql }}\n\n    ),\n\n    snapshotted_data as (\n\n        select *,\n            {{ strategy.unique_key }} as dbt_unique_key\n\n        from {{ target_relation }}\n        where dbt_valid_to is null\n\n    ),\n\n    insertions_source_data as (\n\n        select\n            *,\n            {{ strategy.unique_key }} as dbt_unique_key,\n            {{ strategy.updated_at }} as dbt_updated_at,\n            {{ strategy.updated_at }} as dbt_valid_from,\n            nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as dbt_valid_to,\n            {{ strategy.scd_id }} as dbt_scd_id\n\n        from snapshot_query\n    ),\n\n    updates_source_data as (\n\n        select\n            *,\n            {{ strategy.unique_key }} as dbt_unique_key,\n            {{ strategy.updated_at }} as dbt_updated_at,\n            {{ strategy.updated_at }} as dbt_valid_from,\n            {{ strategy.updated_at }} as dbt_valid_to\n\n        from snapshot_query\n    ),\n\n    {%- if strategy.invalidate_hard_deletes %}\n\n    deletes_source_data as (\n\n        select\n            *,\n            {{ strategy.unique_key }} as dbt_unique_key\n        from snapshot_query\n    ),\n    {% endif %}\n\n    insertions as (\n\n        select\n            'insert' as dbt_change_type,\n            source_data.*\n\n        from insertions_source_data as source_data\n        left outer join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n        where snapshotted_data.dbt_unique_key is null\n           or (\n                snapshotted_data.dbt_unique_key is not null\n            and (\n                {{ strategy.row_changed }}\n            )\n        )\n\n    ),\n\n    updates as (\n\n        select\n            'update' as dbt_change_type,\n            source_data.*,\n            snapshotted_data.dbt_scd_id\n\n        from updates_source_data as source_data\n        join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n        where (\n            {{ strategy.row_changed }}\n        )\n    )\n\n    {%- if strategy.invalidate_hard_deletes -%}\n    ,\n\n    deletes as (\n\n        select\n            'delete' as dbt_change_type,\n            source_data.*,\n            {{ snapshot_get_time() }} as dbt_valid_from,\n            {{ snapshot_get_time() }} as dbt_updated_at,\n            {{ snapshot_get_time() }} as dbt_valid_to,\n            snapshotted_data.dbt_scd_id\n\n        from snapshotted_data\n        left join deletes_source_data as source_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key\n        where source_data.dbt_unique_key is null\n    )\n    {%- endif %}\n\n    select * from insertions\n    union all\n    select * from updates\n    {%- if strategy.invalidate_hard_deletes %}\n    union all\n    select * from deletes\n    {%- endif %}\n\n{%- endmacro %}",
+      "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               {# Check for either dbt_valid_to_current OR null, in order to correctly update records with nulls #}\n               ( {{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or {{ columns.dbt_valid_to }} is null)\n            {% else %}\n                {{ columns.dbt_valid_to }} is null\n            {% endif %}\n\n    ),\n\n    insertions_source_data as (\n\n        select *, {{ unique_key_fields(strategy.unique_key) }},\n            {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},\n            {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},\n            {{ get_dbt_valid_to_current(strategy, columns) }},\n            {{ strategy.scd_id }} as {{ columns.dbt_scd_id }}\n\n        from snapshot_query\n    ),\n\n    updates_source_data as (\n\n        select *, {{ unique_key_fields(strategy.unique_key) }},\n            {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},\n            {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},\n            {{ strategy.updated_at }} as {{ columns.dbt_valid_to }}\n\n        from snapshot_query\n    ),\n\n    {%- if strategy.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 ({{ strategy.row_changed }})\n\n        )\n\n    ),\n\n    updates as (\n\n        select\n            'update' as dbt_change_type,\n            source_data.*,\n            snapshotted_data.{{ columns.dbt_scd_id }}\n          {%- 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 }}\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    {%- endif %}\n\n    {%- if strategy.hard_deletes == 'new_record' %}\n        {% set source_sql_cols = get_column_schema_from_query(source_sql) %}\n    ,\n    deletion_records as (\n\n        select\n            'insert' as dbt_change_type,\n            {%- for col in source_sql_cols -%}\n            snapshotted_data.{{ adapter.quote(col.column) }},\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\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 %}",
       "meta": {},
       "name": "default__snapshot_staging_table",
       "original_file_path": "macros/materializations/snapshots/helpers.sql",
@@ -4260,7 +4386,7 @@
     },
     "macro.dbt.default__snapshot_string_as_time": {
       "arguments": [],
-      "created_at": 1719485736.346766,
+      "created_at": 1747731927.60026,
       "depends_on": {
         "macros": []
       },
@@ -4282,7 +4408,7 @@
     },
     "macro.dbt.default__split_part": {
       "arguments": [],
-      "created_at": 1719485736.554402,
+      "created_at": 1747731927.752853,
       "depends_on": {
         "macros": []
       },
@@ -4304,7 +4430,7 @@
     },
     "macro.dbt.default__string_literal": {
       "arguments": [],
-      "created_at": 1719485736.544776,
+      "created_at": 1747731927.7462022,
       "depends_on": {
         "macros": []
       },
@@ -4326,7 +4452,7 @@
     },
     "macro.dbt.default__support_multiple_grantees_per_dcl_statement": {
       "arguments": [],
-      "created_at": 1719485736.573099,
+      "created_at": 1747731927.7710059,
       "depends_on": {
         "macros": []
       },
@@ -4348,7 +4474,7 @@
     },
     "macro.dbt.default__test_accepted_values": {
       "arguments": [],
-      "created_at": 1719485736.517527,
+      "created_at": 1747731927.72354,
       "depends_on": {
         "macros": []
       },
@@ -4370,7 +4496,7 @@
     },
     "macro.dbt.default__test_not_null": {
       "arguments": [],
-      "created_at": 1719485736.516648,
+      "created_at": 1747731927.7225542,
       "depends_on": {
         "macros": [
           "macro.dbt.should_store_failures"
@@ -4394,7 +4520,7 @@
     },
     "macro.dbt.default__test_relationships": {
       "arguments": [],
-      "created_at": 1719485736.516331,
+      "created_at": 1747731927.7221591,
       "depends_on": {
         "macros": []
       },
@@ -4416,7 +4542,7 @@
     },
     "macro.dbt.default__test_unique": {
       "arguments": [],
-      "created_at": 1719485736.5169122,
+      "created_at": 1747731927.72286,
       "depends_on": {
         "macros": []
       },
@@ -4438,7 +4564,7 @@
     },
     "macro.dbt.default__truncate_relation": {
       "arguments": [],
-      "created_at": 1719485736.5674748,
+      "created_at": 1747731927.7645252,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -4449,7 +4575,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro default__truncate_relation(relation) -%}\n  {% call statement('truncate_relation') -%}\n    truncate table {{ relation }}\n  {%- endcall %}\n{% endmacro %}",
+      "macro_sql": "{% macro default__truncate_relation(relation) -%}\n  {% call statement('truncate_relation') -%}\n    truncate table {{ relation.render() }}\n  {%- endcall %}\n{% endmacro %}",
       "meta": {},
       "name": "default__truncate_relation",
       "original_file_path": "macros/adapters/relation.sql",
@@ -4462,7 +4588,7 @@
     },
     "macro.dbt.default__type_bigint": {
       "arguments": [],
-      "created_at": 1719485736.5486028,
+      "created_at": 1747731927.749114,
       "depends_on": {
         "macros": []
       },
@@ -4484,7 +4610,7 @@
     },
     "macro.dbt.default__type_boolean": {
       "arguments": [],
-      "created_at": 1719485736.550734,
+      "created_at": 1747731927.7499251,
       "depends_on": {
         "macros": []
       },
@@ -4506,7 +4632,7 @@
     },
     "macro.dbt.default__type_float": {
       "arguments": [],
-      "created_at": 1719485736.5472598,
+      "created_at": 1747731927.74826,
       "depends_on": {
         "macros": []
       },
@@ -4528,7 +4654,7 @@
     },
     "macro.dbt.default__type_int": {
       "arguments": [],
-      "created_at": 1719485736.549174,
+      "created_at": 1747731927.749523,
       "depends_on": {
         "macros": []
       },
@@ -4550,7 +4676,7 @@
     },
     "macro.dbt.default__type_numeric": {
       "arguments": [],
-      "created_at": 1719485736.547792,
+      "created_at": 1747731927.748706,
       "depends_on": {
         "macros": []
       },
@@ -4572,7 +4698,7 @@
     },
     "macro.dbt.default__type_string": {
       "arguments": [],
-      "created_at": 1719485736.5461628,
+      "created_at": 1747731927.747373,
       "depends_on": {
         "macros": []
       },
@@ -4594,7 +4720,7 @@
     },
     "macro.dbt.default__type_timestamp": {
       "arguments": [],
-      "created_at": 1719485736.5468001,
+      "created_at": 1747731927.74783,
       "depends_on": {
         "macros": []
       },
@@ -4614,9 +4740,31 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.default__type_timestamp"
     },
+    "macro.dbt.default__validate_fixture_rows": {
+      "arguments": [],
+      "created_at": 1747731927.799627,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{%- macro default__validate_fixture_rows(rows, row_number) -%}\n  {# This is an abstract method for adapter overrides as needed #}\n{%- endmacro -%}",
+      "meta": {},
+      "name": "default__validate_fixture_rows",
+      "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/unit_test_sql/get_fixture_sql.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.default__validate_fixture_rows"
+    },
     "macro.dbt.default__validate_sql": {
       "arguments": [],
-      "created_at": 1719485736.570561,
+      "created_at": 1747731927.768754,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -4640,7 +4788,7 @@
     },
     "macro.dbt.default_last_day": {
       "arguments": [],
-      "created_at": 1719485736.5533261,
+      "created_at": 1747731927.751937,
       "depends_on": {
         "macros": [
           "macro.dbt.dateadd",
@@ -4665,7 +4813,7 @@
     },
     "macro.dbt.diff_column_data_types": {
       "arguments": [],
-      "created_at": 1719485736.397441,
+      "created_at": 1747731927.6457212,
       "depends_on": {
         "macros": []
       },
@@ -4687,7 +4835,7 @@
     },
     "macro.dbt.diff_columns": {
       "arguments": [],
-      "created_at": 1719485736.396736,
+      "created_at": 1747731927.6448839,
       "depends_on": {
         "macros": []
       },
@@ -4709,7 +4857,7 @@
     },
     "macro.dbt.drop_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.486141,
+      "created_at": 1747731927.700943,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__drop_materialized_view"
@@ -4733,7 +4881,7 @@
     },
     "macro.dbt.drop_relation": {
       "arguments": [],
-      "created_at": 1719485736.471232,
+      "created_at": 1747731927.690571,
       "depends_on": {
         "macros": [
           "macro.dbt.default__drop_relation"
@@ -4757,7 +4905,7 @@
     },
     "macro.dbt.drop_relation_if_exists": {
       "arguments": [],
-      "created_at": 1719485736.471669,
+      "created_at": 1747731927.691197,
       "depends_on": {
         "macros": []
       },
@@ -4779,7 +4927,7 @@
     },
     "macro.dbt.drop_schema": {
       "arguments": [],
-      "created_at": 1719485736.558478,
+      "created_at": 1747731927.756108,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__drop_schema"
@@ -4803,7 +4951,7 @@
     },
     "macro.dbt.drop_schema_named": {
       "arguments": [],
-      "created_at": 1719485736.4761379,
+      "created_at": 1747731927.69489,
       "depends_on": {
         "macros": [
           "macro.dbt.default__drop_schema_named"
@@ -4827,7 +4975,7 @@
     },
     "macro.dbt.drop_table": {
       "arguments": [],
-      "created_at": 1719485736.505447,
+      "created_at": 1747731927.710874,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__drop_table"
@@ -4851,7 +4999,7 @@
     },
     "macro.dbt.drop_view": {
       "arguments": [],
-      "created_at": 1719485736.511067,
+      "created_at": 1747731927.7161689,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__drop_view"
@@ -4875,7 +5023,7 @@
     },
     "macro.dbt.escape_single_quotes": {
       "arguments": [],
-      "created_at": 1719485736.537864,
+      "created_at": 1747731927.739479,
       "depends_on": {
         "macros": [
           "macro.dbt.default__escape_single_quotes"
@@ -4899,7 +5047,7 @@
     },
     "macro.dbt.except": {
       "arguments": [],
-      "created_at": 1719485736.5260952,
+      "created_at": 1747731927.730844,
       "depends_on": {
         "macros": [
           "macro.dbt.default__except"
@@ -4923,7 +5071,7 @@
     },
     "macro.dbt.format_columns": {
       "arguments": [],
-      "created_at": 1719485736.504094,
+      "created_at": 1747731927.7099679,
       "depends_on": {
         "macros": [
           "macro.dbt.default__format_column"
@@ -4947,7 +5095,7 @@
     },
     "macro.dbt.format_row": {
       "arguments": [],
-      "created_at": 1719485736.611443,
+      "created_at": 1747731927.799233,
       "depends_on": {
         "macros": [
           "macro.dbt.string_literal",
@@ -4960,7 +5108,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "\n\n{%- macro format_row(row, column_name_to_data_types) -%}\n    {#-- generate case-insensitive formatted row --#}\n    {% set formatted_row = {} %}\n    {%- for column_name, column_value in row.items() -%}\n        {% set column_name = column_name|lower %}\n\n        {%- if column_name not in column_name_to_data_types %}\n            {#-- if user-provided row contains column name that relation does not contain, raise an error --#}\n            {% set fixture_name = \"expected output\" if model.resource_type == 'unit_test' else (\"'\" ~ model.name ~ \"'\") %}\n            {{ exceptions.raise_compiler_error(\n                \"Invalid column name: '\" ~ column_name ~ \"' in unit test fixture for \" ~ fixture_name ~ \".\"\n                \"\\nAccepted columns for \" ~ fixture_name ~ \" are: \" ~ (column_name_to_data_types.keys()|list)\n            ) }}\n        {%- endif -%}\n\n        {%- set column_type = column_name_to_data_types[column_name] %}\n\n        {#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}\n        {%- set column_value_clean = column_value -%}\n        {%- if column_value is string -%}\n            {%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}\n        {%- elif column_value is none -%}\n            {%- set column_value_clean = 'null' -%}\n        {%- endif -%}\n\n        {%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}\n        {%- do formatted_row.update(row_update) -%}\n    {%- endfor -%}\n    {{ return(formatted_row) }}\n{%- endmacro -%}",
+      "macro_sql": "\n\n{%- macro format_row(row, column_name_to_data_types) -%}\n    {#-- generate case-insensitive formatted row --#}\n    {% set formatted_row = {} %}\n    {%- for column_name, column_value in row.items() -%}\n        {% set column_name = column_name|lower %}\n\n        {%- if column_name not in column_name_to_data_types %}\n            {#-- if user-provided row contains column name that relation does not contain, raise an error --#}\n            {% set fixture_name = \"expected output\" if model.resource_type == 'unit_test' else (\"'\" ~ model.name ~ \"'\") %}\n            {{ exceptions.raise_compiler_error(\n                \"Invalid column name: '\" ~ column_name ~ \"' in unit test fixture for \" ~ fixture_name ~ \".\"\n                \"\\nAccepted columns for \" ~ fixture_name ~ \" are: \" ~ (column_name_to_data_types.keys()|list)\n            ) }}\n        {%- endif -%}\n\n        {%- set column_type = column_name_to_data_types[column_name] %}\n\n        {#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}\n        {%- set column_value_clean = column_value -%}\n        {%- if column_value is string -%}\n            {%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}\n        {%- elif column_value is none -%}\n            {%- set column_value_clean = 'null' -%}\n        {%- endif -%}\n\n        {%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}\n        {%- do formatted_row.update(row_update) -%}\n    {%- endfor -%}\n    {{ return(formatted_row) }}\n{%- endmacro -%}\n\n",
       "meta": {},
       "name": "format_row",
       "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql",
@@ -4973,7 +5121,7 @@
     },
     "macro.dbt.generate_alias_name": {
       "arguments": [],
-      "created_at": 1719485736.466082,
+      "created_at": 1747731927.6863801,
       "depends_on": {
         "macros": [
           "macro.dbt.default__generate_alias_name"
@@ -4997,7 +5145,7 @@
     },
     "macro.dbt.generate_database_name": {
       "arguments": [],
-      "created_at": 1719485736.468485,
+      "created_at": 1747731927.6887062,
       "depends_on": {
         "macros": [
           "macro.dbt.default__generate_database_name"
@@ -5021,7 +5169,7 @@
     },
     "macro.dbt.generate_schema_name": {
       "arguments": [],
-      "created_at": 1719485736.467374,
+      "created_at": 1747731927.68751,
       "depends_on": {
         "macros": [
           "macro.dbt.default__generate_schema_name"
@@ -5045,7 +5193,7 @@
     },
     "macro.dbt.generate_schema_name_for_env": {
       "arguments": [],
-      "created_at": 1719485736.46803,
+      "created_at": 1747731927.688221,
       "depends_on": {
         "macros": []
       },
@@ -5067,7 +5215,7 @@
     },
     "macro.dbt.generate_series": {
       "arguments": [],
-      "created_at": 1719485736.5352,
+      "created_at": 1747731927.7367969,
       "depends_on": {
         "macros": [
           "macro.dbt.default__generate_series"
@@ -5091,7 +5239,7 @@
     },
     "macro.dbt.get_alter_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.492841,
+      "created_at": 1747731927.703752,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql"
@@ -5115,7 +5263,7 @@
     },
     "macro.dbt.get_assert_columns_equivalent": {
       "arguments": [],
-      "created_at": 1719485736.5009642,
+      "created_at": 1747731927.707553,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_assert_columns_equivalent"
@@ -5139,7 +5287,7 @@
     },
     "macro.dbt.get_batch_size": {
       "arguments": [],
-      "created_at": 1719485736.461688,
+      "created_at": 1747731927.6831338,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_batch_size"
@@ -5163,7 +5311,7 @@
     },
     "macro.dbt.get_binding_char": {
       "arguments": [],
-      "created_at": 1719485736.461306,
+      "created_at": 1747731927.682775,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_binding_char"
@@ -5187,7 +5335,7 @@
     },
     "macro.dbt.get_catalog": {
       "arguments": [],
-      "created_at": 1719485736.590185,
+      "created_at": 1747731927.781922,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_catalog"
@@ -5209,9 +5357,33 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.get_catalog"
     },
+    "macro.dbt.get_catalog_for_single_relation": {
+      "arguments": [],
+      "created_at": 1747731927.7845309,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.default__get_catalog_for_single_relation"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{% macro get_catalog_for_single_relation(relation) %}\n  {{ return(adapter.dispatch('get_catalog_for_single_relation', 'dbt')(relation)) }}\n{% endmacro %}",
+      "meta": {},
+      "name": "get_catalog_for_single_relation",
+      "original_file_path": "macros/adapters/metadata.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/metadata.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_catalog_for_single_relation"
+    },
     "macro.dbt.get_catalog_relations": {
       "arguments": [],
-      "created_at": 1719485736.5896802,
+      "created_at": 1747731927.781291,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_catalog_relations"
@@ -5235,7 +5407,7 @@
     },
     "macro.dbt.get_column_schema_from_query": {
       "arguments": [],
-      "created_at": 1719485736.598866,
+      "created_at": 1747731927.79071,
       "depends_on": {
         "macros": [
           "macro.dbt.get_empty_subquery_sql"
@@ -5259,7 +5431,7 @@
     },
     "macro.dbt.get_columns_in_query": {
       "arguments": [],
-      "created_at": 1719485736.5990841,
+      "created_at": 1747731927.790944,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_columns_in_query"
@@ -5283,7 +5455,7 @@
     },
     "macro.dbt.get_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.596093,
+      "created_at": 1747731927.7873778,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_columns_in_relation"
@@ -5307,7 +5479,7 @@
     },
     "macro.dbt.get_create_backup_sql": {
       "arguments": [],
-      "created_at": 1719485736.478982,
+      "created_at": 1747731927.6981509,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_create_backup_sql"
@@ -5331,7 +5503,7 @@
     },
     "macro.dbt.get_create_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.561203,
+      "created_at": 1747731927.759569,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_create_index_sql"
@@ -5355,7 +5527,7 @@
     },
     "macro.dbt.get_create_intermediate_sql": {
       "arguments": [],
-      "created_at": 1719485736.4755762,
+      "created_at": 1747731927.6942022,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_create_intermediate_sql"
@@ -5379,7 +5551,7 @@
     },
     "macro.dbt.get_create_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.4946408,
+      "created_at": 1747731927.704972,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql"
@@ -5403,7 +5575,7 @@
     },
     "macro.dbt.get_create_sql": {
       "arguments": [],
-      "created_at": 1719485736.481704,
+      "created_at": 1747731927.699233,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_create_sql"
@@ -5427,7 +5599,7 @@
     },
     "macro.dbt.get_create_table_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.50801,
+      "created_at": 1747731927.7130592,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_create_table_as_sql"
@@ -5451,7 +5623,7 @@
     },
     "macro.dbt.get_create_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.515145,
+      "created_at": 1747731927.7206929,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_create_view_as_sql"
@@ -5475,7 +5647,7 @@
     },
     "macro.dbt.get_csv_sql": {
       "arguments": [],
-      "created_at": 1719485736.460989,
+      "created_at": 1747731927.682409,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_csv_sql"
@@ -5497,9 +5669,31 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.get_csv_sql"
     },
+    "macro.dbt.get_dbt_valid_to_current": {
+      "arguments": [],
+      "created_at": 1747731927.616639,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "get_dbt_valid_to_current",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_dbt_valid_to_current"
+    },
     "macro.dbt.get_dcl_statement_list": {
       "arguments": [],
-      "created_at": 1719485736.574908,
+      "created_at": 1747731927.773398,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_dcl_statement_list"
@@ -5523,7 +5717,7 @@
     },
     "macro.dbt.get_delete_insert_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.414207,
+      "created_at": 1747731927.651454,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_delete_insert_merge_sql"
@@ -5547,7 +5741,7 @@
     },
     "macro.dbt.get_drop_backup_sql": {
       "arguments": [],
-      "created_at": 1719485736.476695,
+      "created_at": 1747731927.695561,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_drop_backup_sql"
@@ -5571,7 +5765,7 @@
     },
     "macro.dbt.get_drop_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.562388,
+      "created_at": 1747731927.7606862,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_drop_index_sql"
@@ -5595,7 +5789,7 @@
     },
     "macro.dbt.get_drop_sql": {
       "arguments": [],
-      "created_at": 1719485736.470603,
+      "created_at": 1747731927.6896992,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_drop_sql"
@@ -5619,7 +5813,7 @@
     },
     "macro.dbt.get_empty_schema_sql": {
       "arguments": [],
-      "created_at": 1719485736.597257,
+      "created_at": 1747731927.788762,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_empty_schema_sql"
@@ -5643,7 +5837,7 @@
     },
     "macro.dbt.get_empty_subquery_sql": {
       "arguments": [],
-      "created_at": 1719485736.596842,
+      "created_at": 1747731927.788246,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_empty_subquery_sql"
@@ -5667,7 +5861,7 @@
     },
     "macro.dbt.get_expected_sql": {
       "arguments": [],
-      "created_at": 1719485736.608841,
+      "created_at": 1747731927.797819,
       "depends_on": {
         "macros": [
           "macro.dbt.format_row"
@@ -5691,11 +5885,12 @@
     },
     "macro.dbt.get_fixture_sql": {
       "arguments": [],
-      "created_at": 1719485736.607797,
+      "created_at": 1747731927.797125,
       "depends_on": {
         "macros": [
           "macro.dbt.load_relation",
           "macro.dbt.safe_cast",
+          "macro.dbt.validate_fixture_rows",
           "macro.dbt.format_row"
         ]
       },
@@ -5704,7 +5899,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro get_fixture_sql(rows, column_name_to_data_types) %}\n-- Fixture for {{ model.name }}\n{% set default_row = {} %}\n\n{%- if not column_name_to_data_types -%}\n{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}\n{%-   set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}\n{%-   set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}\n\n{%-   set column_name_to_data_types = {} -%}\n{%-   for column in columns_in_relation -%}\n{#-- This needs to be a case-insensitive comparison --#}\n{%-     do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%-   endfor -%}\n{%- endif -%}\n\n{%- if not column_name_to_data_types -%}\n    {{ exceptions.raise_compiler_error(\"Not able to get columns for unit test '\" ~ model.name ~ \"' from relation \" ~ this ~ \" because the relation doesn't exist\") }}\n{%- endif -%}\n\n{%- for column_name, column_type in column_name_to_data_types.items() -%}\n    {%- do default_row.update({column_name: (safe_cast(\"null\", column_type) | trim )}) -%}\n{%- endfor -%}\n\n\n{%- for row in rows -%}\n{%-   set formatted_row = format_row(row, column_name_to_data_types) -%}\n{%-   set default_row_copy = default_row.copy() -%}\n{%-   do default_row_copy.update(formatted_row) -%}\nselect\n{%-   for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%-   endfor %}\n{%-   if not loop.last %}\nunion all\n{%    endif %}\n{%- endfor -%}\n\n{%- if (rows | length) == 0 -%}\n    select\n    {%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%},{%- endif %}\n    {%- endfor %}\n    limit 0\n{%- endif -%}\n{% endmacro %}",
+      "macro_sql": "{% macro get_fixture_sql(rows, column_name_to_data_types) %}\n-- Fixture for {{ model.name }}\n{% set default_row = {} %}\n\n{%- if not column_name_to_data_types -%}\n{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}\n{%-   set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}\n{%-   set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}\n\n{%-   set column_name_to_data_types = {} -%}\n{%-   for column in columns_in_relation -%}\n{#-- This needs to be a case-insensitive comparison --#}\n{%-     do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}\n{%-   endfor -%}\n{%- endif -%}\n\n{%- if not column_name_to_data_types -%}\n    {{ exceptions.raise_compiler_error(\"Not able to get columns for unit test '\" ~ model.name ~ \"' from relation \" ~ this ~ \" because the relation doesn't exist\") }}\n{%- endif -%}\n\n{%- for column_name, column_type in column_name_to_data_types.items() -%}\n    {%- do default_row.update({column_name: (safe_cast(\"null\", column_type) | trim )}) -%}\n{%- endfor -%}\n\n{{ validate_fixture_rows(rows, row_number) }}\n\n{%- for row in rows -%}\n{%-   set formatted_row = format_row(row, column_name_to_data_types) -%}\n{%-   set default_row_copy = default_row.copy() -%}\n{%-   do default_row_copy.update(formatted_row) -%}\nselect\n{%-   for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%}, {%- endif %}\n{%-   endfor %}\n{%-   if not loop.last %}\nunion all\n{%    endif %}\n{%- endfor -%}\n\n{%- if (rows | length) == 0 -%}\n    select\n    {%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name }}{% if not loop.last -%},{%- endif %}\n    {%- endfor %}\n    limit 0\n{%- endif -%}\n{% endmacro %}",
       "meta": {},
       "name": "get_fixture_sql",
       "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql",
@@ -5717,7 +5912,7 @@
     },
     "macro.dbt.get_grant_sql": {
       "arguments": [],
-      "created_at": 1719485736.574021,
+      "created_at": 1747731927.7722838,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_grant_sql"
@@ -5741,7 +5936,7 @@
     },
     "macro.dbt.get_incremental_append_sql": {
       "arguments": [],
-      "created_at": 1719485736.418218,
+      "created_at": 1747731927.6556969,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_incremental_append_sql"
@@ -5765,7 +5960,7 @@
     },
     "macro.dbt.get_incremental_default_sql": {
       "arguments": [],
-      "created_at": 1719485736.421412,
+      "created_at": 1747731927.658079,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_incremental_default_sql"
@@ -5789,7 +5984,7 @@
     },
     "macro.dbt.get_incremental_delete_insert_sql": {
       "arguments": [],
-      "created_at": 1719485736.4188569,
+      "created_at": 1747731927.656255,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_incremental_delete_insert_sql"
@@ -5813,7 +6008,7 @@
     },
     "macro.dbt.get_incremental_insert_overwrite_sql": {
       "arguments": [],
-      "created_at": 1719485736.420912,
+      "created_at": 1747731927.657504,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_incremental_insert_overwrite_sql"
@@ -5837,7 +6032,7 @@
     },
     "macro.dbt.get_incremental_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.419648,
+      "created_at": 1747731927.656883,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_incremental_merge_sql"
@@ -5859,9 +6054,33 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.get_incremental_merge_sql"
     },
+    "macro.dbt.get_incremental_microbatch_sql": {
+      "arguments": [],
+      "created_at": 1747731927.6585019,
+      "depends_on": {
+        "macros": [
+          "macro.dbt_postgres.postgres__get_incremental_microbatch_sql"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{% macro get_incremental_microbatch_sql(arg_dict) %}\n\n  {{ return(adapter.dispatch('get_incremental_microbatch_sql', 'dbt')(arg_dict)) }}\n\n{% endmacro %}",
+      "meta": {},
+      "name": "get_incremental_microbatch_sql",
+      "original_file_path": "macros/materializations/models/incremental/strategies.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/models/incremental/strategies.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_incremental_microbatch_sql"
+    },
     "macro.dbt.get_insert_into_sql": {
       "arguments": [],
-      "created_at": 1719485736.4218738,
+      "created_at": 1747731927.65906,
       "depends_on": {
         "macros": [
           "macro.dbt.get_quoted_csv"
@@ -5885,7 +6104,7 @@
     },
     "macro.dbt.get_insert_overwrite_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.415607,
+      "created_at": 1747731927.6530812,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_insert_overwrite_merge_sql"
@@ -5909,7 +6128,7 @@
     },
     "macro.dbt.get_intervals_between": {
       "arguments": [],
-      "created_at": 1719485736.527589,
+      "created_at": 1747731927.7318048,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_intervals_between"
@@ -5933,10 +6152,10 @@
     },
     "macro.dbt.get_limit_subquery_sql": {
       "arguments": [],
-      "created_at": 1719485736.58177,
+      "created_at": 1747731927.777363,
       "depends_on": {
         "macros": [
-          "macro.dbt.default__get_limit_subquery_sql"
+          "macro.dbt.default__get_limit_sql"
         ]
       },
       "description": "",
@@ -5944,7 +6163,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro get_limit_subquery_sql(sql, limit) %}\n  {{ adapter.dispatch('get_limit_subquery_sql', 'dbt')(sql, limit) }}\n{% endmacro %}",
+      "macro_sql": "\n{%- macro get_limit_subquery_sql(sql, limit) -%}\n  {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}\n{%- endmacro -%}\n\n",
       "meta": {},
       "name": "get_limit_subquery_sql",
       "original_file_path": "macros/adapters/show.sql",
@@ -5957,7 +6176,7 @@
     },
     "macro.dbt.get_materialized_view_configuration_changes": {
       "arguments": [],
-      "created_at": 1719485736.494153,
+      "created_at": 1747731927.704397,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes"
@@ -5981,7 +6200,7 @@
     },
     "macro.dbt.get_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.410901,
+      "created_at": 1747731927.648832,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_merge_sql"
@@ -6005,7 +6224,7 @@
     },
     "macro.dbt.get_merge_update_columns": {
       "arguments": [],
-      "created_at": 1719485736.397727,
+      "created_at": 1747731927.646025,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_merge_update_columns"
@@ -6029,7 +6248,7 @@
     },
     "macro.dbt.get_or_create_relation": {
       "arguments": [],
-      "created_at": 1719485736.567741,
+      "created_at": 1747731927.764838,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_or_create_relation"
@@ -6053,7 +6272,7 @@
     },
     "macro.dbt.get_powers_of_two": {
       "arguments": [],
-      "created_at": 1719485736.534465,
+      "created_at": 1747731927.736021,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_powers_of_two"
@@ -6077,7 +6296,7 @@
     },
     "macro.dbt.get_quoted_csv": {
       "arguments": [],
-      "created_at": 1719485736.395989,
+      "created_at": 1747731927.644193,
       "depends_on": {
         "macros": []
       },
@@ -6099,7 +6318,7 @@
     },
     "macro.dbt.get_relation_last_modified": {
       "arguments": [],
-      "created_at": 1719485736.593024,
+      "created_at": 1747731927.7853959,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_relation_last_modified"
@@ -6123,7 +6342,7 @@
     },
     "macro.dbt.get_relations": {
       "arguments": [],
-      "created_at": 1719485736.592459,
+      "created_at": 1747731927.784939,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_relations"
@@ -6147,7 +6366,7 @@
     },
     "macro.dbt.get_rename_intermediate_sql": {
       "arguments": [],
-      "created_at": 1719485736.484606,
+      "created_at": 1747731927.700288,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_rename_intermediate_sql"
@@ -6171,7 +6390,7 @@
     },
     "macro.dbt.get_rename_materialized_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.4909282,
+      "created_at": 1747731927.702796,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_rename_materialized_view_sql"
@@ -6195,7 +6414,7 @@
     },
     "macro.dbt.get_rename_sql": {
       "arguments": [],
-      "created_at": 1719485736.47766,
+      "created_at": 1747731927.696455,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_rename_sql"
@@ -6219,7 +6438,7 @@
     },
     "macro.dbt.get_rename_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.5068932,
+      "created_at": 1747731927.711943,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_rename_table_sql"
@@ -6243,7 +6462,7 @@
     },
     "macro.dbt.get_rename_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.5145411,
+      "created_at": 1747731927.719897,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_rename_view_sql"
@@ -6267,7 +6486,7 @@
     },
     "macro.dbt.get_replace_materialized_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.487545,
+      "created_at": 1747731927.70146,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_replace_materialized_view_sql"
@@ -6291,7 +6510,7 @@
     },
     "macro.dbt.get_replace_sql": {
       "arguments": [],
-      "created_at": 1719485736.4724941,
+      "created_at": 1747731927.6920698,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_replace_sql"
@@ -6315,7 +6534,7 @@
     },
     "macro.dbt.get_replace_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.506175,
+      "created_at": 1747731927.711402,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_replace_table_sql"
@@ -6339,7 +6558,7 @@
     },
     "macro.dbt.get_replace_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.5121448,
+      "created_at": 1747731927.7170482,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_replace_view_sql"
@@ -6363,7 +6582,7 @@
     },
     "macro.dbt.get_revoke_sql": {
       "arguments": [],
-      "created_at": 1719485736.574466,
+      "created_at": 1747731927.772835,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_revoke_sql"
@@ -6387,7 +6606,7 @@
     },
     "macro.dbt.get_seed_column_quoted_csv": {
       "arguments": [],
-      "created_at": 1719485736.462852,
+      "created_at": 1747731927.683903,
       "depends_on": {
         "macros": []
       },
@@ -6409,7 +6628,7 @@
     },
     "macro.dbt.get_select_subquery": {
       "arguments": [],
-      "created_at": 1719485736.510276,
+      "created_at": 1747731927.715607,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_select_subquery"
@@ -6433,7 +6652,7 @@
     },
     "macro.dbt.get_show_grant_sql": {
       "arguments": [],
-      "created_at": 1719485736.573664,
+      "created_at": 1747731927.771843,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_show_grant_sql"
@@ -6457,7 +6676,7 @@
     },
     "macro.dbt.get_show_indexes_sql": {
       "arguments": [],
-      "created_at": 1719485736.562955,
+      "created_at": 1747731927.761064,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_show_indexes_sql"
@@ -6481,7 +6700,7 @@
     },
     "macro.dbt.get_show_sql": {
       "arguments": [],
-      "created_at": 1719485736.581328,
+      "created_at": 1747731927.7771242,
       "depends_on": {
         "macros": [
           "macro.dbt.get_limit_subquery_sql"
@@ -6492,7 +6711,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro get_show_sql(compiled_code, sql_header, limit) -%}\n  {%- if sql_header -%}\n  {{ sql_header }}\n  {%- endif -%}\n  {%- if limit is not none -%}\n  {{ get_limit_subquery_sql(compiled_code, limit) }}\n  {%- else -%}\n  {{ compiled_code }}\n  {%- endif -%}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "get_show_sql",
       "original_file_path": "macros/adapters/show.sql",
@@ -6503,9 +6722,57 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.get_show_sql"
     },
+    "macro.dbt.get_snapshot_get_time_data_type": {
+      "arguments": [],
+      "created_at": 1747731927.758155,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.snapshot_get_time",
+          "macro.dbt_postgres.postgres__snapshot_get_time",
+          "macro.dbt.get_column_schema_from_query"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "get_snapshot_get_time_data_type",
+      "original_file_path": "macros/adapters/timestamps.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/timestamps.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_snapshot_get_time_data_type"
+    },
+    "macro.dbt.get_snapshot_table_column_names": {
+      "arguments": [],
+      "created_at": 1747731927.608804,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "get_snapshot_table_column_names",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_snapshot_table_column_names"
+    },
     "macro.dbt.get_table_columns_and_constraints": {
       "arguments": [],
-      "created_at": 1719485736.497471,
+      "created_at": 1747731927.706323,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_table_columns_and_constraints"
@@ -6529,7 +6796,7 @@
     },
     "macro.dbt.get_test_sql": {
       "arguments": [],
-      "created_at": 1719485736.37231,
+      "created_at": 1747731927.6271858,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_test_sql"
@@ -6553,7 +6820,7 @@
     },
     "macro.dbt.get_true_sql": {
       "arguments": [],
-      "created_at": 1719485736.355415,
+      "created_at": 1747731927.608038,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_true_sql"
@@ -6577,7 +6844,7 @@
     },
     "macro.dbt.get_unit_test_sql": {
       "arguments": [],
-      "created_at": 1719485736.3730109,
+      "created_at": 1747731927.6278489,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_unit_test_sql"
@@ -6599,9 +6866,33 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.get_unit_test_sql"
     },
+    "macro.dbt.get_updated_at_column_data_type": {
+      "arguments": [],
+      "created_at": 1747731927.615725,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.get_column_schema_from_query"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "get_updated_at_column_data_type",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.get_updated_at_column_data_type"
+    },
     "macro.dbt.get_where_subquery": {
       "arguments": [],
-      "created_at": 1719485736.3740978,
+      "created_at": 1747731927.629067,
       "depends_on": {
         "macros": [
           "macro.dbt.default__get_where_subquery"
@@ -6625,7 +6916,7 @@
     },
     "macro.dbt.handle_existing_table": {
       "arguments": [],
-      "created_at": 1719485736.513942,
+      "created_at": 1747731927.71925,
       "depends_on": {
         "macros": [
           "macro.dbt.default__handle_existing_table"
@@ -6649,7 +6940,7 @@
     },
     "macro.dbt.hash": {
       "arguments": [],
-      "created_at": 1719485736.5412428,
+      "created_at": 1747731927.7432551,
       "depends_on": {
         "macros": [
           "macro.dbt.default__hash"
@@ -6673,7 +6964,7 @@
     },
     "macro.dbt.in_transaction": {
       "arguments": [],
-      "created_at": 1719485736.336884,
+      "created_at": 1747731927.5915048,
       "depends_on": {
         "macros": [
           "macro.dbt.make_hook_config"
@@ -6697,7 +6988,7 @@
     },
     "macro.dbt.incremental_validate_on_schema_change": {
       "arguments": [],
-      "created_at": 1719485736.437581,
+      "created_at": 1747731927.666322,
       "depends_on": {
         "macros": []
       },
@@ -6719,7 +7010,7 @@
     },
     "macro.dbt.information_schema_name": {
       "arguments": [],
-      "created_at": 1719485736.590652,
+      "created_at": 1747731927.782491,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__information_schema_name"
@@ -6743,7 +7034,7 @@
     },
     "macro.dbt.intersect": {
       "arguments": [],
-      "created_at": 1719485736.537264,
+      "created_at": 1747731927.739006,
       "depends_on": {
         "macros": [
           "macro.dbt.default__intersect"
@@ -6767,7 +7058,7 @@
     },
     "macro.dbt.is_incremental": {
       "arguments": [],
-      "created_at": 1719485736.417088,
+      "created_at": 1747731927.654745,
       "depends_on": {
         "macros": [
           "macro.dbt.should_full_refresh"
@@ -6791,7 +7082,7 @@
     },
     "macro.dbt.last_day": {
       "arguments": [],
-      "created_at": 1719485736.553028,
+      "created_at": 1747731927.7515619,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__last_day"
@@ -6815,7 +7106,7 @@
     },
     "macro.dbt.length": {
       "arguments": [],
-      "created_at": 1719485736.536302,
+      "created_at": 1747731927.737795,
       "depends_on": {
         "macros": [
           "macro.dbt.default__length"
@@ -6839,7 +7130,7 @@
     },
     "macro.dbt.list_relations_without_caching": {
       "arguments": [],
-      "created_at": 1719485736.592111,
+      "created_at": 1747731927.784093,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__list_relations_without_caching"
@@ -6863,7 +7154,7 @@
     },
     "macro.dbt.list_schemas": {
       "arguments": [],
-      "created_at": 1719485736.591011,
+      "created_at": 1747731927.782917,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__list_schemas"
@@ -6887,7 +7178,7 @@
     },
     "macro.dbt.listagg": {
       "arguments": [],
-      "created_at": 1719485736.5392041,
+      "created_at": 1747731927.741078,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__listagg"
@@ -6911,7 +7202,7 @@
     },
     "macro.dbt.load_cached_relation": {
       "arguments": [],
-      "created_at": 1719485736.568574,
+      "created_at": 1747731927.7659461,
       "depends_on": {
         "macros": []
       },
@@ -6933,7 +7224,7 @@
     },
     "macro.dbt.load_csv_rows": {
       "arguments": [],
-      "created_at": 1719485736.4631271,
+      "created_at": 1747731927.684154,
       "depends_on": {
         "macros": [
           "macro.dbt.default__load_csv_rows"
@@ -6957,7 +7248,7 @@
     },
     "macro.dbt.load_relation": {
       "arguments": [],
-      "created_at": 1719485736.568728,
+      "created_at": 1747731927.766169,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation"
@@ -6981,7 +7272,7 @@
     },
     "macro.dbt.make_backup_relation": {
       "arguments": [],
-      "created_at": 1719485736.566729,
+      "created_at": 1747731927.7636638,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_backup_relation"
@@ -7005,7 +7296,7 @@
     },
     "macro.dbt.make_hook_config": {
       "arguments": [],
-      "created_at": 1719485736.336577,
+      "created_at": 1747731927.5911272,
       "depends_on": {
         "macros": []
       },
@@ -7027,7 +7318,7 @@
     },
     "macro.dbt.make_intermediate_relation": {
       "arguments": [],
-      "created_at": 1719485736.565727,
+      "created_at": 1747731927.762184,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_intermediate_relation"
@@ -7051,7 +7342,7 @@
     },
     "macro.dbt.make_temp_relation": {
       "arguments": [],
-      "created_at": 1719485736.5661461,
+      "created_at": 1747731927.762978,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_temp_relation"
@@ -7062,7 +7353,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}\n  {{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "make_temp_relation",
       "original_file_path": "macros/adapters/relation.sql",
@@ -7075,7 +7366,7 @@
     },
     "macro.dbt.materialization_clone_default": {
       "arguments": [],
-      "created_at": 1719485736.448061,
+      "created_at": 1747731927.675092,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7093,7 +7384,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{%- materialization clone, default -%}\n\n  {%- set relations = {'relations': []} -%}\n\n  {%- if not defer_relation -%}\n      -- nothing to do\n      {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n      {{ return(relations) }}\n  {%- endif -%}\n\n  {%- set existing_relation = load_cached_relation(this) -%}\n\n  {%- if existing_relation and not flags.FULL_REFRESH -%}\n      -- noop!\n      {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n      {{ return(relations) }}\n  {%- endif -%}\n\n  {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n  -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n  -- Otherwise, this will be a view\n\n  {% set can_clone_table = can_clone_table() %}\n\n  {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n      {%- set target_relation = this.incorporate(type='table') -%}\n      {% if existing_relation is not none and not existing_relation.is_table %}\n        {{ log(\"Dropping relation \" ~ existing_relation ~ \" because it is of type \" ~ existing_relation.type) }}\n        {{ drop_relation_if_exists(existing_relation) }}\n      {% endif %}\n\n      -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n      {% call statement('main') %}\n          {% if target_relation and defer_relation and target_relation == defer_relation %}\n              {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation) }}\n          {% else %}\n              {{ create_or_replace_clone(target_relation, defer_relation) }}\n          {% endif %}\n\n      {% endcall %}\n\n      {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n      {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n      {% do persist_docs(target_relation, model) %}\n\n      {{ return({'relations': [target_relation]}) }}\n\n  {%- else -%}\n\n      {%- set target_relation = this.incorporate(type='view') -%}\n\n      -- reuse the view materialization\n      -- TODO: support actual dispatch for materialization macros\n      -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n      {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n      {% if not search_name in context %}\n          {% set search_name = \"materialization_view_default\" %}\n      {% endif %}\n      {% set materialization_macro = context[search_name] %}\n      {% set relations = materialization_macro() %}\n      {{ return(relations) }}\n\n  {%- endif -%}\n\n{%- endmaterialization -%}",
+      "macro_sql": "{%- materialization clone, default -%}\n\n  {%- set relations = {'relations': []} -%}\n\n  {%- if not defer_relation -%}\n      -- nothing to do\n      {{ log(\"No relation found in state manifest for \" ~ model.unique_id, info=True) }}\n      {{ return(relations) }}\n  {%- endif -%}\n\n  {%- set existing_relation = load_cached_relation(this) -%}\n\n  {%- if existing_relation and not flags.FULL_REFRESH -%}\n      -- noop!\n      {{ log(\"Relation \" ~ existing_relation ~ \" already exists\", info=True) }}\n      {{ return(relations) }}\n  {%- endif -%}\n\n  {%- set other_existing_relation = load_cached_relation(defer_relation) -%}\n\n  -- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table\n  -- Otherwise, this will be a view\n\n  {% set can_clone_table = can_clone_table() %}\n\n  {%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}\n\n      {%- set target_relation = this.incorporate(type='table') -%}\n      {% if existing_relation is not none and not existing_relation.is_table %}\n        {{ log(\"Dropping relation \" ~ existing_relation.render() ~ \" because it is of type \" ~ existing_relation.type) }}\n        {{ drop_relation_if_exists(existing_relation) }}\n      {% endif %}\n\n      -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'\n      {% call statement('main') %}\n          {% if target_relation and defer_relation and target_relation == defer_relation %}\n              {{ log(\"Target relation and defer relation are the same, skipping clone for relation: \" ~ target_relation.render()) }}\n          {% else %}\n              {{ create_or_replace_clone(target_relation, defer_relation) }}\n          {% endif %}\n\n      {% endcall %}\n\n      {% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}\n      {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n      {% do persist_docs(target_relation, model) %}\n\n      {{ return({'relations': [target_relation]}) }}\n\n  {%- else -%}\n\n      {%- set target_relation = this.incorporate(type='view') -%}\n\n      -- reuse the view materialization\n      -- TODO: support actual dispatch for materialization macros\n      -- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799\n      {% set search_name = \"materialization_view_\" ~ adapter.type() %}\n      {% if not search_name in context %}\n          {% set search_name = \"materialization_view_default\" %}\n      {% endif %}\n      {% set materialization_macro = context[search_name] %}\n      {% set relations = materialization_macro() %}\n      {{ return(relations) }}\n\n  {%- endif -%}\n\n{%- endmaterialization -%}",
       "meta": {},
       "name": "materialization_clone_default",
       "original_file_path": "macros/materializations/models/clone/clone.sql",
@@ -7108,7 +7399,7 @@
     },
     "macro.dbt.materialization_incremental_default": {
       "arguments": [],
-      "created_at": 1719485736.4306219,
+      "created_at": 1747731927.664597,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7134,7 +7425,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% materialization incremental, default -%}\n\n  -- relations\n  {%- set existing_relation = load_cached_relation(this) -%}\n  {%- set target_relation = this.incorporate(type='table') -%}\n  {%- set temp_relation = make_temp_relation(target_relation)-%}\n  {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n  {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n  {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n  -- configs\n  {%- set unique_key = config.get('unique_key') -%}\n  {%- set full_refresh_mode = (should_full_refresh()  or existing_relation.is_view) -%}\n  {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n  -- the temp_ and backup_ relations should not already exist in the database; get_relation\n  -- will return None in that case. Otherwise, we get a relation that we can drop\n  -- later, before we try to use this name for the current operation. This has to happen before\n  -- BEGIN, in a separate transaction\n  {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n  {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n   -- grab current tables grants config for comparision later on\n  {% set grant_config = config.get('grants') %}\n  {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n  {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n  {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n  -- `BEGIN` happens here:\n  {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n  {% set to_drop = [] %}\n\n  {% if existing_relation is none %}\n      {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n  {% elif full_refresh_mode %}\n      {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n      {% set need_swap = true %}\n  {% else %}\n    {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n    {% do adapter.expand_target_column_types(\n             from_relation=temp_relation,\n             to_relation=target_relation) %}\n    {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n    {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n    {% if not dest_columns %}\n      {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n    {% endif %}\n\n    {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n    {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n    {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n    {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n    {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n    {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n  {% endif %}\n\n  {% call statement(\"main\") %}\n      {{ build_sql }}\n  {% endcall %}\n\n  {% if need_swap %}\n      {% do adapter.rename_relation(target_relation, backup_relation) %}\n      {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n      {% do to_drop.append(backup_relation) %}\n  {% endif %}\n\n  {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n  {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n  {% do persist_docs(target_relation, model) %}\n\n  {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n    {% do create_indexes(target_relation) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n  -- `COMMIT` happens here\n  {% do adapter.commit() %}\n\n  {% for rel in to_drop %}\n      {% do adapter.drop_relation(rel) %}\n  {% endfor %}\n\n  {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n  {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}",
+      "macro_sql": "{% materialization incremental, default -%}\n\n  -- relations\n  {%- set existing_relation = load_cached_relation(this) -%}\n  {%- set target_relation = this.incorporate(type='table') -%}\n  {%- set temp_relation = make_temp_relation(target_relation)-%}\n  {%- set intermediate_relation = make_intermediate_relation(target_relation)-%}\n  {%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}\n  {%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}\n\n  -- configs\n  {%- set unique_key = config.get('unique_key') -%}\n  {%- set full_refresh_mode = (should_full_refresh()  or existing_relation.is_view) -%}\n  {%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}\n\n  -- the temp_ and backup_ relations should not already exist in the database; get_relation\n  -- will return None in that case. Otherwise, we get a relation that we can drop\n  -- later, before we try to use this name for the current operation. This has to happen before\n  -- BEGIN, in a separate transaction\n  {%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}\n  {%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}\n   -- grab current tables grants config for comparision later on\n  {% set grant_config = config.get('grants') %}\n  {{ drop_relation_if_exists(preexisting_intermediate_relation) }}\n  {{ drop_relation_if_exists(preexisting_backup_relation) }}\n\n  {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n  -- `BEGIN` happens here:\n  {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n  {% set to_drop = [] %}\n\n  {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}\n  {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}\n\n  {% if existing_relation is none %}\n      {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}\n  {% elif full_refresh_mode %}\n      {% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}\n      {% set need_swap = true %}\n  {% else %}\n    {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}\n    {% set contract_config = config.get('contract') %}\n    {% if not contract_config or not contract_config.enforced %}\n      {% do adapter.expand_target_column_types(\n               from_relation=temp_relation,\n               to_relation=target_relation) %}\n    {% endif %}\n    {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}\n    {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}\n    {% if not dest_columns %}\n      {% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}\n    {% endif %}\n\n    {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}\n    {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}\n    {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}\n    {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}\n\n  {% endif %}\n\n  {% call statement(\"main\") %}\n      {{ build_sql }}\n  {% endcall %}\n\n  {% if need_swap %}\n      {% do adapter.rename_relation(target_relation, backup_relation) %}\n      {% do adapter.rename_relation(intermediate_relation, target_relation) %}\n      {% do to_drop.append(backup_relation) %}\n  {% endif %}\n\n  {% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}\n  {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n  {% do persist_docs(target_relation, model) %}\n\n  {% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}\n    {% do create_indexes(target_relation) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n  -- `COMMIT` happens here\n  {% do adapter.commit() %}\n\n  {% for rel in to_drop %}\n      {% do adapter.drop_relation(rel) %}\n  {% endfor %}\n\n  {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n  {{ return({'relations': [target_relation]}) }}\n\n{%- endmaterialization %}",
       "meta": {},
       "name": "materialization_incremental_default",
       "original_file_path": "macros/materializations/models/incremental/incremental.sql",
@@ -7149,7 +7440,7 @@
     },
     "macro.dbt.materialization_materialized_view_default": {
       "arguments": [],
-      "created_at": 1719485736.383056,
+      "created_at": 1747731927.633707,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7182,7 +7473,7 @@
     },
     "macro.dbt.materialization_seed_default": {
       "arguments": [],
-      "created_at": 1719485736.4520829,
+      "created_at": 1747731927.67847,
       "depends_on": {
         "macros": [
           "macro.dbt.should_full_refresh",
@@ -7203,7 +7494,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% materialization seed, default %}\n\n  {%- set identifier = model['alias'] -%}\n  {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n  {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n  {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n  {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n  {%- set grant_config = config.get('grants') -%}\n  {%- set agate_table = load_agate_table() -%}\n  -- grab current tables grants config for comparison later on\n\n  {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n  {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n  -- `BEGIN` happens here:\n  {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n  -- build model\n  {% set create_table_sql = \"\" %}\n  {% if exists_as_view %}\n    {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation)) }}\n  {% elif exists_as_table %}\n    {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n  {% else %}\n    {% set create_table_sql = create_csv_table(model, agate_table) %}\n  {% endif %}\n\n  {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n  {% set rows_affected = (agate_table.rows | length) %}\n  {% set sql = load_csv_rows(model, agate_table) %}\n\n  {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n    {{ get_csv_sql(create_table_sql, sql) }};\n  {% endcall %}\n\n  {% set target_relation = this.incorporate(type='table') %}\n\n  {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n  {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n  {% do persist_docs(target_relation, model) %}\n\n  {% if full_refresh_mode or not exists_as_table %}\n    {% do create_indexes(target_relation) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n  -- `COMMIT` happens here\n  {{ adapter.commit() }}\n\n  {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n  {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}",
+      "macro_sql": "{% materialization seed, default %}\n\n  {%- set identifier = model['alias'] -%}\n  {%- set full_refresh_mode = (should_full_refresh()) -%}\n\n  {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}\n\n  {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}\n  {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}\n\n  {%- set grant_config = config.get('grants') -%}\n  {%- set agate_table = load_agate_table() -%}\n  -- grab current tables grants config for comparison later on\n\n  {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}\n\n  {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n  -- `BEGIN` happens here:\n  {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n  -- build model\n  {% set create_table_sql = \"\" %}\n  {% if exists_as_view %}\n    {{ exceptions.raise_compiler_error(\"Cannot seed to '{}', it is a view\".format(old_relation.render())) }}\n  {% elif exists_as_table %}\n    {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}\n  {% else %}\n    {% set create_table_sql = create_csv_table(model, agate_table) %}\n  {% endif %}\n\n  {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}\n  {% set rows_affected = (agate_table.rows | length) %}\n  {% set sql = load_csv_rows(model, agate_table) %}\n\n  {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}\n    {{ get_csv_sql(create_table_sql, sql) }};\n  {% endcall %}\n\n  {% set target_relation = this.incorporate(type='table') %}\n\n  {% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}\n  {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n  {% do persist_docs(target_relation, model) %}\n\n  {% if full_refresh_mode or not exists_as_table %}\n    {% do create_indexes(target_relation) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n  -- `COMMIT` happens here\n  {{ adapter.commit() }}\n\n  {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n  {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}",
       "meta": {},
       "name": "materialization_seed_default",
       "original_file_path": "macros/materializations/seeds/seed.sql",
@@ -7218,7 +7509,7 @@
     },
     "macro.dbt.materialization_snapshot_default": {
       "arguments": [],
-      "created_at": 1719485736.3679821,
+      "created_at": 1747731927.6235409,
       "depends_on": {
         "macros": [
           "macro.dbt.get_or_create_relation",
@@ -7226,9 +7517,12 @@
           "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",
@@ -7242,7 +7536,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% materialization snapshot, default %}\n  {%- set config = model['config'] -%}\n\n  {%- set target_table = model.get('alias', model.get('name')) -%}\n\n  {%- set strategy_name = config.get('strategy') -%}\n  {%- set unique_key = config.get('unique_key') %}\n  -- grab current tables grants config for comparision later on\n  {%- set grant_config = config.get('grants') -%}\n\n  {% set target_relation_exists, target_relation = get_or_create_relation(\n          database=model.database,\n          schema=model.schema,\n          identifier=target_table,\n          type='table') -%}\n\n  {%- if not target_relation.is_table -%}\n    {% do exceptions.relation_wrong_type(target_relation, 'table') %}\n  {%- endif -%}\n\n\n  {{ run_hooks(pre_hooks, inside_transaction=False) }}\n\n  {{ run_hooks(pre_hooks, inside_transaction=True) }}\n\n  {% set strategy_macro = strategy_dispatch(strategy_name) %}\n  {% set strategy = strategy_macro(model, \"snapshotted_data\", \"source_data\", config, target_relation_exists) %}\n\n  {% if not target_relation_exists %}\n\n      {% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}\n      {% set final_sql = create_table_as(False, target_relation, build_sql) %}\n\n  {% else %}\n\n      {{ adapter.valid_snapshot_target(target_relation) }}\n\n      {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}\n\n      -- this may no-op if the database does not require column expansion\n      {% do adapter.expand_target_column_types(from_relation=staging_table,\n                                               to_relation=target_relation) %}\n\n      {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)\n                                   | rejectattr('name', 'equalto', 'dbt_change_type')\n                                   | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n                                   | rejectattr('name', 'equalto', 'dbt_unique_key')\n                                   | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n                                   | list %}\n\n      {% do create_columns(target_relation, missing_columns) %}\n\n      {% set source_columns = adapter.get_columns_in_relation(staging_table)\n                                   | rejectattr('name', 'equalto', 'dbt_change_type')\n                                   | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')\n                                   | rejectattr('name', 'equalto', 'dbt_unique_key')\n                                   | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')\n                                   | list %}\n\n      {% set quoted_source_columns = [] %}\n      {% for column in source_columns %}\n        {% do quoted_source_columns.append(adapter.quote(column.name)) %}\n      {% endfor %}\n\n      {% set final_sql = snapshot_merge_sql(\n            target = target_relation,\n            source = staging_table,\n            insert_cols = quoted_source_columns\n         )\n      %}\n\n  {% endif %}\n\n  {% call statement('main') %}\n      {{ final_sql }}\n  {% endcall %}\n\n  {% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}\n  {% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}\n\n  {% do persist_docs(target_relation, model) %}\n\n  {% if not target_relation_exists %}\n    {% do create_indexes(target_relation) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=True) }}\n\n  {{ adapter.commit() }}\n\n  {% if staging_table is defined %}\n      {% do post_snapshot(staging_table) %}\n  {% endif %}\n\n  {{ run_hooks(post_hooks, inside_transaction=False) }}\n\n  {{ return({'relations': [target_relation]}) }}\n\n{% endmaterialization %}",
+      "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 %}",
       "meta": {},
       "name": "materialization_snapshot_default",
       "original_file_path": "macros/materializations/snapshots/snapshot.sql",
@@ -7257,7 +7551,7 @@
     },
     "macro.dbt.materialization_table_default": {
       "arguments": [],
-      "created_at": 1719485736.3933172,
+      "created_at": 1747731927.643024,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7293,7 +7587,7 @@
     },
     "macro.dbt.materialization_test_default": {
       "arguments": [],
-      "created_at": 1719485736.370986,
+      "created_at": 1747731927.6263418,
       "depends_on": {
         "macros": [
           "macro.dbt.should_store_failures",
@@ -7322,7 +7616,7 @@
     },
     "macro.dbt.materialization_unit_default": {
       "arguments": [],
-      "created_at": 1719485736.3763871,
+      "created_at": 1747731927.6315389,
       "depends_on": {
         "macros": [
           "macro.dbt.get_columns_in_query",
@@ -7355,7 +7649,7 @@
     },
     "macro.dbt.materialization_view_default": {
       "arguments": [],
-      "created_at": 1719485736.390083,
+      "created_at": 1747731927.640254,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7390,7 +7684,7 @@
     },
     "macro.dbt.materialized_view_execute_build_sql": {
       "arguments": [],
-      "created_at": 1719485736.386875,
+      "created_at": 1747731927.6374998,
       "depends_on": {
         "macros": [
           "macro.dbt.run_hooks",
@@ -7418,7 +7712,7 @@
     },
     "macro.dbt.materialized_view_execute_no_op": {
       "arguments": [],
-      "created_at": 1719485736.385866,
+      "created_at": 1747731927.636649,
       "depends_on": {
         "macros": []
       },
@@ -7440,7 +7734,7 @@
     },
     "macro.dbt.materialized_view_get_build_sql": {
       "arguments": [],
-      "created_at": 1719485736.385609,
+      "created_at": 1747731927.6363468,
       "depends_on": {
         "macros": [
           "macro.dbt.should_full_refresh",
@@ -7456,7 +7750,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}\n\n    {% set full_refresh_mode = should_full_refresh() %}\n\n    -- determine the scenario we're in: create, full_refresh, alter, refresh data\n    {% if existing_relation is none %}\n        {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n    {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n        {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n    {% else %}\n\n        -- get config options\n        {% set on_configuration_change = config.get('on_configuration_change') %}\n        {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n        {% if configuration_changes is none %}\n            {% set build_sql = refresh_materialized_view(target_relation) %}\n\n        {% elif on_configuration_change == 'apply' %}\n            {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n        {% elif on_configuration_change == 'continue' %}\n            {% set build_sql = '' %}\n            {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation ~ \"`\") }}\n        {% elif on_configuration_change == 'fail' %}\n            {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation ~ \"`\") }}\n\n        {% else %}\n            -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n            {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n        {% endif %}\n\n    {% endif %}\n\n    {% do return(build_sql) %}\n\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "materialized_view_get_build_sql",
       "original_file_path": "macros/materializations/models/materialized_view.sql",
@@ -7469,7 +7763,7 @@
     },
     "macro.dbt.materialized_view_setup": {
       "arguments": [],
-      "created_at": 1719485736.3838332,
+      "created_at": 1747731927.63421,
       "depends_on": {
         "macros": [
           "macro.dbt.load_cached_relation",
@@ -7495,7 +7789,7 @@
     },
     "macro.dbt.materialized_view_teardown": {
       "arguments": [],
-      "created_at": 1719485736.384107,
+      "created_at": 1747731927.634565,
       "depends_on": {
         "macros": [
           "macro.dbt.drop_relation_if_exists",
@@ -7520,7 +7814,7 @@
     },
     "macro.dbt.noop_statement": {
       "arguments": [],
-      "created_at": 1719485736.5199249,
+      "created_at": 1747731927.726103,
       "depends_on": {
         "macros": []
       },
@@ -7542,7 +7836,7 @@
     },
     "macro.dbt.partition_range": {
       "arguments": [],
-      "created_at": 1719485736.5252612,
+      "created_at": 1747731927.7302258,
       "depends_on": {
         "macros": [
           "macro.dbt.dates_in_range"
@@ -7566,7 +7860,7 @@
     },
     "macro.dbt.persist_docs": {
       "arguments": [],
-      "created_at": 1719485736.585922,
+      "created_at": 1747731927.779349,
       "depends_on": {
         "macros": [
           "macro.dbt.default__persist_docs"
@@ -7590,7 +7884,7 @@
     },
     "macro.dbt.position": {
       "arguments": [],
-      "created_at": 1719485736.543356,
+      "created_at": 1747731927.7455611,
       "depends_on": {
         "macros": [
           "macro.dbt.default__position"
@@ -7614,7 +7908,7 @@
     },
     "macro.dbt.post_snapshot": {
       "arguments": [],
-      "created_at": 1719485736.355165,
+      "created_at": 1747731927.607726,
       "depends_on": {
         "macros": [
           "macro.dbt.default__post_snapshot"
@@ -7638,7 +7932,7 @@
     },
     "macro.dbt.process_schema_changes": {
       "arguments": [],
-      "created_at": 1719485736.44261,
+      "created_at": 1747731927.670649,
       "depends_on": {
         "macros": [
           "macro.dbt.check_for_schema_changes",
@@ -7663,7 +7957,7 @@
     },
     "macro.dbt.py_current_timestring": {
       "arguments": [],
-      "created_at": 1719485736.5255191,
+      "created_at": 1747731927.7305338,
       "depends_on": {
         "macros": []
       },
@@ -7685,7 +7979,7 @@
     },
     "macro.dbt.py_script_comment": {
       "arguments": [],
-      "created_at": 1719485736.6181471,
+      "created_at": 1747731927.80398,
       "depends_on": {
         "macros": []
       },
@@ -7707,7 +8001,7 @@
     },
     "macro.dbt.py_script_postfix": {
       "arguments": [],
-      "created_at": 1719485736.618067,
+      "created_at": 1747731927.803885,
       "depends_on": {
         "macros": [
           "macro.dbt.build_ref_function",
@@ -7736,7 +8030,7 @@
     },
     "macro.dbt.refresh_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.489407,
+      "created_at": 1747731927.702241,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__refresh_materialized_view"
@@ -7760,7 +8054,7 @@
     },
     "macro.dbt.rename_relation": {
       "arguments": [],
-      "created_at": 1719485736.478327,
+      "created_at": 1747731927.69734,
       "depends_on": {
         "macros": [
           "macro.dbt.default__rename_relation"
@@ -7784,7 +8078,7 @@
     },
     "macro.dbt.replace": {
       "arguments": [],
-      "created_at": 1719485736.532748,
+      "created_at": 1747731927.734698,
       "depends_on": {
         "macros": [
           "macro.dbt.default__replace"
@@ -7808,7 +8102,7 @@
     },
     "macro.dbt.reset_csv_table": {
       "arguments": [],
-      "created_at": 1719485736.460277,
+      "created_at": 1747731927.681515,
       "depends_on": {
         "macros": [
           "macro.dbt.default__reset_csv_table"
@@ -7832,7 +8126,7 @@
     },
     "macro.dbt.resolve_model_name": {
       "arguments": [],
-      "created_at": 1719485736.614536,
+      "created_at": 1747731927.800597,
       "depends_on": {
         "macros": [
           "macro.dbt.default__resolve_model_name"
@@ -7856,7 +8150,7 @@
     },
     "macro.dbt.right": {
       "arguments": [],
-      "created_at": 1719485736.538353,
+      "created_at": 1747731927.74013,
       "depends_on": {
         "macros": [
           "macro.dbt.default__right"
@@ -7880,7 +8174,7 @@
     },
     "macro.dbt.run_hooks": {
       "arguments": [],
-      "created_at": 1719485736.336357,
+      "created_at": 1747731927.590857,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -7904,7 +8198,7 @@
     },
     "macro.dbt.run_query": {
       "arguments": [],
-      "created_at": 1719485736.5202482,
+      "created_at": 1747731927.72649,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -7928,7 +8222,7 @@
     },
     "macro.dbt.safe_cast": {
       "arguments": [],
-      "created_at": 1719485736.540742,
+      "created_at": 1747731927.7427158,
       "depends_on": {
         "macros": [
           "macro.dbt.default__safe_cast"
@@ -7952,7 +8246,7 @@
     },
     "macro.dbt.set_sql_header": {
       "arguments": [],
-      "created_at": 1719485736.338798,
+      "created_at": 1747731927.592107,
       "depends_on": {
         "macros": []
       },
@@ -7974,7 +8268,7 @@
     },
     "macro.dbt.should_full_refresh": {
       "arguments": [],
-      "created_at": 1719485736.339242,
+      "created_at": 1747731927.5924969,
       "depends_on": {
         "macros": []
       },
@@ -7996,7 +8290,7 @@
     },
     "macro.dbt.should_revoke": {
       "arguments": [],
-      "created_at": 1719485736.573465,
+      "created_at": 1747731927.7715871,
       "depends_on": {
         "macros": [
           "macro.dbt.copy_grants"
@@ -8020,7 +8314,7 @@
     },
     "macro.dbt.should_store_failures": {
       "arguments": [],
-      "created_at": 1719485736.339565,
+      "created_at": 1747731927.592878,
       "depends_on": {
         "macros": []
       },
@@ -8042,7 +8336,7 @@
     },
     "macro.dbt.snapshot_check_all_get_existing_columns": {
       "arguments": [],
-      "created_at": 1719485736.3482602,
+      "created_at": 1747731927.6020842,
       "depends_on": {
         "macros": [
           "macro.dbt.get_columns_in_query"
@@ -8066,7 +8360,7 @@
     },
     "macro.dbt.snapshot_check_strategy": {
       "arguments": [],
-      "created_at": 1719485736.3500328,
+      "created_at": 1747731927.6040199,
       "depends_on": {
         "macros": [
           "macro.dbt.snapshot_get_time",
@@ -8080,7 +8374,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n    {% set check_cols_config = config['check_cols'] %}\n    {% set primary_key = config['unique_key'] %}\n    {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n    {% set updated_at = config.get('updated_at', snapshot_get_time()) %}\n\n    {% set column_added = false %}\n\n    {% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}\n\n    {%- set row_changed_expr -%}\n    (\n    {%- if column_added -%}\n        {{ get_true_sql() }}\n    {%- else -%}\n    {%- for col in check_cols -%}\n        {{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}\n        or\n        (\n            (({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))\n            or\n            ((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))\n        )\n        {%- if not loop.last %} or {% endif -%}\n    {%- endfor -%}\n    {%- endif -%}\n    )\n    {%- endset %}\n\n    {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n    {% do return({\n        \"unique_key\": primary_key,\n        \"updated_at\": updated_at,\n        \"row_changed\": row_changed_expr,\n        \"scd_id\": scd_id_expr,\n        \"invalidate_hard_deletes\": invalidate_hard_deletes\n    }) %}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "snapshot_check_strategy",
       "original_file_path": "macros/materializations/snapshots/strategies.sql",
@@ -8093,7 +8387,7 @@
     },
     "macro.dbt.snapshot_get_time": {
       "arguments": [],
-      "created_at": 1719485736.55953,
+      "created_at": 1747731927.75749,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__snapshot_get_time"
@@ -8117,7 +8411,7 @@
     },
     "macro.dbt.snapshot_hash_arguments": {
       "arguments": [],
-      "created_at": 1719485736.3454158,
+      "created_at": 1747731927.598088,
       "depends_on": {
         "macros": [
           "macro.dbt.default__snapshot_hash_arguments"
@@ -8141,7 +8435,7 @@
     },
     "macro.dbt.snapshot_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.3400362,
+      "created_at": 1747731927.5934432,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__snapshot_merge_sql"
@@ -8165,7 +8459,7 @@
     },
     "macro.dbt.snapshot_staging_table": {
       "arguments": [],
-      "created_at": 1719485736.355765,
+      "created_at": 1747731927.60846,
       "depends_on": {
         "macros": [
           "macro.dbt.default__snapshot_staging_table"
@@ -8189,7 +8483,7 @@
     },
     "macro.dbt.snapshot_string_as_time": {
       "arguments": [],
-      "created_at": 1719485736.3465831,
+      "created_at": 1747731927.600032,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__snapshot_string_as_time"
@@ -8213,9 +8507,10 @@
     },
     "macro.dbt.snapshot_timestamp_strategy": {
       "arguments": [],
-      "created_at": 1719485736.346405,
+      "created_at": 1747731927.599787,
       "depends_on": {
         "macros": [
+          "macro.dbt.get_snapshot_table_column_names",
           "macro.dbt.snapshot_hash_arguments"
         ]
       },
@@ -8224,7 +8519,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}\n    {% set primary_key = config['unique_key'] %}\n    {% set updated_at = config['updated_at'] %}\n    {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}\n\n    {#/*\n        The snapshot relation might not have an {{ updated_at }} value if the\n        snapshot strategy is changed from `check` to `timestamp`. We\n        should use a dbt-created column for the comparison in the snapshot\n        table instead of assuming that the user-supplied {{ updated_at }}\n        will be present in the historical data.\n\n        See https://github.com/dbt-labs/dbt-core/issues/2350\n    */ #}\n    {% set row_changed_expr -%}\n        ({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})\n    {%- endset %}\n\n    {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}\n\n    {% do return({\n        \"unique_key\": primary_key,\n        \"updated_at\": updated_at,\n        \"row_changed\": row_changed_expr,\n        \"scd_id\": scd_id_expr,\n        \"invalidate_hard_deletes\": invalidate_hard_deletes\n    }) %}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "snapshot_timestamp_strategy",
       "original_file_path": "macros/materializations/snapshots/strategies.sql",
@@ -8237,7 +8532,7 @@
     },
     "macro.dbt.split_part": {
       "arguments": [],
-      "created_at": 1719485736.55408,
+      "created_at": 1747731927.75264,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__split_part"
@@ -8261,7 +8556,7 @@
     },
     "macro.dbt.sql_convert_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.59661,
+      "created_at": 1747731927.787963,
       "depends_on": {
         "macros": []
       },
@@ -8283,7 +8578,7 @@
     },
     "macro.dbt.statement": {
       "arguments": [],
-      "created_at": 1719485736.51912,
+      "created_at": 1747731927.725317,
       "depends_on": {
         "macros": []
       },
@@ -8305,7 +8600,7 @@
     },
     "macro.dbt.strategy_dispatch": {
       "arguments": [],
-      "created_at": 1719485736.345131,
+      "created_at": 1747731927.597855,
       "depends_on": {
         "macros": []
       },
@@ -8327,7 +8622,7 @@
     },
     "macro.dbt.string_literal": {
       "arguments": [],
-      "created_at": 1719485736.543961,
+      "created_at": 1747731927.746068,
       "depends_on": {
         "macros": [
           "macro.dbt.default__string_literal"
@@ -8351,7 +8646,7 @@
     },
     "macro.dbt.support_multiple_grantees_per_dcl_statement": {
       "arguments": [],
-      "created_at": 1719485736.572978,
+      "created_at": 1747731927.770852,
       "depends_on": {
         "macros": [
           "macro.dbt.default__support_multiple_grantees_per_dcl_statement"
@@ -8375,7 +8670,7 @@
     },
     "macro.dbt.sync_column_schemas": {
       "arguments": [],
-      "created_at": 1719485736.4416761,
+      "created_at": 1747731927.6694121,
       "depends_on": {
         "macros": [
           "macro.dbt.alter_relation_add_remove_columns",
@@ -8400,7 +8695,7 @@
     },
     "macro.dbt.table_columns_and_constraints": {
       "arguments": [],
-      "created_at": 1719485736.500673,
+      "created_at": 1747731927.707312,
       "depends_on": {
         "macros": []
       },
@@ -8422,7 +8717,7 @@
     },
     "macro.dbt.test_accepted_values": {
       "arguments": [],
-      "created_at": 1719485736.6202009,
+      "created_at": 1747731927.805286,
       "depends_on": {
         "macros": [
           "macro.dbt.default__test_accepted_values"
@@ -8446,7 +8741,7 @@
     },
     "macro.dbt.test_not_null": {
       "arguments": [],
-      "created_at": 1719485736.619859,
+      "created_at": 1747731927.804893,
       "depends_on": {
         "macros": [
           "macro.dbt.default__test_not_null"
@@ -8470,7 +8765,7 @@
     },
     "macro.dbt.test_relationships": {
       "arguments": [],
-      "created_at": 1719485736.620512,
+      "created_at": 1747731927.805658,
       "depends_on": {
         "macros": [
           "macro.dbt.default__test_relationships"
@@ -8494,7 +8789,7 @@
     },
     "macro.dbt.test_unique": {
       "arguments": [],
-      "created_at": 1719485736.619491,
+      "created_at": 1747731927.804576,
       "depends_on": {
         "macros": [
           "macro.dbt.default__test_unique"
@@ -8518,7 +8813,7 @@
     },
     "macro.dbt.truncate_relation": {
       "arguments": [],
-      "created_at": 1719485736.567298,
+      "created_at": 1747731927.764297,
       "depends_on": {
         "macros": [
           "macro.dbt.default__truncate_relation"
@@ -8542,7 +8837,7 @@
     },
     "macro.dbt.type_bigint": {
       "arguments": [],
-      "created_at": 1719485736.548424,
+      "created_at": 1747731927.748919,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_bigint"
@@ -8566,7 +8861,7 @@
     },
     "macro.dbt.type_boolean": {
       "arguments": [],
-      "created_at": 1719485736.55002,
+      "created_at": 1747731927.749732,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_boolean"
@@ -8590,7 +8885,7 @@
     },
     "macro.dbt.type_float": {
       "arguments": [],
-      "created_at": 1719485736.547037,
+      "created_at": 1747731927.748051,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_float"
@@ -8614,7 +8909,7 @@
     },
     "macro.dbt.type_int": {
       "arguments": [],
-      "created_at": 1719485736.54878,
+      "created_at": 1747731927.749332,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_int"
@@ -8638,7 +8933,7 @@
     },
     "macro.dbt.type_numeric": {
       "arguments": [],
-      "created_at": 1719485736.547442,
+      "created_at": 1747731927.748472,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_numeric"
@@ -8662,7 +8957,7 @@
     },
     "macro.dbt.type_string": {
       "arguments": [],
-      "created_at": 1719485736.545998,
+      "created_at": 1747731927.747178,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_string"
@@ -8686,7 +8981,7 @@
     },
     "macro.dbt.type_timestamp": {
       "arguments": [],
-      "created_at": 1719485736.546634,
+      "created_at": 1747731927.7476008,
       "depends_on": {
         "macros": [
           "macro.dbt.default__type_timestamp"
@@ -8708,72 +9003,184 @@
       "supported_languages": null,
       "unique_id": "macro.dbt.type_timestamp"
     },
-    "macro.dbt.validate_sql": {
+    "macro.dbt.unique_key_fields": {
       "arguments": [],
-      "created_at": 1719485736.5702772,
+      "created_at": 1747731927.6170702,
       "depends_on": {
-        "macros": [
-          "macro.dbt.default__validate_sql"
-        ]
+        "macros": []
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro validate_sql(sql) -%}\n  {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}",
+      "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 %}",
       "meta": {},
-      "name": "validate_sql",
-      "original_file_path": "macros/adapters/validate_sql.sql",
+      "name": "unique_key_fields",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
       "package_name": "dbt",
       "patch_path": null,
-      "path": "macros/adapters/validate_sql.sql",
+      "path": "macros/materializations/snapshots/helpers.sql",
       "resource_type": "macro",
       "supported_languages": null,
-      "unique_id": "macro.dbt.validate_sql"
+      "unique_id": "macro.dbt.unique_key_fields"
     },
-    "macro.dbt_postgres.postgres__alter_column_comment": {
+    "macro.dbt.unique_key_is_not_null": {
       "arguments": [],
-      "created_at": 1719485736.314291,
+      "created_at": 1747731927.618146,
       "depends_on": {
-        "macros": [
-          "macro.dbt_postgres.postgres_escape_comment"
-        ]
+        "macros": []
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "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 %}",
+      "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 %}",
       "meta": {},
-      "name": "postgres__alter_column_comment",
-      "original_file_path": "macros/adapters.sql",
-      "package_name": "dbt_postgres",
+      "name": "unique_key_is_not_null",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
       "patch_path": null,
-      "path": "macros/adapters.sql",
+      "path": "macros/materializations/snapshots/helpers.sql",
       "resource_type": "macro",
       "supported_languages": null,
-      "unique_id": "macro.dbt_postgres.postgres__alter_column_comment"
+      "unique_id": "macro.dbt.unique_key_is_not_null"
     },
-    "macro.dbt_postgres.postgres__alter_relation_comment": {
+    "macro.dbt.unique_key_is_null": {
       "arguments": [],
-      "created_at": 1719485736.312385,
+      "created_at": 1747731927.617883,
       "depends_on": {
-        "macros": [
-          "macro.dbt_postgres.postgres_escape_comment"
-        ]
+        "macros": []
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro postgres__alter_relation_comment(relation, comment) %}\n  {% set escaped_comment = postgres_escape_comment(comment) %}\n  comment on {{ relation.type }} {{ relation }} is {{ escaped_comment }};\n{% endmacro %}",
+      "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 %}",
       "meta": {},
-      "name": "postgres__alter_relation_comment",
-      "original_file_path": "macros/adapters.sql",
-      "package_name": "dbt_postgres",
+      "name": "unique_key_is_null",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.unique_key_is_null"
+    },
+    "macro.dbt.unique_key_join_on": {
+      "arguments": [],
+      "created_at": 1747731927.617616,
+      "depends_on": {
+        "macros": []
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{% macro unique_key_join_on(unique_key, identifier, from_identifier) %}\n    {% if unique_key | is_list %}\n        {% for key in unique_key %}\n            {{ identifier }}.dbt_unique_key_{{ loop.index }} = {{ from_identifier }}.dbt_unique_key_{{ loop.index }}\n            {%- if not loop.last %} and {%- endif %}\n        {% endfor %}\n    {% else %}\n        {{ identifier }}.dbt_unique_key = {{ from_identifier }}.dbt_unique_key\n    {% endif %}\n{% endmacro %}",
+      "meta": {},
+      "name": "unique_key_join_on",
+      "original_file_path": "macros/materializations/snapshots/helpers.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/materializations/snapshots/helpers.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.unique_key_join_on"
+    },
+    "macro.dbt.validate_fixture_rows": {
+      "arguments": [],
+      "created_at": 1747731927.7995038,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.default__validate_fixture_rows"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{%- macro validate_fixture_rows(rows, row_number) -%}\n  {{ return(adapter.dispatch('validate_fixture_rows', 'dbt')(rows, row_number)) }}\n{%- endmacro -%}\n\n",
+      "meta": {},
+      "name": "validate_fixture_rows",
+      "original_file_path": "macros/unit_test_sql/get_fixture_sql.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/unit_test_sql/get_fixture_sql.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.validate_fixture_rows"
+    },
+    "macro.dbt.validate_sql": {
+      "arguments": [],
+      "created_at": 1747731927.7684648,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.default__validate_sql"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "macro_sql": "{% macro validate_sql(sql) -%}\n  {{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}\n{% endmacro %}",
+      "meta": {},
+      "name": "validate_sql",
+      "original_file_path": "macros/adapters/validate_sql.sql",
+      "package_name": "dbt",
+      "patch_path": null,
+      "path": "macros/adapters/validate_sql.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt.validate_sql"
+    },
+    "macro.dbt_postgres.postgres__alter_column_comment": {
+      "arguments": [],
+      "created_at": 1747731927.573863,
+      "depends_on": {
+        "macros": [
+          "macro.dbt_postgres.postgres_escape_comment"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "postgres__alter_column_comment",
+      "original_file_path": "macros/adapters.sql",
+      "package_name": "dbt_postgres",
+      "patch_path": null,
+      "path": "macros/adapters.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt_postgres.postgres__alter_column_comment"
+    },
+    "macro.dbt_postgres.postgres__alter_relation_comment": {
+      "arguments": [],
+      "created_at": 1747731927.573079,
+      "depends_on": {
+        "macros": [
+          "macro.dbt_postgres.postgres_escape_comment"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "postgres__alter_relation_comment",
+      "original_file_path": "macros/adapters.sql",
+      "package_name": "dbt_postgres",
       "patch_path": null,
       "path": "macros/adapters.sql",
       "resource_type": "macro",
@@ -8782,7 +9189,7 @@
     },
     "macro.dbt_postgres.postgres__any_value": {
       "arguments": [],
-      "created_at": 1719485736.332639,
+      "created_at": 1747731927.588298,
       "depends_on": {
         "macros": []
       },
@@ -8804,7 +9211,7 @@
     },
     "macro.dbt_postgres.postgres__check_schema_exists": {
       "arguments": [],
-      "created_at": 1719485736.309761,
+      "created_at": 1747731927.567126,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -8828,7 +9235,7 @@
     },
     "macro.dbt_postgres.postgres__copy_grants": {
       "arguments": [],
-      "created_at": 1719485736.3146439,
+      "created_at": 1747731927.57429,
       "depends_on": {
         "macros": []
       },
@@ -8850,7 +9257,7 @@
     },
     "macro.dbt_postgres.postgres__create_schema": {
       "arguments": [],
-      "created_at": 1719485736.306344,
+      "created_at": 1747731927.562762,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -8874,7 +9281,7 @@
     },
     "macro.dbt_postgres.postgres__create_table_as": {
       "arguments": [],
-      "created_at": 1719485736.3053398,
+      "created_at": 1747731927.5616121,
       "depends_on": {
         "macros": [
           "macro.dbt.get_assert_columns_equivalent",
@@ -8901,7 +9308,7 @@
     },
     "macro.dbt_postgres.postgres__current_timestamp": {
       "arguments": [],
-      "created_at": 1719485736.2888992,
+      "created_at": 1747731927.5544891,
       "depends_on": {
         "macros": []
       },
@@ -8923,7 +9330,7 @@
     },
     "macro.dbt_postgres.postgres__current_timestamp_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.289357,
+      "created_at": 1747731927.5550542,
       "depends_on": {
         "macros": [
           "macro.dbt.type_timestamp"
@@ -8947,7 +9354,7 @@
     },
     "macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat": {
       "arguments": [],
-      "created_at": 1719485736.289477,
+      "created_at": 1747731927.555201,
       "depends_on": {
         "macros": [
           "macro.dbt.type_timestamp"
@@ -8971,7 +9378,7 @@
     },
     "macro.dbt_postgres.postgres__dateadd": {
       "arguments": [],
-      "created_at": 1719485736.328303,
+      "created_at": 1747731927.5842838,
       "depends_on": {
         "macros": []
       },
@@ -8993,7 +9400,7 @@
     },
     "macro.dbt_postgres.postgres__datediff": {
       "arguments": [],
-      "created_at": 1719485736.332466,
+      "created_at": 1747731927.588048,
       "depends_on": {
         "macros": [
           "macro.dbt.datediff"
@@ -9017,7 +9424,7 @@
     },
     "macro.dbt_postgres.postgres__describe_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.320213,
+      "created_at": 1747731927.578354,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query",
@@ -9042,7 +9449,7 @@
     },
     "macro.dbt_postgres.postgres__drop_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.319324,
+      "created_at": 1747731927.577953,
       "depends_on": {
         "macros": []
       },
@@ -9064,7 +9471,7 @@
     },
     "macro.dbt_postgres.postgres__drop_schema": {
       "arguments": [],
-      "created_at": 1719485736.307206,
+      "created_at": 1747731927.5632598,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -9088,7 +9495,7 @@
     },
     "macro.dbt_postgres.postgres__drop_table": {
       "arguments": [],
-      "created_at": 1719485736.3256729,
+      "created_at": 1747731927.581559,
       "depends_on": {
         "macros": []
       },
@@ -9110,7 +9517,7 @@
     },
     "macro.dbt_postgres.postgres__drop_view": {
       "arguments": [],
-      "created_at": 1719485736.327039,
+      "created_at": 1747731927.583054,
       "depends_on": {
         "macros": []
       },
@@ -9132,7 +9539,7 @@
     },
     "macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.3214989,
+      "created_at": 1747731927.5796201,
       "depends_on": {
         "macros": [
           "macro.dbt.get_replace_sql",
@@ -9157,7 +9564,7 @@
     },
     "macro.dbt_postgres.postgres__get_catalog": {
       "arguments": [],
-      "created_at": 1719485736.292309,
+      "created_at": 1747731927.557344,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_catalog_relations"
@@ -9181,7 +9588,7 @@
     },
     "macro.dbt_postgres.postgres__get_catalog_relations": {
       "arguments": [],
-      "created_at": 1719485736.2918808,
+      "created_at": 1747731927.55684,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -9205,7 +9612,7 @@
     },
     "macro.dbt_postgres.postgres__get_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.308002,
+      "created_at": 1747731927.563999,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -9230,7 +9637,7 @@
     },
     "macro.dbt_postgres.postgres__get_create_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.30595,
+      "created_at": 1747731927.562346,
       "depends_on": {
         "macros": []
       },
@@ -9252,7 +9659,7 @@
     },
     "macro.dbt_postgres.postgres__get_create_materialized_view_as_sql": {
       "arguments": [],
-      "created_at": 1719485736.3255181,
+      "created_at": 1747731927.581357,
       "depends_on": {
         "macros": [
           "macro.dbt.get_create_index_sql"
@@ -9263,7 +9670,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro postgres__get_create_materialized_view_as_sql(relation, sql) %}\n    create materialized view if not exists {{ relation }} as {{ sql }};\n\n    {% for _index_dict in config.get('indexes', []) -%}\n        {{- get_create_index_sql(relation, _index_dict) -}}\n    {%- endfor -%}\n\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "postgres__get_create_materialized_view_as_sql",
       "original_file_path": "macros/relations/materialized_view/create.sql",
@@ -9276,7 +9683,7 @@
     },
     "macro.dbt_postgres.postgres__get_drop_index_sql": {
       "arguments": [],
-      "created_at": 1719485736.3150148,
+      "created_at": 1747731927.57473,
       "depends_on": {
         "macros": []
       },
@@ -9298,7 +9705,7 @@
     },
     "macro.dbt_postgres.postgres__get_incremental_default_sql": {
       "arguments": [],
-      "created_at": 1719485736.316301,
+      "created_at": 1747731927.575518,
       "depends_on": {
         "macros": [
           "macro.dbt.get_incremental_delete_insert_sql",
@@ -9321,9 +9728,34 @@
       "supported_languages": null,
       "unique_id": "macro.dbt_postgres.postgres__get_incremental_default_sql"
     },
+    "macro.dbt_postgres.postgres__get_incremental_microbatch_sql": {
+      "arguments": [],
+      "created_at": 1747731927.576177,
+      "depends_on": {
+        "macros": [
+          "macro.dbt.get_incremental_merge_sql",
+          "macro.dbt.default__get_incremental_merge_sql"
+        ]
+      },
+      "description": "",
+      "docs": {
+        "node_color": null,
+        "show": true
+      },
+      "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 %}",
+      "meta": {},
+      "name": "postgres__get_incremental_microbatch_sql",
+      "original_file_path": "macros/materializations/incremental_strategies.sql",
+      "package_name": "dbt_postgres",
+      "patch_path": null,
+      "path": "macros/materializations/incremental_strategies.sql",
+      "resource_type": "macro",
+      "supported_languages": null,
+      "unique_id": "macro.dbt_postgres.postgres__get_incremental_microbatch_sql"
+    },
     "macro.dbt_postgres.postgres__get_materialized_view_configuration_changes": {
       "arguments": [],
-      "created_at": 1719485736.324945,
+      "created_at": 1747731927.580746,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__describe_materialized_view"
@@ -9347,7 +9779,7 @@
     },
     "macro.dbt_postgres.postgres__get_relations": {
       "arguments": [],
-      "created_at": 1719485736.293338,
+      "created_at": 1747731927.558175,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -9371,7 +9803,7 @@
     },
     "macro.dbt_postgres.postgres__get_rename_materialized_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.3205602,
+      "created_at": 1747731927.5788019,
       "depends_on": {
         "macros": []
       },
@@ -9393,7 +9825,7 @@
     },
     "macro.dbt_postgres.postgres__get_rename_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.326884,
+      "created_at": 1747731927.582858,
       "depends_on": {
         "macros": []
       },
@@ -9415,7 +9847,7 @@
     },
     "macro.dbt_postgres.postgres__get_rename_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.32807,
+      "created_at": 1747731927.5839942,
       "depends_on": {
         "macros": []
       },
@@ -9437,7 +9869,7 @@
     },
     "macro.dbt_postgres.postgres__get_replace_table_sql": {
       "arguments": [],
-      "created_at": 1719485736.326431,
+      "created_at": 1747731927.582569,
       "depends_on": {
         "macros": [
           "macro.dbt.get_assert_columns_equivalent",
@@ -9463,7 +9895,7 @@
     },
     "macro.dbt_postgres.postgres__get_replace_view_sql": {
       "arguments": [],
-      "created_at": 1719485736.327884,
+      "created_at": 1747731927.583754,
       "depends_on": {
         "macros": [
           "macro.dbt.get_assert_columns_equivalent"
@@ -9487,7 +9919,7 @@
     },
     "macro.dbt_postgres.postgres__get_show_grant_sql": {
       "arguments": [],
-      "created_at": 1719485736.314513,
+      "created_at": 1747731927.574135,
       "depends_on": {
         "macros": []
       },
@@ -9509,7 +9941,7 @@
     },
     "macro.dbt_postgres.postgres__get_show_indexes_sql": {
       "arguments": [],
-      "created_at": 1719485736.31486,
+      "created_at": 1747731927.5745301,
       "depends_on": {
         "macros": []
       },
@@ -9531,7 +9963,7 @@
     },
     "macro.dbt_postgres.postgres__information_schema_name": {
       "arguments": [],
-      "created_at": 1719485736.308933,
+      "created_at": 1747731927.564801,
       "depends_on": {
         "macros": []
       },
@@ -9553,7 +9985,7 @@
     },
     "macro.dbt_postgres.postgres__last_day": {
       "arguments": [],
-      "created_at": 1719485736.333154,
+      "created_at": 1747731927.588948,
       "depends_on": {
         "macros": [
           "macro.dbt.dateadd",
@@ -9579,7 +10011,7 @@
     },
     "macro.dbt_postgres.postgres__list_relations_without_caching": {
       "arguments": [],
-      "created_at": 1719485736.308728,
+      "created_at": 1747731927.564577,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -9603,7 +10035,7 @@
     },
     "macro.dbt_postgres.postgres__list_schemas": {
       "arguments": [],
-      "created_at": 1719485736.309331,
+      "created_at": 1747731927.566249,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -9627,7 +10059,7 @@
     },
     "macro.dbt_postgres.postgres__listagg": {
       "arguments": [],
-      "created_at": 1719485736.329083,
+      "created_at": 1747731927.584971,
       "depends_on": {
         "macros": []
       },
@@ -9649,7 +10081,7 @@
     },
     "macro.dbt_postgres.postgres__make_backup_relation": {
       "arguments": [],
-      "created_at": 1719485736.311583,
+      "created_at": 1747731927.572017,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_relation_with_suffix"
@@ -9673,7 +10105,7 @@
     },
     "macro.dbt_postgres.postgres__make_intermediate_relation": {
       "arguments": [],
-      "created_at": 1719485736.3109372,
+      "created_at": 1747731927.5711749,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_relation_with_suffix"
@@ -9697,7 +10129,7 @@
     },
     "macro.dbt_postgres.postgres__make_relation_with_suffix": {
       "arguments": [],
-      "created_at": 1719485736.31072,
+      "created_at": 1747731927.570091,
       "depends_on": {
         "macros": []
       },
@@ -9719,7 +10151,7 @@
     },
     "macro.dbt_postgres.postgres__make_temp_relation": {
       "arguments": [],
-      "created_at": 1719485736.31129,
+      "created_at": 1747731927.57165,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__make_relation_with_suffix"
@@ -9743,7 +10175,7 @@
     },
     "macro.dbt_postgres.postgres__refresh_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.32038,
+      "created_at": 1747731927.578568,
       "depends_on": {
         "macros": []
       },
@@ -9765,7 +10197,7 @@
     },
     "macro.dbt_postgres.postgres__snapshot_get_time": {
       "arguments": [],
-      "created_at": 1719485736.289238,
+      "created_at": 1747731927.5549068,
       "depends_on": {
         "macros": [
           "macro.dbt.current_timestamp"
@@ -9789,16 +10221,18 @@
     },
     "macro.dbt_postgres.postgres__snapshot_merge_sql": {
       "arguments": [],
-      "created_at": 1719485736.318985,
+      "created_at": 1747731927.577738,
       "depends_on": {
-        "macros": []
+        "macros": [
+          "macro.dbt.get_snapshot_table_column_names"
+        ]
       },
       "description": "",
       "docs": {
         "node_color": null,
         "show": true
       },
-      "macro_sql": "{% macro postgres__snapshot_merge_sql(target, source, insert_cols) -%}\n    {%- set insert_cols_csv = insert_cols | join(', ') -%}\n\n    update {{ target }}\n    set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to\n    from {{ source }} as DBT_INTERNAL_SOURCE\n    where DBT_INTERNAL_SOURCE.dbt_scd_id::text = {{ target }}.dbt_scd_id::text\n      and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)\n      and {{ target }}.dbt_valid_to is null;\n\n    insert into {{ target }} ({{ insert_cols_csv }})\n    select {% for column in insert_cols -%}\n        DBT_INTERNAL_SOURCE.{{ column }} {%- if not loop.last %}, {%- endif %}\n    {%- endfor %}\n    from {{ source }} as DBT_INTERNAL_SOURCE\n    where DBT_INTERNAL_SOURCE.dbt_change_type::text = 'insert'::text;\n{% endmacro %}",
+      "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 %}",
       "meta": {},
       "name": "postgres__snapshot_merge_sql",
       "original_file_path": "macros/materializations/snapshot_merge.sql",
@@ -9811,7 +10245,7 @@
     },
     "macro.dbt_postgres.postgres__snapshot_string_as_time": {
       "arguments": [],
-      "created_at": 1719485736.289119,
+      "created_at": 1747731927.55475,
       "depends_on": {
         "macros": []
       },
@@ -9833,7 +10267,7 @@
     },
     "macro.dbt_postgres.postgres__split_part": {
       "arguments": [],
-      "created_at": 1719485736.334007,
+      "created_at": 1747731927.589598,
       "depends_on": {
         "macros": [
           "macro.dbt.default__split_part",
@@ -9858,7 +10292,7 @@
     },
     "macro.dbt_postgres.postgres__update_indexes_on_materialized_view": {
       "arguments": [],
-      "created_at": 1719485736.3239639,
+      "created_at": 1747731927.580349,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_drop_index_sql",
@@ -9870,7 +10304,7 @@
         "node_color": null,
         "show": true
       },
-      "macro_sql": "\n\n\n{%- macro postgres__update_indexes_on_materialized_view(relation, index_changes) -%}\n    {{- log(\"Applying UPDATE INDEXES to: \" ~ relation) -}}\n\n    {%- for _index_change in index_changes -%}\n        {%- set _index = _index_change.context -%}\n\n        {%- if _index_change.action == \"drop\" -%}\n\n            {{ postgres__get_drop_index_sql(relation, _index.name) }};\n\n        {%- elif _index_change.action == \"create\" -%}\n\n            {{ postgres__get_create_index_sql(relation, _index.as_node_config) }}\n\n        {%- endif -%}\n\n    {%- endfor -%}\n\n{%- endmacro -%}\n\n\n",
+      "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",
       "meta": {},
       "name": "postgres__update_indexes_on_materialized_view",
       "original_file_path": "macros/relations/materialized_view/alter.sql",
@@ -9883,7 +10317,7 @@
     },
     "macro.dbt_postgres.postgres_escape_comment": {
       "arguments": [],
-      "created_at": 1719485736.3121421,
+      "created_at": 1747731927.57259,
       "depends_on": {
         "macros": []
       },
@@ -9905,7 +10339,7 @@
     },
     "macro.dbt_postgres.postgres_get_relations": {
       "arguments": [],
-      "created_at": 1719485736.2934961,
+      "created_at": 1747731927.55835,
       "depends_on": {
         "macros": [
           "macro.dbt_postgres.postgres__get_relations"
@@ -9929,7 +10363,7 @@
     },
     "macro.dbt_utils._bigquery__get_matching_schemata": {
       "arguments": [],
-      "created_at": 1719485736.7140338,
+      "created_at": 1747731927.872,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query"
@@ -9953,7 +10387,7 @@
     },
     "macro.dbt_utils._is_ephemeral": {
       "arguments": [],
-      "created_at": 1719485736.667329,
+      "created_at": 1747731927.838956,
       "depends_on": {
         "macros": []
       },
@@ -9975,7 +10409,7 @@
     },
     "macro.dbt_utils._is_relation": {
       "arguments": [],
-      "created_at": 1719485736.6636631,
+      "created_at": 1747731927.836006,
       "depends_on": {
         "macros": []
       },
@@ -9997,7 +10431,7 @@
     },
     "macro.dbt_utils.bigquery__deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.703784,
+      "created_at": 1747731927.865907,
       "depends_on": {
         "macros": []
       },
@@ -10019,7 +10453,7 @@
     },
     "macro.dbt_utils.bigquery__get_tables_by_pattern_sql": {
       "arguments": [],
-      "created_at": 1719485736.713356,
+      "created_at": 1747731927.8713422,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._bigquery__get_matching_schemata",
@@ -10044,7 +10478,7 @@
     },
     "macro.dbt_utils.bigquery__haversine_distance": {
       "arguments": [],
-      "created_at": 1719485736.73806,
+      "created_at": 1747731927.888902,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.degrees_to_radians"
@@ -10068,7 +10502,7 @@
     },
     "macro.dbt_utils.databricks__get_table_types_sql": {
       "arguments": [],
-      "created_at": 1719485736.73151,
+      "created_at": 1747731927.8842628,
       "depends_on": {
         "macros": []
       },
@@ -10090,7 +10524,7 @@
     },
     "macro.dbt_utils.date_spine": {
       "arguments": [],
-      "created_at": 1719485736.669255,
+      "created_at": 1747731927.840684,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__date_spine"
@@ -10114,7 +10548,7 @@
     },
     "macro.dbt_utils.deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.7012029,
+      "created_at": 1747731927.8645592,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.postgres__deduplicate"
@@ -10138,7 +10572,7 @@
     },
     "macro.dbt_utils.default__date_spine": {
       "arguments": [],
-      "created_at": 1719485736.669651,
+      "created_at": 1747731927.8411489,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.generate_series",
@@ -10164,7 +10598,7 @@
     },
     "macro.dbt_utils.default__deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.701886,
+      "created_at": 1747731927.864841,
       "depends_on": {
         "macros": []
       },
@@ -10186,7 +10620,7 @@
     },
     "macro.dbt_utils.default__generate_series": {
       "arguments": [],
-      "created_at": 1719485736.678598,
+      "created_at": 1747731927.8471801,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.get_powers_of_two"
@@ -10210,7 +10644,7 @@
     },
     "macro.dbt_utils.default__generate_surrogate_key": {
       "arguments": [],
-      "created_at": 1719485736.730099,
+      "created_at": 1747731927.883199,
       "depends_on": {
         "macros": [
           "macro.dbt.type_string",
@@ -10236,7 +10670,7 @@
     },
     "macro.dbt_utils.default__get_column_values": {
       "arguments": [],
-      "created_at": 1719485736.717495,
+      "created_at": 1747731927.87493,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_ephemeral",
@@ -10262,7 +10696,7 @@
     },
     "macro.dbt_utils.default__get_filtered_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.722564,
+      "created_at": 1747731927.878995,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -10287,7 +10721,7 @@
     },
     "macro.dbt_utils.default__get_intervals_between": {
       "arguments": [],
-      "created_at": 1719485736.668746,
+      "created_at": 1747731927.84039,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -10312,7 +10746,7 @@
     },
     "macro.dbt_utils.default__get_powers_of_two": {
       "arguments": [],
-      "created_at": 1719485736.677862,
+      "created_at": 1747731927.846244,
       "depends_on": {
         "macros": []
       },
@@ -10334,7 +10768,7 @@
     },
     "macro.dbt_utils.default__get_query_results_as_dict": {
       "arguments": [],
-      "created_at": 1719485736.727696,
+      "created_at": 1747731927.881738,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -10358,7 +10792,7 @@
     },
     "macro.dbt_utils.default__get_relations_by_pattern": {
       "arguments": [],
-      "created_at": 1719485736.674046,
+      "created_at": 1747731927.845014,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -10383,7 +10817,7 @@
     },
     "macro.dbt_utils.default__get_relations_by_prefix": {
       "arguments": [],
-      "created_at": 1719485736.680293,
+      "created_at": 1747731927.8490582,
       "depends_on": {
         "macros": [
           "macro.dbt.statement",
@@ -10408,7 +10842,7 @@
     },
     "macro.dbt_utils.default__get_single_value": {
       "arguments": [],
-      "created_at": 1719485736.7332969,
+      "created_at": 1747731927.886017,
       "depends_on": {
         "macros": [
           "macro.dbt.statement"
@@ -10432,7 +10866,7 @@
     },
     "macro.dbt_utils.default__get_table_types_sql": {
       "arguments": [],
-      "created_at": 1719485736.73105,
+      "created_at": 1747731927.883857,
       "depends_on": {
         "macros": []
       },
@@ -10454,7 +10888,7 @@
     },
     "macro.dbt_utils.default__get_tables_by_pattern_sql": {
       "arguments": [],
-      "created_at": 1719485736.7122319,
+      "created_at": 1747731927.870323,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.get_table_types_sql"
@@ -10478,7 +10912,7 @@
     },
     "macro.dbt_utils.default__get_tables_by_prefix_sql": {
       "arguments": [],
-      "created_at": 1719485736.681414,
+      "created_at": 1747731927.849935,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.get_tables_by_pattern_sql"
@@ -10502,7 +10936,7 @@
     },
     "macro.dbt_utils.default__get_url_host": {
       "arguments": [],
-      "created_at": 1719485736.621399,
+      "created_at": 1747731927.806769,
       "depends_on": {
         "macros": [
           "macro.dbt.split_part",
@@ -10529,7 +10963,7 @@
     },
     "macro.dbt_utils.default__get_url_parameter": {
       "arguments": [],
-      "created_at": 1719485736.624197,
+      "created_at": 1747731927.808855,
       "depends_on": {
         "macros": [
           "macro.dbt.split_part"
@@ -10553,7 +10987,7 @@
     },
     "macro.dbt_utils.default__get_url_path": {
       "arguments": [],
-      "created_at": 1719485736.6228778,
+      "created_at": 1747731927.808048,
       "depends_on": {
         "macros": [
           "macro.dbt.replace",
@@ -10583,7 +11017,7 @@
     },
     "macro.dbt_utils.default__group_by": {
       "arguments": [],
-      "created_at": 1719485736.700402,
+      "created_at": 1747731927.86381,
       "depends_on": {
         "macros": []
       },
@@ -10605,7 +11039,7 @@
     },
     "macro.dbt_utils.default__haversine_distance": {
       "arguments": [],
-      "created_at": 1719485736.736367,
+      "created_at": 1747731927.887831,
       "depends_on": {
         "macros": []
       },
@@ -10627,7 +11061,7 @@
     },
     "macro.dbt_utils.default__log_info": {
       "arguments": [],
-      "created_at": 1719485736.665316,
+      "created_at": 1747731927.837184,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.pretty_log_format"
@@ -10651,7 +11085,7 @@
     },
     "macro.dbt_utils.default__nullcheck": {
       "arguments": [],
-      "created_at": 1719485736.7089212,
+      "created_at": 1747731927.868929,
       "depends_on": {
         "macros": []
       },
@@ -10673,7 +11107,7 @@
     },
     "macro.dbt_utils.default__nullcheck_table": {
       "arguments": [],
-      "created_at": 1719485736.6715178,
+      "created_at": 1747731927.843101,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -10699,7 +11133,7 @@
     },
     "macro.dbt_utils.default__pivot": {
       "arguments": [],
-      "created_at": 1719485736.720366,
+      "created_at": 1747731927.877446,
       "depends_on": {
         "macros": [
           "macro.dbt.escape_single_quotes",
@@ -10724,7 +11158,7 @@
     },
     "macro.dbt_utils.default__pretty_log_format": {
       "arguments": [],
-      "created_at": 1719485736.66297,
+      "created_at": 1747731927.835427,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.pretty_time"
@@ -10748,7 +11182,7 @@
     },
     "macro.dbt_utils.default__pretty_time": {
       "arguments": [],
-      "created_at": 1719485736.66434,
+      "created_at": 1747731927.836617,
       "depends_on": {
         "macros": []
       },
@@ -10770,7 +11204,7 @@
     },
     "macro.dbt_utils.default__safe_add": {
       "arguments": [],
-      "created_at": 1719485736.707396,
+      "created_at": 1747731927.867966,
       "depends_on": {
         "macros": []
       },
@@ -10792,7 +11226,7 @@
     },
     "macro.dbt_utils.default__safe_divide": {
       "arguments": [],
-      "created_at": 1719485736.689852,
+      "created_at": 1747731927.856703,
       "depends_on": {
         "macros": []
       },
@@ -10814,7 +11248,7 @@
     },
     "macro.dbt_utils.default__safe_subtract": {
       "arguments": [],
-      "created_at": 1719485736.670645,
+      "created_at": 1747731927.842276,
       "depends_on": {
         "macros": []
       },
@@ -10836,7 +11270,7 @@
     },
     "macro.dbt_utils.default__star": {
       "arguments": [],
-      "created_at": 1719485736.685639,
+      "created_at": 1747731927.85287,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -10862,7 +11296,7 @@
     },
     "macro.dbt_utils.default__surrogate_key": {
       "arguments": [],
-      "created_at": 1719485736.7051,
+      "created_at": 1747731927.866734,
       "depends_on": {
         "macros": []
       },
@@ -10884,7 +11318,7 @@
     },
     "macro.dbt_utils.default__test_accepted_range": {
       "arguments": [],
-      "created_at": 1719485736.6358259,
+      "created_at": 1747731927.8190022,
       "depends_on": {
         "macros": []
       },
@@ -10906,7 +11340,7 @@
     },
     "macro.dbt_utils.default__test_at_least_one": {
       "arguments": [],
-      "created_at": 1719485736.638953,
+      "created_at": 1747731927.8220842,
       "depends_on": {
         "macros": []
       },
@@ -10928,7 +11362,7 @@
     },
     "macro.dbt_utils.default__test_cardinality_equality": {
       "arguments": [],
-      "created_at": 1719485736.646685,
+      "created_at": 1747731927.824446,
       "depends_on": {
         "macros": [
           "macro.dbt.except"
@@ -10952,7 +11386,7 @@
     },
     "macro.dbt_utils.default__test_equal_rowcount": {
       "arguments": [],
-      "created_at": 1719485736.629295,
+      "created_at": 1747731927.813327,
       "depends_on": {
         "macros": []
       },
@@ -10974,7 +11408,7 @@
     },
     "macro.dbt_utils.default__test_equality": {
       "arguments": [],
-      "created_at": 1719485736.654316,
+      "created_at": 1747731927.830786,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -11000,7 +11434,7 @@
     },
     "macro.dbt_utils.default__test_expression_is_true": {
       "arguments": [],
-      "created_at": 1719485736.6476219,
+      "created_at": 1747731927.825386,
       "depends_on": {
         "macros": [
           "macro.dbt.should_store_failures"
@@ -11024,7 +11458,7 @@
     },
     "macro.dbt_utils.default__test_fewer_rows_than": {
       "arguments": [],
-      "created_at": 1719485736.626648,
+      "created_at": 1747731927.810981,
       "depends_on": {
         "macros": []
       },
@@ -11046,7 +11480,7 @@
     },
     "macro.dbt_utils.default__test_mutually_exclusive_ranges": {
       "arguments": [],
-      "created_at": 1719485736.662267,
+      "created_at": 1747731927.834852,
       "depends_on": {
         "macros": []
       },
@@ -11068,7 +11502,7 @@
     },
     "macro.dbt_utils.default__test_not_accepted_values": {
       "arguments": [],
-      "created_at": 1719485736.636965,
+      "created_at": 1747731927.820447,
       "depends_on": {
         "macros": []
       },
@@ -11090,7 +11524,7 @@
     },
     "macro.dbt_utils.default__test_not_constant": {
       "arguments": [],
-      "created_at": 1719485736.634388,
+      "created_at": 1747731927.8177211,
       "depends_on": {
         "macros": []
       },
@@ -11112,7 +11546,7 @@
     },
     "macro.dbt_utils.default__test_not_empty_string": {
       "arguments": [],
-      "created_at": 1719485736.655891,
+      "created_at": 1747731927.83168,
       "depends_on": {
         "macros": []
       },
@@ -11134,7 +11568,7 @@
     },
     "macro.dbt_utils.default__test_not_null_proportion": {
       "arguments": [],
-      "created_at": 1719485736.6493912,
+      "created_at": 1747731927.827005,
       "depends_on": {
         "macros": []
       },
@@ -11156,7 +11590,7 @@
     },
     "macro.dbt_utils.default__test_recency": {
       "arguments": [],
-      "created_at": 1719485736.633423,
+      "created_at": 1747731927.816565,
       "depends_on": {
         "macros": [
           "macro.dbt.dateadd",
@@ -11182,7 +11616,7 @@
     },
     "macro.dbt_utils.default__test_relationships_where": {
       "arguments": [],
-      "created_at": 1719485736.630768,
+      "created_at": 1747731927.814611,
       "depends_on": {
         "macros": []
       },
@@ -11204,7 +11638,7 @@
     },
     "macro.dbt_utils.default__test_sequential_values": {
       "arguments": [],
-      "created_at": 1719485736.652041,
+      "created_at": 1747731927.828941,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.slugify",
@@ -11230,7 +11664,7 @@
     },
     "macro.dbt_utils.default__test_unique_combination_of_columns": {
       "arguments": [],
-      "created_at": 1719485736.643641,
+      "created_at": 1747731927.823483,
       "depends_on": {
         "macros": []
       },
@@ -11252,7 +11686,7 @@
     },
     "macro.dbt_utils.default__union_relations": {
       "arguments": [],
-      "created_at": 1719485736.6993861,
+      "created_at": 1747731927.8630772,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -11279,7 +11713,7 @@
     },
     "macro.dbt_utils.default__unpivot": {
       "arguments": [],
-      "created_at": 1719485736.689354,
+      "created_at": 1747731927.8560798,
       "depends_on": {
         "macros": [
           "macro.dbt_utils._is_relation",
@@ -11306,7 +11740,7 @@
     },
     "macro.dbt_utils.default__width_bucket": {
       "arguments": [],
-      "created_at": 1719485736.7257888,
+      "created_at": 1747731927.880204,
       "depends_on": {
         "macros": [
           "macro.dbt.safe_cast",
@@ -11331,7 +11765,7 @@
     },
     "macro.dbt_utils.degrees_to_radians": {
       "arguments": [],
-      "created_at": 1719485736.735244,
+      "created_at": 1747731927.88672,
       "depends_on": {
         "macros": []
       },
@@ -11353,7 +11787,7 @@
     },
     "macro.dbt_utils.generate_series": {
       "arguments": [],
-      "created_at": 1719485736.678059,
+      "created_at": 1747731927.8464909,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__generate_series"
@@ -11377,7 +11811,7 @@
     },
     "macro.dbt_utils.generate_surrogate_key": {
       "arguments": [],
-      "created_at": 1719485736.7287118,
+      "created_at": 1747731927.882237,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__generate_surrogate_key"
@@ -11401,7 +11835,7 @@
     },
     "macro.dbt_utils.get_column_values": {
       "arguments": [],
-      "created_at": 1719485736.7158039,
+      "created_at": 1747731927.87301,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_column_values"
@@ -11425,7 +11859,7 @@
     },
     "macro.dbt_utils.get_filtered_columns_in_relation": {
       "arguments": [],
-      "created_at": 1719485736.7211049,
+      "created_at": 1747731927.8780348,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_filtered_columns_in_relation"
@@ -11449,7 +11883,7 @@
     },
     "macro.dbt_utils.get_intervals_between": {
       "arguments": [],
-      "created_at": 1719485736.668108,
+      "created_at": 1747731927.839635,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_intervals_between"
@@ -11473,7 +11907,7 @@
     },
     "macro.dbt_utils.get_powers_of_two": {
       "arguments": [],
-      "created_at": 1719485736.677409,
+      "created_at": 1747731927.845665,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_powers_of_two"
@@ -11497,7 +11931,7 @@
     },
     "macro.dbt_utils.get_query_results_as_dict": {
       "arguments": [],
-      "created_at": 1719485736.726866,
+      "created_at": 1747731927.88096,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_query_results_as_dict"
@@ -11521,7 +11955,7 @@
     },
     "macro.dbt_utils.get_relations_by_pattern": {
       "arguments": [],
-      "created_at": 1719485736.6725519,
+      "created_at": 1747731927.8437781,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_relations_by_pattern"
@@ -11545,7 +11979,7 @@
     },
     "macro.dbt_utils.get_relations_by_prefix": {
       "arguments": [],
-      "created_at": 1719485736.67938,
+      "created_at": 1747731927.847949,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_relations_by_prefix"
@@ -11569,7 +12003,7 @@
     },
     "macro.dbt_utils.get_single_value": {
       "arguments": [],
-      "created_at": 1719485736.732079,
+      "created_at": 1747731927.884848,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_single_value"
@@ -11593,7 +12027,7 @@
     },
     "macro.dbt_utils.get_table_types_sql": {
       "arguments": [],
-      "created_at": 1719485736.730877,
+      "created_at": 1747731927.8836749,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.postgres__get_table_types_sql"
@@ -11617,7 +12051,7 @@
     },
     "macro.dbt_utils.get_tables_by_pattern_sql": {
       "arguments": [],
-      "created_at": 1719485736.7118368,
+      "created_at": 1747731927.869857,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_tables_by_pattern_sql"
@@ -11641,7 +12075,7 @@
     },
     "macro.dbt_utils.get_tables_by_prefix_sql": {
       "arguments": [],
-      "created_at": 1719485736.680733,
+      "created_at": 1747731927.8495731,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_tables_by_prefix_sql"
@@ -11665,7 +12099,7 @@
     },
     "macro.dbt_utils.get_url_host": {
       "arguments": [],
-      "created_at": 1719485736.6209002,
+      "created_at": 1747731927.806067,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_url_host"
@@ -11689,7 +12123,7 @@
     },
     "macro.dbt_utils.get_url_parameter": {
       "arguments": [],
-      "created_at": 1719485736.6233978,
+      "created_at": 1747731927.808449,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_url_parameter"
@@ -11713,7 +12147,7 @@
     },
     "macro.dbt_utils.get_url_path": {
       "arguments": [],
-      "created_at": 1719485736.62192,
+      "created_at": 1747731927.8072262,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__get_url_path"
@@ -11737,7 +12171,7 @@
     },
     "macro.dbt_utils.group_by": {
       "arguments": [],
-      "created_at": 1719485736.700075,
+      "created_at": 1747731927.863491,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__group_by"
@@ -11761,7 +12195,7 @@
     },
     "macro.dbt_utils.haversine_distance": {
       "arguments": [],
-      "created_at": 1719485736.7356942,
+      "created_at": 1747731927.8871,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__haversine_distance"
@@ -11785,7 +12219,7 @@
     },
     "macro.dbt_utils.log_info": {
       "arguments": [],
-      "created_at": 1719485736.664978,
+      "created_at": 1747731927.836946,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__log_info"
@@ -11809,7 +12243,7 @@
     },
     "macro.dbt_utils.nullcheck": {
       "arguments": [],
-      "created_at": 1719485736.708089,
+      "created_at": 1747731927.868504,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__nullcheck"
@@ -11833,7 +12267,7 @@
     },
     "macro.dbt_utils.nullcheck_table": {
       "arguments": [],
-      "created_at": 1719485736.671076,
+      "created_at": 1747731927.8426628,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__nullcheck_table"
@@ -11857,7 +12291,7 @@
     },
     "macro.dbt_utils.pivot": {
       "arguments": [],
-      "created_at": 1719485736.719448,
+      "created_at": 1747731927.876304,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__pivot"
@@ -11881,7 +12315,7 @@
     },
     "macro.dbt_utils.postgres__deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.703091,
+      "created_at": 1747731927.8654132,
       "depends_on": {
         "macros": []
       },
@@ -11903,7 +12337,7 @@
     },
     "macro.dbt_utils.postgres__get_table_types_sql": {
       "arguments": [],
-      "created_at": 1719485736.731321,
+      "created_at": 1747731927.884053,
       "depends_on": {
         "macros": []
       },
@@ -11925,7 +12359,7 @@
     },
     "macro.dbt_utils.pretty_log_format": {
       "arguments": [],
-      "created_at": 1719485736.6625931,
+      "created_at": 1747731927.8352141,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__pretty_log_format"
@@ -11949,7 +12383,7 @@
     },
     "macro.dbt_utils.pretty_time": {
       "arguments": [],
-      "created_at": 1719485736.664063,
+      "created_at": 1747731927.83637,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__pretty_time"
@@ -11973,7 +12407,7 @@
     },
     "macro.dbt_utils.redshift__deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.7025979,
+      "created_at": 1747731927.865097,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__deduplicate"
@@ -11997,7 +12431,7 @@
     },
     "macro.dbt_utils.safe_add": {
       "arguments": [],
-      "created_at": 1719485736.7061272,
+      "created_at": 1747731927.867192,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__safe_add"
@@ -12021,7 +12455,7 @@
     },
     "macro.dbt_utils.safe_divide": {
       "arguments": [],
-      "created_at": 1719485736.689705,
+      "created_at": 1747731927.8565161,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__safe_divide"
@@ -12045,7 +12479,7 @@
     },
     "macro.dbt_utils.safe_subtract": {
       "arguments": [],
-      "created_at": 1719485736.670065,
+      "created_at": 1747731927.841585,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__safe_subtract"
@@ -12069,7 +12503,7 @@
     },
     "macro.dbt_utils.slugify": {
       "arguments": [],
-      "created_at": 1719485736.6662788,
+      "created_at": 1747731927.838023,
       "depends_on": {
         "macros": []
       },
@@ -12091,7 +12525,7 @@
     },
     "macro.dbt_utils.snowflake__deduplicate": {
       "arguments": [],
-      "created_at": 1719485736.703385,
+      "created_at": 1747731927.8656719,
       "depends_on": {
         "macros": []
       },
@@ -12113,7 +12547,7 @@
     },
     "macro.dbt_utils.snowflake__width_bucket": {
       "arguments": [],
-      "created_at": 1719485736.72608,
+      "created_at": 1747731927.88046,
       "depends_on": {
         "macros": []
       },
@@ -12135,7 +12569,7 @@
     },
     "macro.dbt_utils.star": {
       "arguments": [],
-      "created_at": 1719485736.6838112,
+      "created_at": 1747731927.85095,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__star"
@@ -12159,7 +12593,7 @@
     },
     "macro.dbt_utils.surrogate_key": {
       "arguments": [],
-      "created_at": 1719485736.704803,
+      "created_at": 1747731927.866403,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__surrogate_key"
@@ -12183,7 +12617,7 @@
     },
     "macro.dbt_utils.test_accepted_range": {
       "arguments": [],
-      "created_at": 1719485736.6351202,
+      "created_at": 1747731927.818371,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_accepted_range"
@@ -12207,7 +12641,7 @@
     },
     "macro.dbt_utils.test_at_least_one": {
       "arguments": [],
-      "created_at": 1719485736.637673,
+      "created_at": 1747731927.821079,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_at_least_one"
@@ -12231,7 +12665,7 @@
     },
     "macro.dbt_utils.test_cardinality_equality": {
       "arguments": [],
-      "created_at": 1719485736.64627,
+      "created_at": 1747731927.8240068,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_cardinality_equality"
@@ -12255,7 +12689,7 @@
     },
     "macro.dbt_utils.test_equal_rowcount": {
       "arguments": [],
-      "created_at": 1719485736.6276648,
+      "created_at": 1747731927.811861,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_equal_rowcount"
@@ -12279,7 +12713,7 @@
     },
     "macro.dbt_utils.test_equality": {
       "arguments": [],
-      "created_at": 1719485736.6529899,
+      "created_at": 1747731927.8296452,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_equality"
@@ -12303,7 +12737,7 @@
     },
     "macro.dbt_utils.test_expression_is_true": {
       "arguments": [],
-      "created_at": 1719485736.64721,
+      "created_at": 1747731927.8249311,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_expression_is_true"
@@ -12327,7 +12761,7 @@
     },
     "macro.dbt_utils.test_fewer_rows_than": {
       "arguments": [],
-      "created_at": 1719485736.625401,
+      "created_at": 1747731927.809653,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_fewer_rows_than"
@@ -12351,7 +12785,7 @@
     },
     "macro.dbt_utils.test_mutually_exclusive_ranges": {
       "arguments": [],
-      "created_at": 1719485736.6603332,
+      "created_at": 1747731927.832834,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_mutually_exclusive_ranges"
@@ -12375,7 +12809,7 @@
     },
     "macro.dbt_utils.test_not_accepted_values": {
       "arguments": [],
-      "created_at": 1719485736.6365619,
+      "created_at": 1747731927.819565,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_not_accepted_values"
@@ -12399,7 +12833,7 @@
     },
     "macro.dbt_utils.test_not_constant": {
       "arguments": [],
-      "created_at": 1719485736.6339169,
+      "created_at": 1747731927.8171258,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_not_constant"
@@ -12423,7 +12857,7 @@
     },
     "macro.dbt_utils.test_not_empty_string": {
       "arguments": [],
-      "created_at": 1719485736.655252,
+      "created_at": 1747731927.831296,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_not_empty_string"
@@ -12447,7 +12881,7 @@
     },
     "macro.dbt_utils.test_not_null_proportion": {
       "arguments": [],
-      "created_at": 1719485736.64849,
+      "created_at": 1747731927.825979,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_not_null_proportion"
@@ -12471,7 +12905,7 @@
     },
     "macro.dbt_utils.test_recency": {
       "arguments": [],
-      "created_at": 1719485736.632009,
+      "created_at": 1747731927.8154519,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_recency"
@@ -12495,7 +12929,7 @@
     },
     "macro.dbt_utils.test_relationships_where": {
       "arguments": [],
-      "created_at": 1719485736.6303911,
+      "created_at": 1747731927.8140779,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_relationships_where"
@@ -12519,7 +12953,7 @@
     },
     "macro.dbt_utils.test_sequential_values": {
       "arguments": [],
-      "created_at": 1719485736.650635,
+      "created_at": 1747731927.827792,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_sequential_values"
@@ -12543,7 +12977,7 @@
     },
     "macro.dbt_utils.test_unique_combination_of_columns": {
       "arguments": [],
-      "created_at": 1719485736.642268,
+      "created_at": 1747731927.822668,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__test_unique_combination_of_columns"
@@ -12567,7 +13001,7 @@
     },
     "macro.dbt_utils.union_relations": {
       "arguments": [],
-      "created_at": 1719485736.6939468,
+      "created_at": 1747731927.858424,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__union_relations"
@@ -12591,7 +13025,7 @@
     },
     "macro.dbt_utils.unpivot": {
       "arguments": [],
-      "created_at": 1719485736.68751,
+      "created_at": 1747731927.853896,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__unpivot"
@@ -12615,7 +13049,7 @@
     },
     "macro.dbt_utils.width_bucket": {
       "arguments": [],
-      "created_at": 1719485736.724451,
+      "created_at": 1747731927.8796082,
       "depends_on": {
         "macros": [
           "macro.dbt_utils.default__width_bucket"
@@ -12639,7 +13073,7 @@
     },
     "macro.jaffle_shop.drop_table_by_name": {
       "arguments": [],
-      "created_at": 1719485736.288547,
+      "created_at": 1747731927.554156,
       "depends_on": {
         "macros": [
           "macro.dbt.run_query"
@@ -12665,14 +13099,14 @@
   "metadata": {
     "adapter_type": "postgres",
     "dbt_schema_version": "https://schemas.getdbt.com/dbt/manifest/v12.json",
-    "dbt_version": "1.8.0",
+    "dbt_version": "1.9.1",
     "env": {},
-    "generated_at": "2024-06-27T10:55:36.063508Z",
-    "invocation_id": "31cdaee6-885b-4bdf-b794-4065f9530edb",
+    "generated_at": "2025-05-20T09:05:27.377511Z",
+    "invocation_id": "f85e599d-1d87-481e-95d6-020a8ea84a16",
     "project_id": "06e5b98c2db46f8a72cc4f66410e9b3b",
     "project_name": "jaffle_shop",
     "send_anonymous_usage_stats": true,
-    "user_id": "f5b1bc43-6cc6-4fd4-849c-18b31ffa1e2d"
+    "user_id": "09ff61b8-69e5-4614-88b7-1528cb41dfe4"
   },
   "metrics": {},
   "nodes": {
@@ -12681,7 +13115,7 @@
       "alias": "customers",
       "build_path": null,
       "checksum": {
-        "checksum": "60bd72e33da43fff3a7e7609135c17cd4468bd22afec0735dd36018bfb5af30a",
+        "checksum": "9f2eb13e3f280ace0666a0e18bbf66245f1c189e1362d6f3b9e276d0b3133749",
         "name": "sha256"
       },
       "columns": {
@@ -12689,6 +13123,7 @@
           "constraints": [],
           "data_type": null,
           "description": "This is a unique identifier for a customer",
+          "granularity": null,
           "meta": {},
           "name": "customer_id",
           "quote": null,
@@ -12698,6 +13133,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Customer's first name. PII.",
+          "granularity": null,
           "meta": {},
           "name": "first_name",
           "quote": null,
@@ -12707,6 +13143,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Date (UTC) of a customer's first order",
+          "granularity": null,
           "meta": {},
           "name": "first_order",
           "quote": null,
@@ -12716,6 +13153,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Customer's last name. PII.",
+          "granularity": null,
           "meta": {},
           "name": "last_name",
           "quote": null,
@@ -12725,6 +13163,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Date (UTC) of a customer's most recent order",
+          "granularity": null,
           "meta": {},
           "name": "most_recent_order",
           "quote": null,
@@ -12734,6 +13173,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Count of the number of orders a customer has placed",
+          "granularity": null,
           "meta": {},
           "name": "number_of_orders",
           "quote": null,
@@ -12743,6 +13183,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Total value (AUD) of a customer's orders",
+          "granularity": null,
           "meta": {},
           "name": "total_order_amount",
           "quote": null,
@@ -12753,7 +13194,10 @@
       "config": {
         "access": "protected",
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -12764,10 +13208,12 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "table",
         "meta": {},
         "on_configuration_change": "apply",
@@ -12778,7 +13224,9 @@
         "pre-hook": [],
         "quoting": {},
         "schema": null,
-        "tags": [],
+        "tags": [
+          "customers"
+        ],
         "unique_key": null
       },
       "constraints": [],
@@ -12787,7 +13235,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.5078778,
+      "created_at": 1747731928.553196,
       "database": "postgres",
       "depends_on": {
         "macros": [],
@@ -12817,7 +13265,10 @@
       "package_name": "jaffle_shop",
       "patch_path": "jaffle_shop://models/schema.yml",
       "path": "customers.sql",
-      "raw_code": "with customers as (\n\n    select * from {{ ref('stg_customers') }}\n\n),\n\norders as (\n\n    select * from {{ ref('stg_orders') }}\n\n),\n\npayments as (\n\n    select * from {{ ref('stg_payments') }}\n\n),\n\ncustomer_orders as (\n\n        select\n        customer_id,\n\n        min(order_date) as first_order,\n        max(order_date) as most_recent_order,\n        count(order_id) as number_of_orders\n    from orders\n\n    group by customer_id\n\n),\n\ncustomer_payments as (\n\n    select\n        orders.customer_id,\n        sum(amount) as total_amount\n\n    from payments\n\n    left join orders on\n         payments.order_id = orders.order_id\n\n    group by orders.customer_id\n\n),\n\nfinal as (\n\n    select\n        customers.customer_id,\n        customers.first_name,\n        customers.last_name,\n        customer_orders.first_order,\n        customer_orders.most_recent_order,\n        customer_orders.number_of_orders,\n        customer_payments.total_amount as customer_lifetime_value\n\n    from customers\n\n    left join customer_orders\n        on customers.customer_id = customer_orders.customer_id\n\n    left join customer_payments\n        on  customers.customer_id = customer_payments.customer_id\n\n)\n\nselect * from final",
+      "primary_key": [
+        "customer_id"
+      ],
+      "raw_code": "{{ config(tags=[\"customers\"]) }}\n\nwith customers as (\n\n    select * from {{ ref('stg_customers') }}\n\n),\n\norders as (\n\n    select * from {{ ref('stg_orders') }}\n\n),\n\npayments as (\n\n    select * from {{ ref('stg_payments') }}\n\n),\n\ncustomer_orders as (\n\n        select\n        customer_id,\n\n        min(order_date) as first_order,\n        max(order_date) as most_recent_order,\n        count(order_id) as number_of_orders\n    from orders\n\n    group by customer_id\n\n),\n\ncustomer_payments as (\n\n    select\n        orders.customer_id,\n        sum(amount) as total_amount\n\n    from payments\n\n    left join orders on\n         payments.order_id = orders.order_id\n\n    group by orders.customer_id\n\n),\n\nfinal as (\n\n    select\n        customers.customer_id,\n        customers.first_name,\n        customers.last_name,\n        customer_orders.first_order,\n        customer_orders.most_recent_order,\n        customer_orders.number_of_orders,\n        customer_payments.total_amount as customer_lifetime_value\n\n    from customers\n\n    left join customer_orders\n        on customers.customer_id = customer_orders.customer_id\n\n    left join customer_payments\n        on  customers.customer_id = customer_payments.customer_id\n\n)\n\nselect * from final",
       "refs": [
         {
           "name": "stg_customers",
@@ -12839,10 +13290,16 @@
       "resource_type": "model",
       "schema": "public",
       "sources": [],
-      "tags": [],
+      "tags": [
+        "customers"
+      ],
+      "time_spine": null,
       "unique_id": "model.jaffle_shop.customers",
       "unrendered_config": {
-        "materialized": "table"
+        "materialized": "table",
+        "tags": [
+          "customers"
+        ]
       },
       "version": null
     },
@@ -12859,6 +13316,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Total amount (AUD) of the order",
+          "granularity": null,
           "meta": {},
           "name": "amount",
           "quote": null,
@@ -12868,6 +13326,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Amount of the order (AUD) paid for by bank transfer",
+          "granularity": null,
           "meta": {},
           "name": "bank_transfer_amount",
           "quote": null,
@@ -12877,6 +13336,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Amount of the order (AUD) paid for by coupon",
+          "granularity": null,
           "meta": {},
           "name": "coupon_amount",
           "quote": null,
@@ -12886,24 +13346,17 @@
           "constraints": [],
           "data_type": null,
           "description": "Amount of the order (AUD) paid for by credit card",
+          "granularity": null,
           "meta": {},
           "name": "credit_card_amount",
           "quote": null,
           "tags": []
         },
-        "customer_id": {
-          "constraints": [],
-          "data_type": null,
-          "description": "Foreign key to the customers table",
-          "meta": {},
-          "name": "customer_id",
-          "quote": null,
-          "tags": []
-        },
         "gift_card_amount": {
           "constraints": [],
           "data_type": null,
           "description": "Amount of the order (AUD) paid for by gift card",
+          "granularity": null,
           "meta": {},
           "name": "gift_card_amount",
           "quote": null,
@@ -12913,6 +13366,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Date (UTC) that the order was placed",
+          "granularity": null,
           "meta": {},
           "name": "order_date",
           "quote": null,
@@ -12922,6 +13376,7 @@
           "constraints": [],
           "data_type": null,
           "description": "This is a unique identifier for an order",
+          "granularity": null,
           "meta": {},
           "name": "order_id",
           "quote": null,
@@ -12931,6 +13386,7 @@
           "constraints": [],
           "data_type": null,
           "description": "Orders can be one of the following statuses:\n\n| status         | description                                                                                                            |\n|----------------|------------------------------------------------------------------------------------------------------------------------|\n| placed         | The order has been placed but has not yet left the warehouse                                                           |\n| shipped        | The order has ben shipped to the customer and is currently in transit                                                  |\n| completed      | The order has been received by the customer                                                                            |\n| return_pending | The customer has indicated that they would like to return the order, but it has not yet been received at the warehouse |\n| returned       | The order has been returned by the customer and received at the warehouse                                              |",
+          "granularity": null,
           "meta": {},
           "name": "status",
           "quote": null,
@@ -12941,7 +13397,10 @@
       "config": {
         "access": "protected",
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -12952,10 +13411,12 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "table",
         "meta": {},
         "on_configuration_change": "apply",
@@ -12975,7 +13436,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.511349,
+      "created_at": 1747731928.5560288,
       "database": "postgres",
       "depends_on": {
         "macros": [],
@@ -13004,6 +13465,9 @@
       "package_name": "jaffle_shop",
       "patch_path": "jaffle_shop://models/schema.yml",
       "path": "orders.sql",
+      "primary_key": [
+        "order_id"
+      ],
       "raw_code": "{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}\n\nwith orders as (\n\n    select * from {{ ref('stg_orders') }}\n\n),\n\npayments as (\n\n    select * from {{ ref('stg_payments') }}\n\n),\n\norder_payments as (\n\n    select\n        order_id,\n\n        {% for payment_method in payment_methods -%}\n        sum(case when payment_method = '{{ payment_method }}' then amount else 0 end) as {{ payment_method }}_amount,\n        {% endfor -%}\n\n        sum(amount) as total_amount\n\n    from payments\n\n    group by order_id\n\n),\n\nfinal as (\n\n    select\n        orders.order_id,\n        orders.customer_id,\n        orders.order_date,\n        orders.status,\n\n        {% for payment_method in payment_methods -%}\n\n        order_payments.{{ payment_method }}_amount,\n\n        {% endfor -%}\n\n        order_payments.total_amount as amount\n\n    from orders\n\n\n    left join order_payments\n        on orders.order_id = order_payments.order_id\n\n)\n\nselect * from final",
       "refs": [
         {
@@ -13022,6 +13486,7 @@
       "schema": "public",
       "sources": [],
       "tags": [],
+      "time_spine": null,
       "unique_id": "model.jaffle_shop.orders",
       "unrendered_config": {
         "materialized": "table"
@@ -13041,6 +13506,7 @@
           "constraints": [],
           "data_type": null,
           "description": "",
+          "granularity": null,
           "meta": {},
           "name": "customer_id",
           "quote": null,
@@ -13051,7 +13517,10 @@
       "config": {
         "access": "protected",
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13062,10 +13531,12 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "view",
         "meta": {},
         "on_configuration_change": "apply",
@@ -13085,7 +13556,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.629529,
+      "created_at": 1747731928.6452749,
       "database": "postgres",
       "depends_on": {
         "macros": [],
@@ -13114,6 +13585,9 @@
       "package_name": "jaffle_shop",
       "patch_path": "jaffle_shop://models/staging/schema.yml",
       "path": "staging/stg_customers.sql",
+      "primary_key": [
+        "customer_id"
+      ],
       "raw_code": "with source as (\n\n    {#-\n    Normally we would select from the table here, but we are using seeds to load\n    our data in this project\n    #}\n    select * from {{ ref('raw_customers') }}\n\n),\n\nrenamed as (\n\n    select\n        id as customer_id,\n        first_name,\n        last_name\n\n    from source\n\n)\n\nselect * from renamed",
       "refs": [
         {
@@ -13127,6 +13601,7 @@
       "schema": "public",
       "sources": [],
       "tags": [],
+      "time_spine": null,
       "unique_id": "model.jaffle_shop.stg_customers",
       "unrendered_config": {
         "materialized": "view"
@@ -13146,6 +13621,7 @@
           "constraints": [],
           "data_type": null,
           "description": "",
+          "granularity": null,
           "meta": {},
           "name": "order_id",
           "quote": null,
@@ -13155,6 +13631,7 @@
           "constraints": [],
           "data_type": null,
           "description": "",
+          "granularity": null,
           "meta": {},
           "name": "status",
           "quote": null,
@@ -13165,7 +13642,10 @@
       "config": {
         "access": "protected",
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13176,10 +13656,12 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "view",
         "meta": {},
         "on_configuration_change": "apply",
@@ -13199,7 +13681,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.630356,
+      "created_at": 1747731928.6457899,
       "database": "postgres",
       "depends_on": {
         "macros": [],
@@ -13228,6 +13710,9 @@
       "package_name": "jaffle_shop",
       "patch_path": "jaffle_shop://models/staging/schema.yml",
       "path": "staging/stg_orders.sql",
+      "primary_key": [
+        "order_id"
+      ],
       "raw_code": "with source as (\n\n    {#-\n    Normally we would select from the table here, but we are using seeds to load\n    our data in this project\n    #}\n    select * from {{ ref('raw_orders') }}\n\n),\n\nrenamed as (\n\n    select\n        id as order_id,\n        user_id as customer_id,\n        order_date,\n        status\n\n    from source\n\n)\n\nselect * from renamed",
       "refs": [
         {
@@ -13241,6 +13726,7 @@
       "schema": "public",
       "sources": [],
       "tags": [],
+      "time_spine": null,
       "unique_id": "model.jaffle_shop.stg_orders",
       "unrendered_config": {
         "materialized": "view"
@@ -13260,6 +13746,7 @@
           "constraints": [],
           "data_type": null,
           "description": "",
+          "granularity": null,
           "meta": {},
           "name": "payment_id",
           "quote": null,
@@ -13269,6 +13756,7 @@
           "constraints": [],
           "data_type": null,
           "description": "",
+          "granularity": null,
           "meta": {},
           "name": "payment_method",
           "quote": null,
@@ -13279,7 +13767,10 @@
       "config": {
         "access": "protected",
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13290,10 +13781,12 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "view",
         "meta": {},
         "on_configuration_change": "apply",
@@ -13313,7 +13806,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6316102,
+      "created_at": 1747731928.64695,
       "database": "postgres",
       "depends_on": {
         "macros": [],
@@ -13342,6 +13835,9 @@
       "package_name": "jaffle_shop",
       "patch_path": "jaffle_shop://models/staging/schema.yml",
       "path": "staging/stg_payments.sql",
+      "primary_key": [
+        "payment_id"
+      ],
       "raw_code": "with source as (\n\n    {#-\n    Normally we would select from the table here, but we are using seeds to load\n    our data in this project\n    #}\n    select * from {{ ref('raw_payments') }}\n\n),\n\nrenamed as (\n\n    select\n        id as payment_id,\n        order_id,\n        payment_method,\n\n        -- `amount` is currently stored in cents, so we convert it to dollars\n        amount / 100 as amount\n\n    from source\n\n)\n\nselect * from renamed",
       "refs": [
         {
@@ -13355,6 +13851,7 @@
       "schema": "public",
       "sources": [],
       "tags": [],
+      "time_spine": null,
       "unique_id": "model.jaffle_shop.stg_payments",
       "unrendered_config": {
         "materialized": "view"
@@ -13371,7 +13868,10 @@
       "columns": {},
       "config": {
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13383,12 +13883,23 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "seed",
-        "meta": {},
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        },
         "on_configuration_change": "apply",
         "on_schema_change": "ignore",
         "packages": [],
@@ -13401,7 +13912,7 @@
         "tags": [],
         "unique_key": null
       },
-      "created_at": 1719485737.409044,
+      "created_at": 1747731928.439897,
       "database": "postgres",
       "depends_on": {
         "macros": []
@@ -13416,7 +13927,16 @@
         "raw_customers"
       ],
       "group": null,
-      "meta": {},
+      "meta": {
+        "cosmos": {
+          "profile_config": {
+            "profile_mapping": {
+              "threads": 2
+            },
+            "profile_name": "postgres_profile"
+          }
+        }
+      },
       "name": "raw_customers",
       "original_file_path": "seeds/raw_customers.csv",
       "package_name": "jaffle_shop",
@@ -13425,11 +13945,22 @@
       "raw_code": "",
       "relation_name": "\"postgres\".\"public\".\"raw_customers\"",
       "resource_type": "seed",
-      "root_path": "/Users/tati/Code/cosmos-clean/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
+      "root_path": "/Users/tati/Code/cosmos-fresh/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
       "schema": "public",
       "tags": [],
       "unique_id": "seed.jaffle_shop.raw_customers",
-      "unrendered_config": {}
+      "unrendered_config": {
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        }
+      }
     },
     "seed.jaffle_shop.raw_orders": {
       "alias": "raw_orders",
@@ -13441,7 +13972,10 @@
       "columns": {},
       "config": {
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13453,12 +13987,23 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "seed",
-        "meta": {},
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        },
         "on_configuration_change": "apply",
         "on_schema_change": "ignore",
         "packages": [],
@@ -13471,7 +14016,7 @@
         "tags": [],
         "unique_key": null
       },
-      "created_at": 1719485737.411613,
+      "created_at": 1747731928.441768,
       "database": "postgres",
       "depends_on": {
         "macros": []
@@ -13486,7 +14031,16 @@
         "raw_orders"
       ],
       "group": null,
-      "meta": {},
+      "meta": {
+        "cosmos": {
+          "profile_config": {
+            "profile_mapping": {
+              "threads": 2
+            },
+            "profile_name": "postgres_profile"
+          }
+        }
+      },
       "name": "raw_orders",
       "original_file_path": "seeds/raw_orders.csv",
       "package_name": "jaffle_shop",
@@ -13495,11 +14049,22 @@
       "raw_code": "",
       "relation_name": "\"postgres\".\"public\".\"raw_orders\"",
       "resource_type": "seed",
-      "root_path": "/Users/tati/Code/cosmos-clean/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
+      "root_path": "/Users/tati/Code/cosmos-fresh/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
       "schema": "public",
       "tags": [],
       "unique_id": "seed.jaffle_shop.raw_orders",
-      "unrendered_config": {}
+      "unrendered_config": {
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        }
+      }
     },
     "seed.jaffle_shop.raw_payments": {
       "alias": "raw_payments",
@@ -13511,7 +14076,10 @@
       "columns": {},
       "config": {
         "alias": null,
+        "batch_size": null,
+        "begin": null,
         "column_types": {},
+        "concurrent_batches": null,
         "contract": {
           "alias_types": true,
           "enforced": false
@@ -13523,12 +14091,23 @@
           "show": true
         },
         "enabled": true,
+        "event_time": null,
         "full_refresh": null,
         "grants": {},
         "group": null,
         "incremental_strategy": null,
+        "lookback": 1,
         "materialized": "seed",
-        "meta": {},
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        },
         "on_configuration_change": "apply",
         "on_schema_change": "ignore",
         "packages": [],
@@ -13541,7 +14120,7 @@
         "tags": [],
         "unique_key": null
       },
-      "created_at": 1719485737.4141219,
+      "created_at": 1747731928.443347,
       "database": "postgres",
       "depends_on": {
         "macros": []
@@ -13556,7 +14135,16 @@
         "raw_payments"
       ],
       "group": null,
-      "meta": {},
+      "meta": {
+        "cosmos": {
+          "profile_config": {
+            "profile_mapping": {
+              "threads": 2
+            },
+            "profile_name": "postgres_profile"
+          }
+        }
+      },
       "name": "raw_payments",
       "original_file_path": "seeds/raw_payments.csv",
       "package_name": "jaffle_shop",
@@ -13565,11 +14153,22 @@
       "raw_code": "",
       "relation_name": "\"postgres\".\"public\".\"raw_payments\"",
       "resource_type": "seed",
-      "root_path": "/Users/tati/Code/cosmos-clean/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
+      "root_path": "/Users/tati/Code/cosmos-fresh/astronomer-cosmos/dev/dags/dbt/jaffle_shop",
       "schema": "public",
       "tags": [],
       "unique_id": "seed.jaffle_shop.raw_payments",
-      "unrendered_config": {}
+      "unrendered_config": {
+        "meta": {
+          "cosmos": {
+            "profile_config": {
+              "profile_mapping": {
+                "threads": 2
+              },
+              "profile_name": "postgres_profile"
+            }
+          }
+        }
+      }
     },
     "test.jaffle_shop.accepted_values_orders_status__placed__shipped__completed__return_pending__returned.be6b5b5ec3": {
       "alias": "accepted_values_orders_1ce6ab157c285f7cd2ac656013faf758",
@@ -13605,7 +14204,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.607407,
+      "created_at": 1747731928.621603,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -13702,7 +14301,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.637758,
+      "created_at": 1747731928.652761,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -13800,7 +14399,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6424909,
+      "created_at": 1747731928.658643,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -13897,7 +14496,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.5844128,
+      "created_at": 1747731928.61806,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -13984,7 +14583,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6199622,
+      "created_at": 1747731928.6392431,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14071,7 +14670,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6258051,
+      "created_at": 1747731928.643073,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14158,7 +14757,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.624228,
+      "created_at": 1747731928.641845,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14245,7 +14844,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.622118,
+      "created_at": 1747731928.6405818,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14298,93 +14897,6 @@
       "unique_id": "test.jaffle_shop.not_null_orders_credit_card_amount.d3ca593b59",
       "unrendered_config": {}
     },
-    "test.jaffle_shop.not_null_orders_customer_id.c5f02694af": {
-      "alias": "not_null_orders_customer_id",
-      "attached_node": "model.jaffle_shop.orders",
-      "build_path": null,
-      "checksum": {
-        "checksum": "",
-        "name": "none"
-      },
-      "column_name": "customer_id",
-      "columns": {},
-      "compiled_path": null,
-      "config": {
-        "alias": null,
-        "database": null,
-        "enabled": true,
-        "error_if": "!= 0",
-        "fail_calc": "count(*)",
-        "group": null,
-        "limit": null,
-        "materialized": "test",
-        "meta": {},
-        "schema": "dbt_test__audit",
-        "severity": "ERROR",
-        "store_failures": null,
-        "store_failures_as": null,
-        "tags": [],
-        "warn_if": "!= 0",
-        "where": null
-      },
-      "contract": {
-        "alias_types": true,
-        "checksum": null,
-        "enforced": false
-      },
-      "created_at": 1719485737.587272,
-      "database": "postgres",
-      "depends_on": {
-        "macros": [
-          "macro.dbt.test_not_null"
-        ],
-        "nodes": [
-          "model.jaffle_shop.orders"
-        ]
-      },
-      "description": "",
-      "docs": {
-        "node_color": null,
-        "show": true
-      },
-      "file_key_name": "models.orders",
-      "fqn": [
-        "jaffle_shop",
-        "not_null_orders_customer_id"
-      ],
-      "group": null,
-      "language": "sql",
-      "meta": {},
-      "metrics": [],
-      "name": "not_null_orders_customer_id",
-      "original_file_path": "models/schema.yml",
-      "package_name": "jaffle_shop",
-      "patch_path": null,
-      "path": "not_null_orders_customer_id.sql",
-      "raw_code": "{{ test_not_null(**_dbt_generic_test_kwargs) }}",
-      "refs": [
-        {
-          "name": "orders",
-          "package": null,
-          "version": null
-        }
-      ],
-      "relation_name": null,
-      "resource_type": "test",
-      "schema": "public_dbt_test__audit",
-      "sources": [],
-      "tags": [],
-      "test_metadata": {
-        "kwargs": {
-          "column_name": "customer_id",
-          "model": "{{ get_where_subquery(ref('orders')) }}"
-        },
-        "name": "not_null",
-        "namespace": null
-      },
-      "unique_id": "test.jaffle_shop.not_null_orders_customer_id.c5f02694af",
-      "unrendered_config": {}
-    },
     "test.jaffle_shop.not_null_orders_gift_card_amount.413a0d2d7a": {
       "alias": "not_null_orders_gift_card_amount",
       "attached_node": "model.jaffle_shop.orders",
@@ -14419,7 +14931,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6277661,
+      "created_at": 1747731928.644136,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14506,7 +15018,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.586345,
+      "created_at": 1747731928.62046,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14593,7 +15105,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.633585,
+      "created_at": 1747731928.649,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14681,7 +15193,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6366348,
+      "created_at": 1747731928.651482,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14769,7 +15281,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.641508,
+      "created_at": 1747731928.657465,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -14823,102 +15335,6 @@
       "unique_id": "test.jaffle_shop.not_null_stg_payments_payment_id.c19cc50075",
       "unrendered_config": {}
     },
-    "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2": {
-      "alias": "relationships_orders_customer_id__customer_id__ref_customers_",
-      "attached_node": "model.jaffle_shop.orders",
-      "build_path": null,
-      "checksum": {
-        "checksum": "",
-        "name": "none"
-      },
-      "column_name": "customer_id",
-      "columns": {},
-      "compiled_path": null,
-      "config": {
-        "alias": null,
-        "database": null,
-        "enabled": true,
-        "error_if": "!= 0",
-        "fail_calc": "count(*)",
-        "group": null,
-        "limit": null,
-        "materialized": "test",
-        "meta": {},
-        "schema": "dbt_test__audit",
-        "severity": "ERROR",
-        "store_failures": null,
-        "store_failures_as": null,
-        "tags": [],
-        "warn_if": "!= 0",
-        "where": null
-      },
-      "contract": {
-        "alias_types": true,
-        "checksum": null,
-        "enforced": false
-      },
-      "created_at": 1719485737.590184,
-      "database": "postgres",
-      "depends_on": {
-        "macros": [
-          "macro.dbt.test_relationships",
-          "macro.dbt.get_where_subquery"
-        ],
-        "nodes": [
-          "model.jaffle_shop.customers",
-          "model.jaffle_shop.orders"
-        ]
-      },
-      "description": "",
-      "docs": {
-        "node_color": null,
-        "show": true
-      },
-      "file_key_name": "models.orders",
-      "fqn": [
-        "jaffle_shop",
-        "relationships_orders_customer_id__customer_id__ref_customers_"
-      ],
-      "group": null,
-      "language": "sql",
-      "meta": {},
-      "metrics": [],
-      "name": "relationships_orders_customer_id__customer_id__ref_customers_",
-      "original_file_path": "models/schema.yml",
-      "package_name": "jaffle_shop",
-      "patch_path": null,
-      "path": "relationships_orders_customer_id__customer_id__ref_customers_.sql",
-      "raw_code": "{{ test_relationships(**_dbt_generic_test_kwargs) }}",
-      "refs": [
-        {
-          "name": "customers",
-          "package": null,
-          "version": null
-        },
-        {
-          "name": "orders",
-          "package": null,
-          "version": null
-        }
-      ],
-      "relation_name": null,
-      "resource_type": "test",
-      "schema": "public_dbt_test__audit",
-      "sources": [],
-      "tags": [],
-      "test_metadata": {
-        "kwargs": {
-          "column_name": "customer_id",
-          "field": "customer_id",
-          "model": "{{ get_where_subquery(ref('orders')) }}",
-          "to": "ref('customers')"
-        },
-        "name": "relationships",
-        "namespace": null
-      },
-      "unique_id": "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2",
-      "unrendered_config": {}
-    },
     "test.jaffle_shop.unique_customers_customer_id.c5af1ff4b1": {
       "alias": "unique_customers_customer_id",
       "attached_node": "model.jaffle_shop.customers",
@@ -14953,7 +15369,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.583136,
+      "created_at": 1747731928.6167219,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -15040,7 +15456,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.5853949,
+      "created_at": 1747731928.619267,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -15127,7 +15543,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.6324039,
+      "created_at": 1747731928.647725,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -15215,7 +15631,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.635364,
+      "created_at": 1747731928.650167,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -15303,7 +15719,7 @@
         "checksum": null,
         "enforced": false
       },
-      "created_at": 1719485737.640539,
+      "created_at": 1747731928.656186,
       "database": "postgres",
       "depends_on": {
         "macros": [
@@ -15404,9 +15820,6 @@
     "test.jaffle_shop.not_null_orders_credit_card_amount.d3ca593b59": [
       "model.jaffle_shop.orders"
     ],
-    "test.jaffle_shop.not_null_orders_customer_id.c5f02694af": [
-      "model.jaffle_shop.orders"
-    ],
     "test.jaffle_shop.not_null_orders_gift_card_amount.413a0d2d7a": [
       "model.jaffle_shop.orders"
     ],
@@ -15422,10 +15835,6 @@
     "test.jaffle_shop.not_null_stg_payments_payment_id.c19cc50075": [
       "model.jaffle_shop.stg_payments"
     ],
-    "test.jaffle_shop.relationships_orders_customer_id__customer_id__ref_customers_.c6ec7f58f2": [
-      "model.jaffle_shop.customers",
-      "model.jaffle_shop.orders"
-    ],
     "test.jaffle_shop.unique_customers_customer_id.c5af1ff4b1": [
       "model.jaffle_shop.customers"
     ],
diff --git a/docs/configuration/operator-args.rst b/docs/configuration/operator-args.rst
index bca4d489..69d3ce84 100644
--- a/docs/configuration/operator-args.rst
+++ b/docs/configuration/operator-args.rst
@@ -97,6 +97,7 @@ dbt-related
 - ``full_refresh``: If True, then full refresh the node. This only applies to model and seed nodes.
 - ``copy_dbt_packages``: (new in v1.10) When using ``ExecutionMode.LOCAL`` or ``ExecutionMode.VIRTUALENV``, copy the dbt project ``dbt_packages`` instead of creating symbolic links, so Cosmos can run ``dbt deps`` incrementally.
 - ``install_deps``: (deprecated in v1.9, use ``ProjectConfig.install_dbt_deps`` onwards) When using ``ExecutionMode.LOCAL`` or ``ExecutionMode.VIRTUALENV``, run ``dbt deps`` every time a task is executed.
+- ``manifest_filepath`` (new in v1.10.1):  When using ``ExecutionMode.LOCAL`` or ``ExecutionMode.VIRTUALENV``, use the user-defined ``manifest.json`` file.
 
 
 Airflow-related


Test patch:
diff --git a/tests/dbt/test_project.py b/tests/dbt/test_project.py
index 7c0a4337..7038d3b7 100644
--- a/tests/dbt/test_project.py
+++ b/tests/dbt/test_project.py
@@ -9,6 +9,7 @@ from cosmos.constants import DBT_DEFAULT_PACKAGES_FOLDER, DBT_PROJECT_FILENAME,
 from cosmos.dbt.project import (
     change_working_directory,
     copy_dbt_packages,
+    copy_manifest_file_if_exists,
     create_symlinks,
     environ,
     get_dbt_packages_subpath,
@@ -18,6 +19,31 @@ from cosmos.dbt.project import (
 DBT_PROJECTS_ROOT_DIR = Path(__file__).parent.parent.parent / "dev/dags/dbt"
 
 
+def test_copy_manifest_file_if_exists(tmpdir):
+    source_manifest = tmpdir / "manifest.json"
+    source_manifest.write_text('{"mock_key": "mock_value"}', encoding="utf-8")
+
+    dbt_project_folder = tmpdir / "dbt_project"
+
+    target_manifest_path = dbt_project_folder / "target/manifest.json"
+    assert not target_manifest_path.exists()
+
+    copy_manifest_file_if_exists(source_manifest, dbt_project_folder)
+
+    assert target_manifest_path.exists()
+    assert target_manifest_path.read_text(encoding="utf-8") == '{"mock_key": "mock_value"}'
+
+
+def test_does_nothing_if_manifest_missing(tmpdir):
+    source_manifest = tmpdir / "nonexistent_manifest.json"
+    dbt_project_folder = tmpdir / "dbt_project"
+
+    copy_manifest_file_if_exists(source_manifest, dbt_project_folder)
+
+    target_folder = dbt_project_folder / "target"
+    assert not target_folder.exists()
+
+
 def write_dbt_project_yml(path: Path, content: dict):
     with open(path / "dbt_project.yml", "w") as fp:
         yaml.dump(content, fp)
diff --git a/tests/operators/test_local.py b/tests/operators/test_local.py
index f22f96d0..7f37a466 100644
--- a/tests/operators/test_local.py
+++ b/tests/operators/test_local.py
@@ -760,6 +760,31 @@ def test_run_operator_caches_partial_parsing(caplog, tmp_path):
     assert not "Unable to do partial parsing" in caplog.text
 
 
+@pytest.mark.integration
+def test_run_operator_copies_manifest_file(caplog, tmp_path):
+    manifest_filepath = DBT_PROJ_DIR / "target/manifest.json"
+    assert manifest_filepath.exists()
+    caplog.clear()
+    caplog.set_level(logging.DEBUG)
+    with DAG("test-partial-parsing", start_date=datetime(2022, 1, 1)) as dag:
+        seed_operator = DbtSeedLocalOperator(
+            profile_config=real_profile_config,
+            project_dir=DBT_PROJ_DIR,
+            task_id="seed",
+            dbt_cmd_flags=["--select", "raw_customers"],
+            install_deps=True,
+            append_env=True,
+            cache_dir=cache._obtain_cache_dir_path("test-partial-parsing", tmp_path),
+            invocation_mode=InvocationMode.SUBPROCESS,
+            manifest_filepath=manifest_filepath,
+        )
+        seed_operator
+
+    run_test_dag(dag)
+
+    assert caplog.text.count("Copying the manifest from") == 1
+
+
 def test_dbt_base_operator_no_partial_parse() -> None:
 
     dbt_base_operator = ConcreteDbtLocalBaseOperator(