|
28 | 28 | {% macro get_result_enriched_elementary_test_results(cached_elementary_test_results, cached_elementary_test_failed_row_counts, render_result_rows=false) %} |
29 | 29 | {% set elementary_test_results = [] %} |
30 | 30 |
|
31 | | - {% for result in results | selectattr('node.resource_type', '==', 'test') %} |
32 | | - {% set result = elementary.get_run_result_dict(result) %} |
33 | | - {% set elementary_test_results_rows = cached_elementary_test_results.get(result.node.unique_id) %} |
34 | | - {% set elementary_test_failed_row_count = cached_elementary_test_failed_row_counts.get(result.node.unique_id) %} |
35 | | - |
36 | | - {# Materializing the test failed and therefore was not added to the cache. #} |
37 | | - {% if not elementary_test_results_rows %} |
38 | | - {% set flattened_test = elementary.flatten_test(result.node) %} |
39 | | - {% set elementary_test_results_rows = [elementary.get_dbt_test_result_row(flattened_test)] %} |
40 | | - {% endif %} |
41 | | - |
42 | | - {% for elementary_test_results_row in elementary_test_results_rows %} |
43 | | - {% set failures = elementary_test_results_row.get("failures", result.failures) %} |
44 | | - |
45 | | - {# For Elementary anomaly tests, we actually save more than one result per test, in that case the dbt status will be "fail" |
46 | | - even if one such result failed and the rest succeeded. To handle this, we make sure to mark the status as "pass" for these |
47 | | - results if the number of failed rows is 0. |
48 | | - We don't want to do this for every test though - because otherwise it can break configurations like warn_if=0 #} |
49 | | - {% set status = "pass" if failures == 0 and elementary_test_results_row.get("test_type") == "anomaly_detection" else result.status %} |
50 | | -
|
51 | | - {% do elementary_test_results_row.update({'status': status, 'failures': failures, 'invocation_id': invocation_id, |
52 | | - 'failed_row_count': elementary_test_failed_row_count}) %} |
53 | | - {% do elementary_test_results_row.setdefault('test_results_description', result.message) %} |
54 | | - {% if render_result_rows %} |
55 | | - {% do elementary_test_results_row.update({"result_rows": elementary.render_result_rows(elementary_test_results_row.result_rows)}) %} |
| 31 | + {% for result in results %} |
| 32 | + {% set node = elementary.get_node(result.unique_id) %} |
| 33 | + {% if node.resource_type == 'test' %} |
| 34 | + {% do print('result is' ~ result | tojson) %} |
| 35 | + {% set result = elementary.get_run_result_dict(result) %} |
| 36 | + {% set elementary_test_results_rows = cached_elementary_test_results.get(result.node.unique_id) %} |
| 37 | + {% set elementary_test_failed_row_count = cached_elementary_test_failed_row_counts.get(result.node.unique_id) %} |
| 38 | + |
| 39 | + {# Materializing the test failed and therefore was not added to the cache. #} |
| 40 | + {% if not elementary_test_results_rows %} |
| 41 | + {% set flattened_test = elementary.flatten_test(node) %} |
| 42 | + {% set elementary_test_results_rows = [elementary.get_dbt_test_result_row(flattened_test)] %} |
56 | 43 | {% endif %} |
57 | | - {% do elementary_test_results.append(elementary_test_results_row) %} |
58 | | - {% endfor %} |
| 44 | + |
| 45 | + {% for elementary_test_results_row in elementary_test_results_rows %} |
| 46 | + {% set failures = elementary_test_results_row.get("failures", result.failures) %} |
| 47 | + |
| 48 | + {# For Elementary anomaly tests, we actually save more than one result per test, in that case the dbt status will be "fail" |
| 49 | + even if one such result failed and the rest succeeded. To handle this, we make sure to mark the status as "pass" for these |
| 50 | + results if the number of failed rows is 0. |
| 51 | + We don't want to do this for every test though - because otherwise it can break configurations like warn_if=0 #} |
| 52 | + {% set status = "pass" if failures == 0 and elementary_test_results_row.get("test_type") == "anomaly_detection" else result.status %} |
| 53 | +
|
| 54 | + {% do elementary_test_results_row.update({'status': status, 'failures': failures, 'invocation_id': invocation_id, |
| 55 | + 'failed_row_count': elementary_test_failed_row_count}) %} |
| 56 | + {% do elementary_test_results_row.setdefault('test_results_description', result.message) %} |
| 57 | + {% if render_result_rows %} |
| 58 | + {% do elementary_test_results_row.update({"result_rows": elementary.render_result_rows(elementary_test_results_row.result_rows)}) %} |
| 59 | + {% endif %} |
| 60 | + {% do elementary_test_results.append(elementary_test_results_row) %} |
| 61 | + {% endfor %} |
| 62 | + {% endif %} |
59 | 63 | {% endfor %} |
60 | 64 |
|
61 | 65 | {% do return(elementary_test_results) %} |
|
174 | 178 | {% macro pop_test_result_rows(elementary_test_results) %} |
175 | 179 | {% set result_rows = [] %} |
176 | 180 | {% for test_result in elementary_test_results %} |
177 | | - {% for result_row in test_result.pop('result_rows', []) %} |
178 | | - {% do result_rows.append({ |
179 | | - "elementary_test_results_id": test_result.id, |
180 | | - "detected_at": test_result.detected_at, |
181 | | - "result_row": result_row |
182 | | - }) %} |
183 | | - {% endfor %} |
| 181 | + {% if 'result_rows' in test_result %} |
| 182 | + {% for result_row in test_result.pop('result_rows') %} |
| 183 | + {% do result_rows.append({ |
| 184 | + "elementary_test_results_id": test_result.id, |
| 185 | + "detected_at": test_result.detected_at, |
| 186 | + "result_row": result_row |
| 187 | + }) %} |
| 188 | + {% endfor %} |
| 189 | + {% endif %} |
184 | 190 | {% endfor %} |
185 | 191 | {% do return(result_rows) %} |
186 | 192 | {% endmacro %} |
|
0 commit comments