Skip to content

feat: add suppress_skipped option and skipped flag for skipped checks#1063

Merged
mwojtyczka merged 17 commits into
databrickslabs:mainfrom
Roshan1299:feat/953-skip-quietly-skipped-flag
Mar 23, 2026
Merged

feat: add suppress_skipped option and skipped flag for skipped checks#1063
mwojtyczka merged 17 commits into
databrickslabs:mainfrom
Roshan1299:feat/953-skip-quietly-skipped-flag

Conversation

@Roshan1299

@Roshan1299 Roshan1299 commented Mar 10, 2026

Copy link
Copy Markdown
Contributor

Changes

Implements Prio 1 and Prio 3 from #953:

  • Added suppress_skipped: bool = False to ExtraParams. When True, checks skipped due to missing columns or invalid filters produce no entry in _errors/_warnings and do not cause rows to appear in the invalid DataFrame.
  • Added skipped boolean field to dq_result_item_schema. Skipped checks now have skipped=True in their result entry, enabling structured identification without string-parsing the message.

Linked issues

Resolves #953

Tests

  • manually tested
  • added unit tests
  • added integration tests
  • added end-to-end tests
  • added performance tests

@Roshan1299 Roshan1299 requested a review from a team as a code owner March 10, 2026 09:01
@Roshan1299 Roshan1299 requested review from pratikk-databricks and removed request for a team March 10, 2026 09:01
@github-actions

Copy link
Copy Markdown
Contributor

All commits in PR should be signed ('git commit -S ...'). See https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits

@Roshan1299 Roshan1299 force-pushed the feat/953-skip-quietly-skipped-flag branch from 12491be to a0cf8bd Compare March 10, 2026 09:12
@Roshan1299

Copy link
Copy Markdown
Contributor Author

Hi @mwojtyczka @pratikk-databricks , just wanted to follow up on this PR when you get a chance. Happy to make any changes needed!

@mwojtyczka mwojtyczka added under-review This PR is currently being reviewed by one of DQX maintainers. labels Mar 18, 2026
@github-actions

github-actions Bot commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

❌ 556/680 passed, 124 failed, 41 skipped, 4h1m0s total

