dcs-sdk 1.6.8__tar.gz → 1.6.9__tar.gz
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.
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/PKG-INFO +12 -20
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/README.md +11 -19
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/__version__.py +1 -1
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/data_diff/data_differ.py +8 -2
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/utils.py +18 -18
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/pyproject.toml +1 -1
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/__main__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/abcs/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/abcs/compiler.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/abcs/database_types.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/config.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/_connect.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/bigquery.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/clickhouse.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/databricks.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/duckdb.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/mssql.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/mysql.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/oracle.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/postgresql.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/presto.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/redis.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/redshift.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/snowflake.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/sybase.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/trino.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/databases/vertica.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/diff_tables.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/errors.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/format.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/hashdiff_tables.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/info_tree.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/joindiff_tables.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/lexicographic_space.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/parse_time.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/py.typed +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/queries/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/queries/api.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/queries/ast_classes.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/queries/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/queries/extras.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/query_utils.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/schema.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/table_segment.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/thread_utils.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/utils.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/data_diff/version.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/__main__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/__version__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/cli/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/cli/cli.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/errors.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/configuration.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/dashboard.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/data_source_resource.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/metric.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/profile.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/common/models/widget.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/configuration/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/configuration/config_loader.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/configuration/configuration_parser.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/configuration/configuration_parser_arc.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/file_datasource.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/manager.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/search_datasource.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/datasource/sql_datasource.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/inspect.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/logger/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/logger/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/logger/default_logger.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/combined_metric.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/custom_metric.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/manager.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/numeric_metric.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/metric/reliability_metric.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/profiling/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/profiling/datasource_profiling.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/profiling/numeric_field_profiling.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/profiling/text_field_profiling.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/repository/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/repository/metric_repository.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/utils/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/utils/log.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/utils/tracking.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/utils/utils.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/base.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/completeness_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/custom_query_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/manager.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/numeric_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/reliability_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/uniqueness_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/core/validation/validity_validation.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/azure_blob.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/bigquery.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/databricks.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/db2.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/elasticsearch.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/mssql.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/mysql.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/opensearch.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/oracle.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/postgres.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/redshift.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/snowflake.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/spark_df.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/databases/sybase.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/storage/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/storage/local_file.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/utils/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/integrations/utils/utils.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/dashboard.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/models.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/fonts/DMSans-Bold.ttf +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/fonts/DMSans-Medium.ttf +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/fonts/DMSans-Regular.ttf +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/fonts/DMSans-SemiBold.ttf +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/images/docs.svg +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/images/github.svg +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/images/logo.svg +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/assets/images/slack.svg +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/index.js +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_core/report/static/index.js.LICENSE.txt +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/__main__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/cli/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/cli/cli.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/config/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/config/config_loader.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/data_diff/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/rules/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/rules/rules_mappping.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/rules/rules_repository.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/rules/schema_rules.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/serializer.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/__init__.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/base_provider.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/cosine_similarity_provider.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/jaccard_provider.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/levenshtein_distance_provider.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/table.py +0 -0
- {dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/themes.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dcs-sdk
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.9
|
|
4
4
|
Summary: SDK for DataChecks
|
|
5
5
|
Author: Waterdip Labs
|
|
6
6
|
Author-email: hello@waterdip.ai
|
|
@@ -86,12 +86,11 @@ Requires-Dist: vertica-python (>=1.4.0) ; extra == "vertica" or extra == "all-db
|
|
|
86
86
|
Description-Content-Type: text/markdown
|
|
87
87
|
|
|
88
88
|
<h1 align="center">
|
|
89
|
-
DCS SDK v1.6.
|
|
89
|
+
DCS SDK v1.6.9
|
|
90
90
|
</h1>
|
|
91
91
|
|
|
92
92
|
> SDK for DataChecks
|
|
93
93
|
|
|
94
|
-
|
|
95
94
|
## Installation
|
|
96
95
|
|
|
97
96
|
> Python version `>=3.10,<3.13`
|
|
@@ -108,24 +107,19 @@ $ pip install dcs-sdk[all-dbs]
|
|
|
108
107
|
|
|
109
108
|
| Database | Code Name | Supported |
|
|
110
109
|
| ----------------- | ------------ | --------- |
|
|
111
|
-
| PostgreSQL | `postgres` | ✅
|
|
112
|
-
| Snowflake | `snowflake` | ✅
|
|
113
|
-
| Trino | `trino` | ✅
|
|
114
|
-
| Databricks | `databricks` | ✅
|
|
115
|
-
| Oracle | `oracle` | ✅
|
|
116
|
-
| MSSQL | `mssql` | ✅
|
|
117
|
-
| MySQL | `mysql` | ✅
|
|
118
|
-
| SAP Sybase IQ/ASE | `sybase` | ✅
|
|
119
|
-
| File | `file` | ✅
|
|
120
|
-
| BigQuery | `bigquery` | ✅
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
110
|
+
| PostgreSQL | `postgres` | ✅ |
|
|
111
|
+
| Snowflake | `snowflake` | ✅ |
|
|
112
|
+
| Trino | `trino` | ✅ |
|
|
113
|
+
| Databricks | `databricks` | ✅ |
|
|
114
|
+
| Oracle | `oracle` | ✅ |
|
|
115
|
+
| MSSQL | `mssql` | ✅ |
|
|
116
|
+
| MySQL | `mysql` | ✅ |
|
|
117
|
+
| SAP Sybase IQ/ASE | `sybase` | ✅ |
|
|
118
|
+
| File | `file` | ✅ |
|
|
119
|
+
| BigQuery | `bigquery` | ✅ |
|
|
124
120
|
|
|
125
121
|
## Available Commands
|
|
126
122
|
|
|
127
|
-
|
|
128
|
-
|
|
129
123
|
| Option | Short Option | Required | Default | Description | Example |
|
|
130
124
|
| :-----------: | :----------: | :------: | :-------------: | :------------------------------------------------: | :------------------------------------------------------------------------------------------------------: |
|
|
131
125
|
| --config-path | -C | **Yes** | None | Specify the file path for the configuration | dcs-sdk run --config-path config.yaml --compare comp_name |
|
|
@@ -138,8 +132,6 @@ $ pip install dcs-sdk[all-dbs]
|
|
|
138
132
|
| --report-path | | No | dcs_report.html | Specify the file path for HTML report | dcs-sdk run --config-path config.yaml --compare comp_name --html-report --report-path table.html |
|
|
139
133
|
| --table | | No | False | Display Comparison in table format | dcs-sdk run --config-path config.yaml --compare comp_name --html-report --report-path table.html --table |
|
|
140
134
|
|
|
141
|
-
|
|
142
|
-
|
|
143
135
|
### Example Command [CLI]
|
|
144
136
|
|
|
145
137
|
```sh
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<h1 align="center">
|
|
2
|
-
DCS SDK v1.6.
|
|
2
|
+
DCS SDK v1.6.9
|
|
3
3
|
</h1>
|
|
4
4
|
|
|
5
5
|
> SDK for DataChecks
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
## Installation
|
|
9
8
|
|
|
10
9
|
> Python version `>=3.10,<3.13`
|
|
@@ -21,24 +20,19 @@ $ pip install dcs-sdk[all-dbs]
|
|
|
21
20
|
|
|
22
21
|
| Database | Code Name | Supported |
|
|
23
22
|
| ----------------- | ------------ | --------- |
|
|
24
|
-
| PostgreSQL | `postgres` | ✅
|
|
25
|
-
| Snowflake | `snowflake` | ✅
|
|
26
|
-
| Trino | `trino` | ✅
|
|
27
|
-
| Databricks | `databricks` | ✅
|
|
28
|
-
| Oracle | `oracle` | ✅
|
|
29
|
-
| MSSQL | `mssql` | ✅
|
|
30
|
-
| MySQL | `mysql` | ✅
|
|
31
|
-
| SAP Sybase IQ/ASE | `sybase` | ✅
|
|
32
|
-
| File | `file` | ✅
|
|
33
|
-
| BigQuery | `bigquery` | ✅
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
| PostgreSQL | `postgres` | ✅ |
|
|
24
|
+
| Snowflake | `snowflake` | ✅ |
|
|
25
|
+
| Trino | `trino` | ✅ |
|
|
26
|
+
| Databricks | `databricks` | ✅ |
|
|
27
|
+
| Oracle | `oracle` | ✅ |
|
|
28
|
+
| MSSQL | `mssql` | ✅ |
|
|
29
|
+
| MySQL | `mysql` | ✅ |
|
|
30
|
+
| SAP Sybase IQ/ASE | `sybase` | ✅ |
|
|
31
|
+
| File | `file` | ✅ |
|
|
32
|
+
| BigQuery | `bigquery` | ✅ |
|
|
37
33
|
|
|
38
34
|
## Available Commands
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
|
|
42
36
|
| Option | Short Option | Required | Default | Description | Example |
|
|
43
37
|
| :-----------: | :----------: | :------: | :-------------: | :------------------------------------------------: | :------------------------------------------------------------------------------------------------------: |
|
|
44
38
|
| --config-path | -C | **Yes** | None | Specify the file path for the configuration | dcs-sdk run --config-path config.yaml --compare comp_name |
|
|
@@ -51,8 +45,6 @@ $ pip install dcs-sdk[all-dbs]
|
|
|
51
45
|
| --report-path | | No | dcs_report.html | Specify the file path for HTML report | dcs-sdk run --config-path config.yaml --compare comp_name --html-report --report-path table.html |
|
|
52
46
|
| --table | | No | False | Display Comparison in table format | dcs-sdk run --config-path config.yaml --compare comp_name --html-report --report-path table.html --table |
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
|
|
56
48
|
### Example Command [CLI]
|
|
57
49
|
|
|
58
50
|
```sh
|
|
@@ -267,6 +267,10 @@ class DBTableDiffer:
|
|
|
267
267
|
) from e
|
|
268
268
|
|
|
269
269
|
except Exception as e:
|
|
270
|
+
self.cleanup_duckdb(
|
|
271
|
+
src=self.config.source.filepath,
|
|
272
|
+
target=self.config.target.filepath,
|
|
273
|
+
)
|
|
270
274
|
raise RuntimeError(f"process_duckdb failed for {'source' if is_source else 'target'}: {e}") from e
|
|
271
275
|
|
|
272
276
|
def _prepare_source_table(self) -> Optional[str]:
|
|
@@ -785,8 +789,10 @@ class DBTableDiffer:
|
|
|
785
789
|
with suppress(Exception):
|
|
786
790
|
db_connection.close()
|
|
787
791
|
|
|
788
|
-
|
|
789
|
-
|
|
792
|
+
if hasattr(self.table1, "database"):
|
|
793
|
+
safe_close(self.table1.database)
|
|
794
|
+
if hasattr(self.table2, "database"):
|
|
795
|
+
safe_close(self.table2.database)
|
|
790
796
|
|
|
791
797
|
if self.source_db:
|
|
792
798
|
self.source_db.drop_view_from_db(
|
|
@@ -233,21 +233,25 @@ def duck_db_load_pd_to_table(config: Comparison, is_source: bool = False, df: pd
|
|
|
233
233
|
table_name = config.source.table if is_source else config.target.table
|
|
234
234
|
|
|
235
235
|
conn = duckdb.connect(database=duck_db_file_name, read_only=False)
|
|
236
|
+
if is_source:
|
|
237
|
+
config.source.filepath = duck_db_file_name
|
|
238
|
+
else:
|
|
239
|
+
config.target.filepath = duck_db_file_name
|
|
236
240
|
|
|
237
241
|
conn.register("df_view", df)
|
|
238
242
|
|
|
239
243
|
conn.execute(
|
|
240
244
|
f"""
|
|
241
|
-
CREATE OR REPLACE TABLE {table_name} AS
|
|
245
|
+
CREATE OR REPLACE TABLE "{table_name}" AS
|
|
242
246
|
SELECT * FROM df_view;
|
|
243
247
|
"""
|
|
244
248
|
)
|
|
245
249
|
|
|
246
250
|
if pk_cols and len(pk_cols) > 0:
|
|
247
|
-
|
|
251
|
+
quoted_pk_cols = ", ".join([f'"{col}"' for col in pk_cols])
|
|
248
252
|
conn.execute(
|
|
249
253
|
f"""
|
|
250
|
-
CREATE INDEX idx_{table_name} ON {table_name} ({
|
|
254
|
+
CREATE INDEX "idx_{table_name}" ON "{table_name}" ({quoted_pk_cols});
|
|
251
255
|
"""
|
|
252
256
|
)
|
|
253
257
|
|
|
@@ -255,7 +259,7 @@ def duck_db_load_pd_to_table(config: Comparison, is_source: bool = False, df: pd
|
|
|
255
259
|
view_name = f"{table_name}_query"
|
|
256
260
|
conn.execute(
|
|
257
261
|
f"""
|
|
258
|
-
CREATE VIEW {view_name} AS {query};
|
|
262
|
+
CREATE VIEW "{view_name}" AS {query};
|
|
259
263
|
"""
|
|
260
264
|
)
|
|
261
265
|
|
|
@@ -266,10 +270,6 @@ def duck_db_load_pd_to_table(config: Comparison, is_source: bool = False, df: pd
|
|
|
266
270
|
logger.error(f"Error in loading CSV to DuckDB: {e}")
|
|
267
271
|
return False
|
|
268
272
|
|
|
269
|
-
if is_source:
|
|
270
|
-
config.source.filepath = duck_db_file_name
|
|
271
|
-
else:
|
|
272
|
-
config.target.filepath = duck_db_file_name
|
|
273
273
|
return True
|
|
274
274
|
|
|
275
275
|
|
|
@@ -299,6 +299,12 @@ def duck_db_load_csv_to_table(config: Comparison, path, is_source: bool = False)
|
|
|
299
299
|
try:
|
|
300
300
|
table_name = generate_table_name(csv_file)
|
|
301
301
|
conn = duckdb.connect(database=duck_db_file_name, read_only=False)
|
|
302
|
+
if is_source:
|
|
303
|
+
config.source.filepath = duck_db_file_name
|
|
304
|
+
config.source.table = table_name
|
|
305
|
+
else:
|
|
306
|
+
config.target.filepath = duck_db_file_name
|
|
307
|
+
config.target.table = table_name
|
|
302
308
|
conn.execute(
|
|
303
309
|
"""
|
|
304
310
|
CREATE OR REPLACE TABLE {} AS SELECT * FROM read_csv('{}',HEADER=True, UNION_BY_NAME=True, nullstr='NULL', all_varchar=True, IGNORE_ERRORS=TRUE);
|
|
@@ -308,14 +314,14 @@ def duck_db_load_csv_to_table(config: Comparison, path, is_source: bool = False)
|
|
|
308
314
|
)
|
|
309
315
|
|
|
310
316
|
if pk_cols and len(pk_cols) > 0:
|
|
311
|
-
|
|
317
|
+
quoted_pk_cols = ", ".join(['"{}"'.format(col) for col in pk_cols])
|
|
312
318
|
conn.execute(
|
|
313
319
|
"""
|
|
314
|
-
CREATE INDEX idx_{} ON {} ({});
|
|
320
|
+
CREATE INDEX "idx_{}" ON "{}" ({});
|
|
315
321
|
""".format(
|
|
316
322
|
table_name,
|
|
317
323
|
table_name,
|
|
318
|
-
|
|
324
|
+
quoted_pk_cols,
|
|
319
325
|
)
|
|
320
326
|
)
|
|
321
327
|
|
|
@@ -323,7 +329,7 @@ def duck_db_load_csv_to_table(config: Comparison, path, is_source: bool = False)
|
|
|
323
329
|
table_name = f"{table_name}_query"
|
|
324
330
|
conn.execute(
|
|
325
331
|
"""
|
|
326
|
-
CREATE VIEW {} AS {};
|
|
332
|
+
CREATE VIEW "{}" AS {};
|
|
327
333
|
""".format(
|
|
328
334
|
table_name, query
|
|
329
335
|
)
|
|
@@ -333,12 +339,6 @@ def duck_db_load_csv_to_table(config: Comparison, path, is_source: bool = False)
|
|
|
333
339
|
logger.error(f"Error in loading CSV to DuckDB: {e}")
|
|
334
340
|
return False
|
|
335
341
|
|
|
336
|
-
if is_source:
|
|
337
|
-
config.source.filepath = duck_db_file_name
|
|
338
|
-
config.source.table = table_name
|
|
339
|
-
else:
|
|
340
|
-
config.target.filepath = duck_db_file_name
|
|
341
|
-
config.target.table = table_name
|
|
342
342
|
return True
|
|
343
343
|
|
|
344
344
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/cosine_similarity_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
{dcs_sdk-1.6.8 → dcs_sdk-1.6.9}/dcs_sdk/sdk/utils/similarity_score/levenshtein_distance_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|