Skip to content

Commit ab4df0f

Browse files
authored
Feat: expose model fqn in the macro evaluator (#4510)
1 parent 01114b5 commit ab4df0f

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

sqlmesh/core/macros.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ def __init__(
173173
default_catalog: t.Optional[str] = None,
174174
path: Path = Path(),
175175
environment_naming_info: t.Optional[EnvironmentNamingInfo] = None,
176+
model_fqn: t.Optional[str] = None,
176177
):
177178
self.dialect = dialect
178179
self.generator = MacroDialect().generator()
@@ -198,6 +199,7 @@ def __init__(
198199
self._snapshots = snapshots if snapshots is not None else {}
199200
self._path = path
200201
self._environment_naming_info = environment_naming_info
202+
self._model_fqn = model_fqn
201203

202204
prepare_env(self.python_env, self.env)
203205
for k, v in self.python_env.items():
@@ -476,6 +478,12 @@ def this_model(self) -> str:
476478
raise SQLMeshError("Model name is not available in the macro evaluator.")
477479
return this_model.sql(dialect=self.dialect, identify=True, comments=False)
478480

481+
@property
482+
def this_model_fqn(self) -> str:
483+
if self._model_fqn is None:
484+
raise SQLMeshError("Model name is not available in the macro evaluator.")
485+
return self._model_fqn
486+
479487
@property
480488
def engine_adapter(self) -> EngineAdapter:
481489
engine_adapter = self.locals.get("engine_adapter")

sqlmesh/core/renderer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ def _resolve_table(table: str | exp.Table) -> str:
169169
default_catalog=self._default_catalog,
170170
path=self._path,
171171
environment_naming_info=environment_naming_info,
172+
model_fqn=self._model_fqn,
172173
)
173174

174175
start_time, end_time = (

tests/core/test_model.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9993,6 +9993,7 @@ def test_extract_schema_in_post_statement(tmp_path: Path) -> None:
99939993
SELECT c FROM x;
99949994
ON_VIRTUAL_UPDATE_BEGIN;
99959995
@check_schema('y');
9996+
@check_self_schema();
99969997
ON_VIRTUAL_UPDATE_END;
99979998
"""
99989999
)
@@ -10007,6 +10008,11 @@ def test_extract_schema_in_post_statement(tmp_path: Path) -> None:
1000710008
def check_schema(evaluator, model_name: str):
1000810009
if evaluator.runtime_stage != 'loading':
1000910010
assert evaluator.columns_to_types(model_name) == {"c": exp.DataType.build("INT")}
10011+
10012+
@macro()
10013+
def check_self_schema(evaluator):
10014+
if evaluator.runtime_stage != 'loading':
10015+
assert evaluator.columns_to_types(evaluator.this_model_fqn) == {"c": exp.DataType.build("INT")}
1001010016
""")
1001110017

1001210018
context = Context(paths=tmp_path, config=config)

0 commit comments

Comments
 (0)