dbt-data-reliability icon indicating copy to clipboard operation
dbt-data-reliability copied to clipboard

ELE-489 Support dbt-trino connector

Open Tomme opened this issue 1 year ago • 0 comments

Relates to: https://github.com/elementary-data/elementary/issues/739

Support dbt-trino, specifically when using the Iceberg connector within Trino. While other Trino connectors e.g. Hive, may function these have not been tested and may not fully support all dbt functionality.

Inspiration

I have lifted a large amount of code from the work in https://github.com/elementary-data/dbt-data-reliability/pull/597, since Athena 3 is extremely similar to Trino. Thank you @artem-garmash!

Testing Environment

  • Trino 435
    • Iceberg connector with AWS Glue
  • dbt-core 1.7.4
  • dbt-trino 1.7.1

Integration Tests

Trino

test_all_columns_anomalies.py::test_anomalyless_all_columns_anomalies PASSED
test_all_columns_anomalies.py::test_anomalous_all_columns_anomalies PASSED
test_all_columns_anomalies.py::test_all_columns_anomalies_with_where_expression PASSED
test_anomalies_backfill_logic.py::test_full_backfill_for_non_incremental_model PASSED
test_anomalies_backfill_logic.py::test_partial_backfill_for_incremental_models PASSED
test_anomalies_backfill_logic.py::test_longer_backfill_in_case_of_a_gap PASSED
test_anomalies_backfill_logic.py::test_full_backfill_if_metric_not_updated_for_a_long_time PASSED
test_anomalies_backfill_logic.py::test_backfill_when_metric_doesnt_exist_back_enough PASSED
test_anomalies_backfill_logic.py::test_backfill_with_middle_buckets_gap PASSED
test_anomalies_backfill_logic.py::test_bucket_size_not_aligned_with_days PASSED
test_anomalies_ranges.py::test_anomaly_ranges_are_valid PASSED
test_anomalies_ranges.py::test_anomaly_ranges_are_valid_with_seasonality PASSED
test_anomaly_exclude_metrics.py::test_exclude_specific_dates[daily_buckets] PASSED
test_anomaly_exclude_metrics.py::test_exclude_specific_dates[six_hour_buckets] PASSED
test_anomaly_exclude_metrics.py::test_exclude_specific_timestamps PASSED
test_anomaly_exclude_metrics.py::test_exclude_date_range PASSED
test_anomaly_exclude_metrics.py::test_exclude_by_metric_value PASSED
test_artifacts.py::test_artifacts_caching PASSED
test_artifacts.py::test_artifacts_collection_in_multiple_row_batches PASSED
test_artifacts.py::test_dbt_invocations PASSED
test_column_anomalies.py::test_anomalyless_column_anomalies PASSED
test_column_anomalies.py::test_anomalous_column_anomalies PASSED
test_column_anomalies.py::test_column_anomalies_with_where_parameter PASSED
test_column_anomalies.py::test_column_anomalies_with_timestamp_as_sql_expression PASSED
test_column_anomalies.py::test_volume_anomaly_static_data_drop[true_positive] PASSED
test_column_anomalies.py::test_volume_anomaly_static_data_drop[false_positive] PASSED
test_column_anomalies.py::test_volume_anomaly_static_data_drop[true_negative] PASSED
test_dimension_anomalies.py::test_anomalyless_dimension_anomalies PASSED
test_dimension_anomalies.py::test_dimension_anomalies_with_timestamp_as_sql_expression PASSED
test_dimension_anomalies.py::test_anomalous_dimension_anomalies PASSED
test_dimension_anomalies.py::test_dimensions_anomalies_with_where_parameter PASSED
test_disable_elementary.py::test_running_dbt_tests_without_elementary PASSED
test_event_freshness_anomalies.py::test_anomalyless_event_freshness PASSED
test_event_freshness_anomalies.py::test_stop_event_freshness PASSED
test_event_freshness_anomalies.py::test_slower_rate_event_freshness PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_existing_exposure_yml_invalid PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_existing_exposure_yml_valid PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_no_exposures PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_correct_columns_and_types PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_correct_columns_and_invalid_type PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_correct_columns_and_missing_type PASSED
test_exposure_schema_validity.py::test_exposure_schema_validity_missing_columns PASSED
test_failed_row_count.py::test_count_failed_row_count PASSED
test_failed_row_count.py::test_sum_failed_row_count PASSED
test_failed_row_count.py::test_custom_failed_row_count PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_anomalyless_table[hourly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_anomalyless_table[daily] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_anomalyless_table[weekly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_anomalyless_table[monthly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop[hourly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop[daily] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop[weekly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop[monthly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop_with_delay[hourly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop_with_delay[daily] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop_with_delay[weekly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_stop_with_delay[monthly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_slower_rate[hourly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_slower_rate[daily] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_slower_rate[weekly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_slower_rate[monthly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_faster_rate[hourly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_faster_rate[daily] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_faster_rate[weekly] PASSED
test_freshness_anomalies.py::TestFreshnessAnomalies::test_faster_rate[monthly] PASSED
test_freshness_anomalies.py::test_first_metric_null PASSED
test_information_schema_columns.py::test_information_schema_columns SKIPPED (Test unsupported for target: trino)
test_information_schema_columns.py::test_information_schema_non_existing_schema SKIPPED (Test unsupported for target: trino)
test_information_schema_columns.py::test_information_schema_non_existing_database SKIPPED (Test unsupported for target: trino)
test_jsonschema.py::TestJsonschema::test_valid SKIPPED (Test unsupported for target: trino)
test_jsonschema.py::TestJsonschema::test_invalid SKIPPED (Test unsupported for target: trino)
test_jsonschema.py::TestJsonschema::test_invalid_target PASSED
test_long_strings.py::test_query_size_exceed PASSED
test_long_strings.py::test_query_size_safe PASSED
test_metrics.py::test_metrics_sql_models PASSED
test_metrics.py::test_metrics_python_models SKIPPED (Test unsupported for target: trino)
test_python.py::TestPython::test_int[pass] SKIPPED (Test unsupported for target: trino)
test_python.py::TestPython::test_int[fail] SKIPPED (Test unsupported for target: trino)
test_python.py::TestPython::test_full_df SKIPPED (Test unsupported for target: trino)
test_python.py::TestPython::test_empty_df SKIPPED (Test unsupported for target: trino)
test_python.py::TestPython::test_invalid_target PASSED
test_schema_changes.py::test_schema_changes SKIPPED (Test unsupported for target: trino)
test_schema_changes.py::test_schema_changes_from_baseline SKIPPED (Test unsupported for target: trino)
test_string_monitors.py::test_missing_count PASSED
test_volume_anomalies.py::test_anomalyless_table_volume_anomalies PASSED
test_volume_anomalies.py::test_table_volume_anomalies_with_timestamp_as_sql_expression PASSED
test_volume_anomalies.py::test_full_drop_table_volume_anomalies PASSED
test_volume_anomalies.py::test_volume_anomalies_with_where_parameter[source] PASSED
test_volume_anomalies.py::test_volume_anomalies_with_where_parameter[model] PASSED
test_volume_anomalies.py::test_volume_anomalies_with_time_buckets PASSED
test_volume_anomalies.py::test_volume_anomalies_with_direction_spike PASSED
test_volume_anomalies.py::test_volume_anomalies_with_direction_drop PASSED
test_volume_anomalies.py::test_volume_anomalies_with_seasonality PASSED
test_volume_anomalies.py::test_volume_anomalies_with_sensitivity PASSED
test_volume_anomalies.py::test_volume_anomalies_no_timestamp PASSED
test_volume_anomalies.py::test_wildcard_name_table_volume_anomalies SKIPPED (Test unsupported for target: trino)
test_volume_anomalies.py::test_volume_anomaly_static_data_drop[true_positive] PASSED
test_volume_anomalies.py::test_volume_anomaly_static_data_drop[false_positive] PASSED
test_volume_anomalies.py::test_volume_anomaly_static_data_drop[true_negative] PASSED
test_volume_anomalies.py::test_volume_anomaly_static_data_spike[true_positive] PASSED
test_volume_anomalies.py::test_volume_anomaly_static_data_spike[false_positive] PASSED
test_volume_anomalies.py::test_volume_anomaly_static_data_spike[true_negative] PASSED
test_volume_anomalies.py::test_not_fail_on_zero PASSED
test_volume_anomalies.py::test_fail_on_zero PASSED
test_volume_anomalies.py::test_anomalyless_table_volume_anomalies_periods_params[day] PASSED
test_volume_anomalies.py::test_anomalyless_table_volume_anomalies_periods_params[hour] PASSED
test_volume_anomalies.py::test_ignore_small_changes_both PASSED 

PostgreSQL

All passed

Tomme avatar Jan 16 '24 17:01 Tomme