Skip to content

Commit 9531e27

Browse files
committed
Fix issue with seeds using data_type from columns too
1 parent 6a2f83d commit 9531e27

2 files changed

Lines changed: 26 additions & 10 deletions

File tree

sqlmesh/dbt/seed.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import annotations
22

3-
import copy
43
import typing as t
54

65
import agate
@@ -50,15 +49,11 @@ def to_sqlmesh(
5049
"""Converts the dbt seed into a SQLMesh model."""
5150
seed_path = self.path.absolute().as_posix()
5251

53-
if column_types := self.column_types:
54-
column_types_override = copy.deepcopy(self.columns)
55-
for name, data_type in column_types.items():
56-
column = column_types_override.setdefault(name, ColumnConfig(name=name))
57-
column.data_type = data_type
58-
column.quote = self.quote_columns or column.quote
59-
kwargs = self.sqlmesh_model_kwargs(context, column_types_override)
60-
else:
61-
kwargs = self.sqlmesh_model_kwargs(context)
52+
column_types_override = {
53+
name: ColumnConfig(name=name, data_type=data_type, quote=self.quote_columns)
54+
for name, data_type in (self.column_types or {}).items()
55+
}
56+
kwargs = self.sqlmesh_model_kwargs(context, column_types_override)
6257

6358
columns = kwargs.get("columns") or {}
6459

tests/dbt/test_transformation.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,27 @@ def test_seed_column_types():
677677
assert sqlmesh_seed.columns_to_types == expected_column_types
678678
assert sqlmesh_seed.column_descriptions == expected_column_descriptions
679679

680+
seed = SeedConfig(
681+
name="foo",
682+
package="package",
683+
path=Path("examples/sushi_dbt/seeds/waiter_names.csv"),
684+
column_types={
685+
"name": "text",
686+
},
687+
columns={
688+
# The `data_type` field does not affect the materialized seed's column type
689+
"id": ColumnConfig(name="name", data_type="text"),
690+
},
691+
quote_columns=True,
692+
)
693+
694+
expected_column_types = {
695+
"id": exp.DataType.build("int"),
696+
"name": exp.DataType.build("text"),
697+
}
698+
sqlmesh_seed = seed.to_sqlmesh(context)
699+
assert sqlmesh_seed.columns_to_types == expected_column_types
700+
680701

681702
def test_seed_column_inference(tmp_path):
682703
seed_csv = tmp_path / "seed.csv"

0 commit comments

Comments
 (0)