Skip to content

Commit c002b47

Browse files
authored
Ele 4877 dremio package elementary tests (#836)
* dremio support in anomaly tests - WIP * git ignore dbt_internal_packages (relevant for fusion but no harm in adding now) * get_package_database_and_schema - use non-views for dremio * anomaly tests fixes * remove space * add newline * dremio datediff - different implementation for seconds diff
1 parent a8a4374 commit c002b47

18 files changed

Lines changed: 111 additions & 26 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
target/
22
dbt_packages/
3+
dbt_internal_packages/
34
logs/
45
scripts/
56

macros/edr/data_monitoring/anomaly_detection/get_anomaly_scores_query.sql

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
{%- set bucket_seasonality_expr = elementary.const_as_text('no_seasonality') %}
2929
{%- endif %}
3030
{%- set detection_end = elementary.get_detection_end(test_configuration.detection_delay) %}
31+
{%- set detection_end_expr = elementary.edr_cast_as_timestamp(elementary.edr_datetime_to_sql(detection_end)) %}
3132
{%- set min_bucket_start_expr = elementary.get_trunc_min_bucket_start_expr(detection_end, metric_properties, test_configuration.days_back) %}
3233

3334
{# For timestamped tests, this will be the bucket start, and for non-timestamped tests it will be the
@@ -39,9 +40,9 @@
3940
with buckets as (
4041
select edr_bucket_start, edr_bucket_end
4142
from ({{ elementary.complete_buckets_cte(metric_properties, min_bucket_start_expr,
42-
elementary.edr_quote(detection_end)) }}) results
43-
where edr_bucket_start >= {{ elementary.edr_cast_as_timestamp(min_bucket_start_expr) }}
44-
and edr_bucket_end <= {{ elementary.edr_cast_as_timestamp(elementary.edr_quote(detection_end)) }}
43+
detection_end_expr) }}) results
44+
where edr_bucket_start >= {{ min_bucket_start_expr }}
45+
and edr_bucket_end <= {{ detection_end_expr }}
4546
),
4647
{% else %}
4748
with
@@ -121,7 +122,7 @@
121122
{{ metric_time_bucket_expr }} as metric_time_bucket,
122123
{{ elementary.edr_cast_as_date(elementary.edr_date_trunc('day', metric_time_bucket_expr))}} as metric_date,
123124

124-
row_number() over (partition by id order by updated_at desc) as row_number
125+
row_number() over (partition by id order by updated_at desc) as row_num
125126
from union_metrics
126127

127128
),
@@ -144,7 +145,7 @@
144145
bucket_duration_hours,
145146
updated_at
146147
from grouped_metrics_duplicates
147-
where row_number = 1
148+
where row_num = 1
148149
),
149150

