diff --git a/metadata-ingestion/src/datahub/ingestion/source/looker/looker_template_language.py b/metadata-ingestion/src/datahub/ingestion/source/looker/looker_template_language.py index b1697d1004e20..aaa1c48866a8b 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/looker/looker_template_language.py +++ b/metadata-ingestion/src/datahub/ingestion/source/looker/looker_template_language.py @@ -368,7 +368,7 @@ class LookmlConstantTransformer(LookMLViewTransformer): CONSTANT_PATTERN = r"@{(\w+)}" # Matches @{constant} - def resolve_lookml_constant(self, text: str) -> str: + def resolve_lookml_constant(self, text: str, view_name=str) -> str: """ Resolves LookML constants (@{ }) from manifest or config. Logs warnings for misplaced or missing variables. @@ -402,14 +402,18 @@ def replace_constants(match): ) return f"@{{{key}}}" - logger.warning(f"Constant '@{{{key}}}' not found in configuration.") + self.reporter.report_warning( + title="LookML constant not found", + message="The constant is missing. Either add it under 'lookml_constants' in the config or define it in `manifest.lkml`.", + context=f"view-name: {view_name}, constant: {key}", + ) return "NULL" # Resolve @{} (constant) return re.sub(self.CONSTANT_PATTERN, replace_constants, text) def _apply_transformation(self, value: str, view: dict) -> str: - return self.resolve_lookml_constant(text=value) + return self.resolve_lookml_constant(text=value, view_name=view["name"]) class TransformedLookMlView: diff --git a/metadata-ingestion/tests/integration/lookml/test_lookml.py b/metadata-ingestion/tests/integration/lookml/test_lookml.py index b3ea193963f69..58b9085c4d79c 100644 --- a/metadata-ingestion/tests/integration/lookml/test_lookml.py +++ b/metadata-ingestion/tests/integration/lookml/test_lookml.py @@ -909,7 +909,7 @@ def test_view_to_view_lineage_and_lookml_constant(pytestconfig, tmp_path, mock_t pipeline = Pipeline.create(new_recipe) pipeline.run() pipeline.pretty_print_summary() - pipeline.raise_from_status(raise_warnings=True) + pipeline.raise_from_status(raise_warnings=False) golden_path = test_resources_dir / "vv_lineage_lookml_constant_golden.json" mce_helpers.check_golden_file(