From 07e6eef4e2ed4ae31b9f8eedcfc6871ad24e5fc9 Mon Sep 17 00:00:00 2001 From: David Dai Date: Fri, 10 Oct 2025 00:17:00 -0700 Subject: [PATCH] fix: ensure dbt BigQueryConfig dataset & project are set --- sqlmesh/dbt/target.py | 13 +++++++++---- tests/dbt/test_transformation.py | 12 ++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sqlmesh/dbt/target.py b/sqlmesh/dbt/target.py index c53c818933..62683ecfac 100644 --- a/sqlmesh/dbt/target.py +++ b/sqlmesh/dbt/target.py @@ -601,12 +601,17 @@ def validate_fields(cls, data: t.Any) -> t.Any: if not isinstance(data, dict): return data - data["schema"] = data.get("schema") or data.get("dataset") - if not data["schema"]: + # dbt treats schema and dataset interchangeably + schema = data.get("schema") or data.get("dataset") + if not schema: raise ConfigError("Either schema or dataset must be set") - data["database"] = data.get("database") or data.get("project") - if not data["database"]: + data["dataset"] = data["schema"] = schema + + # dbt treats database and project interchangeably + database = data.get("database") or data.get("project") + if not database: raise ConfigError("Either database or project must be set") + data["database"] = data["project"] = database return data diff --git a/tests/dbt/test_transformation.py b/tests/dbt/test_transformation.py index 97c5c37e75..306139d501 100644 --- a/tests/dbt/test_transformation.py +++ b/tests/dbt/test_transformation.py @@ -1192,13 +1192,13 @@ def test_target_jinja(sushi_test_project: Project): context = DbtContext() context._target = BigQueryConfig( name="target", - schema="test", - database="test", - project="project", - dataset="dataset", + schema="test_value", + database="test_project", ) - assert context.render("{{ target.project }}") == "project" - assert context.render("{{ target.dataset }}") == "dataset" + assert context.render("{{ target.project }}") == "test_project" + assert context.render("{{ target.database }}") == "test_project" + assert context.render("{{ target.schema }}") == "test_value" + assert context.render("{{ target.dataset }}") == "test_value" @pytest.mark.xdist_group("dbt_manifest")