Skip to content

Commit 7a6aa50

Browse files
fix: enable passing of original_entity_override to fix instance where id cannot be sourced from current entity
1 parent 2d10832 commit 7a6aa50

4 files changed

Lines changed: 11 additions & 2 deletions

File tree

src/dve/core_engine/backends/implementations/duckdb/rules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ def notify(self, entities: DuckDBEntities, *, config: Notification) -> Messages:
518518
messages.append(
519519
FeedbackMessage(
520520
entity=config.reporting.reporting_entity_override or config.entity_name,
521-
original_entity=config.entity_name,
521+
original_entity=config.reporting.original_entity_override or config.entity_name,
522522
record=record, # type: ignore
523523
error_location=config.reporting.legacy_location,
524524
error_message=template_object(config.reporting.message, record), # type: ignore

src/dve/core_engine/backends/implementations/spark/rules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ def notify(self, entities: SparkEntities, *, config: Notification) -> Messages:
412412
# more complex extraction done in reporting module
413413
FeedbackMessage(
414414
entity=config.reporting.reporting_entity_override or config.entity_name,
415-
original_entity=config.entity_name,
415+
original_entity=config.reporting.original_entity_override or config.entity_name,
416416
record=record.asDict(recursive=True),
417417
error_location=config.reporting.legacy_location,
418418
error_message=template_object(

src/dve/core_engine/backends/metadata/reporting.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from dve.core_engine.templating import template_object
1212
from dve.core_engine.type_hints import (
13+
EntityName,
1314
ErrorCategory,
1415
ErrorCode,
1516
ErrorEmitValue,
@@ -102,6 +103,12 @@ class BaseReportingConfig(BaseModel):
102103
If this is not provided, the top level names from the `location` field
103104
will be used in the report.
104105
106+
"""
107+
original_entity_override: Optional[EntityName] = None
108+
"""
109+
This should only be populated where you need to refer back to an originally defined entity that
110+
contains the key field(s) of interest. This might be required in cases where you've created
111+
lots of new entities during a complex rule.
105112
"""
106113

107114
def template(

src/dve/core_engine/configuration/v1/filters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class ConcreteFilterConfig(BaseModel):
2424
reporting_field: Optional[Union[str, list[str]]] = None
2525
reporting_field_name: Optional[str] = None
2626
category: ErrorCategory = "Bad value"
27+
original_entity_override: Optional[str] = None
2728

2829
def to_step(self) -> AbstractStep:
2930
"""Create a deferred filter from the concrete filter config."""
@@ -37,6 +38,7 @@ def to_step(self) -> AbstractStep:
3738
legacy_is_informational=self.is_informational,
3839
legacy_location=self.error_location,
3940
legacy_reporting_field=self.reporting_field,
41+
original_entity_override=self.original_entity_override,
4042
)
4143

4244
return DeferredFilter(

0 commit comments

Comments
 (0)