❌ test_define_user_metadata_and_extract_dq_results: pyspark.errors.exceptions.base.PySparkValueError: [AXIS_LENGTH_MISMATCH] Length mismatch: Expected axis has 11 element, new values have 10 elements. (10.237s)
... (skipped 1106 bytes)
/python
❌ test_validate_checks_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.584s)
... (skipped 10071 bytes)
nd jobs
❌ test_validate_checks_with_custom_folder_invalid_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.423s)
... (skipped 10071 bytes)
nd jobs
❌ test_workflows_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.889s)
... (skipped 9311 bytes)
nd jobs
❌ test_logs_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.307s)
... (skipped 9311 bytes)
nd jobs
❌ test_open_remote_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.175s)
... (skipped 8709 bytes)
nd jobs
❌ test_validate_checks_with_custom_folder_missing_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.866s)
... (skipped 9701 bytes)
nd jobs
❌ test_open_dashboards_directory: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.079s)
... (skipped 8709 bytes)
nd jobs
❌ test_load_workspace_config_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.071s)
... (skipped 8940 bytes)
nd jobs
❌ test_load_workspace_config_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.966s)
... (skipped 8709 bytes)
nd jobs
❌ test_installations_output: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.635s)
... (skipped 9513 bytes)
nd jobs
❌ test_load_workspace_config_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.121s)
... (skipped 9331 bytes)
nd jobs
❌ test_installations_output_not_found: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.838s)
... (skipped 5635 bytes)
nd jobs
❌ test_load_run_config_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.71s)
... (skipped 8709 bytes)
nd jobs
❌ test_load_run_config_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.842s)
... (skipped 8709 bytes)
nd jobs
❌ test_installations_output_serde_error: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.206s)
... (skipped 5790 bytes)
nd jobs
❌ test_load_run_config_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.156s)
... (skipped 9331 bytes)
nd jobs
❌ test_validate_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.493s)
... (skipped 9369 bytes)
nd jobs
❌ test_save_workspace_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.973s)
... (skipped 8940 bytes)
nd jobs
❌ test_update_workspace_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.01s)
... (skipped 8940 bytes)
nd jobs
❌ test_validate_checks_when_given_invalid_checks: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.053s)
... (skipped 9369 bytes)
nd jobs
❌ test_save_workspace_config_in_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.147s)
... (skipped 8635 bytes)
nd jobs
❌ test_validate_checks_disable_validate_custom_check_functions: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.018s)
... (skipped 9369 bytes)
nd jobs
❌ test_validate_checks_invalid_run_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.22s)
... (skipped 8709 bytes)
nd jobs
❌ test_save_run_config_new_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.237s)
... (skipped 8709 bytes)
nd jobs
❌ test_update_run_config_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.754s)
... (skipped 8709 bytes)
nd jobs
❌ test_save_run_config_in_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.934s)
... (skipped 8635 bytes)
nd jobs
❌ test_save_run_config_in_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.845s)
... (skipped 9331 bytes)
nd jobs
❌ test_save_workspace_config_with_extra_fields_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.922s)
... (skipped 8940 bytes)
nd jobs
❌ test_validate_checks_when_checks_file_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.608s)
... (skipped 9039 bytes)
nd jobs
❌ test_profiler_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.389s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_no_input_configured: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.678s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.619s)
... (skipped 9300 bytes)
stopped
❌ test_quality_checker_no_input_configured: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.305s)
... (skipped 9379 bytes)
stopped
❌ test_e2e_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.867s)
... (skipped 9300 bytes)
stopped
❌ test_profiler_when_run_config_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.905s)
... (skipped 8689 bytes)
nd jobs
❌ test_quality_checker_when_run_config_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.792s)
... (skipped 8689 bytes)
nd jobs
❌ test_workflows: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.808s)
... (skipped 8689 bytes)
nd jobs
❌ test_workflows_not_installed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.102s)
... (skipped 4949 bytes)
nd jobs
❌ test_logs: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.854s)
... (skipped 8689 bytes)
nd jobs
❌ test_open_remote_config_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.1s)
... (skipped 9331 bytes)
nd jobs
❌ test_open_dashboards_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.176s)
... (skipped 9331 bytes)
nd jobs
❌ test_e2e_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.861s)
... (skipped 9379 bytes)
stopped
❌ test_fresh_global_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.072s)
... (skipped 8635 bytes)
nd jobs
❌ test_fresh_user_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.356s)
... (skipped 8709 bytes)
nd jobs
❌ test_fresh_custom_folder_config_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.225s)
... (skipped 9331 bytes)
nd jobs
❌ test_complete_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.905s)
... (skipped 8689 bytes)
nd jobs
❌ test_dashboard_repeated_workspace_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.825s)
... (skipped 9311 bytes)
nd jobs
❌ test_complete_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.069s)
... (skipped 9311 bytes)
nd jobs
❌ test_installation_when_dashboard_is_trashed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.903s)
... (skipped 8689 bytes)
nd jobs
❌ test_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.896s)
... (skipped 8689 bytes)
nd jobs
❌ test_installation_with_custom_folder_when_dashboard_is_trashed: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.928s)
... (skipped 9311 bytes)
nd jobs
❌ test_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.76s)
... (skipped 9311 bytes)
nd jobs
❌ test_installation_when_dashboard_state_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.896s)
... (skipped 8689 bytes)
nd jobs
❌ test_dashboard_state_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.944s)
... (skipped 8689 bytes)
nd jobs
❌ test_installation_with_custom_folder_when_dashboard_state_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.82s)
... (skipped 9311 bytes)
nd jobs
❌ test_dashboard_state_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.772s)
... (skipped 9311 bytes)
nd jobs
❌ test_uninstallation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.903s)
... (skipped 8689 bytes)
nd jobs
❌ test_dashboard_workspace_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.961s)
... (skipped 8689 bytes)
nd jobs
❌ test_uninstallation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.851s)
... (skipped 9311 bytes)
nd jobs
❌ test_dashboard_workspace_installation_with_custom_folder: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.767s)
... (skipped 9311 bytes)
nd jobs
❌ test_uninstallation_dashboard_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.148s)
... (skipped 8689 bytes)
nd jobs
❌ test_dashboard_repeated_workspace_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.094s)
... (skipped 8689 bytes)
nd jobs
❌ test_uninstallation_with_custom_folder_dashboard_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.046s)
... (skipped 9311 bytes)
nd jobs
❌ test_uninstallation_job_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.84s)
... (skipped 8689 bytes)
nd jobs
❌ test_installation_stores_install_state_keys: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (1.958s)
... (skipped 8689 bytes)
nd jobs
❌ test_uninstallation_with_custom_folder_job_does_not_exist_anymore: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.029s)
... (skipped 9311 bytes)
nd jobs
❌ test_installation_with_custom_folder_stores_install_state_keys: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.025s)
... (skipped 9311 bytes)
nd jobs
❌ test_workflows_deployment_creates_jobs_with_remove_after_tag: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (27ms)
... (skipped 548 bytes)
/python
❌ test_global_installation_on_existing_global_install: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.049s)
... (skipped 9541 bytes)
nd jobs
❌ test_get_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.011s)
... (skipped 8689 bytes)
nd jobs
❌ test_load_checks_when_checks_file_does_not_exist_in_workspace: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.567s)
... (skipped 9270 bytes)
nd jobs
❌ test_custom_folder_installation_upgrade: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.85s)
... (skipped 10623 bytes)
nd jobs
❌ test_load_checks_from_installation_when_checks_file_does_not_exist_in_workspace: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.152s)
... (skipped 9270 bytes)
nd jobs
❌ test_load_checks_from_volume_in_installation_when_checks_file_does_not_exist: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (8.275s)
... (skipped 10598 bytes)
nd jobs
❌ test_load_checks_from_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.057s)
... (skipped 9270 bytes)
nd jobs
❌ test_load_checks_from_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.898s)
... (skipped 9272 bytes)
nd jobs
❌ test_load_invalid_checks_from_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.969s)
... (skipped 9270 bytes)
nd jobs
❌ test_save_load_checks_from_volume_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (10.873s)
... (skipped 10206 bytes)
nd jobs
❌ test_load_invalid_checks_from_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (3.952s)
... (skipped 9272 bytes)
nd jobs
❌ test_load_checks_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.807s)
... (skipped 9270 bytes)
nd jobs
❌ test_load_checks_from_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.432s)
... (skipped 9932 bytes)
nd jobs
❌ test_load_checks_from_absolute_path: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.814s)
... (skipped 9662 bytes)
nd jobs
❌ test_load_checks_from_installation_overwrite_location: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.554s)
... (skipped 5784 bytes)
nd jobs
❌ test_load_invalid_checks_from_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.432s)
... (skipped 9270 bytes)
nd jobs
❌ test_save_checks_in_volume_file_as_yml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.315s)
... (skipped 10206 bytes)
nd jobs
❌ test_load_checks_from_global_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.204s)
... (skipped 9122 bytes)
nd jobs
❌ test_save_checks_in_volume_file_as_json: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.366s)
... (skipped 10210 bytes)
nd jobs
❌ test_profiler_workflow_with_ai_rules_generation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.438s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.55s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_workflow_with_ai_rules_generation_and_model_api_keys_as_secrets: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.399s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_workflow_with_ai_rules_generation_with_custom_funcs: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.658s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_workflow_with_llm_pk_detection: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.444s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_streaming: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.583s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_with_quarantine: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.574s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_with_custom_check_func: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.349s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_when_missing_checks_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.464s)
... (skipped 8920 bytes)
nd jobs
❌ test_quality_checker_workflow_with_custom_check_func_in_volume: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.558s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_with_custom_check_func_rel_path: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.696s)
... (skipped 9379 bytes)
stopped
❌ test_quality_checker_workflow_with_ref: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.919s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_runner_raise_error_when_profile_summary_stats_file_missing: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.179s)
... (skipped 6246 bytes)
nd jobs
❌ test_profiler_workflow_class_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.335s)
... (skipped 9379 bytes)
stopped
❌ test_profiler_workflow_when_missing_input_location_in_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.543s)
... (skipped 8920 bytes)
nd jobs
❌ test_profiler_workflow_when_timeout: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.452s)
... (skipped 8920 bytes)
nd jobs
❌ test_profiler_workflow_serverless: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.292s)
... (skipped 9379 bytes)
stopped
❌ test_runtime_config: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.753s)
... (skipped 8863 bytes)
nd jobs
❌ test_save_load_checks_from_table_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (12.501s)
... (skipped 9726 bytes)
nd jobs
❌ test_save_checks_in_workspace_file_as_json: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.781s)
... (skipped 9598 bytes)
nd jobs
❌ test_save_checks_in_user_installation_in_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.944s)
... (skipped 9594 bytes)
nd jobs
❌ test_save_checks_in_user_installation_in_json_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (8.233s)
... (skipped 9598 bytes)
nd jobs
❌ test_save_checks_in_workspace_file_as_yaml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (4.977s)
... (skipped 9594 bytes)
nd jobs
❌ test_save_checks_in_global_installation_as_yaml: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (7.575s)
... (skipped 9372 bytes)
nd jobs
❌ test_save_checks_in_custom_folder_installation_in_yaml_file: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (5.711s)
... (skipped 10296 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation_only_quarantine: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.285s)
... (skipped 9240 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation_output_table_provided: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (12.122s)
... (skipped 9240 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation_quarantine_table_provided: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (14.786s)
... (skipped 9240 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (14.822s)
... (skipped 9240 bytes)
nd jobs
❌ test_save_results_in_table_in_custom_folder_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (11.62s)
... (skipped 9862 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation_missing_output_and_quarantine_table: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.751s)
... (skipped 9240 bytes)
nd jobs
❌ test_save_results_in_table_in_user_installation_only_output: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9.125s)
... (skipped 9240 bytes)
nd jobs
❌ test_workflow_deployment_uploads_dependencies: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.112s)
... (skipped 8535 bytes)
/python
❌ test_dependency_discovery_includes_extras: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (2.116s)
... (skipped 8535 bytes)
/python
❌ test_end_to_end_installation_and_workflow_with_upload_dependencies: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (6.638s)
... (skipped 9199 bytes)
/python
❌ test_save_and_load_checks_from_lakebase_table_with_user_installation: ValueError: Not a valid SemVer: vd3ku_poc-9-g7560e45 (9m22.224s)
... (skipped 11031 bytes)
nd jobs

Running from acceptance #4238

Comment thread src/databricks/labs/dqx/config.py Outdated

@mwojtyczka mwojtyczka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

Overview

Clean, focused implementation of two orthogonal features from #953: skip_quietly suppresses skipped-check entries entirely, and skipped=True on the result struct enables structured identification of skipped checks without string-parsing the message. The propagation chain (ExtraParamsDQEngineCoreDQRuleManager) is correct.

Issues

  • F.lit(None) type mismatch risk — the null returned when skip_quietly=True is untyped (NullType); all other conditions in the array are of the result struct type. Should be cast explicitly.
  • Schema field insertion order — adding skipped between user_metadata and rule_fingerprint rather than appending it at the end is a larger breaking change for consumers using positional access.
  • No DQRuleManager unit tests — the skip_quietly branch in process() is only covered by integration tests; a unit test with create_autospec(DataFrame) would be faster and more targeted.
  • No CHANGELOG entry — both features are user-visible and warrant a changelog entry.
  • True if skipped else None — minor style nit, can be simplified.

Comment thread src/databricks/labs/dqx/manager.py Outdated
Comment thread src/databricks/labs/dqx/manager.py Outdated

@mwojtyczka mwojtyczka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looking good. Left small comments.
Please also update documentation and reformat (make fmt).

… condition

Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
…ntry

Signed-off-by: Roshan1299 <banisettirosh@gmail.com>
@Roshan1299

Copy link
Copy Markdown
Contributor Author

Hi @mwojtyczka , addressed all the review feedback:

  • Renamed skip_quietly -> suppress_skipped across src, tests, docs, and changelog
  • Cast F.lit(None) to dq_result_item_schema to fix the NullType mismatch
  • Moved skipped field to end of dq_result_item_schema to avoid breaking positional access
  • Simplified True if skipped else None → skipped or None
  • Added unit tests for DQRuleManager.process() using create_autospec(DataFrame) in tests/unit/test_manager.py
  • Added documentation in additional_configuration.mdx with sections for suppress_skipped and the skipped result field, plus a cross-reference from quality_checks_apply.mdx
  • Added CHANGELOG entries under ## 0.14.0
  • Ran make fmt — black, ruff, mypy all pass, pylint 10/10. Note: test_apply_checks.py was already at 10,054 lines before my changes (from recently merged features); moved my new integration tests to test_apply_checks_suppress_skipped.py to bring it down to 10,008 , still slightly over pylint's 10,000 limit, but not something we introduced.

Comment thread CHANGELOG.md Outdated
@mwojtyczka mwojtyczka changed the title feat: add skip_quietly option and skipped flag for skipped checks feat: add suppress_skipped option and skipped flag for skipped checks Mar 23, 2026
Comment thread docs/dqx/docs/guide/additional_configuration.mdx Outdated

@mwojtyczka mwojtyczka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - will merge once all tests pass

@mwojtyczka mwojtyczka added the Approved to Merge When PR is reviewed and approved. To be merged once all tests pass label Mar 23, 2026
@mwojtyczka mwojtyczka merged commit 040adc7 into databrickslabs:main Mar 23, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved to Merge When PR is reviewed and approved. To be merged once all tests pass under-review This PR is currently being reviewed by one of DQX maintainers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Option to skip checks quietly and improve logging of skipped checks

2 participants