dataops-testgen 2.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dataops_testgen-2.2.0.dist-info/LICENSE +203 -0
- dataops_testgen-2.2.0.dist-info/METADATA +287 -0
- dataops_testgen-2.2.0.dist-info/NOTICE +5 -0
- dataops_testgen-2.2.0.dist-info/RECORD +270 -0
- dataops_testgen-2.2.0.dist-info/WHEEL +5 -0
- dataops_testgen-2.2.0.dist-info/entry_points.txt +2 -0
- dataops_testgen-2.2.0.dist-info/top_level.txt +1 -0
- testgen/__init__.py +0 -0
- testgen/__main__.py +770 -0
- testgen/commands/__init__.py +0 -0
- testgen/commands/queries/__init__.py +0 -0
- testgen/commands/queries/execute_cat_tests_query.py +95 -0
- testgen/commands/queries/execute_tests_query.py +160 -0
- testgen/commands/queries/generate_tests_query.py +94 -0
- testgen/commands/queries/profiling_query.py +366 -0
- testgen/commands/queries/test_parameter_validation_query.py +88 -0
- testgen/commands/run_execute_cat_tests.py +162 -0
- testgen/commands/run_execute_tests.py +168 -0
- testgen/commands/run_generate_tests.py +107 -0
- testgen/commands/run_get_entities.py +122 -0
- testgen/commands/run_launch_db_config.py +84 -0
- testgen/commands/run_observability_exporter.py +330 -0
- testgen/commands/run_profiling_bridge.py +495 -0
- testgen/commands/run_quick_start.py +168 -0
- testgen/commands/run_setup_profiling_tools.py +96 -0
- testgen/commands/run_test_definition.py +146 -0
- testgen/commands/run_test_parameter_validation.py +135 -0
- testgen/commands/run_upgrade_db_config.py +156 -0
- testgen/common/__init__.py +8 -0
- testgen/common/clean_sql.py +53 -0
- testgen/common/credentials.py +25 -0
- testgen/common/database/__init__.py +0 -0
- testgen/common/database/database_service.py +629 -0
- testgen/common/database/flavor/__init__.py +0 -0
- testgen/common/database/flavor/flavor_service.py +75 -0
- testgen/common/database/flavor/mssql_flavor_service.py +34 -0
- testgen/common/database/flavor/postgresql_flavor_service.py +5 -0
- testgen/common/database/flavor/redshift_flavor_service.py +22 -0
- testgen/common/database/flavor/snowflake_flavor_service.py +69 -0
- testgen/common/database/flavor/trino_flavor_service.py +21 -0
- testgen/common/date_service.py +68 -0
- testgen/common/display_service.py +85 -0
- testgen/common/docker_service.py +76 -0
- testgen/common/encrypt.py +55 -0
- testgen/common/get_pipeline_parms.py +57 -0
- testgen/common/logs.py +79 -0
- testgen/common/process_service.py +62 -0
- testgen/common/read_file.py +69 -0
- testgen/settings.py +440 -0
- testgen/template/dbsetup/010_create_base_schema.sql +2 -0
- testgen/template/dbsetup/020_create_standard_functions_sprocs.sql +179 -0
- testgen/template/dbsetup/030_initialize_new_schema_structure.sql +735 -0
- testgen/template/dbsetup/040_populate_new_schema_project.sql +59 -0
- testgen/template/dbsetup/050_populate_new_schema_metadata.sql +1517 -0
- testgen/template/dbsetup/060_create_standard_views.sql +248 -0
- testgen/template/dbsetup/070_create_default_users.sql +17 -0
- testgen/template/dbsetup/075_grant_role_rights.sql +43 -0
- testgen/template/dbsetup/080_set_current_revision.sql +5 -0
- testgen/template/dbupgrade/0100_incremental_upgrade.sql +5 -0
- testgen/template/dbupgrade/0101_incremental_upgrade.sql +15 -0
- testgen/template/dbupgrade/0102_incremental_upgrade.sql +4 -0
- testgen/template/dbupgrade/0103_incremental_upgrade.sql +22 -0
- testgen/template/dbupgrade/0104_incremental_upgrade.sql +44 -0
- testgen/template/dbupgrade/0105_incremental_upgrade.sql +1 -0
- testgen/template/dbupgrade/0106_incremental_upgrade.sql +5 -0
- testgen/template/dbupgrade/0107_incremental_upgrade.sql +3 -0
- testgen/template/dbupgrade_helpers/get_tg_revision.sql +2 -0
- testgen/template/exec_cat_tests/ex_cat_build_agg_table_tests.sql +116 -0
- testgen/template/exec_cat_tests/ex_cat_get_distinct_tables.sql +11 -0
- testgen/template/exec_cat_tests/ex_cat_results_parse.sql +69 -0
- testgen/template/exec_cat_tests/ex_cat_retrieve_agg_test_parms.sql +6 -0
- testgen/template/exec_cat_tests/ex_cat_test_query.sql +8 -0
- testgen/template/execution/ex_finalize_test_run_results.sql +37 -0
- testgen/template/execution/ex_get_tests_non_cat.sql +47 -0
- testgen/template/execution/ex_update_test_record_in_testrun_table.sql +27 -0
- testgen/template/execution/ex_write_test_record_to_testrun_table.sql +6 -0
- testgen/template/flavors/generic/exec_query_tests/ex_aggregate_match_no_drops_generic.sql +48 -0
- testgen/template/flavors/generic/exec_query_tests/ex_aggregate_match_num_incr_generic.sql +34 -0
- testgen/template/flavors/generic/exec_query_tests/ex_aggregate_match_percent_above_generic.sql +49 -0
- testgen/template/flavors/generic/exec_query_tests/ex_aggregate_match_percent_within_generic.sql +49 -0
- testgen/template/flavors/generic/exec_query_tests/ex_aggregate_match_same_generic.sql +49 -0
- testgen/template/flavors/generic/exec_query_tests/ex_custom_query_generic.sql +39 -0
- testgen/template/flavors/generic/exec_query_tests/ex_data_match_2way_generic.sql +58 -0
- testgen/template/flavors/generic/exec_query_tests/ex_data_match_generic.sql +44 -0
- testgen/template/flavors/generic/exec_query_tests/ex_prior_match_generic.sql +37 -0
- testgen/template/flavors/generic/exec_query_tests/ex_relative_entropy_generic.sql +53 -0
- testgen/template/flavors/generic/exec_query_tests/ex_window_match_no_drops_generic.sql +46 -0
- testgen/template/flavors/generic/exec_query_tests/ex_window_match_same_generic.sql +59 -0
- testgen/template/flavors/generic/profiling/contingency_counts.sql +3 -0
- testgen/template/flavors/generic/validate_tests/ex_get_project_column_list_generic.sql +3 -0
- testgen/template/flavors/mssql/exec_query_tests/ex_relative_entropy_mssql.sql +53 -0
- testgen/template/flavors/mssql/profiling/project_ddf_query_mssql.sql +35 -0
- testgen/template/flavors/mssql/profiling/project_profiling_query_mssql.yaml +246 -0
- testgen/template/flavors/mssql/profiling/project_secondary_profiling_query_mssql.sql +36 -0
- testgen/template/flavors/mssql/setup_profiling_tools/00_drop_existing_functions_mssql.sql +8 -0
- testgen/template/flavors/mssql/setup_profiling_tools/01_create_functions_mssql.sql +12 -0
- testgen/template/flavors/mssql/setup_profiling_tools/02_create_functions_mssql.sql +54 -0
- testgen/template/flavors/mssql/setup_profiling_tools/create_qc_schema_mssql.sql +4 -0
- testgen/template/flavors/mssql/setup_profiling_tools/grant_execute_privileges_mssql.sql +1 -0
- testgen/template/flavors/postgresql/exec_query_tests/ex_window_match_no_drops_postgresql.sql +46 -0
- testgen/template/flavors/postgresql/exec_query_tests/ex_window_match_same_postgresql.sql +59 -0
- testgen/template/flavors/postgresql/profiling/project_ddf_query_postgresql.sql +42 -0
- testgen/template/flavors/postgresql/profiling/project_profiling_query_postgresql.yaml +225 -0
- testgen/template/flavors/postgresql/profiling/project_secondary_profiling_query_postgresql.sql +28 -0
- testgen/template/flavors/postgresql/setup_profiling_tools/create_functions_postgresql.sql +157 -0
- testgen/template/flavors/postgresql/setup_profiling_tools/create_qc_schema_postgresql.sql +1 -0
- testgen/template/flavors/postgresql/setup_profiling_tools/grant_execute_privileges_postgresql.sql +2 -0
- testgen/template/flavors/redshift/profiling/project_ddf_query_redshift.sql +38 -0
- testgen/template/flavors/redshift/profiling/project_profiling_query_redshift.yaml +221 -0
- testgen/template/flavors/redshift/profiling/project_secondary_profiling_query_redshift.sql +29 -0
- testgen/template/flavors/redshift/setup_profiling_tools/create_functions_redshift.sql +115 -0
- testgen/template/flavors/redshift/setup_profiling_tools/create_qc_schema_redshift.sql +1 -0
- testgen/template/flavors/redshift/setup_profiling_tools/grant_execute_privileges_redshift.sql +2 -0
- testgen/template/flavors/snowflake/profiling/project_ddf_query_snowflake.sql +38 -0
- testgen/template/flavors/snowflake/profiling/project_profiling_query_snowflake.yaml +220 -0
- testgen/template/flavors/snowflake/profiling/project_secondary_profiling_query_snowflake.sql +29 -0
- testgen/template/flavors/snowflake/setup_profiling_tools/create_functions_snowflake.sql +69 -0
- testgen/template/flavors/snowflake/setup_profiling_tools/create_qc_schema_snowflake.sql +1 -0
- testgen/template/flavors/snowflake/setup_profiling_tools/grant_execute_privileges_snowflake.sql +6 -0
- testgen/template/flavors/trino/profiling/project_profiling_query_trino.yaml +219 -0
- testgen/template/flavors/trino/setup_profiling_tools/create_functions_trino.sql +92 -0
- testgen/template/flavors/trino/setup_profiling_tools/create_qc_schema_trino.sql +1 -0
- testgen/template/gen_funny_cat_tests/gen_test_constant.sql +104 -0
- testgen/template/gen_funny_cat_tests/gen_test_distinct_value_ct.sql +98 -0
- testgen/template/gen_funny_cat_tests/gen_test_row_ct.sql +57 -0
- testgen/template/gen_funny_cat_tests/gen_test_row_ct_pct.sql +59 -0
- testgen/template/generation/gen_delete_old_tests.sql +5 -0
- testgen/template/generation/gen_insert_test_suite.sql +5 -0
- testgen/template/generation/gen_retrieve_or_insert_test_suite.sql +58 -0
- testgen/template/generation/gen_standard_test_type_list.sql +13 -0
- testgen/template/generation/gen_standard_tests.sql +48 -0
- testgen/template/get_entities/get_connection.sql +21 -0
- testgen/template/get_entities/get_connections_list.sql +9 -0
- testgen/template/get_entities/get_latest.sql +4 -0
- testgen/template/get_entities/get_profile.sql +12 -0
- testgen/template/get_entities/get_profile_info.sql +17 -0
- testgen/template/get_entities/get_profile_list.sql +17 -0
- testgen/template/get_entities/get_profile_screen.sql +275 -0
- testgen/template/get_entities/get_project_list.sql +6 -0
- testgen/template/get_entities/get_table_group_list.sql +10 -0
- testgen/template/get_entities/get_test_generation_list.sql +18 -0
- testgen/template/get_entities/get_test_info.sql +41 -0
- testgen/template/get_entities/get_test_results_for_run_cli.sql +16 -0
- testgen/template/get_entities/get_test_run_list.sql +24 -0
- testgen/template/get_entities/get_test_suite.sql +13 -0
- testgen/template/get_entities/get_test_suite_list.sql +18 -0
- testgen/template/get_entities/list_test_types.sql +4 -0
- testgen/template/observability/get_event_data.sql +23 -0
- testgen/template/observability/get_test_results.sql +41 -0
- testgen/template/observability/update_test_results_exported_to_observability.sql +12 -0
- testgen/template/parms/parms_profiling.sql +34 -0
- testgen/template/parms/parms_test_execution.sql +13 -0
- testgen/template/parms/parms_test_gen.sql +23 -0
- testgen/template/profiling/contingency_columns.sql +7 -0
- testgen/template/profiling/datatype_suggestions.sql +56 -0
- testgen/template/profiling/functional_datatype.sql +523 -0
- testgen/template/profiling/functional_tabletype_stage.sql +48 -0
- testgen/template/profiling/functional_tabletype_update.sql +8 -0
- testgen/template/profiling/pii_flag.sql +133 -0
- testgen/template/profiling/profile_anomalies_screen_column.sql +22 -0
- testgen/template/profiling/profile_anomalies_screen_multi_column.sql +58 -0
- testgen/template/profiling/profile_anomalies_screen_table.sql +22 -0
- testgen/template/profiling/profile_anomalies_screen_table_dates.sql +30 -0
- testgen/template/profiling/profile_anomalies_screen_variants.sql +40 -0
- testgen/template/profiling/profile_anomaly_types_get.sql +3 -0
- testgen/template/profiling/project_get_table_sample_count.sql +22 -0
- testgen/template/profiling/project_profile_run_record_insert.sql +8 -0
- testgen/template/profiling/project_profile_run_record_update.sql +5 -0
- testgen/template/profiling/project_profile_run_record_update_status.sql +5 -0
- testgen/template/profiling/project_update_profile_results_to_estimates.sql +32 -0
- testgen/template/profiling/refresh_anomalies.sql +33 -0
- testgen/template/profiling/refresh_data_chars_from_profiling.sql +156 -0
- testgen/template/profiling/secondary_profiling_columns.sql +12 -0
- testgen/template/profiling/secondary_profiling_delete.sql +4 -0
- testgen/template/profiling/secondary_profiling_update.sql +18 -0
- testgen/template/quick_start/populate_target_data.sql +1077 -0
- testgen/template/quick_start/recreate_target_data_schema.sql +167 -0
- testgen/template/quick_start/update_target_data.sql +100 -0
- testgen/template/updates/create_tmp_test_definition.sql +19 -0
- testgen/template/updates/get_test_def_parms.sql +38 -0
- testgen/template/updates/populate_stg_test_definitions.sql +184 -0
- testgen/template/validate_tests/ex_disable_tests_test_definitions.sql +5 -0
- testgen/template/validate_tests/ex_flag_tests_test_definitions.sql +64 -0
- testgen/template/validate_tests/ex_get_project_column_list_generic.sql +3 -0
- testgen/template/validate_tests/ex_get_test_column_list_tg.sql +65 -0
- testgen/template/validate_tests/ex_write_test_val_errors.sql +22 -0
- testgen/ui/__init__.py +0 -0
- testgen/ui/app.py +98 -0
- testgen/ui/assets/dk_logo.svg +46 -0
- testgen/ui/assets/question_mark.png +0 -0
- testgen/ui/assets/scripts.js +68 -0
- testgen/ui/assets/style.css +140 -0
- testgen/ui/bootstrap.py +109 -0
- testgen/ui/components/__init__.py +0 -0
- testgen/ui/components/frontend/css/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 +0 -0
- testgen/ui/components/frontend/css/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 +0 -0
- testgen/ui/components/frontend/css/KFOmCnqEu92Fr1Mu4mxK.woff2 +0 -0
- testgen/ui/components/frontend/css/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 +0 -0
- testgen/ui/components/frontend/css/material-symbols-rounded.css +24 -0
- testgen/ui/components/frontend/css/material-symbols-rounded.woff2 +0 -0
- testgen/ui/components/frontend/css/roboto-font-faces.css +35 -0
- testgen/ui/components/frontend/css/shared.css +36 -0
- testgen/ui/components/frontend/img/dk_logo.svg +46 -0
- testgen/ui/components/frontend/index.html +17 -0
- testgen/ui/components/frontend/js/components/breadcrumbs.js +86 -0
- testgen/ui/components/frontend/js/components/button.js +66 -0
- testgen/ui/components/frontend/js/components/location.js +62 -0
- testgen/ui/components/frontend/js/components/select.js +75 -0
- testgen/ui/components/frontend/js/components/sidebar.js +358 -0
- testgen/ui/components/frontend/js/main.js +99 -0
- testgen/ui/components/frontend/js/streamlit.js +19 -0
- testgen/ui/components/frontend/js/van.min.js +1 -0
- testgen/ui/components/utils/__init__.py +0 -0
- testgen/ui/components/utils/callbacks.py +51 -0
- testgen/ui/components/utils/component.py +13 -0
- testgen/ui/components/widgets/__init__.py +6 -0
- testgen/ui/components/widgets/breadcrumbs.py +32 -0
- testgen/ui/components/widgets/location.py +65 -0
- testgen/ui/components/widgets/modal.py +97 -0
- testgen/ui/components/widgets/sidebar.py +69 -0
- testgen/ui/navigation/__init__.py +0 -0
- testgen/ui/navigation/menu.py +42 -0
- testgen/ui/navigation/page.py +20 -0
- testgen/ui/navigation/router.py +63 -0
- testgen/ui/queries/__init__.py +0 -0
- testgen/ui/queries/authentication_queries.py +47 -0
- testgen/ui/queries/connection_queries.py +121 -0
- testgen/ui/queries/profiling_queries.py +148 -0
- testgen/ui/queries/project_queries.py +9 -0
- testgen/ui/queries/table_group_queries.py +186 -0
- testgen/ui/queries/test_definition_queries.py +270 -0
- testgen/ui/queries/test_run_queries.py +32 -0
- testgen/ui/queries/test_suite_queries.py +145 -0
- testgen/ui/scripts/__init__.py +0 -0
- testgen/ui/scripts/patch_streamlit.py +111 -0
- testgen/ui/services/__init__.py +0 -0
- testgen/ui/services/authentication_service.py +119 -0
- testgen/ui/services/connection_service.py +220 -0
- testgen/ui/services/database_service.py +282 -0
- testgen/ui/services/form_service.py +1008 -0
- testgen/ui/services/javascript_service.py +44 -0
- testgen/ui/services/query_service.py +316 -0
- testgen/ui/services/string_service.py +12 -0
- testgen/ui/services/table_group_service.py +130 -0
- testgen/ui/services/test_definition_service.py +117 -0
- testgen/ui/services/test_run_service.py +13 -0
- testgen/ui/services/test_suite_service.py +76 -0
- testgen/ui/services/toolbar_service.py +77 -0
- testgen/ui/session.py +46 -0
- testgen/ui/views/__init__.py +0 -0
- testgen/ui/views/app_log_modal.py +92 -0
- testgen/ui/views/connections.py +72 -0
- testgen/ui/views/connections_base.py +367 -0
- testgen/ui/views/login.py +40 -0
- testgen/ui/views/not_found.py +16 -0
- testgen/ui/views/overview.py +34 -0
- testgen/ui/views/profiling_anomalies.py +501 -0
- testgen/ui/views/profiling_details.py +335 -0
- testgen/ui/views/profiling_modal.py +40 -0
- testgen/ui/views/profiling_results.py +206 -0
- testgen/ui/views/profiling_summary.py +177 -0
- testgen/ui/views/project_settings.py +74 -0
- testgen/ui/views/table_groups.py +530 -0
- testgen/ui/views/test_definitions.py +1020 -0
- testgen/ui/views/test_results.py +908 -0
- testgen/ui/views/test_runs.py +195 -0
- testgen/ui/views/test_suites.py +545 -0
- testgen/utils/__init__.py +0 -0
- testgen/utils/plugins.py +17 -0
- testgen/utils/singleton.py +14 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*test-info: project-code, test-suite
|
|
2
|
+
Output: current detail of tests to perform for all columns within the test-suite
|
|
3
|
+
Alternative: project-code, connection-id
|
|
4
|
+
Optional: last_auto_run_date (==test-gen-run-id==), schema-name, table-name, column-name*/
|
|
5
|
+
|
|
6
|
+
SELECT s.project_code as project_key,
|
|
7
|
+
s.cat_test_id,
|
|
8
|
+
s.test_suite as test_suite_key,
|
|
9
|
+
s.test_type,
|
|
10
|
+
COALESCE(s.test_description, tt.test_description) as test_description,
|
|
11
|
+
CASE
|
|
12
|
+
WHEN COALESCE(s.lock_refresh, 'N') = 'N' THEN 'Allowed'
|
|
13
|
+
ELSE 'Locked'
|
|
14
|
+
END as test_refresh,
|
|
15
|
+
CASE
|
|
16
|
+
WHEN COALESCE(s.test_active, 'Y') = 'N' THEN 'Disabled'
|
|
17
|
+
ELSE 'Enabled'
|
|
18
|
+
END as disabled,
|
|
19
|
+
COALESCE(s.watch_level, 'Warn') as watch_level,
|
|
20
|
+
s.schema_name,
|
|
21
|
+
s.table_name,
|
|
22
|
+
s.column_name,
|
|
23
|
+
tt.measure_uom,
|
|
24
|
+
s.threshold_value,
|
|
25
|
+
s.baseline_ct,
|
|
26
|
+
s.baseline_unique_ct,
|
|
27
|
+
s.baseline_value,
|
|
28
|
+
s.baseline_value_ct,
|
|
29
|
+
s.baseline_sum,
|
|
30
|
+
s.baseline_avg,
|
|
31
|
+
s.baseline_sd,
|
|
32
|
+
s.subset_condition,
|
|
33
|
+
s.check_result,
|
|
34
|
+
s.last_auto_gen_date,
|
|
35
|
+
s.profiling_as_of_date
|
|
36
|
+
FROM test_definitions s
|
|
37
|
+
INNER JOIN test_types tt ON s.test_type = tt.test_type
|
|
38
|
+
WHERE s.project_code = '{PROJECT_CODE}'
|
|
39
|
+
AND s.test_suite = '{TEST_SUITE}'
|
|
40
|
+
ORDER BY s.schema_name, s.table_name,
|
|
41
|
+
s.column_name, s.test_type;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
SELECT test_suite as test_suite_key,
|
|
2
|
+
table_name,
|
|
3
|
+
column_names as column_name,
|
|
4
|
+
r.test_type,
|
|
5
|
+
CASE
|
|
6
|
+
WHEN result_code = 1 THEN 'Pass'
|
|
7
|
+
WHEN result_code = 0 THEN 'Fail'
|
|
8
|
+
END as result,
|
|
9
|
+
COALESCE(r.result_message, '') as result_message,
|
|
10
|
+
result_measure,
|
|
11
|
+
tt.measure_uom
|
|
12
|
+
FROM test_results r
|
|
13
|
+
INNER JOIN test_types tt ON r.test_type = tt.test_type
|
|
14
|
+
WHERE test_run_id = '{TEST_RUN_ID}'::UUID
|
|
15
|
+
{ERRORS_ONLY}
|
|
16
|
+
ORDER BY r.schema_name, r.table_name, r.column_names, r.test_type;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*test-run-list: project-code, test-suite
|
|
2
|
+
Output: list of test runs performed for a test_suite
|
|
3
|
+
Alternative: project-code, table-name
|
|
4
|
+
Optional: table-name, column-name, from-date, thru-date*/
|
|
5
|
+
|
|
6
|
+
Select tr.test_suite as test_suite_key,
|
|
7
|
+
tr.test_starttime as test_time,
|
|
8
|
+
tr.status,
|
|
9
|
+
tr.id::VARCHAR(50) as test_run_id,
|
|
10
|
+
COUNT(DISTINCT lower(r.schema_name || '.' || table_name)) as table_ct,
|
|
11
|
+
COUNT(*) as result_ct,
|
|
12
|
+
SUM(CASE WHEN r.result_code = 0 THEN 1 END) as fail_ct,
|
|
13
|
+
SUM(CASE WHEN r.observability_status = 'Sent' THEN 1 END) as sent_to_obs,
|
|
14
|
+
process_id
|
|
15
|
+
from test_runs tr
|
|
16
|
+
INNER JOIN test_results r
|
|
17
|
+
ON (tr.id = r.test_run_id)
|
|
18
|
+
where tr.project_code = '{PROJECT_CODE}'
|
|
19
|
+
and tr.test_suite = '{TEST_SUITE}'
|
|
20
|
+
GROUP BY tr.project_code,
|
|
21
|
+
tr.test_suite,
|
|
22
|
+
tr.test_starttime,
|
|
23
|
+
tr.status,
|
|
24
|
+
tr.id;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
SELECT
|
|
2
|
+
id as test_suite_id,
|
|
3
|
+
project_code as project_key,
|
|
4
|
+
test_suite as test_suite_key,
|
|
5
|
+
connection_id,
|
|
6
|
+
test_suite_description,
|
|
7
|
+
test_action as default_test_action,
|
|
8
|
+
test_suite_schema,
|
|
9
|
+
component_key,
|
|
10
|
+
component_type
|
|
11
|
+
FROM test_suites
|
|
12
|
+
WHERE project_code = '{PROJECT_CODE}'
|
|
13
|
+
AND test_suite = '{TEST_SUITE}';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
SELECT
|
|
2
|
+
ts.id as test_suite_id,
|
|
3
|
+
ts.project_code as project_key,
|
|
4
|
+
ts.test_suite as test_suite_key,
|
|
5
|
+
ts.connection_id,
|
|
6
|
+
ts.test_suite_description,
|
|
7
|
+
MAX(tr.test_starttime) as last_run
|
|
8
|
+
FROM test_suites ts
|
|
9
|
+
LEFT JOIN test_runs tr
|
|
10
|
+
ON ts.project_code = tr.project_code
|
|
11
|
+
AND ts.test_suite = tr.test_suite
|
|
12
|
+
WHERE ts.project_code = '{PROJECT_CODE}'
|
|
13
|
+
GROUP BY ts.id,
|
|
14
|
+
ts.project_code,
|
|
15
|
+
ts.test_suite,
|
|
16
|
+
ts.connection_id,
|
|
17
|
+
ts.test_suite_description
|
|
18
|
+
ORDER BY ts.test_suite;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Select
|
|
2
|
+
c.sql_flavor as sql_flavor,
|
|
3
|
+
COALESCE(ts.component_key, tg.id::VARCHAR) as dataset_key,
|
|
4
|
+
COALESCE(ts.component_name, tg.table_groups_name) as dataset_name,
|
|
5
|
+
tg.table_group_schema as schema,
|
|
6
|
+
c.connection_name as connection_name,
|
|
7
|
+
c.project_db as project_db,
|
|
8
|
+
tg.profile_sample_min_count as profile_sample_minimum_count,
|
|
9
|
+
ts.table_groups_id as table_groups_id,
|
|
10
|
+
tg.profile_use_sampling as profile_use_sampling,
|
|
11
|
+
tg.profile_sample_percent as profile_sample_percent,
|
|
12
|
+
pr.project_code as project_code,
|
|
13
|
+
tg.profiling_table_set as profiling_table_set,
|
|
14
|
+
tg.profiling_include_mask as profiling_include_mask,
|
|
15
|
+
tg.profiling_exclude_mask as profiling_exclude_mask,
|
|
16
|
+
pr.observability_api_key as observability_api_key,
|
|
17
|
+
pr.observability_api_url as observability_api_url
|
|
18
|
+
from test_suites ts
|
|
19
|
+
join connections c on c.connection_id = ts.connection_id
|
|
20
|
+
join projects pr on pr.project_code = ts.project_code
|
|
21
|
+
join table_groups tg on tg.id = ts.table_groups_id
|
|
22
|
+
where pr.project_code = '{PROJECT_CODE}'
|
|
23
|
+
and ts.test_suite = '{TEST_SUITE}'
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
SELECT
|
|
2
|
+
project_name,
|
|
3
|
+
component_tool,
|
|
4
|
+
"schema",
|
|
5
|
+
connection_name,
|
|
6
|
+
project_db,
|
|
7
|
+
sample_min_count,
|
|
8
|
+
group_id,
|
|
9
|
+
uses_sampling,
|
|
10
|
+
project_code,
|
|
11
|
+
sample_percentage,
|
|
12
|
+
profiling_table_set,
|
|
13
|
+
profiling_include_mask,
|
|
14
|
+
profiling_exclude_mask,
|
|
15
|
+
component_type,
|
|
16
|
+
component_key,
|
|
17
|
+
component_name,
|
|
18
|
+
column_names,
|
|
19
|
+
table_name,
|
|
20
|
+
test_suite,
|
|
21
|
+
input_parameters,
|
|
22
|
+
test_definition_id,
|
|
23
|
+
"type",
|
|
24
|
+
min_threshold,
|
|
25
|
+
max_threshold,
|
|
26
|
+
"name",
|
|
27
|
+
description,
|
|
28
|
+
start_time,
|
|
29
|
+
end_time,
|
|
30
|
+
dq_dimension,
|
|
31
|
+
result_status,
|
|
32
|
+
result_message,
|
|
33
|
+
result_id,
|
|
34
|
+
metric_value,
|
|
35
|
+
measure_uom,
|
|
36
|
+
measure_uom_description
|
|
37
|
+
FROM v_queued_observability_results
|
|
38
|
+
where project_code = '{PROJECT_CODE}'
|
|
39
|
+
and test_suite = '{TEST_SUITE}'
|
|
40
|
+
order by start_time asc
|
|
41
|
+
limit {MAX_QTY_EVENTS}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*test-results: customer-code, test-group, result-ids
|
|
2
|
+
Output: updates exported results */
|
|
3
|
+
|
|
4
|
+
with selects
|
|
5
|
+
as ( SELECT UNNEST(ARRAY[{RESULT_IDS}]) AS selected_id )
|
|
6
|
+
update test_results set observability_status = 'Sent'
|
|
7
|
+
from test_results r
|
|
8
|
+
INNER JOIN selects s ON (r.result_id = s.selected_id)
|
|
9
|
+
where r.id = test_results.id
|
|
10
|
+
and r.observability_status = 'Queued'
|
|
11
|
+
and r.project_code = '{PROJECT_CODE}'
|
|
12
|
+
and r.test_suite = '{TEST_SUITE}'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
SELECT cc.project_code,
|
|
2
|
+
cc.connection_id::VARCHAR(50) as connection_id,
|
|
3
|
+
cc.sql_flavor,
|
|
4
|
+
cc.url,
|
|
5
|
+
cc.connect_by_url,
|
|
6
|
+
cc.connect_by_key,
|
|
7
|
+
cc.private_key,
|
|
8
|
+
cc.private_key_passphrase,
|
|
9
|
+
cc.project_host,
|
|
10
|
+
cc.project_port,
|
|
11
|
+
cc.project_user,
|
|
12
|
+
cc.project_db,
|
|
13
|
+
tg.id::VARCHAR(50) as table_groups_id,
|
|
14
|
+
tg.table_group_schema,
|
|
15
|
+
CASE
|
|
16
|
+
WHEN tg.profiling_table_set ILIKE '''%''' THEN tg.profiling_table_set
|
|
17
|
+
ELSE fn_format_csv_quotes(tg.profiling_table_set)
|
|
18
|
+
END as profiling_table_set,
|
|
19
|
+
tg.profiling_include_mask,
|
|
20
|
+
tg.profiling_exclude_mask,
|
|
21
|
+
tg.profile_id_column_mask,
|
|
22
|
+
tg.profile_sk_column_mask,
|
|
23
|
+
tg.profile_use_sampling,
|
|
24
|
+
tg.profile_sample_percent,
|
|
25
|
+
tg.profile_sample_min_count,
|
|
26
|
+
cc.project_qc_schema,
|
|
27
|
+
tg.profile_do_pair_rules,
|
|
28
|
+
tg.profile_pair_rule_pct,
|
|
29
|
+
cc.max_threads
|
|
30
|
+
FROM table_groups tg
|
|
31
|
+
INNER JOIN connections cc
|
|
32
|
+
on cc.project_code = tg.project_code
|
|
33
|
+
and cc.connection_id = tg.connection_id
|
|
34
|
+
WHERE tg.id = '{TABLE_GROUPS_ID}'::UUID;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
SELECT g.project_code, g.connection_id::varchar(50),
|
|
2
|
+
cc.sql_flavor,
|
|
3
|
+
cc.project_host, cc.project_port,
|
|
4
|
+
cc.project_user, cc.project_db, tg.table_group_schema, cc.project_qc_schema,
|
|
5
|
+
cc.connect_by_key,
|
|
6
|
+
cc.private_key,
|
|
7
|
+
cc.private_key_passphrase,
|
|
8
|
+
cc.max_threads, cc.max_query_chars, cc.url, cc.connect_by_url
|
|
9
|
+
FROM test_suites g
|
|
10
|
+
INNER JOIN connections cc ON (g.connection_id = cc.connection_id)
|
|
11
|
+
INNER join table_groups tg ON (g.table_groups_id = tg.id)
|
|
12
|
+
WHERE g.project_code = '{PROJECT_CODE}'
|
|
13
|
+
AND g.test_suite = '{TEST_SUITE}';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
SELECT tg.project_code, tg.connection_id,
|
|
2
|
+
cc.sql_flavor,
|
|
3
|
+
cc.project_host,
|
|
4
|
+
cc.project_port,
|
|
5
|
+
cc.project_user,
|
|
6
|
+
cc.connect_by_key,
|
|
7
|
+
cc.private_key,
|
|
8
|
+
cc.private_key_passphrase,
|
|
9
|
+
cc.project_db,
|
|
10
|
+
tg.table_group_schema,
|
|
11
|
+
s.export_to_observability,
|
|
12
|
+
s.test_suite,
|
|
13
|
+
s.id::VARCHAR as test_suite_id,
|
|
14
|
+
cc.url,
|
|
15
|
+
cc.connect_by_url,
|
|
16
|
+
CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - CAST(tg.profiling_delay_days AS integer) * INTERVAL '1 day' as profiling_as_of_date
|
|
17
|
+
FROM table_groups tg
|
|
18
|
+
INNER JOIN connections cc
|
|
19
|
+
ON (tg.connection_id = cc.connection_id)
|
|
20
|
+
LEFT JOIN test_suites s
|
|
21
|
+
ON (tg.connection_id = s.connection_id
|
|
22
|
+
AND '{TEST_SUITE}' = s.test_suite)
|
|
23
|
+
WHERE tg.id = '{TABLE_GROUPS_ID}';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- All codes / categories with few distinct values
|
|
2
|
+
SELECT schema_name, table_name, STRING_AGG(column_name, ',' ORDER BY column_name) as contingency_columns
|
|
3
|
+
FROM profile_results p
|
|
4
|
+
WHERE profile_run_id = '{PROFILE_RUN_ID}'::UUID
|
|
5
|
+
AND functional_data_type IN ('Code', 'Category')
|
|
6
|
+
AND distinct_value_ct BETWEEN 2 AND {CONTINGENCY_MAX_VALUES}
|
|
7
|
+
GROUP BY schema_name, table_name;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
UPDATE profile_results
|
|
2
|
+
SET datatype_suggestion =
|
|
3
|
+
CASE
|
|
4
|
+
WHEN record_ct > 500 AND column_name not ILIKE '%id' THEN
|
|
5
|
+
CASE
|
|
6
|
+
WHEN general_type = 'A' AND column_name ILIKE '%zip%'
|
|
7
|
+
AND max_length <= 10 THEN 'VARCHAR(10)'
|
|
8
|
+
WHEN general_type = 'A'
|
|
9
|
+
AND numeric_ct > 0
|
|
10
|
+
AND value_ct = numeric_ct + zero_length_ct
|
|
11
|
+
AND POSITION('.' in top_freq_values) > 0 THEN 'DECIMAL(18,4)'
|
|
12
|
+
WHEN general_type = 'A'
|
|
13
|
+
AND numeric_ct > 0
|
|
14
|
+
AND value_ct = numeric_ct + zero_length_ct
|
|
15
|
+
AND max_length <= 6
|
|
16
|
+
AND POSITION('.' in top_freq_values) = 0 THEN 'INTEGER'
|
|
17
|
+
WHEN general_type = 'A'
|
|
18
|
+
AND numeric_ct > 0
|
|
19
|
+
AND value_ct = numeric_ct + zero_length_ct
|
|
20
|
+
AND max_length > 6
|
|
21
|
+
AND POSITION('.' in top_freq_values) = 0 THEN 'BIGINT'
|
|
22
|
+
WHEN general_type = 'A'
|
|
23
|
+
AND date_ct > 0
|
|
24
|
+
AND value_ct = date_ct + zero_length_ct THEN 'DATE'
|
|
25
|
+
WHEN general_type = 'A'
|
|
26
|
+
AND max_length <= 5 THEN 'VARCHAR(10)'
|
|
27
|
+
WHEN general_type = 'A'
|
|
28
|
+
AND max_length IS NOT NULL
|
|
29
|
+
THEN 'VARCHAR('
|
|
30
|
+
|| ( (1 + TRUNC( (max_length + 10) /20.0, 0)) * 20)::VARCHAR(10)
|
|
31
|
+
|| ')'
|
|
32
|
+
WHEN general_type = 'N'
|
|
33
|
+
AND RTRIM(SPLIT_PART(column_type, ',', 2),')') > '0'
|
|
34
|
+
AND fractional_sum = 0
|
|
35
|
+
AND min_value >= -100
|
|
36
|
+
AND max_value <= 100
|
|
37
|
+
THEN 'SMALLINT'
|
|
38
|
+
WHEN general_type = 'N'
|
|
39
|
+
AND RTRIM(SPLIT_PART(column_type, ',', 2),')') > '0'
|
|
40
|
+
AND fractional_sum = 0
|
|
41
|
+
AND min_value >= -100000000
|
|
42
|
+
AND max_value <= 100000000
|
|
43
|
+
THEN 'INTEGER'
|
|
44
|
+
WHEN general_type = 'N'
|
|
45
|
+
AND RTRIM(SPLIT_PART(column_type, ',', 2),')') > '0'
|
|
46
|
+
AND fractional_sum = 0
|
|
47
|
+
AND (min_value < -100000000
|
|
48
|
+
OR max_value > 100000000)
|
|
49
|
+
THEN 'BIGINT'
|
|
50
|
+
ELSE LOWER(column_type)
|
|
51
|
+
END
|
|
52
|
+
ELSE LOWER(column_type)
|
|
53
|
+
END
|
|
54
|
+
WHERE project_code = '{PROJECT_CODE}'
|
|
55
|
+
AND schema_name = '{DATA_SCHEMA}'
|
|
56
|
+
AND run_date = '{RUN_DATE}';
|