diff --git a/sqlmesh/core/model/kind.py b/sqlmesh/core/model/kind.py index 7ae1ef8c0d..a8960fc3e1 100644 --- a/sqlmesh/core/model/kind.py +++ b/sqlmesh/core/model/kind.py @@ -341,6 +341,8 @@ def to_property(self, dialect: str = "") -> exp.Property: @classmethod def create(cls, v: t.Any, dialect: str) -> Self: if isinstance(v, exp.Tuple): + if not v.expressions: + raise ConfigError("Time Column cannot be empty.") column_expr = v.expressions[0] column = ( exp.column(column_expr) if isinstance(column_expr, exp.Identifier) else column_expr diff --git a/tests/core/test_model.py b/tests/core/test_model.py index 38453691df..6f286e309d 100644 --- a/tests/core/test_model.py +++ b/tests/core/test_model.py @@ -2680,6 +2680,21 @@ def test_time_column(): assert model.time_column.format == "%Y-%m" assert model.time_column.expression == d.parse_one("(\"ds\", '%Y-%m')") + expressions = d.parse( + """ + MODEL ( + name db.table, + kind INCREMENTAL_BY_TIME_RANGE( + time_column () + ) + ); + + SELECT col::text, ds::text + """ + ) + with pytest.raises(ConfigError, match="Time Column cannot be empty."): + load_sql_based_model(expressions) + def test_default_time_column(): expressions = d.parse(