Skip to content

Commit 5d08a08

Browse files
authored
Merge pull request #2230 from elementary-data/devin/app-1123-disable-samples-macro-skip
APP-1123: add skip_test_result_rows to skip test_result_rows query in get_test_results macro
2 parents fc1599e + 3a0d268 commit 5d08a08

5 files changed

Lines changed: 39 additions & 18 deletions

File tree

elementary/monitor/api/report/report.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def get_report_data(
7676
exclude_elementary_models: bool = False,
7777
project_name: Optional[str] = None,
7878
disable_samples: bool = False,
79+
skip_test_result_rows: bool = False,
7980
filter: SelectorFilterSchema = SelectorFilterSchema(),
8081
env: Optional[str] = None,
8182
warehouse_type: Optional[str] = None,
@@ -86,6 +87,7 @@ def get_report_data(
8687
days_back=days_back,
8788
invocations_per_test=test_runs_amount,
8889
disable_passed_test_metrics=disable_passed_test_metrics,
90+
skip_test_result_rows=skip_test_result_rows,
8991
)
9092
source_freshnesses_api = SourceFreshnessesAPI(
9193
dbt_runner=self.dbt_runner,

elementary/monitor/api/tests/tests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,25 +46,29 @@ def __init__(
4646
days_back: int = 7,
4747
invocations_per_test: int = 720,
4848
disable_passed_test_metrics: bool = False,
49+
skip_test_result_rows: bool = False,
4950
):
5051
super().__init__(dbt_runner)
5152
self.tests_fetcher = TestsFetcher(dbt_runner=self.dbt_runner)
5253
self.test_results_db_rows = self._get_test_results_db_rows(
5354
days_back=days_back,
5455
invocations_per_test=invocations_per_test,
5556
disable_passed_test_metrics=disable_passed_test_metrics,
57+
skip_test_result_rows=skip_test_result_rows,
5658
)
5759

5860
def _get_test_results_db_rows(
5961
self,
6062
days_back: Optional[int] = 7,
6163
invocations_per_test: int = 720,
6264
disable_passed_test_metrics: bool = False,
65+
skip_test_result_rows: bool = False,
6366
) -> List[TestResultDBRowSchema]:
6467
return self.tests_fetcher.get_all_test_results_db_rows(
6568
days_back=days_back,
6669
invocations_per_test=invocations_per_test,
6770
disable_passed_test_metrics=disable_passed_test_metrics,
71+
skip_test_result_rows=skip_test_result_rows,
6872
)
6973

7074
def get_test_results_summary(

elementary/monitor/dbt_project/macros/base_queries/current_tests_run_results_query.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% macro current_tests_run_results_query(days_back = none, invocation_id = none) %}
1+
{% macro current_tests_run_results_query(days_back = none, invocation_id = none, skip_test_result_rows = false) %}
22
with elementary_test_results as (
33
select * from {{ ref('elementary', 'elementary_test_results') }}
44
{% if days_back %}
@@ -79,7 +79,7 @@
7979
dbt_tests.short_name,
8080
elementary_test_results.test_alias,
8181
elementary_test_results.failures,
82-
elementary_test_results.result_rows,
82+
{% if skip_test_result_rows %}null{% else %}elementary_test_results.result_rows{% endif %} as result_rows,
8383
dbt_tests.original_path,
8484
dbt_tests.meta,
8585
dbt_tests.description as test_description,

elementary/monitor/dbt_project/macros/get_test_results.sql

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
{%- macro get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false) -%}
2-
{{ return(adapter.dispatch('get_test_results', 'elementary_cli')(days_back, invocations_per_test, disable_passed_test_metrics)) }}
1+
{%- macro get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false, skip_test_result_rows = false) -%}
2+
{{ return(adapter.dispatch('get_test_results', 'elementary_cli')(days_back, invocations_per_test, disable_passed_test_metrics, skip_test_result_rows)) }}
33
{%- endmacro -%}
44

55
{#
66
Shared post-processing helper: filters tests by meta, attaches sample data.
77
Called by both default__ and fabric__ dispatches to avoid duplicating the
88
Jinja processing loop.
99
#}
10-
{%- macro _process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status) -%}
10+
{%- macro _process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status, skip_test_result_rows = false) -%}
1111
{% set test_results = [] %}
1212
{% set tests = elementary.agate_to_dicts(test_results_agate) %}
1313

@@ -26,7 +26,7 @@
2626
{% set test_params = fromjson(test.test_params) %}
2727
{% set status = test.status | lower %}
2828

29-
{%- if (test_type == 'dbt_test' and status in ['fail', 'warn']) or (test_type != 'dbt_test' and status in elementary_tests_allowlist_status) -%}
29+
{%- if not skip_test_result_rows and ((test_type == 'dbt_test' and status in ['fail', 'warn']) or (test_type != 'dbt_test' and status in elementary_tests_allowlist_status)) -%}
3030
{% set test_rows_sample = elementary_cli.get_test_rows_sample(test.result_rows, test_result_rows_agate.get(test.id)) %}
3131
{%- endif -%}
3232
{% else %}
@@ -40,11 +40,11 @@
4040
{% do return(test_results) %}
4141
{%- endmacro -%}
4242

