gitextract_pl4w_c1i/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── pull_request_template.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE.txt ├── Makefile ├── README.md ├── assets/ │ └── gab/ │ ├── metadata/ │ │ ├── gab/ │ │ │ └── f_agg_dummy_sales_kpi/ │ │ │ ├── 1_article_category.sql │ │ │ └── 2_f_agg_dummy_sales_kpi.sql │ │ └── tables/ │ │ ├── dim_calendar.sql │ │ ├── dummy_sales_kpi.sql │ │ ├── gab_log_events.sql │ │ ├── gab_use_case_results.sql │ │ └── lkp_query_builder.sql │ ├── notebooks/ │ │ ├── gab.py │ │ ├── gab_dim_calendar.py │ │ ├── gab_job_manager.py │ │ └── query_builder_helper.py │ └── utils/ │ ├── databricks_job_utils.py │ └── query_builder_utils.py ├── cicd/ │ ├── .bumpversion.cfg │ ├── Dockerfile │ ├── Jenkinsfile │ ├── Jenkinsfile_deploy │ ├── bandit.yaml │ ├── code_doc/ │ │ ├── content.css │ │ ├── custom_example_macros.py │ │ ├── examples.json │ │ ├── gen_ref_nav.py │ │ ├── index.html.jinja2 │ │ ├── mkdocs.yml │ │ ├── mkdocs_macros.py │ │ ├── module.html.jinja2 │ │ ├── render_doc.py │ │ └── render_docs.py │ ├── flake8.conf │ ├── meta.yaml │ ├── requirements.txt │ ├── requirements_azure.txt │ ├── requirements_cicd.txt │ ├── requirements_dq.txt │ ├── requirements_os.txt │ ├── requirements_sftp.txt │ └── requirements_sharepoint.txt ├── lakehouse_engine/ │ ├── __init__.py │ ├── algorithms/ │ │ ├── __init__.py │ │ ├── algorithm.py │ │ ├── data_loader.py │ │ ├── dq_validator.py │ │ ├── exceptions.py │ │ ├── gab.py │ │ ├── reconciliator.py │ │ ├── sensor.py │ │ └── sensors/ │ │ ├── __init__.py │ │ ├── heartbeat.py │ │ └── sensor.py │ ├── configs/ │ │ ├── __init__.py │ │ └── engine.yaml │ ├── core/ │ │ ├── __init__.py │ │ ├── dbfs_file_manager.py │ │ ├── definitions.py │ │ ├── exec_env.py │ │ ├── executable.py │ │ ├── file_manager.py │ │ ├── gab_manager.py │ │ ├── gab_sql_generator.py │ │ ├── s3_file_manager.py │ │ ├── sensor_manager.py │ │ └── table_manager.py │ ├── dq_processors/ │ │ ├── __init__.py │ │ ├── custom_expectations/ │ │ │ ├── __init__.py │ │ │ ├── expect_column_pair_a_to_be_not_equal_to_b.py │ │ │ ├── expect_column_pair_a_to_be_smaller_or_equal_than_b.py │ │ │ ├── expect_column_pair_date_a_to_be_greater_than_or_equal_to_date_b.py │ │ │ ├── expect_column_values_to_be_date_not_older_than.py │ │ │ ├── expect_column_values_to_not_be_null_or_empty_string.py │ │ │ ├── expect_multicolumn_column_a_must_equal_b_or_c.py │ │ │ └── expect_queried_column_agg_value_to_be.py │ │ ├── dq_factory.py │ │ ├── exceptions.py │ │ └── validator.py │ ├── engine.py │ ├── io/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── reader.py │ │ ├── reader_factory.py │ │ ├── readers/ │ │ │ ├── __init__.py │ │ │ ├── dataframe_reader.py │ │ │ ├── file_reader.py │ │ │ ├── jdbc_reader.py │ │ │ ├── kafka_reader.py │ │ │ ├── query_reader.py │ │ │ ├── sap_b4_reader.py │ │ │ ├── sap_bw_reader.py │ │ │ ├── sftp_reader.py │ │ │ ├── sharepoint_reader.py │ │ │ └── table_reader.py │ │ ├── writer.py │ │ ├── writer_factory.py │ │ └── writers/ │ │ ├── __init__.py │ │ ├── console_writer.py │ │ ├── dataframe_writer.py │ │ ├── delta_merge_writer.py │ │ ├── file_writer.py │ │ ├── jdbc_writer.py │ │ ├── kafka_writer.py │ │ ├── rest_api_writer.py │ │ ├── sharepoint_writer.py │ │ └── table_writer.py │ ├── terminators/ │ │ ├── __init__.py │ │ ├── cdf_processor.py │ │ ├── dataset_optimizer.py │ │ ├── notifier.py │ │ ├── notifier_factory.py │ │ ├── notifiers/ │ │ │ ├── __init__.py │ │ │ ├── email_notifier.py │ │ │ ├── exceptions.py │ │ │ └── notification_templates.py │ │ ├── sensor_terminator.py │ │ ├── spark_terminator.py │ │ └── terminator_factory.py │ ├── transformers/ │ │ ├── __init__.py │ │ ├── aggregators.py │ │ ├── column_creators.py │ │ ├── column_reshapers.py │ │ ├── condensers.py │ │ ├── custom_transformers.py │ │ ├── data_maskers.py │ │ ├── date_transformers.py │ │ ├── exceptions.py │ │ ├── filters.py │ │ ├── joiners.py │ │ ├── null_handlers.py │ │ ├── optimizers.py │ │ ├── regex_transformers.py │ │ ├── repartitioners.py │ │ ├── transformer_factory.py │ │ ├── unions.py │ │ └── watermarker.py │ └── utils/ │ ├── __init__.py │ ├── acon_utils.py │ ├── configs/ │ │ ├── __init__.py │ │ └── config_utils.py │ ├── databricks_utils.py │ ├── dq_utils.py │ ├── engine_usage_stats.py │ ├── expectations_utils.py │ ├── extraction/ │ │ ├── __init__.py │ │ ├── jdbc_extraction_utils.py │ │ ├── sap_b4_extraction_utils.py │ │ ├── sap_bw_extraction_utils.py │ │ └── sftp_extraction_utils.py │ ├── file_utils.py │ ├── gab_utils.py │ ├── logging_handler.py │ ├── rest_api.py │ ├── schema_utils.py │ ├── sharepoint_utils.py │ ├── spark_utils.py │ ├── sql_parser_utils.py │ └── storage/ │ ├── __init__.py │ ├── dbfs_storage.py │ ├── file_storage.py │ ├── file_storage_functions.py │ ├── local_fs_storage.py │ └── s3_storage.py ├── lakehouse_engine_usage/ │ ├── __init__.py │ ├── data_loader/ │ │ ├── __init__.py │ │ ├── append_load_from_jdbc_with_permissive_mode/ │ │ │ ├── __init__.py │ │ │ └── append_load_from_jdbc_with_permissive_mode.md │ │ ├── append_load_with_failfast/ │ │ │ ├── __init__.py │ │ │ └── append_load_with_failfast.md │ │ ├── batch_delta_load_init_delta_backfill_with_merge/ │ │ │ ├── __init__.py │ │ │ └── batch_delta_load_init_delta_backfill_with_merge.md │ │ ├── custom_transformer/ │ │ │ ├── __init__.py │ │ │ ├── custom_transformer.md │ │ │ └── sql_custom_transformer.md │ │ ├── custom_transformer_sql/ │ │ │ ├── __init__.py │ │ │ └── custom_transformer_sql.md │ │ ├── data_loader.md │ │ ├── extract_from_sap_b4_adso/ │ │ │ ├── __init__.py │ │ │ └── extract_from_sap_b4_adso.md │ │ ├── extract_from_sap_bw_dso/ │ │ │ ├── __init__.py │ │ │ └── extract_from_sap_bw_dso.md │ │ ├── extract_from_sftp/ │ │ │ ├── __init__.py │ │ │ └── extract_from_sftp.md │ │ ├── extract_using_jdbc_connection/ │ │ │ ├── __init__.py │ │ │ └── extract_using_jdbc_connection.md │ │ ├── filtered_full_load/ │ │ │ ├── __init__.py │ │ │ └── filtered_full_load.md │ │ ├── filtered_full_load_with_selective_replace/ │ │ │ ├── __init__.py │ │ │ └── filtered_full_load_with_selective_replace.md │ │ ├── flatten_schema_and_explode_columns/ │ │ │ ├── __init__.py │ │ │ └── flatten_schema_and_explode_columns.md │ │ ├── full_load/ │ │ │ ├── __init__.py │ │ │ └── full_load.md │ │ ├── read_from_dataframe/ │ │ │ ├── __init__.py │ │ │ └── read_from_dataframe.md │ │ ├── read_from_sharepoint/ │ │ │ ├── __init__.py │ │ │ └── read_from_sharepoint.md │ │ ├── streaming_append_load_with_malformed/ │ │ │ ├── __init__.py │ │ │ └── streaming_append_load_with_malformed.md │ │ ├── streaming_append_load_with_terminator/ │ │ │ ├── __init__.py │ │ │ └── streaming_append_load_with_terminator.md │ │ ├── streaming_delta_load_with_group_and_rank_condensation/ │ │ │ ├── __init__.py │ │ │ └── streaming_delta_load_with_group_and_rank_condensation.md │ │ ├── streaming_delta_with_late_arriving_and_out_of_order_events/ │ │ │ ├── __init__.py │ │ │ └── streaming_delta_with_late_arriving_and_out_of_order_events.md │ │ ├── write_and_read_dataframe/ │ │ │ ├── __init__.py │ │ │ └── write_and_read_dataframe.md │ │ ├── write_to_console/ │ │ │ ├── __init__.py │ │ │ └── write_to_console.md │ │ ├── write_to_rest_api/ │ │ │ ├── __init__.py │ │ │ └── write_to_rest_api.md │ │ └── write_to_sharepoint/ │ │ ├── __init__.py │ │ └── write_to_sharepoint.md │ ├── data_quality/ │ │ ├── __init__.py │ │ ├── custom_expectations/ │ │ │ ├── __init__.py │ │ │ └── custom_expectations.md │ │ ├── data_quality.md │ │ ├── data_quality_validator/ │ │ │ ├── __init__.py │ │ │ └── data_quality_validator.md │ │ ├── minimal_example/ │ │ │ ├── __init__.py │ │ │ └── minimal_example.md │ │ ├── prisma/ │ │ │ ├── __init__.py │ │ │ └── prisma.md │ │ ├── result_sink/ │ │ │ ├── __init__.py │ │ │ └── result_sink.md │ │ ├── row_tagging/ │ │ │ ├── __init__.py │ │ │ └── row_tagging.md │ │ └── validations_failing/ │ │ ├── __init__.py │ │ └── validations_failing.md │ ├── gab/ │ │ ├── __init__.py │ │ ├── gab.md │ │ └── step_by_step/ │ │ ├── __init__.py │ │ └── step_by_step.md │ ├── lakehouse_engine_usage.md │ ├── managerhelper/ │ │ ├── managerhelper.md │ │ ├── operations-script.js │ │ ├── operations-styles-mkdocs.css │ │ └── styles-mkdocs.css │ ├── reconciliator/ │ │ ├── __init__.py │ │ └── reconciliator.md │ ├── sensor/ │ │ ├── __init__.py │ │ ├── delta_table/ │ │ │ ├── __init__.py │ │ │ └── delta_table.md │ │ ├── delta_upstream_sensor_table/ │ │ │ ├── __init__.py │ │ │ └── delta_upstream_sensor_table.md │ │ ├── file/ │ │ │ ├── __init__.py │ │ │ └── file.md │ │ ├── jdbc_table/ │ │ │ ├── __init__.py │ │ │ └── jdbc_table.md │ │ ├── kafka/ │ │ │ ├── __init__.py │ │ │ └── kafka.md │ │ ├── sap_bw_b4/ │ │ │ ├── __init__.py │ │ │ └── sap_bw_b4.md │ │ ├── sensor.md │ │ └── update_sensor_status/ │ │ ├── __init__.py │ │ └── update_sensor_status.md │ └── sensors/ │ ├── __init__.py │ ├── heartbeat/ │ │ ├── __init__.py │ │ ├── delta_table/ │ │ │ ├── __init__.py │ │ │ └── delta_table.md │ │ ├── heartbeat.md │ │ ├── heartbeat_sensor_data_feed/ │ │ │ ├── __init__.py │ │ │ └── heartbeat_sensor_data_feed.md │ │ ├── kafka/ │ │ │ ├── __init__.py │ │ │ └── kafka.md │ │ ├── manual_table/ │ │ │ ├── __init__.py │ │ │ └── manual_table.md │ │ ├── sap_bw_b4/ │ │ │ ├── __init__.py │ │ │ └── sap_bw_b4.md │ │ ├── trigger_file/ │ │ │ ├── __init__.py │ │ │ └── trigger_file.md │ │ └── update_heartbeat_sensor_status/ │ │ ├── __init__.py │ │ └── update_heartbeat_sensor_status.md │ ├── sensor/ │ │ ├── __init__.py │ │ ├── delta_table/ │ │ │ ├── __init__.py │ │ │ └── delta_table.md │ │ ├── delta_upstream_sensor_table/ │ │ │ ├── __init__.py │ │ │ └── delta_upstream_sensor_table.md │ │ ├── file/ │ │ │ ├── __init__.py │ │ │ └── file.md │ │ ├── jdbc_table/ │ │ │ ├── __init__.py │ │ │ └── jdbc_table.md │ │ ├── kafka/ │ │ │ ├── __init__.py │ │ │ └── kafka.md │ │ ├── sap_bw_b4/ │ │ │ ├── __init__.py │ │ │ └── sap_bw_b4.md │ │ ├── sensor.md │ │ └── update_sensor_status/ │ │ ├── __init__.py │ │ └── update_sensor_status.md │ └── sensors.md ├── pyproject.toml ├── samples/ │ ├── cricket_dq_tutorial.py │ └── tpch_load_and_analysis_tutorial.py └── tests/ ├── __init__.py ├── configs/ │ ├── __init__.py │ └── engine.yaml ├── conftest.py ├── feature/ │ ├── __init__.py │ ├── custom_expectations/ │ │ ├── __init__.py │ │ ├── test_custom_expectations.py │ │ └── test_expectation_validity.py │ ├── data_loader_custom_transformer/ │ │ ├── __init__.py │ │ ├── test_data_loader_custom_transformer_calculate_kpi.py │ │ ├── test_data_loader_custom_transformer_delta_load.py │ │ └── test_data_loader_custom_transformer_sql_transformation.py │ ├── delta_load/ │ │ ├── __init__.py │ │ ├── test_delta_load_group_and_rank.py │ │ ├── test_delta_load_merge_options.py │ │ └── test_delta_load_record_mode_cdc.py │ ├── test_append_load.py │ ├── test_data_quality.py │ ├── test_dq_validator.py │ ├── test_engine_usage_stats.py │ ├── test_extract_from_sap_b4.py │ ├── test_extract_from_sap_bw.py │ ├── test_file_manager.py │ ├── test_file_manager_dbfs.py │ ├── test_file_manager_s3.py │ ├── test_full_load.py │ ├── test_gab.py │ ├── test_heartbeat.py │ ├── test_jdbc_reader.py │ ├── test_materialize_cdf.py │ ├── test_notification.py │ ├── test_reconciliation.py │ ├── test_schema_evolution.py │ ├── test_sensors.py │ ├── test_sftp_reader.py │ ├── test_sharepoint_reader.py │ ├── test_sharepoint_writer.py │ ├── test_table_manager.py │ ├── test_writers.py │ └── transformations/ │ ├── __init__.py │ ├── test_chain_transformations.py │ ├── test_column_creators.py │ ├── test_column_reshapers.py │ ├── test_data_maskers.py │ ├── test_date_transformers.py │ ├── test_drop_duplicate_rows.py │ ├── test_joiners.py │ ├── test_multiple_transformations.py │ ├── test_null_handlers.py │ ├── test_optimizers.py │ ├── test_regex_transformers.py │ ├── test_unions.py │ └── test_watermarker.py ├── resources/ │ ├── feature/ │ │ ├── append_load/ │ │ │ ├── failfast/ │ │ │ │ ├── batch.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ └── part-03.csv │ │ │ ├── jdbc_permissive/ │ │ │ │ ├── batch.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ └── part-03.csv │ │ │ ├── streaming_dropmalformed/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ └── part-03.csv │ │ │ │ └── streaming.json │ │ │ └── streaming_with_terminators/ │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ └── part-01.csv │ │ │ └── streaming.json │ │ ├── custom_expectations/ │ │ │ ├── expect_column_pair_a_to_be_not_equal_to_b/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ ├── expect_column_pair_a_to_be_smaller_or_equal_than_b/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ ├── expect_column_pair_date_a_to_be_greater_than_or_equal_to_date_b/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ ├── expect_column_values_to_be_date_not_older_than/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ ├── expect_column_values_to_not_be_null_or_empty_string/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ ├── expect_multicolumn_column_a_must_equal_b_or_c/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── dq_sales_schema.json │ │ │ │ └── streaming.json │ │ │ └── expect_queried_column_agg_value_to_be/ │ │ │ ├── batch.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── dq_control_success.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ ├── dq_sales_schema.json │ │ │ └── streaming.json │ │ ├── data_loader_custom_transformer/ │ │ │ ├── calculate_kpi/ │ │ │ │ ├── control_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source_schema.json │ │ │ ├── delta_load/ │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ ├── part-03.csv │ │ │ │ └── part-04.csv │ │ │ └── sql_transformation/ │ │ │ ├── control_schema.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ └── part-01.csv │ │ │ └── source_schema.json │ │ ├── data_quality/ │ │ │ ├── build_data_docs/ │ │ │ │ ├── with_data_docs_local_fs/ │ │ │ │ │ └── 20240410-080323-dq_success-sales_orders-checkpoint/ │ │ │ │ │ └── 20240410T080323.289170Z/ │ │ │ │ │ └── 7ba399ea28cc40bf8c79213a440aeb91.json │ │ │ │ └── without_data_docs_local_fs/ │ │ │ │ └── 20240409-143548-dq_validator-sales_source-checkpoint/ │ │ │ │ └── 20240409T143548.454043Z/ │ │ │ │ └── f0d7bd293d22bcfd3c1fec5a7d566638.json │ │ │ ├── load_with_dq_table/ │ │ │ │ ├── delta_with_dupl_tag_gen_fail/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ │ │ ├── sales.json │ │ │ │ │ │ │ └── sales_schema.json │ │ │ │ │ │ ├── dq_functions/ │ │ │ │ │ │ │ ├── test_db.dq_functions_source_load_with_dq_table_delta_with_dupl_tag_gen_fail_init.csv │ │ │ │ │ │ │ └── test_db.dq_functions_source_load_with_dq_table_delta_with_dupl_tag_gen_fail_new.csv │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ └── part-04.csv │ │ │ │ │ ├── streaming_init.json │ │ │ │ │ └── streaming_new.json │ │ │ │ ├── delta_with_duplicates_tag/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ │ │ ├── sales.json │ │ │ │ │ │ │ └── sales_schema.json │ │ │ │ │ │ ├── dq_functions/ │ │ │ │ │ │ │ ├── test_db.dq_functions_source_load_with_dq_table_delta_with_duplicates_tag_init.csv │ │ │ │ │ │ │ └── test_db.dq_functions_source_load_with_dq_table_delta_with_duplicates_tag_new.csv │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ └── part-04.csv │ │ │ │ │ ├── streaming_init.json │ │ │ │ │ └── streaming_new.json │ │ │ │ └── full_overwrite_tag/ │ │ │ │ ├── batch_init.json │ │ │ │ ├── batch_new.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ ├── sales.json │ │ │ │ │ └── sales_schema.json │ │ │ │ ├── dq_functions/ │ │ │ │ │ ├── test_db.dq_functions_source_load_with_dq_table_full_overwrite_tag_init.csv │ │ │ │ │ └── test_db.dq_functions_source_load_with_dq_table_full_overwrite_tag_new.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ ├── load_with_dq_validator/ │ │ │ │ ├── delta_with_dupl_tag_gen_fail/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ │ │ ├── sales.json │ │ │ │ │ │ │ └── sales_schema.json │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ └── part-04.csv │ │ │ │ │ ├── streaming_init.json │ │ │ │ │ └── streaming_new.json │ │ │ │ ├── delta_with_duplicates/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ │ └── data_validator_schema.json │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ └── part-04.csv │ │ │ │ │ ├── streaming_init.json │ │ │ │ │ └── streaming_new.json │ │ │ │ ├── delta_with_duplicates_tag/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ │ │ ├── sales.json │ │ │ │ │ │ │ └── sales_schema.json │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ └── part-04.csv │ │ │ │ │ ├── streaming_init.json │ │ │ │ │ └── streaming_new.json │ │ │ │ ├── full_overwrite/ │ │ │ │ │ ├── batch_init.json │ │ │ │ │ ├── batch_new.json │ │ │ │ │ └── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ └── data_validator_schema.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── full_overwrite_tag/ │ │ │ │ │ ├── batch_init.json │ │ │ │ │ ├── batch_new.json │ │ │ │ │ └── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ ├── data_validator_schema.json │ │ │ │ │ │ ├── sales.json │ │ │ │ │ │ └── sales_schema.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ └── no_transformers/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── data_validator.json │ │ │ │ │ │ └── data_validator_schema.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ ├── part-03.csv │ │ │ │ │ └── part-04.csv │ │ │ │ ├── streaming_init.json │ │ │ │ └── streaming_new.json │ │ │ └── validator/ │ │ │ └── data/ │ │ │ ├── control/ │ │ │ │ └── data_validator.csv │ │ │ ├── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_dq_failure.csv │ │ │ │ ├── test_db.dq_functions_source_dq_failure_error_disabled.csv │ │ │ │ ├── test_db.dq_functions_source_dq_failure_max_percentage.csv │ │ │ │ └── test_db.dq_functions_source_dq_success.csv │ │ │ └── source/ │ │ │ └── part-01.csv │ │ ├── delta_load/ │ │ │ ├── group_and_rank/ │ │ │ │ ├── fail_with_duplicates_in_same_file/ │ │ │ │ │ ├── batch_delta.json │ │ │ │ │ ├── batch_init.json │ │ │ │ │ ├── control_batch_schema.json │ │ │ │ │ ├── control_streaming_schema.json │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ ├── batch.csv │ │ │ │ │ │ │ └── streaming.csv │ │ │ │ │ │ └── source/ │ │ │ │ │ │ ├── WE_SO_SCL_202108111400000000.csv │ │ │ │ │ │ ├── WE_SO_SCL_202108111500000000.csv │ │ │ │ │ │ └── WE_SO_SCL_202108111600000000.csv │ │ │ │ │ ├── source_schema.json │ │ │ │ │ └── streaming_delta.json │ │ │ │ └── with_duplicates_in_same_file/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ ├── control_batch_schema.json │ │ │ │ ├── control_streaming_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── batch.csv │ │ │ │ │ │ └── streaming.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── WE_SO_SCL_202108111400000000.csv │ │ │ │ │ ├── WE_SO_SCL_202108111500000000.csv │ │ │ │ │ └── WE_SO_SCL_202108111600000000.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming_delta.json │ │ │ ├── merge_options/ │ │ │ │ ├── control_batch_schema.json │ │ │ │ ├── insert_column_set/ │ │ │ │ │ ├── batch_delta.json │ │ │ │ │ ├── batch_init.json │ │ │ │ │ └── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── batch.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── WE_SO_SCL_202108111400000000.csv │ │ │ │ │ └── WE_SO_SCL_202108111500000000.csv │ │ │ │ ├── source_schema.json │ │ │ │ ├── update_all/ │ │ │ │ │ ├── batch_delta.json │ │ │ │ │ ├── batch_init.json │ │ │ │ │ └── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── batch.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── WE_SO_SCL_202108111400000000.csv │ │ │ │ │ └── WE_SO_SCL_202108111500000000.csv │ │ │ │ └── update_column_set/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── batch.csv │ │ │ │ └── source/ │ │ │ │ ├── WE_SO_SCL_202108111400000000.csv │ │ │ │ └── WE_SO_SCL_202108111500000000.csv │ │ │ └── record_mode_cdc/ │ │ │ ├── backfill/ │ │ │ │ ├── batch_backfill.json │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ ├── part-03.csv │ │ │ │ ├── part-04.csv │ │ │ │ └── part-05.csv │ │ │ ├── direct_silver_load/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ ├── part-03.csv │ │ │ │ └── part-04.csv │ │ │ ├── late_arriving_changes/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ ├── part-03.csv │ │ │ │ │ └── part-04.csv │ │ │ │ └── streaming_delta.json │ │ │ ├── out_of_order_changes/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ ├── part-03.csv │ │ │ │ │ └── part-04.csv │ │ │ │ └── streaming_delta.json │ │ │ ├── with_deletes_additional_columns/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ ├── part-03.csv │ │ │ │ └── part-04.csv │ │ │ ├── with_duplicates/ │ │ │ │ ├── batch_delta.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ ├── part-02.csv │ │ │ │ ├── part-03.csv │ │ │ │ └── part-04.csv │ │ │ └── with_upserts_only_removed_columns/ │ │ │ ├── batch_delta.json │ │ │ ├── batch_init.json │ │ │ └── data/ │ │ │ ├── control/ │ │ │ │ └── part-01.csv │ │ │ └── source/ │ │ │ ├── part-01.json │ │ │ ├── part-02.json │ │ │ ├── part-03.json │ │ │ └── part-04.json │ │ ├── dq_validator/ │ │ │ ├── batch.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ ├── data_restore_control.csv │ │ │ │ │ ├── dq_control_failure.csv │ │ │ │ │ ├── dq_control_failure_disabled.csv │ │ │ │ │ ├── dq_control_success.csv │ │ │ │ │ ├── dq_control_success_explode.csv │ │ │ │ │ └── dq_control_success_explode_disabled.csv │ │ │ │ ├── dq_functions/ │ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ ├── dq_sales_schema.json │ │ │ ├── streaming.json │ │ │ ├── streaming_dataframe_two_runs/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_streaming_dataframe_two_runs_first_run.csv │ │ │ │ └── test_db.dq_functions_streaming_dataframe_two_runs_second_run.csv │ │ │ ├── table_batch_dataframe_failure_disabled/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ ├── table_batch_dataframe_success/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ ├── table_batch_dq_rule/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_table_rule_id_failure.csv │ │ │ │ └── test_db.dq_table_rule_id_success.csv │ │ │ ├── table_batch_failure_disabled/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ ├── table_batch_success/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ ├── table_streaming_dq_rule/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_table_rule_id_failure.csv │ │ │ │ └── test_db.dq_table_rule_id_success.csv │ │ │ ├── table_streaming_failure_disabled/ │ │ │ │ └── data/ │ │ │ │ └── dq_functions/ │ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ │ └── table_streaming_success/ │ │ │ └── data/ │ │ │ └── dq_functions/ │ │ │ ├── test_db.dq_functions_source_table_failure.csv │ │ │ └── test_db.dq_functions_source_table_success.csv │ │ ├── engine_usage_stats/ │ │ │ ├── dq_validator/ │ │ │ │ └── data/ │ │ │ │ ├── control.json │ │ │ │ └── source.csv │ │ │ ├── load_custom_transf_and_df/ │ │ │ │ └── data/ │ │ │ │ ├── control.json │ │ │ │ └── source.csv │ │ │ ├── load_simple_acon/ │ │ │ │ └── data/ │ │ │ │ ├── control.json │ │ │ │ └── source.csv │ │ │ └── table_manager/ │ │ │ └── data/ │ │ │ └── control.json │ │ ├── extract_from_sap_b4/ │ │ │ ├── extract_aq_dso/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ │ ├── dummy_table_join_condition.csv │ │ │ │ │ │ └── dummy_table_schema.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ ├── dummy_table_1.csv │ │ │ │ │ ├── dummy_table_2.csv │ │ │ │ │ └── rspmrequest.csv │ │ │ │ ├── dummy_table_schema.json │ │ │ │ └── rspmrequest_schema.json │ │ │ └── extract_cl_dso/ │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ ├── dummy_table_join_condition.csv │ │ │ │ │ └── dummy_table_schema.json │ │ │ │ └── source/ │ │ │ │ ├── dummy_table.csv │ │ │ │ ├── dummy_table_cl_1.csv │ │ │ │ ├── dummy_table_cl_2.csv │ │ │ │ └── rspmrequest.csv │ │ │ ├── dummy_table_cl_schema.json │ │ │ ├── dummy_table_schema.json │ │ │ └── rspmrequest_schema.json │ │ ├── extract_from_sap_bw/ │ │ │ ├── derive_changelog_table_name/ │ │ │ │ ├── RSBASIDOC_schema.json │ │ │ │ ├── RSTSODS_schema.json │ │ │ │ └── data/ │ │ │ │ └── source/ │ │ │ │ ├── RSBASIDOC.csv │ │ │ │ └── RSTSODS.csv │ │ │ ├── extract_dso/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ │ ├── dummy_table_join_condition.csv │ │ │ │ │ │ └── dummy_table_schema.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ ├── dummy_table_cl_1.csv │ │ │ │ │ ├── dummy_table_cl_2.csv │ │ │ │ │ └── rsodsactreq.csv │ │ │ │ ├── dummy_table_cl_schema.json │ │ │ │ ├── dummy_table_schema.json │ │ │ │ └── rsodsactreq_schema.json │ │ │ └── extract_write_optimised_dso/ │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ ├── dummy_table.csv │ │ │ │ │ ├── dummy_table_actreq_timestamp.csv │ │ │ │ │ ├── dummy_table_join_condition.csv │ │ │ │ │ └── dummy_table_schema.json │ │ │ │ └── source/ │ │ │ │ ├── dummy_table.csv │ │ │ │ ├── dummy_table_1.csv │ │ │ │ ├── dummy_table_2.csv │ │ │ │ └── rsodsactreq.csv │ │ │ ├── dummy_table_schema.json │ │ │ └── rsodsactreq_schema.json │ │ ├── file_manager/ │ │ │ ├── check_restore_status/ │ │ │ │ ├── acon_check_restore_status_directory.json │ │ │ │ └── acon_check_restore_status_single_object.json │ │ │ ├── copy_object/ │ │ │ │ ├── acon_copy_directory.json │ │ │ │ ├── acon_copy_directory_dry_run.json │ │ │ │ ├── acon_copy_single_object.json │ │ │ │ └── acon_copy_single_object_dry_run.json │ │ │ ├── delete_objects/ │ │ │ │ ├── acon_delete_objects.json │ │ │ │ └── acon_delete_objects_dry_run.json │ │ │ ├── request_restore/ │ │ │ │ ├── acon_request_restore_directory.json │ │ │ │ └── acon_request_restore_single_object.json │ │ │ └── request_restore_to_destination_and_wait/ │ │ │ ├── acon_request_restore_to_destination_and_wait_directory.json │ │ │ ├── acon_request_restore_to_destination_and_wait_single_object.json │ │ │ └── acon_request_restore_to_destination_and_wait_single_object_raise_error.json │ │ ├── file_manager_dbfs/ │ │ │ ├── copy_objects/ │ │ │ │ ├── acon_copy_directory.json │ │ │ │ ├── acon_copy_directory_dry_run.json │ │ │ │ └── acon_copy_single_object.json │ │ │ ├── delete_objects/ │ │ │ │ ├── acon_delete_objects.json │ │ │ │ └── acon_delete_objects_dry_run.json │ │ │ └── move_objects/ │ │ │ ├── acon_move_objects.json │ │ │ └── acon_move_objects_dry_run.json │ │ ├── file_manager_s3/ │ │ │ ├── check_restore_status/ │ │ │ │ ├── acon_check_restore_status_directory.json │ │ │ │ └── acon_check_restore_status_single_object.json │ │ │ ├── copy_objects/ │ │ │ │ ├── acon_copy_directory.json │ │ │ │ ├── acon_copy_directory_dry_run.json │ │ │ │ ├── acon_copy_single_object.json │ │ │ │ └── acon_copy_single_object_dry_run.json │ │ │ ├── delete_objects/ │ │ │ │ ├── acon_delete_objects.json │ │ │ │ └── acon_delete_objects_dry_run.json │ │ │ ├── request_restore/ │ │ │ │ ├── acon_request_restore_directory.json │ │ │ │ └── acon_request_restore_single_object.json │ │ │ └── request_restore_to_destination_and_wait/ │ │ │ ├── acon_request_restore_to_destination_and_wait_directory.json │ │ │ ├── acon_request_restore_to_destination_and_wait_single_object.json │ │ │ └── acon_request_restore_to_destination_and_wait_single_object_raise_error.json │ │ ├── full_load/ │ │ │ ├── full_overwrite/ │ │ │ │ ├── batch.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ ├── with_filter/ │ │ │ │ ├── batch.json │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ └── with_filter_partition_overwrite/ │ │ │ ├── batch.json │ │ │ ├── batch_init.json │ │ │ └── data/ │ │ │ ├── control/ │ │ │ │ └── part-01.csv │ │ │ └── source/ │ │ │ ├── part-01.csv │ │ │ └── part-02.csv │ │ ├── gab/ │ │ │ ├── control/ │ │ │ │ ├── data/ │ │ │ │ │ ├── vw_dummy_sales_kpi.csv │ │ │ │ │ ├── vw_nam_orders_all_snapshot.csv │ │ │ │ │ ├── vw_nam_orders_filtered_snapshot.csv │ │ │ │ │ ├── vw_negative_offset_orders_all.csv │ │ │ │ │ ├── vw_negative_offset_orders_filtered.csv │ │ │ │ │ ├── vw_orders_all.csv │ │ │ │ │ ├── vw_orders_all_snapshot.csv │ │ │ │ │ ├── vw_orders_filtered.csv │ │ │ │ │ └── vw_orders_filtered_snapshot.csv │ │ │ │ └── schema/ │ │ │ │ ├── vw_dummy_sales_kpi.json │ │ │ │ └── vw_orders.json │ │ │ ├── setup/ │ │ │ │ ├── column_list/ │ │ │ │ │ ├── calendar.json │ │ │ │ │ ├── dummy_sales_kpi.json │ │ │ │ │ ├── gab_log_events.json │ │ │ │ │ ├── gab_use_case_results.json │ │ │ │ │ ├── lkp_query_builder.json │ │ │ │ │ └── order_events.json │ │ │ │ ├── data/ │ │ │ │ │ ├── dummy_sales_kpi.csv │ │ │ │ │ ├── lkp_query_builder.csv │ │ │ │ │ └── order_events.csv │ │ │ │ └── schema/ │ │ │ │ ├── dummy_sales_kpi.json │ │ │ │ ├── lkp_query_builder.json │ │ │ │ └── order_events.json │ │ │ └── usecases/ │ │ │ ├── dummy_sales_kpi/ │ │ │ │ ├── 1_article_category.sql │ │ │ │ ├── 2_dummy_sales_kpi.sql │ │ │ │ └── scenario/ │ │ │ │ └── dummy_sales_kpi.json │ │ │ └── order_events/ │ │ │ ├── 1_order_events.sql │ │ │ └── scenario/ │ │ │ ├── order_events.json │ │ │ ├── order_events_nam.json │ │ │ ├── order_events_negative_timezone_offset.json │ │ │ ├── order_events_snapshot.json │ │ │ ├── skip_use_case_by_empty_reconciliation.json │ │ │ ├── skip_use_case_by_empty_requested_cadence.json │ │ │ ├── skip_use_case_by_not_configured_cadence.json │ │ │ └── skip_use_case_by_unexisting_cadence.json │ │ ├── heartbeat/ │ │ │ ├── control/ │ │ │ │ ├── default/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── ctr_heart_tbl_heartb_feed.csv │ │ │ │ │ │ ├── ctrl_heart_tbl_exec_sensor.csv │ │ │ │ │ │ ├── ctrl_heart_tbl_trigger_job.csv │ │ │ │ │ │ ├── ctrl_heart_tbl_updated.csv │ │ │ │ │ │ └── ctrl_sensor_tbl_upd_status.json │ │ │ │ │ └── schema/ │ │ │ │ │ ├── ctrl_heart_tbl_schema.json │ │ │ │ │ └── ctrl_heart_tbl_trig_schema.json │ │ │ │ └── heartbeat_paused_sensor_new_record/ │ │ │ │ ├── data/ │ │ │ │ │ ├── ctr_heart_tbl_heartb_feed.csv │ │ │ │ │ ├── ctrl_heart_tbl_exec_sensor.csv │ │ │ │ │ ├── ctrl_heart_tbl_trigger_job.csv │ │ │ │ │ ├── ctrl_heart_tbl_updated.csv │ │ │ │ │ └── ctrl_sensor_tbl_upd_status.json │ │ │ │ └── schema/ │ │ │ │ └── ctrl_heart_tbl_schema.json │ │ │ └── setup/ │ │ │ ├── default/ │ │ │ │ ├── column_list/ │ │ │ │ │ ├── heartbeat_sensor_control_table.json │ │ │ │ │ └── sensor_table.json │ │ │ │ ├── data/ │ │ │ │ │ ├── setup_heartbeat_data.csv │ │ │ │ │ └── setup_sensor_data.json │ │ │ │ └── schema/ │ │ │ │ └── schema_sensor_df.json │ │ │ └── heartbeat_paused_sensor_new_record/ │ │ │ ├── column_list/ │ │ │ │ ├── heartbeat_sensor_control_table.json │ │ │ │ └── sensor_table.json │ │ │ ├── data/ │ │ │ │ ├── setup_heartbeat_data.csv │ │ │ │ └── setup_sensor_data.json │ │ │ └── schema/ │ │ │ └── schema_sensor_df.json │ │ ├── jdbc_reader/ │ │ │ ├── jdbc_format/ │ │ │ │ ├── correct_arguments/ │ │ │ │ │ ├── batch_init.json │ │ │ │ │ └── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ ├── predicates/ │ │ │ │ │ └── batch_init.json │ │ │ │ └── wrong_arguments/ │ │ │ │ └── batch_init.json │ │ │ └── jdbc_function/ │ │ │ ├── correct_arguments/ │ │ │ │ ├── batch_init.json │ │ │ │ └── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source/ │ │ │ │ └── part-01.csv │ │ │ └── wrong_arguments/ │ │ │ └── batch_init.json │ │ ├── materialize_cdf/ │ │ │ ├── acon_create_table.json │ │ │ ├── control_schema.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-01_cdf.csv │ │ │ │ ├── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ └── table/ │ │ │ │ └── streaming_with_cdf.sql │ │ │ ├── streaming_with_clean_and_vacuum.json │ │ │ └── streaming_without_clean_cdf.json │ │ ├── notification/ │ │ │ └── test_attachement.txt │ │ ├── reconciliation/ │ │ │ └── data/ │ │ │ ├── current.json │ │ │ ├── current_different_rows.json │ │ │ ├── current_fail.json │ │ │ ├── current_nulls_and_zeros.json │ │ │ ├── current_nulls_and_zeros_fail.json │ │ │ ├── truth.json │ │ │ ├── truth_different_rows.json │ │ │ ├── truth_empty.json │ │ │ ├── truth_nulls_and_zeros.json │ │ │ └── truth_nulls_and_zeros_fail.json │ │ ├── schema_evolution/ │ │ │ ├── append_load/ │ │ │ │ ├── batch_append_disabled.json │ │ │ │ ├── batch_append_disabled_cast.json │ │ │ │ ├── batch_append_enabled.json │ │ │ │ ├── batch_append_enabled_cast.json │ │ │ │ ├── batch_init_disabled.json │ │ │ │ ├── batch_init_enabled.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ ├── part-05.csv │ │ │ │ │ │ └── part-06.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ ├── part-03.csv │ │ │ │ │ ├── part-04.csv │ │ │ │ │ ├── part-05.csv │ │ │ │ │ └── part-06.csv │ │ │ │ └── schema/ │ │ │ │ ├── control/ │ │ │ │ │ ├── control_schema.json │ │ │ │ │ ├── control_schema_add_column.json │ │ │ │ │ └── control_schema_rename.json │ │ │ │ └── source/ │ │ │ │ ├── source_part-01_schema.json │ │ │ │ ├── source_part-02_schema.json │ │ │ │ ├── source_part-03_schema.json │ │ │ │ ├── source_part-04_schema.json │ │ │ │ ├── source_part-05_schema.json │ │ │ │ └── source_part-06_schema.json │ │ │ ├── delta_load/ │ │ │ │ ├── batch_delta_disabled.json │ │ │ │ ├── batch_delta_disabled_rename.json │ │ │ │ ├── batch_delta_enabled.json │ │ │ │ ├── batch_init_disabled.json │ │ │ │ ├── batch_init_enabled.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── part-02.csv │ │ │ │ │ │ ├── part-03.csv │ │ │ │ │ │ ├── part-04.csv │ │ │ │ │ │ ├── part-05.csv │ │ │ │ │ │ └── part-06.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ ├── part-02.csv │ │ │ │ │ ├── part-03.csv │ │ │ │ │ ├── part-04.csv │ │ │ │ │ ├── part-05.csv │ │ │ │ │ └── part-06.csv │ │ │ │ └── schema/ │ │ │ │ ├── control/ │ │ │ │ │ ├── control_schema.json │ │ │ │ │ ├── control_schema_add_column.json │ │ │ │ │ └── control_schema_rename.json │ │ │ │ └── source/ │ │ │ │ ├── source_part-01_schema.json │ │ │ │ ├── source_part-02_schema.json │ │ │ │ ├── source_part-03_schema.json │ │ │ │ ├── source_part-04_schema.json │ │ │ │ ├── source_part-05_schema.json │ │ │ │ └── source_part-06_schema.json │ │ │ └── full_load/ │ │ │ ├── batch_init.json │ │ │ ├── batch_merge_disabled.json │ │ │ ├── batch_merge_enabled.json │ │ │ ├── batch_overwrite.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── part-02.csv │ │ │ │ └── source/ │ │ │ │ ├── part-01.csv │ │ │ │ └── part-02.csv │ │ │ └── schema/ │ │ │ ├── control/ │ │ │ │ ├── control_schema_merge_enabled.json │ │ │ │ └── control_schema_overwrite.json │ │ │ └── source/ │ │ │ ├── source_part-01_schema.json │ │ │ └── source_part-02_schema.json │ │ ├── sftp_reader/ │ │ │ └── data/ │ │ │ ├── file.csv │ │ │ ├── file1.csv │ │ │ ├── file2.csv │ │ │ ├── file3.json │ │ │ ├── file4.xml │ │ │ └── file5.txt │ │ ├── sharepoint/ │ │ │ ├── exceptions/ │ │ │ │ ├── acons/ │ │ │ │ │ ├── drive_exception.json │ │ │ │ │ ├── endpoint_exception.json │ │ │ │ │ ├── local_path_exception.json │ │ │ │ │ ├── site_exception.json │ │ │ │ │ └── streaming_exception.json │ │ │ │ └── schemas/ │ │ │ │ └── schema.json │ │ │ ├── reader/ │ │ │ │ ├── acons/ │ │ │ │ │ ├── read_file_name_and_file_pattern_conflict_should_fail.json │ │ │ │ │ ├── read_file_name_unsupported_extension_should_fail.json │ │ │ │ │ ├── read_folder_csv_archive_enabled_success.json │ │ │ │ │ ├── read_folder_csv_archive_success_subfolder_override_success.json │ │ │ │ │ ├── read_folder_csv_no_csv_files_should_fail.json │ │ │ │ │ ├── read_folder_csv_one_file_schema_mismatch_custom_error_subfolder_should_archive_error.json │ │ │ │ │ ├── read_folder_csv_one_file_schema_mismatch_should_archive_error.json │ │ │ │ │ ├── read_folder_csv_pattern_matches_no_files_should_fail.json │ │ │ │ │ ├── read_folder_csv_pattern_success.json │ │ │ │ │ ├── read_folder_csv_success.json │ │ │ │ │ ├── read_folder_path_does_not_exist_should_fail.json │ │ │ │ │ ├── read_folder_relative_path_looks_like_file_unsupported_extension_should_fail.json │ │ │ │ │ ├── read_single_csv_archive_default_enabled_success.json │ │ │ │ │ ├── read_single_csv_archive_enabled_success.json │ │ │ │ │ ├── read_single_csv_archive_success_subfolder_override_success.json │ │ │ │ │ ├── read_single_csv_download_error_should_archive_error.json │ │ │ │ │ ├── read_single_csv_empty_file_should_archive_error.json │ │ │ │ │ ├── read_single_csv_full_path_success.json │ │ │ │ │ ├── read_single_csv_full_path_with_file_name_should_fail.json │ │ │ │ │ ├── read_single_csv_full_path_with_file_pattern_should_fail.json │ │ │ │ │ ├── read_single_csv_full_path_with_file_type_should_fail.json │ │ │ │ │ ├── read_single_csv_spark_load_fails_should_archive_error.json │ │ │ │ │ ├── read_single_csv_success.json │ │ │ │ │ └── read_unsupported_file_type_should_fail.json │ │ │ │ ├── data/ │ │ │ │ │ ├── bad_schema.csv │ │ │ │ │ ├── other.csv │ │ │ │ │ ├── sample_1.csv │ │ │ │ │ └── sample_2.csv │ │ │ │ └── mocks/ │ │ │ │ ├── get_drive_id.json │ │ │ │ ├── get_file_metadata.json │ │ │ │ ├── get_site_id.json │ │ │ │ └── rename_file.json │ │ │ └── writer/ │ │ │ ├── acons/ │ │ │ │ └── write_to_local_success.json │ │ │ ├── data/ │ │ │ │ ├── file_control.csv │ │ │ │ └── file_source.csv │ │ │ ├── mocks/ │ │ │ │ ├── create_upload_session.json │ │ │ │ ├── get_drive_id.json │ │ │ │ └── get_site_id.json │ │ │ └── schemas/ │ │ │ └── schema.json │ │ ├── table_manager/ │ │ │ ├── compute_table_statistics/ │ │ │ │ ├── table_stats_complex_default_scenario1.json │ │ │ │ ├── table_stats_complex_default_scenario2.json │ │ │ │ ├── table_stats_complex_different_delimiter_scenario1.json │ │ │ │ ├── table_stats_complex_different_delimiter_scenario2.json │ │ │ │ └── table_stats_simple_split_scenario.json │ │ │ ├── create/ │ │ │ │ ├── acon_create_table.json │ │ │ │ ├── acon_create_table_complex_default_scenario.json │ │ │ │ ├── acon_create_table_complex_different_delimiter_scenario.json │ │ │ │ ├── acon_create_table_simple_split_scenario.json │ │ │ │ ├── acon_create_view.json │ │ │ │ ├── acon_create_view_complex_default_scenario.json │ │ │ │ ├── acon_create_view_complex_different_delimiter_scenario.json │ │ │ │ ├── acon_create_view_simple_split_scenario.json │ │ │ │ ├── table/ │ │ │ │ │ ├── test_table_complex_default_scenario.sql │ │ │ │ │ ├── test_table_complex_different_delimiter_scenario.sql │ │ │ │ │ └── test_table_simple_split_scenario.sql │ │ │ │ └── view/ │ │ │ │ ├── test_view_complex_default_scenario.sql │ │ │ │ ├── test_view_complex_different_delimiter_scenario.sql │ │ │ │ └── test_view_simple_split_scenario.sql │ │ │ ├── delete/ │ │ │ │ └── acon_delete_where_table_simple_split_scenario.json │ │ │ ├── describe/ │ │ │ │ └── acon_describe_simple_split_scenario.json │ │ │ ├── drop/ │ │ │ │ ├── acon_drop_table_simple_split_scenario.json │ │ │ │ └── acon_drop_view_simple_split_scenario.json │ │ │ ├── execute_sql/ │ │ │ │ ├── acon_execute_sql_complex_default_scenario.json │ │ │ │ ├── acon_execute_sql_complex_different_delimiter_scenario.json │ │ │ │ └── acon_execute_sql_simple_split_scenario.json │ │ │ ├── get_tbl_pk/ │ │ │ │ └── get_tbl_pk_simple_split_scenario.json │ │ │ ├── optimize/ │ │ │ │ ├── optimize_location.json │ │ │ │ ├── optimize_location_simple_split_scenario.json │ │ │ │ ├── optimize_table.json │ │ │ │ └── optimize_table_simple_split_scenario.json │ │ │ ├── show_tbl_properties/ │ │ │ │ └── show_tbl_properties_simple_split_scenario.json │ │ │ └── vacuum/ │ │ │ ├── acon_vacuum_location.json │ │ │ ├── acon_vacuum_location_simple_split_scenario.json │ │ │ └── acon_vacuum_table_simple_split_scenario.json │ │ ├── transformations/ │ │ │ ├── chain_transformations/ │ │ │ │ ├── acons/ │ │ │ │ │ ├── batch.json │ │ │ │ │ ├── streaming.json │ │ │ │ │ ├── streaming_batch.json │ │ │ │ │ ├── write_streaming_struct_data.json │ │ │ │ │ └── write_streaming_struct_data_fail.json │ │ │ │ ├── control/ │ │ │ │ │ ├── chain_control.csv │ │ │ │ │ └── struct_data.json │ │ │ │ ├── schema/ │ │ │ │ │ ├── customer_schema.json │ │ │ │ │ ├── sales_schema.json │ │ │ │ │ └── struct_data_schema.json │ │ │ │ └── source/ │ │ │ │ ├── customers.csv │ │ │ │ ├── sales_historical.csv │ │ │ │ ├── sales_new.csv │ │ │ │ └── struct_data.csv │ │ │ ├── column_creators/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.json │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming.json │ │ │ ├── column_reshapers/ │ │ │ │ ├── explode_arrays/ │ │ │ │ │ ├── batch.json │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ │ └── source/ │ │ │ │ │ │ └── part-01.json │ │ │ │ │ ├── source_schema.json │ │ │ │ │ └── streaming.json │ │ │ │ ├── flatten_and_explode_arrays_and_maps/ │ │ │ │ │ ├── batch.json │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── control/ │ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ │ └── source/ │ │ │ │ │ │ └── part-01.json │ │ │ │ │ ├── source_schema.json │ │ │ │ │ └── streaming.json │ │ │ │ └── flatten_schema/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.json │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming.json │ │ │ ├── data_maskers/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── drop_columns.csv │ │ │ │ │ │ └── hash_masking.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ ├── drop_columns.json │ │ │ │ ├── drop_columns_control_schema.json │ │ │ │ ├── hash_masking.json │ │ │ │ ├── hash_masking_control_schema.json │ │ │ │ └── source_schema.json │ │ │ ├── date_transformers/ │ │ │ │ ├── control_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming.json │ │ │ ├── drop_duplicate_rows/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── batch_distinct.json │ │ │ │ │ │ ├── batch_drop_duplicates.json │ │ │ │ │ │ ├── streaming_distinct.json │ │ │ │ │ │ └── streaming_drop_duplicates.json │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming.json │ │ │ ├── joiners/ │ │ │ │ ├── batch.json │ │ │ │ ├── control_scenario_1_and_2_schema.json │ │ │ │ ├── control_scenario_3_schema.json │ │ │ │ ├── customer_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── control_scenario_1_and_2.csv │ │ │ │ │ │ └── control_scenario_3.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── customer-part-01.csv │ │ │ │ │ ├── sales-part-01.csv │ │ │ │ │ └── sales-part-02.csv │ │ │ │ ├── sales_schema.json │ │ │ │ ├── streaming.json │ │ │ │ ├── streaming_foreachBatch.json │ │ │ │ ├── streaming_without_broadcast.json │ │ │ │ └── streaming_without_column_rename.json │ │ │ ├── multiple_transform/ │ │ │ │ ├── batch.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.json │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ └── source_schema.json │ │ │ ├── null_handlers/ │ │ │ │ ├── control_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── replace_nulls.csv │ │ │ │ │ │ └── replace_nulls_col_subset.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── part-01.csv │ │ │ │ ├── replace_nulls.json │ │ │ │ ├── replace_nulls_col_subset.json │ │ │ │ └── source_schema.json │ │ │ ├── optimizers/ │ │ │ │ └── data/ │ │ │ │ └── source/ │ │ │ │ └── part-01.csv │ │ │ ├── regex_transformers/ │ │ │ │ └── with_regex_value/ │ │ │ │ ├── batch.json │ │ │ │ ├── control_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── part-01.csv │ │ │ │ │ └── source/ │ │ │ │ │ └── WE_SO_SCL_202108111400000029.csv │ │ │ │ └── source_schema.json │ │ │ ├── unions/ │ │ │ │ ├── batch_union.json │ │ │ │ ├── batch_unionByName.json │ │ │ │ ├── batch_unionByName_diff_schema.json │ │ │ │ ├── batch_unionByName_diff_schema_error.json │ │ │ │ ├── batch_union_diff_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ ├── control_sales.csv │ │ │ │ │ │ ├── control_sales_shipment.csv │ │ │ │ │ │ ├── control_sales_shipment_streaming.csv │ │ │ │ │ │ ├── control_sales_shipment_streaming_foreachBatch.csv │ │ │ │ │ │ ├── control_sales_streaming.csv │ │ │ │ │ │ └── control_sales_streaming_foreachBatch.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── sales-historical-part-01.csv │ │ │ │ │ ├── sales-historical-part-02.csv │ │ │ │ │ ├── sales-new-part-01.csv │ │ │ │ │ ├── sales-new-part-02.csv │ │ │ │ │ ├── sales-shipment-part-01.csv │ │ │ │ │ └── sales-shipment-part-02.csv │ │ │ │ ├── sales_schema.json │ │ │ │ ├── sales_shipment_schema.json │ │ │ │ ├── streaming_union.json │ │ │ │ ├── streaming_unionByName_diff_schema.json │ │ │ │ ├── streaming_unionByName_diff_schema_foreachBatch.json │ │ │ │ └── streaming_union_foreachBatch.json │ │ │ └── watermarker/ │ │ │ ├── streaming_drop_duplicates/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── streaming_drop_duplicates.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming_drop_duplicates.json │ │ │ ├── streaming_drop_duplicates_overall_watermark/ │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── streaming_drop_duplicates_overall_watermark.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── part-01.csv │ │ │ │ │ └── part-02.csv │ │ │ │ ├── source_schema.json │ │ │ │ └── streaming_drop_duplicates_overall_watermark.json │ │ │ ├── streaming_inner_join/ │ │ │ │ ├── customer_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── streaming_inner_join.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── customer-part-01.csv │ │ │ │ │ ├── sales-part-01.csv │ │ │ │ │ └── sales-part-02.csv │ │ │ │ ├── sales_schema.json │ │ │ │ ├── streaming_inner_join.json │ │ │ │ └── streaming_inner_join_control_schema.json │ │ │ ├── streaming_left_outer_join/ │ │ │ │ ├── customer_schema.json │ │ │ │ ├── data/ │ │ │ │ │ ├── control/ │ │ │ │ │ │ └── streaming_left_outer_join.csv │ │ │ │ │ └── source/ │ │ │ │ │ ├── customer-part-01.csv │ │ │ │ │ ├── customer-part-02.csv │ │ │ │ │ ├── customer-part-03.csv │ │ │ │ │ ├── customer-part-04.csv │ │ │ │ │ ├── customer-part-05.csv │ │ │ │ │ ├── sales-part-01.csv │ │ │ │ │ ├── sales-part-02.csv │ │ │ │ │ ├── sales-part-03.csv │ │ │ │ │ ├── sales-part-04.csv │ │ │ │ │ └── sales-part-05.csv │ │ │ │ ├── sales_schema.json │ │ │ │ ├── streaming_left_outer_join.json │ │ │ │ └── streaming_left_outer_join_control_schema.json │ │ │ └── streaming_right_outer_join/ │ │ │ ├── customer_schema.json │ │ │ ├── data/ │ │ │ │ ├── control/ │ │ │ │ │ └── streaming_right_outer_join.csv │ │ │ │ └── source/ │ │ │ │ ├── customer-part-01.csv │ │ │ │ ├── sales-part-01.csv │ │ │ │ └── sales-part-02.csv │ │ │ ├── sales_schema.json │ │ │ ├── streaming_right_outer_join.json │ │ │ └── streaming_right_outer_join_control_schema.json │ │ └── writers/ │ │ ├── acons/ │ │ │ ├── write_batch_console.json │ │ │ ├── write_batch_dataframe.json │ │ │ ├── write_batch_files.json │ │ │ ├── write_batch_jdbc.json │ │ │ ├── write_batch_rest_api.json │ │ │ ├── write_batch_table.json │ │ │ ├── write_streaming_console.json │ │ │ ├── write_streaming_dataframe.json │ │ │ ├── write_streaming_df_with_checkpoint.json │ │ │ ├── write_streaming_files.json │ │ │ ├── write_streaming_foreachBatch_console.json │ │ │ ├── write_streaming_foreachBatch_dataframe.json │ │ │ ├── write_streaming_foreachBatch_df_with_checkpoint.json │ │ │ ├── write_streaming_foreachBatch_files.json │ │ │ ├── write_streaming_foreachBatch_jdbc.json │ │ │ ├── write_streaming_foreachBatch_table.json │ │ │ ├── write_streaming_multiple_dfs.json │ │ │ ├── write_streaming_rest_api.json │ │ │ └── write_streaming_table.json │ │ ├── control/ │ │ │ ├── writers_control.csv │ │ │ ├── writers_control_streaming_dataframe_1.csv │ │ │ ├── writers_control_streaming_dataframe_2.csv │ │ │ ├── writers_control_streaming_dataframe_foreachBatch_1.csv │ │ │ └── writers_control_streaming_dataframe_foreachBatch_2.csv │ │ ├── schema/ │ │ │ └── sales_schema.json │ │ └── source/ │ │ ├── sales_historical_1.csv │ │ ├── sales_historical_2.csv │ │ ├── sales_new_1.csv │ │ └── sales_new_2.csv │ └── unit/ │ ├── custom_configs/ │ │ └── custom_engine_config.yaml │ ├── heartbeat/ │ │ ├── heartbeat_acon_creation/ │ │ │ └── setup/ │ │ │ └── column_list/ │ │ │ ├── heartbeat_sensor_control_table.json │ │ │ └── sensor_table.json │ │ └── heartbeat_anchor_job/ │ │ └── setup/ │ │ └── column_list/ │ │ ├── heartbeat_sensor_control_table.json │ │ └── sensor_table.json │ └── sharepoint_reader/ │ └── data/ │ ├── sample_ok.csv │ └── sample_other_delim.csv ├── unit/ │ ├── __init__.py │ ├── test_acon_validation.py │ ├── test_custom_configs.py │ ├── test_databricks_utils.py │ ├── test_failure_notification_creation.py │ ├── test_heartbeat_acon_creation.py │ ├── test_heartbeat_anchor_job.py │ ├── test_log_filter_sensitive_data.py │ ├── test_notification_creation.py │ ├── test_notification_factory.py │ ├── test_prisma_dq_rule_id.py │ ├── test_prisma_function_definition.py │ ├── test_rest_api_functions.py │ ├── test_sensor.py │ ├── test_sensor_manager.py │ ├── test_sharepoint_csv_reader.py │ ├── test_spark_session.py │ └── test_version.py └── utils/ ├── __init__.py ├── dataframe_helpers.py ├── dq_rules_table_utils.py ├── exec_env_helpers.py ├── local_storage.py ├── mocks.py └── smtp_server.py