Skip to content

Commit 7aa8898

Browse files
committed
Fix: Update dbt loader to support loading multiple models from same file
1 parent 26ebace commit 7aa8898

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

sqlmesh/dbt/loader.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import typing as t
66
import sqlmesh.core.dialect as d
77
from pathlib import Path
8+
from collections import defaultdict
89
from sqlmesh.core.config import (
910
Config,
1011
ConnectionConfig,
@@ -137,16 +138,22 @@ def _to_sqlmesh(config: BMC, context: DbtContext) -> Model:
137138
package_context.set_and_render_variables(package.variables, package.name)
138139
package_models: t.Dict[str, BaseModelConfig] = {**package.models, **package.seeds}
139140

141+
package_models_by_path: t.Dict[Path, t.List[BaseModelConfig]] = defaultdict(list)
140142
for model in package_models.values():
141143
if isinstance(model, ModelConfig) and not model.sql.strip():
142144
logger.info(f"Skipping empty model '{model.name}' at path '{model.path}'.")
143145
continue
146+
package_models_by_path[model.path].append(model)
144147

145-
sqlmesh_model = cache.get_or_load_models(
146-
model.path, loader=lambda: [_to_sqlmesh(model, package_context)]
147-
)[0]
148-
149-
models[sqlmesh_model.fqn] = sqlmesh_model
148+
for path, path_models in package_models_by_path.items():
149+
sqlmesh_models = cache.get_or_load_models(
150+
path,
151+
loader=lambda: [
152+
_to_sqlmesh(model, package_context) for model in path_models
153+
],
154+
)
155+
for sqlmesh_model in sqlmesh_models:
156+
models[sqlmesh_model.fqn] = sqlmesh_model
150157

151158
models.update(self._load_external_models(audits, cache))
152159

0 commit comments

Comments
 (0)