From b4854016d220094498cb134e821f4deebd7c19fa Mon Sep 17 00:00:00 2001 From: Iaroslav Zeigerman Date: Thu, 4 Sep 2025 15:53:11 -0700 Subject: [PATCH 1/2] Fix: Allow partials by default for all models converted from a dbt project --- sqlmesh/dbt/model.py | 8 ++------ tests/dbt/test_config.py | 1 + 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/sqlmesh/dbt/model.py b/sqlmesh/dbt/model.py index 2f040ef5f8..9997d464ae 100644 --- a/sqlmesh/dbt/model.py +++ b/sqlmesh/dbt/model.py @@ -83,7 +83,7 @@ class ModelConfig(BaseModelConfig): batch_concurrency: t.Optional[int] = None forward_only: bool = True disable_restatement: t.Optional[bool] = None - allow_partials: t.Optional[bool] = None + allow_partials: bool = True physical_version: t.Optional[str] = None auto_restatement_cron: t.Optional[str] = None auto_restatement_intervals: t.Optional[int] = None @@ -620,11 +620,7 @@ def to_sqlmesh( model_kwargs["physical_properties"] = physical_properties allow_partials = model_kwargs.pop("allow_partials", None) - if ( - allow_partials is None - and kind.is_materialized - and not kind.is_incremental_by_time_range - ): + if allow_partials is None: # Set allow_partials to True for dbt models to preserve the original semantics. allow_partials = True diff --git a/tests/dbt/test_config.py b/tests/dbt/test_config.py index ecd95a43c4..4e3e78eea9 100644 --- a/tests/dbt/test_config.py +++ b/tests/dbt/test_config.py @@ -137,6 +137,7 @@ def test_model_to_sqlmesh_fields(dbt_dummy_postgres_config: PostgresConfig): assert model.dialect == "postgres" assert model.owner == "Sally" assert model.tags == ["test", "incremental"] + assert model.allow_partials kind = t.cast(IncrementalByUniqueKeyKind, model.kind) assert kind.batch_size == 5 assert kind.lookback == 3 From 3f8d674757dee0c3c0943897b84f34b2d8fdf6d5 Mon Sep 17 00:00:00 2001 From: Iaroslav Zeigerman Date: Thu, 4 Sep 2025 16:13:56 -0700 Subject: [PATCH 2/2] fix tests --- tests/dbt/test_transformation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/dbt/test_transformation.py b/tests/dbt/test_transformation.py index 1db3d469d8..b5de61031b 100644 --- a/tests/dbt/test_transformation.py +++ b/tests/dbt/test_transformation.py @@ -2110,11 +2110,11 @@ def test_allow_partials_by_default(): sql="SELECT * FROM baz", materialized=Materialization.TABLE.value, ) - assert model.allow_partials is None + assert model.allow_partials assert model.to_sqlmesh(context).allow_partials model.materialized = Materialization.INCREMENTAL.value - assert model.allow_partials is None + assert model.allow_partials assert model.to_sqlmesh(context).allow_partials model.allow_partials = True