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.
@@ -49,6 +49,7 @@ class ResultParams():
49
49
  # aggregation-comparison (to save)
50
50
  aggregations_equal = None
51
51
  all_count_nulls_equal = None
52
+ aggregations_equal_tolerated = None
52
53
 
53
54
  # error handling (row-count-comparison and aggregation-comparison)
54
55
  src_error_dict = None
@@ -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
- # save results
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
- else:
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,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: icsDataValidation
3
- Version: 1.0.252
3
+ Version: 1.0.271
4
4
  Summary: ics data validation
5
5
  Home-page: https://initions.com/
6
6
  Author: initions
@@ -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=5Mk9L9zWaxUqcKwLZQ539lVUp0b0s-YUmSA3PBgbqfs,2833
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=0Ki7TvIiYL-CS_DqlO-aV83JNm4GoQNbG7JgnPbMoB4,42610
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=oYUAGkxjCDK0CaAxhJRBj8q1brs60aKLUJAV8a-MXF8,26834
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=Z9D-Y5B7hV3HpxU1ZpQDJNCu05TeB5ZXl5Fj36r3ptM,60165
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.252.dist-info/METADATA,sha256=sEdDCNO4CPlvGgJL5-CK8JF2LwwB3qEF_rypgsOkgwg,720
40
- icsDataValidation-1.0.252.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
41
- icsDataValidation-1.0.252.dist-info/top_level.txt,sha256=YL9V1qreCXZeUCy-tzA4Vxv5-6mvXy5lsfAT0nQapfg,53
42
- icsDataValidation-1.0.252.dist-info/RECORD,,
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,,