Compare commits

...

1 Commits

Author SHA1 Message Date
Callum McCann
9ffaa58d7c changes 2022-11-22 10:00:04 -05:00
2 changed files with 13 additions and 3 deletions

View File

@@ -555,7 +555,7 @@ class ParseMetricResolver(BaseMetricResolver):
def resolve(self, name: str, package: Optional[str] = None) -> MetricReference:
self.model.metrics.append(self._repack_args(name, package))
return MetricReference(name, package)
return MetricReference(name, package, self.manifest, self.Relation)
class RuntimeMetricResolver(BaseMetricResolver):
@@ -575,7 +575,7 @@ class RuntimeMetricResolver(BaseMetricResolver):
target_package=target_package,
)
return ResolvedMetricReference(target_metric, self.manifest, self.Relation)
return MetricReference(target_metric, self.manifest, self.Relation)
# `var` implementations.

View File

@@ -2,13 +2,23 @@ from dbt.node_types import NodeType
class MetricReference(object):
def __init__(self, metric_name, package_name=None):
def __init__(self, metric_name, package_name=None, manifest=None, Relation=None):
self.metric_name = metric_name
self.package_name = package_name
self.manifest = manifest
self.Relation = Relation
def __str__(self):
return f"{self.metric_name}"
@classmethod
def parent_metrics(cls, metric_node, manifest):
yield metric_node
for parent_unique_id in metric_node.depends_on.nodes:
node = manifest.metrics.get(parent_unique_id)
if node and node.resource_type == NodeType.Metric:
yield from cls.parent_metrics(node, manifest)
class ResolvedMetricReference(MetricReference):
"""