Skip to content

Commit 07ae87e

Browse files
committed
fix: dbt time column serialization
1 parent 4c42b45 commit 07ae87e

File tree

5 files changed

+13
-8
lines changed

5 files changed

+13
-8
lines changed

sqlmesh/dbt/model.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
OnAdditiveChange,
3232
on_destructive_change_validator,
3333
on_additive_change_validator,
34-
TimeColumn,
3534
)
3635
from sqlmesh.dbt.basemodel import BaseModelConfig, Materialization, SnapshotStrategy
3736
from sqlmesh.dbt.common import SqlStr, sql_str_validator
@@ -86,7 +85,7 @@ class ModelConfig(BaseModelConfig):
8685

8786
# sqlmesh fields
8887
sql: SqlStr = SqlStr("")
89-
time_column: t.Optional[TimeColumn] = None
88+
time_column: t.Optional[t.Union[str, t.Dict[str, str]]] = None
9089
cron: t.Optional[str] = None
9190
interval_unit: t.Optional[str] = None
9291
batch_concurrency: t.Optional[int] = None
@@ -153,7 +152,6 @@ class ModelConfig(BaseModelConfig):
153152
_sql_validator = sql_str_validator
154153
_on_destructive_change_validator = on_destructive_change_validator
155154
_on_additive_change_validator = on_additive_change_validator
156-
_time_column_validator = TimeColumn.validator()
157155

158156
@field_validator(
159157
"unique_key",

tests/dbt/test_model.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from sqlmesh import Context
1010
from sqlmesh.core.model import TimeColumn, IncrementalByTimeRangeKind
1111
from sqlmesh.core.model.kind import OnDestructiveChange, OnAdditiveChange
12+
from sqlmesh.core.state_sync.db.snapshot import _snapshot_to_json
1213
from sqlmesh.dbt.common import Dependencies
1314
from sqlmesh.dbt.context import DbtContext
1415
from sqlmesh.dbt.model import ModelConfig
@@ -328,7 +329,8 @@ def test_load_incremental_time_range_strategy_required_only(
328329

329330
snapshot_fqn = '"local"."main"."incremental_time_range"'
330331
context = Context(paths=project_dir)
331-
model = context.snapshots[snapshot_fqn].model
332+
snapshot = context.snapshots[snapshot_fqn]
333+
model = snapshot.model
332334
# Validate model-level attributes
333335
assert model.start == "2025-01-01"
334336
assert model.interval_unit.is_day
@@ -342,6 +344,8 @@ def test_load_incremental_time_range_strategy_required_only(
342344
assert model.depends_on_self is False
343345
assert model.kind.auto_restatement_intervals is None
344346
assert model.kind.partition_by_time_column is True
347+
# make sure the snapshot can be serialized to json
348+
assert isinstance(_snapshot_to_json(snapshot), str)
345349

346350

347351
@pytest.mark.slow
@@ -381,7 +385,8 @@ def test_load_incremental_time_range_strategy_all_defined(
381385

382386
snapshot_fqn = '"local"."main"."incremental_time_range"'
383387
context = Context(paths=project_dir)
384-
model = context.snapshots[snapshot_fqn].model
388+
snapshot = context.snapshots[snapshot_fqn]
389+
model = snapshot.model
385390
# Validate model-level attributes
386391
assert model.start == "2025-01-01"
387392
assert model.interval_unit.is_day
@@ -402,6 +407,8 @@ def test_load_incremental_time_range_strategy_all_defined(
402407
assert model.kind.batch_size == 3
403408
assert model.kind.batch_concurrency == 2
404409
assert model.depends_on_self is False
410+
# make sure the snapshot can be serialized to json
411+
assert isinstance(_snapshot_to_json(snapshot), str)
405412

406413

407414
@pytest.mark.slow

tests/fixtures/dbt/sushi_test/models/waiter_as_customer_by_day.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{
22
config(
33
materialized='incremental',
4-
incremental_strategy='delete+insert',
4+
incremental_strategy='incremental_by_time_range',
55
cluster_by=['ds'],
66
time_column='ds',
77
)

tests/fixtures/dbt/sushi_test/models/waiter_revenue_by_day.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{
22
config(
33
materialized='incremental',
4-
incremental_strategy='delete+insert',
4+
incremental_strategy='incremental_by_time_range',
55
cluster_by=['ds'],
66
time_column='ds',
77
dialect="bigquery"

tests/fixtures/dbt/sushi_test/models/waiter_revenue_by_day_v1.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{
22
config(
33
materialized='incremental',
4-
incremental_strategy='delete+insert',
4+
incremental_strategy='incremental_by_time_range',
55
cluster_by=['ds'],
66
time_column='ds',
77
dialect="bigquery"

0 commit comments

Comments
 (0)