43-
{%- macro default__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false) -%}
43+
{%- macro default__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false, skip_test_result_rows = false) -%}
4444
{% set elementary_tests_allowlist_status = ['fail', 'warn'] if disable_passed_test_metrics else ['fail', 'warn', 'pass'] %}
4545
{% set select_test_results %}
4646
with test_results as (
47-
{{ elementary_cli.current_tests_run_results_query(days_back=days_back) }}
47+
{{ elementary_cli.current_tests_run_results_query(days_back=days_back, skip_test_result_rows=skip_test_result_rows) }}
4848
),
4949

5050
ordered_test_results as (
@@ -111,15 +111,19 @@
111111
{% endset %}
112112

113113
{% set test_results_agate = elementary.run_query(test_results_agate_sql) %}
114-
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
114+
{% if not skip_test_result_rows %}
115+
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
116+
{% else %}
117+
{% set test_result_rows_agate = {} %}
118+
{% endif %}
115119
{% if not elementary.has_temp_table_support() %}
116120
{% do elementary.fully_drop_relation(ordered_test_results_relation) %}
117121
{% endif %}
118122

119-
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status)) %}
123+
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status, skip_test_result_rows)) %}
120124
{%- endmacro -%}
121125

122-
{%- macro fabric__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false) -%}
126+
{%- macro fabric__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false, skip_test_result_rows = false) -%}
123127
{#
124128
T-SQL does not allow nested CTEs (WITH inside WITH).
125129
current_tests_run_results_query already starts with WITH, so we
@@ -132,7 +136,7 @@
132136

133137
{# Step 1 – materialise the base test-results query into a temp table #}
134138
{% set base_query %}
135-
{{ elementary_cli.current_tests_run_results_query(days_back=days_back) }}
139+
{{ elementary_cli.current_tests_run_results_query(days_back=days_back, skip_test_result_rows=skip_test_result_rows) }}
136140
{% endset %}
137141

138142
{% set elementary_database, elementary_schema = elementary.get_package_database_and_schema() %}
@@ -165,16 +169,21 @@
165169
{% endset %}
166170

167171
{% set test_results_agate = elementary.run_query(test_results_agate_sql) %}
168-
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
172+
{% if not skip_test_result_rows %}
173+
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
174+
{% else %}
175+
{% set test_result_rows_agate = {} %}
176+
{% endif %}
169177

170178
{# Clean up intermediate tables #}
171179
{% do elementary.fully_drop_relation(base_relation) %}
172180
{% do elementary.fully_drop_relation(ordered_relation) %}
173181

174-
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status)) %}
182+
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status, skip_test_result_rows)) %}
175183
{%- endmacro -%}
176184

177-
{%- macro clickhouse__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false) -%}
185+
{%- macro clickhouse__get_test_results(days_back = 7, invocations_per_test = 720, disable_passed_test_metrics = false, skip_test_result_rows = false) -%}
186+
{% set elementary_tests_allowlist_status = ['fail', 'warn'] if disable_passed_test_metrics else ['fail', 'warn', 'pass'] %}
178187
{% do elementary.run_query('drop table if exists ordered_test_results') %}
179188
{% set create_table_query %}
180189
CREATE TABLE ordered_test_results (
@@ -262,7 +271,7 @@
262271
{{ elementary.edr_datediff(elementary.edr_cast_as_timestamp('etr.detected_at'), elementary.edr_current_timestamp(), 'day') }} AS days_diff,
263272
ROW_NUMBER() OVER (PARTITION BY elementary_unique_id ORDER BY etr.detected_at DESC) AS invocations_rank_index,
264273
etr.failures,
265-
etr.result_rows
274+
{% if skip_test_result_rows %}''{% else %}etr.result_rows{% endif %} AS result_rows
266275
FROM {{ ref('elementary', 'elementary_test_results') }} etr
267276
JOIN {{ ref('elementary', 'dbt_tests') }} dt ON etr.test_unique_id = dt.unique_id
268277
LEFT JOIN (
@@ -302,10 +311,14 @@
302311
{% endset %}
303312

304313
{% set test_results_agate = elementary.run_query(test_results_agate_sql) %}
305-
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
314+
{% if not skip_test_result_rows %}
315+
{% set test_result_rows_agate = elementary_cli.get_result_rows_agate(days_back, valid_ids_query) %}
316+
{% else %}
317+
{% set test_result_rows_agate = {} %}
318+
{% endif %}
306319
{% if not elementary.has_temp_table_support() %}
307320
{% do elementary.fully_drop_relation(ordered_test_results_relation) %}
308321
{% endif %}
309322

310-
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status)) %}
323+
{% do return(elementary_cli._process_raw_test_results(test_results_agate, test_result_rows_agate, elementary_tests_allowlist_status, skip_test_result_rows)) %}
311324
{%- endmacro -%}

elementary/monitor/fetchers/tests/tests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ def get_all_test_results_db_rows(
2222
days_back: Optional[int] = 7,
2323
invocations_per_test: int = 720,
2424
disable_passed_test_metrics: bool = False,
25+
skip_test_result_rows: bool = False,
2526
) -> List[TestResultDBRowSchema]:
2627
run_operation_response = self.dbt_runner.run_operation(
2728
macro_name="elementary_cli.get_test_results",
2829
macro_args=dict(
2930
days_back=days_back,
3031
invocations_per_test=invocations_per_test,
3132
disable_passed_test_metrics=disable_passed_test_metrics,
33+
skip_test_result_rows=skip_test_result_rows,
3234
),
3335
)
3436
test_results = (

0 commit comments

Comments
 (0)