icsDataValidation 1.0.252__py3-none-any.whl → 1.0.271__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- icsDataValidation/output_parameters/result_params.py +1 -0
- icsDataValidation/services/comparison_service.py +19 -4
- icsDataValidation/services/database_services/snowflake_service.py +4 -0
- icsDataValidation/services/result_service.py +27 -5
- {icsDataValidation-1.0.252.dist-info → icsDataValidation-1.0.271.dist-info}/METADATA +1 -1
- {icsDataValidation-1.0.252.dist-info → icsDataValidation-1.0.271.dist-info}/RECORD +8 -8
- {icsDataValidation-1.0.252.dist-info → icsDataValidation-1.0.271.dist-info}/WHEEL +0 -0
- {icsDataValidation-1.0.252.dist-info → icsDataValidation-1.0.271.dist-info}/top_level.txt +0 -0
|
@@ -231,7 +231,7 @@ class ComparisonService(TestingToolParams):
|
|
|
231
231
|
|
|
232
232
|
else:
|
|
233
233
|
aggregation_differences_trgt_minus_src = {}
|
|
234
|
-
|
|
234
|
+
|
|
235
235
|
aggregations_equal = True
|
|
236
236
|
if src_aggregations_error or trgt_aggregations_error:
|
|
237
237
|
aggregations_equal = None
|
|
@@ -240,8 +240,22 @@ class ComparisonService(TestingToolParams):
|
|
|
240
240
|
if aggregation_diff and not aggregation_diff == 0.0:
|
|
241
241
|
aggregations_equal = False
|
|
242
242
|
break
|
|
243
|
+
aggregations_equal_tolerated = aggregations_equal
|
|
243
244
|
|
|
244
|
-
|
|
245
|
+
if 'DATATYPE_TOLERACE' not in self.migration_config['MAPPING'].keys():
|
|
246
|
+
aggregations_equal_tolerated = None
|
|
247
|
+
else:
|
|
248
|
+
numeric_cols = {i['COLUMN_NAME']:i['DATA_TYPE'] for i in src_column_datatypes if i['DATA_TYPE'] in self.migration_config['MAPPING']['DATATYPE_TOLERACE'].keys()}
|
|
249
|
+
for col in numeric_cols.keys():
|
|
250
|
+
if (
|
|
251
|
+
col in aggregation_differences_trgt_minus_src.keys()
|
|
252
|
+
and src_columns_aggregate[col][0]=='SUM'
|
|
253
|
+
and abs(aggregation_differences_trgt_minus_src[col]) <= self.migration_config["MAPPING"]["DATATYPE_TOLERACE"][numeric_cols[col]]
|
|
254
|
+
):
|
|
255
|
+
aggregations_equal_tolerated = True
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
# save results
|
|
245
259
|
self.result_params.src_column_datatypes = src_column_datatypes
|
|
246
260
|
self.result_params.src_columns_aggregate = src_columns_aggregate
|
|
247
261
|
self.result_params.trgt_column_datatypes = trgt_column_datatypes
|
|
@@ -249,10 +263,11 @@ class ComparisonService(TestingToolParams):
|
|
|
249
263
|
self.result_params.src_aggregations_error = src_aggregations_error
|
|
250
264
|
self.result_params.trgt_aggregations_error = trgt_aggregations_error
|
|
251
265
|
self.result_params.aggregation_differences_trgt_minus_src = aggregation_differences_trgt_minus_src
|
|
252
|
-
|
|
253
266
|
self.result_params.src_error_dict = src_error_dict
|
|
254
267
|
self.result_params.trgt_error_dict = trgt_error_dict
|
|
255
|
-
self.result_params.aggregations_equal = aggregations_equal
|
|
268
|
+
self.result_params.aggregations_equal = aggregations_equal
|
|
269
|
+
self.result_params.aggregations_equal_tolerated = aggregations_equal_tolerated
|
|
270
|
+
|
|
256
271
|
|
|
257
272
|
|
|
258
273
|
def group_by_comparison(self):
|
|
@@ -852,6 +852,7 @@ class SnowflakeService(object):
|
|
|
852
852
|
TRGT_ROW_COUNT, \
|
|
853
853
|
ALL_COUNT_NULLS_EQUAL, \
|
|
854
854
|
AGGREGATIONS_EQUAL, \
|
|
855
|
+
AGGREGATIONS_EQUAL_TOLERATED,\
|
|
855
856
|
SRC_ERROR_QUERY, \
|
|
856
857
|
TRGT_ERROR_QUERY, \
|
|
857
858
|
SRC_ERROR_MSG, \
|
|
@@ -906,6 +907,7 @@ class SnowflakeService(object):
|
|
|
906
907
|
F1.VALUE:TRGT_ROW_COUNT::INT AS TRGT_ROW_COUNT, \
|
|
907
908
|
F1.VALUE:ALL_COUNT_NULLS_EQUAL::BOOLEAN AS ALL_COUNT_NULLS_EQUAL, \
|
|
908
909
|
F1.VALUE:AGGREGATIONS_EQUAL::BOOLEAN AS AGGREGATIONS_EQUAL, \
|
|
910
|
+
F1.VALUE:AGGREGATIONS_EQUAL_TOLERATED::BOOLEAN AS AGGREGATIONS_EQUAL_TOLERATED,\
|
|
909
911
|
F1.VALUE:SRC_ERROR:QUERY::VARCHAR AS SRC_ERROR_QUERY, \
|
|
910
912
|
F1.VALUE:TRGT_ERROR:QUERY::VARCHAR AS TRGT_ERROR_QUERY, \
|
|
911
913
|
F1.VALUE:SRC_ERROR:ERROR::VARCHAR AS SRC_ERROR_MSG, \
|
|
@@ -986,6 +988,7 @@ class SnowflakeService(object):
|
|
|
986
988
|
AGGREGATION_RESULT_SRC,\
|
|
987
989
|
AGGREGATION_RESULT_TRGT,\
|
|
988
990
|
AGGREGATION_DIFFERENCE_TRGT_MINUS_SRC,\
|
|
991
|
+
AGGREGATION_EQUAL_TOLERATED,\
|
|
989
992
|
COUNT_NULLS_EQUAL,\
|
|
990
993
|
COUNT_NULLS_SRC,\
|
|
991
994
|
COUNT_NULLS_TRGT,\
|
|
@@ -1021,6 +1024,7 @@ class SnowflakeService(object):
|
|
|
1021
1024
|
F2.VALUE:AGGREGATION_RESULT_SRC::VARCHAR AS AGGREGATION_RESULT_SRC,\
|
|
1022
1025
|
F2.VALUE:AGGREGATION_RESULT_TRGT::VARCHAR AS AGGREGATION_RESULT_TRGT,\
|
|
1023
1026
|
F2.VALUE:AGGREGATION_DIFFERENCE_TRGT_MINUS_SRC::VARCHAR AS AGGREGATION_DIFFERENCE_TRGT_MINUS_SRC,\
|
|
1027
|
+
F2.VALUE:AGGREGATION_EQUAL_TOLERATED::BOOLEAN AS AGGREGATION_EQUAL_TOLERATED,\
|
|
1024
1028
|
F2.VALUE:COUNT_NULLS_EQUAL::BOOLEAN AS COUNT_NULLS_EQUAL,\
|
|
1025
1029
|
F2.VALUE:COUNT_NULLS_SRC::VARCHAR AS COUNT_NULLS_SRC,\
|
|
1026
1030
|
F2.VALUE:COUNT_NULLS_TRGT::VARCHAR AS COUNT_NULLS_TRGT,\
|
|
@@ -121,6 +121,7 @@ class ResultService(TestingToolParams):
|
|
|
121
121
|
aggregation_result_src = None
|
|
122
122
|
aggregation_result_trgt = None
|
|
123
123
|
aggregation_equal = None
|
|
124
|
+
aggregation_tolerated = None
|
|
124
125
|
aggregation_difference_trgt_minus_src = None
|
|
125
126
|
count_nulls_src = None
|
|
126
127
|
count_nulls_trgt = None
|
|
@@ -133,7 +134,7 @@ class ResultService(TestingToolParams):
|
|
|
133
134
|
else:
|
|
134
135
|
in_src = False
|
|
135
136
|
src_datatype = None
|
|
136
|
-
|
|
137
|
+
|
|
137
138
|
if column in result_params.trgt_columns_upper:
|
|
138
139
|
in_trgt = True
|
|
139
140
|
trgt_datatype = next(item["DATA_TYPE"] for item in result_params.trgt_column_datatypes if item["COLUMN_NAME"].upper() == column)
|
|
@@ -163,15 +164,34 @@ class ResultService(TestingToolParams):
|
|
|
163
164
|
if column in result_params.aggregation_differences_trgt_minus_src and result_params.aggregation_differences_trgt_minus_src[column] and not result_params.aggregation_differences_trgt_minus_src[column] == '0_0':
|
|
164
165
|
aggregation_equal = False
|
|
165
166
|
aggregation_difference_trgt_minus_src = result_params.aggregation_differences_trgt_minus_src[column]
|
|
167
|
+
|
|
166
168
|
elif aggregation_result_src is not None and aggregation_result_trgt is not None and aggregation_type_src and aggregation_type_trgt and aggregation_type_src == aggregation_type_trgt:
|
|
167
169
|
aggregation_equal = True
|
|
170
|
+
|
|
168
171
|
if column in result_params.aggregation_differences_trgt_minus_src and result_params.aggregation_differences_trgt_minus_src[column] == '0_0':
|
|
169
172
|
aggregation_difference_trgt_minus_src='0_0'
|
|
170
|
-
|
|
173
|
+
|
|
174
|
+
else:
|
|
171
175
|
aggregation_difference_trgt_minus_src='0'
|
|
172
|
-
|
|
176
|
+
|
|
173
177
|
if aggregation_type_src and aggregation_type_trgt and aggregation_type_src == aggregation_type_trgt:
|
|
174
178
|
aggregation_type = aggregation_type_src
|
|
179
|
+
|
|
180
|
+
'''
|
|
181
|
+
Comparison Based on Decimal Places
|
|
182
|
+
Logic is defined in migration_config.json
|
|
183
|
+
'''
|
|
184
|
+
aggregation_tolerated = aggregation_equal
|
|
185
|
+
|
|
186
|
+
if 'DATATYPE_TOLERACE' in TestingToolParams.migration_config['MAPPING'].keys():
|
|
187
|
+
if (
|
|
188
|
+
src_datatype in TestingToolParams.migration_config['MAPPING']['DATATYPE_TOLERACE'].keys()
|
|
189
|
+
and aggregation_type == 'SUM'
|
|
190
|
+
and abs(float(aggregation_difference_trgt_minus_src)) <= TestingToolParams.migration_config['MAPPING']['DATATYPE_TOLERACE'][src_datatype]
|
|
191
|
+
):
|
|
192
|
+
aggregation_tolerated = True
|
|
193
|
+
else :
|
|
194
|
+
aggregation_tolerated = None
|
|
175
195
|
|
|
176
196
|
if count_nulls_src is not None and count_nulls_trgt is not None and count_nulls_src==count_nulls_trgt:
|
|
177
197
|
count_nulls_equal = True
|
|
@@ -179,7 +199,7 @@ class ResultService(TestingToolParams):
|
|
|
179
199
|
elif count_nulls_src is not None and count_nulls_trgt is not None:
|
|
180
200
|
count_nulls_equal = False
|
|
181
201
|
count_nulls_difference_trgt_minus_src = int(count_nulls_trgt)-int(count_nulls_src)
|
|
182
|
-
|
|
202
|
+
|
|
183
203
|
datatype_equal = ResultService._compare_column_datatypes(src_datatype, trgt_datatype)
|
|
184
204
|
|
|
185
205
|
column_comparison_result = {
|
|
@@ -193,6 +213,7 @@ class ResultService(TestingToolParams):
|
|
|
193
213
|
"DATATYPE_EQUAL": datatype_equal,
|
|
194
214
|
"AGGREGATION_TYPE": aggregation_type,
|
|
195
215
|
"AGGREGATION_EQUAL": aggregation_equal,
|
|
216
|
+
"AGGREGATION_EQUAL_TOLERATED": aggregation_tolerated,
|
|
196
217
|
"AGGREGATION_RESULT_SRC": aggregation_result_src,
|
|
197
218
|
"AGGREGATION_RESULT_TRGT": aggregation_result_trgt,
|
|
198
219
|
"AGGREGATION_DIFFERENCE_TRGT_MINUS_SRC": aggregation_difference_trgt_minus_src,
|
|
@@ -238,7 +259,8 @@ class ResultService(TestingToolParams):
|
|
|
238
259
|
"SRC_ROW_COUNT": result_params.src_row_count,
|
|
239
260
|
"TRGT_ROW_COUNT": result_params.trgt_row_count,
|
|
240
261
|
"ALL_COUNT_NULLS_EQUAL": result_params.all_count_nulls_equal,
|
|
241
|
-
"AGGREGATIONS_EQUAL": result_params.aggregations_equal,
|
|
262
|
+
"AGGREGATIONS_EQUAL": result_params.aggregations_equal,
|
|
263
|
+
"AGGREGATIONS_EQUAL_TOLERATED":result_params.aggregations_equal_tolerated,
|
|
242
264
|
"SRC_ERROR": result_params.src_error_dict,
|
|
243
265
|
"TRGT_ERROR": result_params.trgt_error_dict,
|
|
244
266
|
"GROUP_BY_COLUMNS": result_params.object_group_by_columns,
|
|
@@ -15,11 +15,11 @@ icsDataValidation/core/object_comparison.py,sha256=yOY_k0KTGtRqCCLBlveTtVMm0J-oa
|
|
|
15
15
|
icsDataValidation/input_parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
icsDataValidation/input_parameters/testing_tool_params.py,sha256=6LkqEaH3vaeCn6d1b3jYIwlXAXIRclxLzcXdsmlkc9M,6731
|
|
17
17
|
icsDataValidation/output_parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
icsDataValidation/output_parameters/result_params.py,sha256=
|
|
18
|
+
icsDataValidation/output_parameters/result_params.py,sha256=fgWI7Qm2rCOD7qWidgMAtS-t0r1olAa6HQxxuQDVEA0,2877
|
|
19
19
|
icsDataValidation/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
icsDataValidation/services/comparison_service.py,sha256=
|
|
20
|
+
icsDataValidation/services/comparison_service.py,sha256=X-Qvkeqn1wuQ7qiqXYfLSSbiXBS-Moe3JzE2dStYSBo,43586
|
|
21
21
|
icsDataValidation/services/initialization_service.py,sha256=AHbJrq_LjMPFoeOJC2pi2ZZ1xkL8njSZn38psc3do60,6687
|
|
22
|
-
icsDataValidation/services/result_service.py,sha256=
|
|
22
|
+
icsDataValidation/services/result_service.py,sha256=RAp8b6cuCAmN9iwfcASTebg7Dx4ngo46EnTP8zSJC5o,27916
|
|
23
23
|
icsDataValidation/services/system_service.py,sha256=GSkSPNG5PlLWchwlYM5H-1FMtuCNwpXcyZZOUB_0stU,3228
|
|
24
24
|
icsDataValidation/services/testset_service.py,sha256=k1wRjI4Ltw9fylek9iW8N6DvnXn13wf6IJ703qQDMEc,15363
|
|
25
25
|
icsDataValidation/services/database_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -28,7 +28,7 @@ icsDataValidation/services/database_services/databricks_hive_metastore_service.p
|
|
|
28
28
|
icsDataValidation/services/database_services/databricks_unity_catalog_service.py,sha256=INA8rd3KW_jAplNagGa9tEON3dyOufcIAPOOdmc0Mrc,70259
|
|
29
29
|
icsDataValidation/services/database_services/exasol_service.py,sha256=7LYnRScO3DxBmuSN0HmTgsFc2el-Ii3A9jgGsXSJVU8,11074
|
|
30
30
|
icsDataValidation/services/database_services/oracle_service.py,sha256=60unwWlHm520ioFmz0y2K8ApwZrruf9iB0ojjQx0IWc,31523
|
|
31
|
-
icsDataValidation/services/database_services/snowflake_service.py,sha256=
|
|
31
|
+
icsDataValidation/services/database_services/snowflake_service.py,sha256=UWmjQZN4oX2ctH6uhE2oklXGHo66SK5UnQbFYFhzDuc,60630
|
|
32
32
|
icsDataValidation/services/database_services/teradata_service.py,sha256=Rf0xzcZGEbooq3r2Rfe2fCahTm2Xw4uznQa8vyWoyqM,40169
|
|
33
33
|
icsDataValidation/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
icsDataValidation/utils/file_util.py,sha256=ZTMB1sTnIIdffg9tEJRCFQQ5SG8Fksc5ie1PM4gHXG4,3432
|
|
@@ -36,7 +36,7 @@ icsDataValidation/utils/logger_util.py,sha256=xS48_FFMot_hyQgJY8DUeRTn5jpdvRt5QI
|
|
|
36
36
|
icsDataValidation/utils/pandas_util.py,sha256=D_g7Xw7BIS2E-1ZhJIvp62K5xuKjIkj-7TxH4HN_8SI,6505
|
|
37
37
|
icsDataValidation/utils/parallelization_util.py,sha256=6P0YcQLmunW_fHR4f5-kdncZbOlxxqKyk6ZAFQQEd2k,2088
|
|
38
38
|
icsDataValidation/utils/sql_util.py,sha256=0c-BInElSsRmXUedfLP_h9Wsiscv9aic7IIc5f15Uzo,396
|
|
39
|
-
icsDataValidation-1.0.
|
|
40
|
-
icsDataValidation-1.0.
|
|
41
|
-
icsDataValidation-1.0.
|
|
42
|
-
icsDataValidation-1.0.
|
|
39
|
+
icsDataValidation-1.0.271.dist-info/METADATA,sha256=1wnvWz7FIP94p-JVGTbz4z8oWbE9XmgpXurJSdNNCb8,720
|
|
40
|
+
icsDataValidation-1.0.271.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
41
|
+
icsDataValidation-1.0.271.dist-info/top_level.txt,sha256=YL9V1qreCXZeUCy-tzA4Vxv5-6mvXy5lsfAT0nQapfg,53
|
|
42
|
+
icsDataValidation-1.0.271.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|