Skip to content

Commit c7b7ff9

Browse files
Enhanced log message for source freshness errors + warns
1 parent 82e985b commit c7b7ff9

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

parsons/utilities/dbt/logging.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from parsons import Table
1616
from parsons.databases.database_connector import DatabaseConnector
17+
from parsons.utilities.dbt.models import EnhancedNodeResult
1718

1819
logger = logging.getLogger(__name__)
1920

@@ -100,7 +101,7 @@ def format_command_result(
100101
log_message += "\nError messages:\n```{}```".format(
101102
"\n\n".join(
102103
[
103-
i.node.name + ": " + (i.message or "")
104+
i.node.name + ": " + (EnhancedNodeResult.log_message(i) or "")
104105
for i in [*manifest.errors, *manifest.fails]
105106
]
106107
)
@@ -109,7 +110,12 @@ def format_command_result(
109110
# Warnings
110111
if manifest.warnings:
111112
log_message += "\nWarn messages:\n```{}```".format(
112-
"\n\n".join([i.node.name + ": " + (i.message or "") for i in manifest.warnings])
113+
"\n\n".join(
114+
[
115+
i.node.name + ": " + (EnhancedNodeResult.log_message(i) or "")
116+
for i in manifest.warnings
117+
]
118+
)
113119
)
114120

115121
# Skips

parsons/utilities/dbt/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import collections
44
from dbt.contracts.graph.manifest import Manifest as dbtManifest
55
from dbt.contracts.results import NodeResult
6+
from dbt.contracts.results import SourceFreshnessResult
67

78

89
class Manifest:
@@ -74,3 +75,16 @@ def total_slot_hours(self) -> float:
7475
sum([node.adapter_response.get("slot_ms", 0) for node in self.dbt_manifest]) / 3600000
7576
)
7677
return result
78+
79+
80+
class EnhancedNodeResult(NodeResult):
81+
def log_message(self) -> str | None:
82+
"""Helper method to generate message for logs."""
83+
if isinstance(self, SourceFreshnessResult):
84+
freshness_config = self.node.freshness
85+
time_config = getattr(freshness_config, self.status + "_after")
86+
result = f"No new records for {int(self.age/86400)} days, {self.status} after {time_config.count} {time_config.period}s."
87+
else:
88+
result = self.message
89+
90+
return result

0 commit comments

Comments
 (0)