150151
time_window_aggregation as (

macros/edr/data_monitoring/data_monitors_configuration/get_buckets_configuration.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{% macro get_detection_end(detection_delay) %}
22
{% if not detection_delay %}
3-
{% do return(elementary.get_run_started_at()) %}
3+
{% do return(elementary.get_run_started_at().replace(microsecond=0)) %}
44
{% endif %}
55

66
{%- set kwargs = {detection_delay.period+'s': detection_delay.count} %}
7-
{%- set detection_end = elementary.get_run_started_at() - modules.datetime.timedelta(**kwargs) %}
7+
{%- set detection_end = elementary.get_run_started_at().replace(microsecond=0) - modules.datetime.timedelta(**kwargs) %}
88
{% do return(detection_end) %}
99
{% endmacro %}
1010

@@ -105,8 +105,8 @@
105105
{%- set buckets = elementary.agate_to_dicts(elementary.run_query(incremental_bucket_times_query))[0] %}
106106
{% endif %}
107107
{%- if buckets %}
108-
{%- set min_bucket_start = elementary.edr_quote(buckets.get('min_bucket_start')) %}
109-
{%- set max_bucket_end = elementary.edr_quote(buckets.get('max_bucket_end')) %}
108+
{%- set min_bucket_start = elementary.edr_datetime_to_sql(buckets.get('min_bucket_start')) %}
109+
{%- set max_bucket_end = elementary.edr_datetime_to_sql(buckets.get('max_bucket_end')) %}
110110
{{ return([min_bucket_start, max_bucket_end]) }}
111111
{%- else %}
112112
{{ exceptions.raise_compiler_error("Failed to calc test buckets min and max") }}

macros/edr/data_monitoring/monitors/column_numeric_monitors.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
stddevPop(cast({{ column_name }} as {{ elementary.edr_type_float() }}))
3535
{%- endmacro %}
3636

37+
{% macro dremio__standard_deviation(column_name) -%}
38+
stddev_pop(cast({{ column_name }} as {{ elementary.edr_type_float() }}))
39+
{%- endmacro %}
40+
3741
{% macro variance(column_name) -%}
3842
{{ return(adapter.dispatch('variance', 'elementary')(column_name)) }}
3943
{%- endmacro %}

macros/edr/data_monitoring/monitors_query/dimension_monitoring_query.sql

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
bucket_end,
4141
dimension_value,
4242
metric_value,
43-
row_number () over (partition by dimension_value order by bucket_end desc) as row_number
4443
from {{ data_monitoring_metrics_relation }}
4544
where full_table_name = {{ full_table_name_str }}
4645
and metric_name = {{ elementary.edr_quote(metric_name) }}
@@ -148,7 +147,6 @@
148147
bucket_end,
149148
dimension_value,
150149
metric_value,
151-
row_number () over (partition by dimension_value order by bucket_end desc) as row_number
152150
from {{ data_monitoring_metrics_relation }}
153151
where full_table_name = {{ full_table_name_str }}
154152
and metric_name = {{ elementary.edr_quote(metric_name) }}

macros/edr/data_monitoring/monitors_query/table_monitoring_query.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@
269269
bucket_freshness_ranked as (
270270
select
271271
*,
272-
row_number () over (partition by edr_bucket_end order by freshness is null, freshness desc) as row_number
272+
row_number () over (partition by edr_bucket_end order by freshness is null, freshness desc) as row_num
273273
from bucket_all_freshness_metrics
274274
)
275275

@@ -281,7 +281,7 @@
281281
{{ elementary.edr_cast_as_string('update_timestamp') }} as source_value,
282282
freshness as metric_value
283283
from bucket_freshness_ranked
284-
where row_number = 1
284+
where row_num = 1
285285
{% endmacro %}
286286

287287
{% macro event_freshness_metric_query(metric, metric_properties) %}

macros/edr/system/system_utils/buckets_cte.sql

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,20 @@
144144
{{ return(complete_buckets_cte) }}
145145
{% endmacro %}
146146

147+
{% macro dremio__complete_buckets_cte(time_bucket, bucket_end_expr, min_bucket_start_expr, max_bucket_end_expr) %}
148+
{%- set complete_buckets_cte %}
149+
with integers as (
150+
select (row_number() over (order by t1.val, t2.val, t3.val, t4.val)) - 1 as num
151+
from (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) t1(val)
152+
cross join (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) t2(val)
153+
cross join (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) t3(val)
154+
cross join (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) t4(val)
155+
)
156+
select
157+
{{ elementary.edr_timeadd(time_bucket.period, 'num * ' ~ time_bucket.count, min_bucket_start_expr) }} as edr_bucket_start,
158+
{{ elementary.edr_timeadd(time_bucket.period, '(num + 1) * ' ~ time_bucket.count, min_bucket_start_expr) }} as edr_bucket_end
159+
from integers
160+
where {{ elementary.edr_timeadd(time_bucket.period, '(num + 1) * ' ~ time_bucket.count, min_bucket_start_expr) }} <= {{ max_bucket_end_expr }}
161+
{%- endset %}
162+
{{ return(complete_buckets_cte) }}
163+
{% endmacro %}

macros/edr/tests/on_run_end/union_columns_snapshot_query.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
),
1010
columns_snapshot_with_duplicates as (
1111
select *,
12-
row_number() over (partition by column_state_id order by detected_at desc) as row_number
12+
row_number() over (partition by column_state_id order by detected_at desc) as row_num
1313
from union_temp_columns_snapshot
1414
)
1515
select
@@ -21,7 +21,7 @@
2121
is_new,
2222
detected_at
2323
from columns_snapshot_with_duplicates
24-
where row_number = 1
24+
where row_num = 1
2525
{%- endset %}
2626
{{ return(union_temp_query) }}
2727
{%- endif %}

macros/edr/tests/on_run_end/union_metrics_query.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
),
1010
metrics_with_duplicates as (
1111
select *,
12-
row_number() over (partition by id order by updated_at desc) as row_number
12+
row_number() over (partition by id order by updated_at desc) as row_num
1313
from union_temps_metrics
1414
)
1515
select
@@ -28,7 +28,7 @@
2828
dimension_value,
2929
metric_properties
3030
from metrics_with_duplicates
31-
where row_number = 1
31+
where row_num = 1
3232
{%- endset %}
3333
{{ return(union_temp_query) }}
3434
{%- endif %}

macros/edr/tests/test_utils/clean_elementary_test_tables.sql

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@
4848
{% endmacro %}
4949

5050
{% macro trino__get_clean_elementary_test_tables_queries(test_table_relations) %}
51-
{% set queries = [] %}
52-
{% for test_relation in test_table_relations %}
53-
{% do queries.append("DROP TABLE IF EXISTS {}".format(test_relation)) %}
54-
{% endfor %}
55-
{% do return(queries) %}
51+
{% do return(elementary.get_transactionless_clean_elementary_test_tables_queries(test_table_relations)) %}
52+
{% endmacro %}
53+
54+
{% macro dremio__get_clean_elementary_test_tables_queries(test_table_relations) %}
55+
{% do return(elementary.get_transactionless_clean_elementary_test_tables_queries(test_table_relations)) %}
5656
{% endmacro %}
5757

5858
{% macro get_transaction_clean_elementary_test_tables_queries(test_table_relations) %}

0 commit comments

Comments
 (0)