Skip to content

Commit bf2747f

Browse files
Merge pull request #1018 from elementary-data/fix-source-freshness-upload-for-dbt-fusion
fix source freshness upload for dbt fusion
2 parents 02e6e0f + d0ab63b commit bf2747f

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

macros/edr/dbt_artifacts/upload_source_freshness.sql

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
) %}
55
{% set source_freshness_results_dicts = [] %}
66
{% for result in results %}
7-
{% do source_freshness_results_dicts.append(
8-
elementary.process_freshness_result(result)
9-
) %}
7+
{% set processed_result = elementary.process_freshness_result(result) %}
8+
{% if processed_result is not none %}
9+
{% do source_freshness_results_dicts.append(processed_result) %}
10+
{% endif %}
1011
{% endfor %}
1112
{% do elementary.upload_artifacts_to_table(
1213
source_freshness_results_relation,
@@ -19,6 +20,12 @@
1920

2021
{% macro process_freshness_result(result) %}
2122
{% set result_dict = result.to_dict() %}
23+
{#
24+
dbt-fusion returns a none `node` for some freshness results (e.g. errored
25+
sources), unlike dbt-core. Skip them so the on_run_end hook does not crash
26+
on `result_dict.node.unique_id`.
27+
#}
28+
{% if result_dict.get("node") is none %} {% do return(none) %} {% endif %}
2229
{% if result_dict.status == "runtime error" %}
2330
{% do return(
2431
{
@@ -47,7 +54,7 @@
4754
{% macro flatten_source_freshness(node_dict) %}
4855
{% set compile_timing = {} %}
4956
{% set execute_timing = {} %}
50-
{% for timing in node_dict["timing"] %}
57+
{% for timing in node_dict.get("timing") or [] %}
5158
{% if timing["name"] == "compile" %} {% do compile_timing.update(timing) %}
5259
{% elif timing["name"] == "execute" %} {% do execute_timing.update(timing) %}
5360
{% endif %}

0 commit comments

Comments
 (0)