teradataml 17.20.0.7__py3-none-any.whl → 20.0.0.0__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.

Potentially problematic release.


This version of teradataml might be problematic. Click here for more details.

Files changed (1285) hide show
  1. teradataml/LICENSE-3RD-PARTY.pdf +0 -0
  2. teradataml/LICENSE.pdf +0 -0
  3. teradataml/README.md +1864 -1640
  4. teradataml/__init__.py +70 -60
  5. teradataml/_version.py +11 -11
  6. teradataml/analytics/Transformations.py +2995 -2995
  7. teradataml/analytics/__init__.py +81 -83
  8. teradataml/analytics/analytic_function_executor.py +2013 -2010
  9. teradataml/analytics/analytic_query_generator.py +958 -958
  10. teradataml/analytics/byom/H2OPredict.py +514 -514
  11. teradataml/analytics/byom/PMMLPredict.py +437 -437
  12. teradataml/analytics/byom/__init__.py +14 -14
  13. teradataml/analytics/json_parser/__init__.py +130 -130
  14. teradataml/analytics/json_parser/analytic_functions_argument.py +1707 -1707
  15. teradataml/analytics/json_parser/json_store.py +191 -191
  16. teradataml/analytics/json_parser/metadata.py +1637 -1637
  17. teradataml/analytics/json_parser/utils.py +804 -803
  18. teradataml/analytics/meta_class.py +196 -196
  19. teradataml/analytics/sqle/DecisionTreePredict.py +455 -470
  20. teradataml/analytics/sqle/NaiveBayesPredict.py +419 -428
  21. teradataml/analytics/sqle/__init__.py +97 -110
  22. teradataml/analytics/sqle/json/decisiontreepredict_sqle.json +78 -78
  23. teradataml/analytics/sqle/json/naivebayespredict_sqle.json +62 -62
  24. teradataml/analytics/table_operator/__init__.py +10 -10
  25. teradataml/analytics/uaf/__init__.py +63 -63
  26. teradataml/analytics/utils.py +693 -692
  27. teradataml/analytics/valib.py +1603 -1600
  28. teradataml/automl/__init__.py +1628 -0
  29. teradataml/automl/custom_json_utils.py +1270 -0
  30. teradataml/automl/data_preparation.py +993 -0
  31. teradataml/automl/data_transformation.py +727 -0
  32. teradataml/automl/feature_engineering.py +1648 -0
  33. teradataml/automl/feature_exploration.py +547 -0
  34. teradataml/automl/model_evaluation.py +163 -0
  35. teradataml/automl/model_training.py +887 -0
  36. teradataml/catalog/__init__.py +1 -3
  37. teradataml/catalog/byom.py +1759 -1716
  38. teradataml/catalog/function_argument_mapper.py +859 -861
  39. teradataml/catalog/model_cataloging_utils.py +491 -1510
  40. teradataml/clients/pkce_client.py +481 -481
  41. teradataml/common/aed_utils.py +6 -2
  42. teradataml/common/bulk_exposed_utils.py +111 -111
  43. teradataml/common/constants.py +1433 -1441
  44. teradataml/common/deprecations.py +160 -0
  45. teradataml/common/exceptions.py +73 -73
  46. teradataml/common/formula.py +742 -742
  47. teradataml/common/garbagecollector.py +592 -635
  48. teradataml/common/messagecodes.py +422 -431
  49. teradataml/common/messages.py +227 -231
  50. teradataml/common/sqlbundle.py +693 -693
  51. teradataml/common/td_coltype_code_to_tdtype.py +48 -48
  52. teradataml/common/utils.py +2418 -2500
  53. teradataml/common/warnings.py +25 -25
  54. teradataml/common/wrapper_utils.py +1 -110
  55. teradataml/config/dummy_file1.cfg +4 -4
  56. teradataml/config/dummy_file2.cfg +2 -2
  57. teradataml/config/sqlengine_alias_definitions_v1.0 +13 -13
  58. teradataml/config/sqlengine_alias_definitions_v1.1 +19 -19
  59. teradataml/config/sqlengine_alias_definitions_v1.3 +18 -18
  60. teradataml/context/aed_context.py +217 -217
  61. teradataml/context/context.py +1071 -999
  62. teradataml/data/A_loan.csv +19 -19
  63. teradataml/data/BINARY_REALS_LEFT.csv +11 -11
  64. teradataml/data/BINARY_REALS_RIGHT.csv +11 -11
  65. teradataml/data/B_loan.csv +49 -49
  66. teradataml/data/BuoyData2.csv +17 -17
  67. teradataml/data/CONVOLVE2_COMPLEX_LEFT.csv +5 -5
  68. teradataml/data/CONVOLVE2_COMPLEX_RIGHT.csv +5 -5
  69. teradataml/data/Convolve2RealsLeft.csv +5 -5
  70. teradataml/data/Convolve2RealsRight.csv +5 -5
  71. teradataml/data/Convolve2ValidLeft.csv +11 -11
  72. teradataml/data/Convolve2ValidRight.csv +11 -11
  73. teradataml/data/DFFTConv_Real_8_8.csv +65 -65
  74. teradataml/data/Orders1_12mf.csv +24 -24
  75. teradataml/data/Pi_loan.csv +7 -7
  76. teradataml/data/SMOOTHED_DATA.csv +7 -7
  77. teradataml/data/TestDFFT8.csv +9 -9
  78. teradataml/data/TestRiver.csv +109 -109
  79. teradataml/data/Traindata.csv +28 -28
  80. teradataml/data/acf.csv +17 -17
  81. teradataml/data/adaboost_example.json +34 -34
  82. teradataml/data/adaboostpredict_example.json +24 -24
  83. teradataml/data/additional_table.csv +10 -10
  84. teradataml/data/admissions_test.csv +21 -21
  85. teradataml/data/admissions_train.csv +41 -41
  86. teradataml/data/admissions_train_nulls.csv +41 -41
  87. teradataml/data/ageandheight.csv +13 -13
  88. teradataml/data/ageandpressure.csv +31 -31
  89. teradataml/data/antiselect_example.json +36 -36
  90. teradataml/data/antiselect_input.csv +8 -8
  91. teradataml/data/antiselect_input_mixed_case.csv +8 -8
  92. teradataml/data/applicant_external.csv +6 -6
  93. teradataml/data/applicant_reference.csv +6 -6
  94. teradataml/data/arima_example.json +9 -9
  95. teradataml/data/assortedtext_input.csv +8 -8
  96. teradataml/data/attribution_example.json +33 -33
  97. teradataml/data/attribution_sample_table.csv +27 -27
  98. teradataml/data/attribution_sample_table1.csv +6 -6
  99. teradataml/data/attribution_sample_table2.csv +11 -11
  100. teradataml/data/bank_churn.csv +10001 -0
  101. teradataml/data/bank_web_clicks1.csv +42 -42
  102. teradataml/data/bank_web_clicks2.csv +91 -91
  103. teradataml/data/bank_web_url.csv +85 -85
  104. teradataml/data/barrier.csv +2 -2
  105. teradataml/data/barrier_new.csv +3 -3
  106. teradataml/data/betweenness_example.json +13 -13
  107. teradataml/data/bin_breaks.csv +8 -8
  108. teradataml/data/bin_fit_ip.csv +3 -3
  109. teradataml/data/binary_complex_left.csv +11 -11
  110. teradataml/data/binary_complex_right.csv +11 -11
  111. teradataml/data/binary_matrix_complex_left.csv +21 -21
  112. teradataml/data/binary_matrix_complex_right.csv +21 -21
  113. teradataml/data/binary_matrix_real_left.csv +21 -21
  114. teradataml/data/binary_matrix_real_right.csv +21 -21
  115. teradataml/data/blood2ageandweight.csv +26 -26
  116. teradataml/data/bmi.csv +501 -0
  117. teradataml/data/boston.csv +507 -507
  118. teradataml/data/buoydata_mix.csv +11 -11
  119. teradataml/data/burst_data.csv +5 -5
  120. teradataml/data/burst_example.json +20 -20
  121. teradataml/data/byom_example.json +17 -17
  122. teradataml/data/bytes_table.csv +3 -3
  123. teradataml/data/cal_housing_ex_raw.csv +70 -70
  124. teradataml/data/callers.csv +7 -7
  125. teradataml/data/calls.csv +10 -10
  126. teradataml/data/cars_hist.csv +33 -33
  127. teradataml/data/cat_table.csv +24 -24
  128. teradataml/data/ccm_example.json +31 -31
  129. teradataml/data/ccm_input.csv +91 -91
  130. teradataml/data/ccm_input2.csv +13 -13
  131. teradataml/data/ccmexample.csv +101 -101
  132. teradataml/data/ccmprepare_example.json +8 -8
  133. teradataml/data/ccmprepare_input.csv +91 -91
  134. teradataml/data/cfilter_example.json +12 -12
  135. teradataml/data/changepointdetection_example.json +18 -18
  136. teradataml/data/changepointdetectionrt_example.json +8 -8
  137. teradataml/data/chi_sq.csv +2 -2
  138. teradataml/data/churn_data.csv +14 -14
  139. teradataml/data/churn_emission.csv +35 -35
  140. teradataml/data/churn_initial.csv +3 -3
  141. teradataml/data/churn_state_transition.csv +5 -5
  142. teradataml/data/citedges_2.csv +745 -745
  143. teradataml/data/citvertices_2.csv +1210 -1210
  144. teradataml/data/clicks2.csv +16 -16
  145. teradataml/data/clickstream.csv +12 -12
  146. teradataml/data/clickstream1.csv +11 -11
  147. teradataml/data/closeness_example.json +15 -15
  148. teradataml/data/complaints.csv +21 -21
  149. teradataml/data/complaints_mini.csv +3 -3
  150. teradataml/data/complaints_testtoken.csv +224 -224
  151. teradataml/data/complaints_tokens_test.csv +353 -353
  152. teradataml/data/complaints_traintoken.csv +472 -472
  153. teradataml/data/computers_category.csv +1001 -1001
  154. teradataml/data/computers_test1.csv +1252 -1252
  155. teradataml/data/computers_train1.csv +5009 -5009
  156. teradataml/data/computers_train1_clustered.csv +5009 -5009
  157. teradataml/data/confusionmatrix_example.json +9 -9
  158. teradataml/data/conversion_event_table.csv +3 -3
  159. teradataml/data/corr_input.csv +17 -17
  160. teradataml/data/correlation_example.json +11 -11
  161. teradataml/data/coxhazardratio_example.json +39 -39
  162. teradataml/data/coxph_example.json +15 -15
  163. teradataml/data/coxsurvival_example.json +28 -28
  164. teradataml/data/cpt.csv +41 -41
  165. teradataml/data/credit_ex_merged.csv +45 -45
  166. teradataml/data/customer_loyalty.csv +301 -301
  167. teradataml/data/customer_loyalty_newseq.csv +31 -31
  168. teradataml/data/dataframe_example.json +146 -146
  169. teradataml/data/decisionforest_example.json +37 -37
  170. teradataml/data/decisionforestpredict_example.json +38 -38
  171. teradataml/data/decisiontree_example.json +21 -21
  172. teradataml/data/decisiontreepredict_example.json +45 -45
  173. teradataml/data/dfft2_size4_real.csv +17 -17
  174. teradataml/data/dfft2_test_matrix16.csv +17 -17
  175. teradataml/data/dfft2conv_real_4_4.csv +65 -65
  176. teradataml/data/diabetes.csv +443 -443
  177. teradataml/data/diabetes_test.csv +89 -89
  178. teradataml/data/dict_table.csv +5 -5
  179. teradataml/data/docperterm_table.csv +4 -4
  180. teradataml/data/docs/__init__.py +1 -1
  181. teradataml/data/docs/byom/docs/DataRobotPredict.py +180 -180
  182. teradataml/data/docs/byom/docs/DataikuPredict.py +177 -177
  183. teradataml/data/docs/byom/docs/H2OPredict.py +324 -324
  184. teradataml/data/docs/byom/docs/ONNXPredict.py +283 -283
  185. teradataml/data/docs/byom/docs/PMMLPredict.py +277 -277
  186. teradataml/data/docs/sqle/docs_17_10/Antiselect.py +82 -82
  187. teradataml/data/docs/sqle/docs_17_10/Attribution.py +199 -199
  188. teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +171 -171
  189. teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +131 -130
  190. teradataml/data/docs/sqle/docs_17_10/CategoricalSummary.py +86 -86
  191. teradataml/data/docs/sqle/docs_17_10/ChiSq.py +90 -90
  192. teradataml/data/docs/sqle/docs_17_10/ColumnSummary.py +85 -85
  193. teradataml/data/docs/sqle/docs_17_10/ConvertTo.py +95 -95
  194. teradataml/data/docs/sqle/docs_17_10/DecisionForestPredict.py +139 -139
  195. teradataml/data/docs/sqle/docs_17_10/DecisionTreePredict.py +151 -151
  196. teradataml/data/docs/sqle/docs_17_10/FTest.py +160 -160
  197. teradataml/data/docs/sqle/docs_17_10/FillRowId.py +82 -82
  198. teradataml/data/docs/sqle/docs_17_10/Fit.py +87 -87
  199. teradataml/data/docs/sqle/docs_17_10/GLMPredict.py +144 -144
  200. teradataml/data/docs/sqle/docs_17_10/GetRowsWithMissingValues.py +84 -84
  201. teradataml/data/docs/sqle/docs_17_10/GetRowsWithoutMissingValues.py +81 -81
  202. teradataml/data/docs/sqle/docs_17_10/Histogram.py +164 -164
  203. teradataml/data/docs/sqle/docs_17_10/MovingAverage.py +134 -134
  204. teradataml/data/docs/sqle/docs_17_10/NGramSplitter.py +208 -208
  205. teradataml/data/docs/sqle/docs_17_10/NPath.py +265 -265
  206. teradataml/data/docs/sqle/docs_17_10/NaiveBayesPredict.py +116 -116
  207. teradataml/data/docs/sqle/docs_17_10/NaiveBayesTextClassifierPredict.py +176 -176
  208. teradataml/data/docs/sqle/docs_17_10/NumApply.py +147 -147
  209. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingFit.py +132 -132
  210. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +103 -103
  211. teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
  212. teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +101 -101
  213. teradataml/data/docs/sqle/docs_17_10/Pack.py +128 -128
  214. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesFit.py +111 -111
  215. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +102 -102
  216. teradataml/data/docs/sqle/docs_17_10/QQNorm.py +104 -104
  217. teradataml/data/docs/sqle/docs_17_10/RoundColumns.py +109 -109
  218. teradataml/data/docs/sqle/docs_17_10/RowNormalizeFit.py +117 -117
  219. teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +99 -98
  220. teradataml/data/docs/sqle/docs_17_10/SVMSparsePredict.py +152 -152
  221. teradataml/data/docs/sqle/docs_17_10/ScaleFit.py +197 -197
  222. teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +99 -98
  223. teradataml/data/docs/sqle/docs_17_10/Sessionize.py +113 -113
  224. teradataml/data/docs/sqle/docs_17_10/SimpleImputeFit.py +116 -116
  225. teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +98 -98
  226. teradataml/data/docs/sqle/docs_17_10/StrApply.py +187 -187
  227. teradataml/data/docs/sqle/docs_17_10/StringSimilarity.py +145 -145
  228. teradataml/data/docs/sqle/docs_17_10/Transform.py +105 -104
  229. teradataml/data/docs/sqle/docs_17_10/UnivariateStatistics.py +141 -141
  230. teradataml/data/docs/sqle/docs_17_10/Unpack.py +214 -214
  231. teradataml/data/docs/sqle/docs_17_10/WhichMax.py +83 -83
  232. teradataml/data/docs/sqle/docs_17_10/WhichMin.py +83 -83
  233. teradataml/data/docs/sqle/docs_17_10/ZTest.py +155 -155
  234. teradataml/data/docs/sqle/docs_17_20/ANOVA.py +126 -126
  235. teradataml/data/docs/sqle/docs_17_20/Antiselect.py +82 -82
  236. teradataml/data/docs/sqle/docs_17_20/Attribution.py +200 -200
  237. teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +171 -171
  238. teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +139 -138
  239. teradataml/data/docs/sqle/docs_17_20/CategoricalSummary.py +86 -86
  240. teradataml/data/docs/sqle/docs_17_20/ChiSq.py +90 -90
  241. teradataml/data/docs/sqle/docs_17_20/ClassificationEvaluator.py +166 -166
  242. teradataml/data/docs/sqle/docs_17_20/ColumnSummary.py +85 -85
  243. teradataml/data/docs/sqle/docs_17_20/ColumnTransformer.py +243 -243
  244. teradataml/data/docs/sqle/docs_17_20/ConvertTo.py +113 -113
  245. teradataml/data/docs/sqle/docs_17_20/DecisionForest.py +279 -279
  246. teradataml/data/docs/sqle/docs_17_20/DecisionForestPredict.py +144 -144
  247. teradataml/data/docs/sqle/docs_17_20/DecisionTreePredict.py +135 -135
  248. teradataml/data/docs/sqle/docs_17_20/FTest.py +160 -160
  249. teradataml/data/docs/sqle/docs_17_20/FillRowId.py +82 -82
  250. teradataml/data/docs/sqle/docs_17_20/Fit.py +87 -87
  251. teradataml/data/docs/sqle/docs_17_20/GLM.py +380 -380
  252. teradataml/data/docs/sqle/docs_17_20/GLMPerSegment.py +414 -414
  253. teradataml/data/docs/sqle/docs_17_20/GLMPredict.py +144 -144
  254. teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +233 -234
  255. teradataml/data/docs/sqle/docs_17_20/GetFutileColumns.py +123 -123
  256. teradataml/data/docs/sqle/docs_17_20/GetRowsWithMissingValues.py +108 -108
  257. teradataml/data/docs/sqle/docs_17_20/GetRowsWithoutMissingValues.py +105 -105
  258. teradataml/data/docs/sqle/docs_17_20/Histogram.py +223 -223
  259. teradataml/data/docs/sqle/docs_17_20/KMeans.py +204 -204
  260. teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +144 -143
  261. teradataml/data/docs/sqle/docs_17_20/KNN.py +214 -214
  262. teradataml/data/docs/sqle/docs_17_20/MovingAverage.py +134 -134
  263. teradataml/data/docs/sqle/docs_17_20/NGramSplitter.py +208 -208
  264. teradataml/data/docs/sqle/docs_17_20/NPath.py +265 -265
  265. teradataml/data/docs/sqle/docs_17_20/NaiveBayesPredict.py +116 -116
  266. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +177 -176
  267. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +126 -126
  268. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +117 -117
  269. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +112 -112
  270. teradataml/data/docs/sqle/docs_17_20/NumApply.py +147 -147
  271. teradataml/data/docs/sqle/docs_17_20/OneClassSVM.py +307 -307
  272. teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +185 -184
  273. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingFit.py +225 -225
  274. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +115 -115
  275. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingFit.py +219 -219
  276. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingTransform.py +127 -127
  277. teradataml/data/docs/sqle/docs_17_20/OutlierFilterFit.py +189 -189
  278. teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +117 -112
  279. teradataml/data/docs/sqle/docs_17_20/Pack.py +128 -128
  280. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesFit.py +111 -111
  281. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +112 -111
  282. teradataml/data/docs/sqle/docs_17_20/QQNorm.py +104 -104
  283. teradataml/data/docs/sqle/docs_17_20/ROC.py +163 -163
  284. teradataml/data/docs/sqle/docs_17_20/RandomProjectionFit.py +154 -154
  285. teradataml/data/docs/sqle/docs_17_20/RandomProjectionMinComponents.py +106 -106
  286. teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +120 -120
  287. teradataml/data/docs/sqle/docs_17_20/RegressionEvaluator.py +211 -211
  288. teradataml/data/docs/sqle/docs_17_20/RoundColumns.py +108 -108
  289. teradataml/data/docs/sqle/docs_17_20/RowNormalizeFit.py +117 -117
  290. teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +111 -110
  291. teradataml/data/docs/sqle/docs_17_20/SVM.py +413 -413
  292. teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +202 -202
  293. teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
  294. teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +197 -197
  295. teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +110 -109
  296. teradataml/data/docs/sqle/docs_17_20/SentimentExtractor.py +206 -206
  297. teradataml/data/docs/sqle/docs_17_20/Sessionize.py +113 -113
  298. teradataml/data/docs/sqle/docs_17_20/Silhouette.py +152 -152
  299. teradataml/data/docs/sqle/docs_17_20/SimpleImputeFit.py +116 -116
  300. teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +109 -108
  301. teradataml/data/docs/sqle/docs_17_20/StrApply.py +187 -187
  302. teradataml/data/docs/sqle/docs_17_20/StringSimilarity.py +145 -145
  303. teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +207 -207
  304. teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +171 -171
  305. teradataml/data/docs/sqle/docs_17_20/TargetEncodingFit.py +266 -266
  306. teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +141 -140
  307. teradataml/data/docs/sqle/docs_17_20/TextParser.py +172 -172
  308. teradataml/data/docs/sqle/docs_17_20/TrainTestSplit.py +159 -159
  309. teradataml/data/docs/sqle/docs_17_20/Transform.py +123 -123
  310. teradataml/data/docs/sqle/docs_17_20/UnivariateStatistics.py +141 -141
  311. teradataml/data/docs/sqle/docs_17_20/Unpack.py +214 -214
  312. teradataml/data/docs/sqle/docs_17_20/VectorDistance.py +168 -168
  313. teradataml/data/docs/sqle/docs_17_20/WhichMax.py +83 -83
  314. teradataml/data/docs/sqle/docs_17_20/WhichMin.py +83 -83
  315. teradataml/data/docs/sqle/docs_17_20/WordEmbeddings.py +236 -236
  316. teradataml/data/docs/sqle/docs_17_20/XGBoost.py +353 -353
  317. teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +275 -275
  318. teradataml/data/docs/sqle/docs_17_20/ZTest.py +155 -155
  319. teradataml/data/docs/tableoperator/docs_17_00/ReadNOS.py +429 -429
  320. teradataml/data/docs/tableoperator/docs_17_05/ReadNOS.py +429 -429
  321. teradataml/data/docs/tableoperator/docs_17_05/WriteNOS.py +347 -347
  322. teradataml/data/docs/tableoperator/docs_17_10/ReadNOS.py +428 -428
  323. teradataml/data/docs/tableoperator/docs_17_10/WriteNOS.py +347 -347
  324. teradataml/data/docs/tableoperator/docs_17_20/ReadNOS.py +439 -439
  325. teradataml/data/docs/tableoperator/docs_17_20/WriteNOS.py +386 -386
  326. teradataml/data/docs/uaf/docs_17_20/ACF.py +195 -195
  327. teradataml/data/docs/uaf/docs_17_20/ArimaEstimate.py +369 -369
  328. teradataml/data/docs/uaf/docs_17_20/ArimaForecast.py +142 -142
  329. teradataml/data/docs/uaf/docs_17_20/ArimaValidate.py +159 -159
  330. teradataml/data/docs/uaf/docs_17_20/BinaryMatrixOp.py +247 -247
  331. teradataml/data/docs/uaf/docs_17_20/BinarySeriesOp.py +252 -252
  332. teradataml/data/docs/uaf/docs_17_20/BreuschGodfrey.py +177 -177
  333. teradataml/data/docs/uaf/docs_17_20/BreuschPaganGodfrey.py +174 -174
  334. teradataml/data/docs/uaf/docs_17_20/Convolve.py +226 -226
  335. teradataml/data/docs/uaf/docs_17_20/Convolve2.py +214 -214
  336. teradataml/data/docs/uaf/docs_17_20/CumulPeriodogram.py +183 -183
  337. teradataml/data/docs/uaf/docs_17_20/DFFT.py +203 -203
  338. teradataml/data/docs/uaf/docs_17_20/DFFT2.py +216 -216
  339. teradataml/data/docs/uaf/docs_17_20/DFFT2Conv.py +215 -215
  340. teradataml/data/docs/uaf/docs_17_20/DFFTConv.py +191 -191
  341. teradataml/data/docs/uaf/docs_17_20/DTW.py +179 -179
  342. teradataml/data/docs/uaf/docs_17_20/DickeyFuller.py +144 -144
  343. teradataml/data/docs/uaf/docs_17_20/DurbinWatson.py +183 -183
  344. teradataml/data/docs/uaf/docs_17_20/ExtractResults.py +184 -184
  345. teradataml/data/docs/uaf/docs_17_20/FitMetrics.py +172 -172
  346. teradataml/data/docs/uaf/docs_17_20/GenseriesFormula.py +205 -205
  347. teradataml/data/docs/uaf/docs_17_20/GenseriesSinusoids.py +142 -142
  348. teradataml/data/docs/uaf/docs_17_20/HoltWintersForecaster.py +258 -258
  349. teradataml/data/docs/uaf/docs_17_20/IDFFT.py +164 -164
  350. teradataml/data/docs/uaf/docs_17_20/IDFFT2.py +198 -198
  351. teradataml/data/docs/uaf/docs_17_20/InputValidator.py +120 -120
  352. teradataml/data/docs/uaf/docs_17_20/LineSpec.py +155 -155
  353. teradataml/data/docs/uaf/docs_17_20/LinearRegr.py +214 -214
  354. teradataml/data/docs/uaf/docs_17_20/MAMean.py +173 -173
  355. teradataml/data/docs/uaf/docs_17_20/MInfo.py +133 -133
  356. teradataml/data/docs/uaf/docs_17_20/MatrixMultiply.py +135 -135
  357. teradataml/data/docs/uaf/docs_17_20/MultivarRegr.py +190 -190
  358. teradataml/data/docs/uaf/docs_17_20/PACF.py +158 -158
  359. teradataml/data/docs/uaf/docs_17_20/Portman.py +216 -216
  360. teradataml/data/docs/uaf/docs_17_20/PowerTransform.py +154 -154
  361. teradataml/data/docs/uaf/docs_17_20/Resample.py +228 -228
  362. teradataml/data/docs/uaf/docs_17_20/SInfo.py +122 -122
  363. teradataml/data/docs/uaf/docs_17_20/SeasonalNormalize.py +165 -165
  364. teradataml/data/docs/uaf/docs_17_20/SelectionCriteria.py +173 -173
  365. teradataml/data/docs/uaf/docs_17_20/SignifPeriodicities.py +170 -170
  366. teradataml/data/docs/uaf/docs_17_20/SignifResidmean.py +163 -163
  367. teradataml/data/docs/uaf/docs_17_20/SimpleExp.py +179 -179
  368. teradataml/data/docs/uaf/docs_17_20/Smoothma.py +207 -207
  369. teradataml/data/docs/uaf/docs_17_20/TrackingOp.py +150 -150
  370. teradataml/data/docs/uaf/docs_17_20/UNDIFF.py +171 -171
  371. teradataml/data/docs/uaf/docs_17_20/Unnormalize.py +201 -201
  372. teradataml/data/docs/uaf/docs_17_20/WhitesGeneral.py +169 -169
  373. teradataml/data/dtw_example.json +17 -17
  374. teradataml/data/dtw_t1.csv +11 -11
  375. teradataml/data/dtw_t2.csv +4 -4
  376. teradataml/data/dwt2d_example.json +15 -15
  377. teradataml/data/dwt_example.json +14 -14
  378. teradataml/data/dwt_filter_dim.csv +5 -5
  379. teradataml/data/emission.csv +9 -9
  380. teradataml/data/emp_table_by_dept.csv +19 -19
  381. teradataml/data/employee_info.csv +4 -4
  382. teradataml/data/employee_table.csv +6 -6
  383. teradataml/data/excluding_event_table.csv +2 -2
  384. teradataml/data/finance_data.csv +6 -6
  385. teradataml/data/finance_data2.csv +61 -61
  386. teradataml/data/finance_data3.csv +93 -93
  387. teradataml/data/fish.csv +160 -0
  388. teradataml/data/fm_blood2ageandweight.csv +26 -26
  389. teradataml/data/fmeasure_example.json +11 -11
  390. teradataml/data/followers_leaders.csv +10 -10
  391. teradataml/data/fpgrowth_example.json +12 -12
  392. teradataml/data/frequentpaths_example.json +29 -29
  393. teradataml/data/friends.csv +9 -9
  394. teradataml/data/fs_input.csv +33 -33
  395. teradataml/data/fs_input1.csv +33 -33
  396. teradataml/data/genData.csv +513 -513
  397. teradataml/data/geodataframe_example.json +39 -39
  398. teradataml/data/glass_types.csv +215 -0
  399. teradataml/data/glm_admissions_model.csv +12 -12
  400. teradataml/data/glm_example.json +29 -29
  401. teradataml/data/glml1l2_example.json +28 -28
  402. teradataml/data/glml1l2predict_example.json +54 -54
  403. teradataml/data/glmpredict_example.json +54 -54
  404. teradataml/data/gq_t1.csv +21 -21
  405. teradataml/data/hconvolve_complex_right.csv +5 -5
  406. teradataml/data/hconvolve_complex_rightmulti.csv +5 -5
  407. teradataml/data/histogram_example.json +11 -11
  408. teradataml/data/hmmdecoder_example.json +78 -78
  409. teradataml/data/hmmevaluator_example.json +24 -24
  410. teradataml/data/hmmsupervised_example.json +10 -10
  411. teradataml/data/hmmunsupervised_example.json +7 -7
  412. teradataml/data/house_values.csv +12 -12
  413. teradataml/data/house_values2.csv +13 -13
  414. teradataml/data/housing_cat.csv +7 -7
  415. teradataml/data/housing_data.csv +9 -9
  416. teradataml/data/housing_test.csv +47 -47
  417. teradataml/data/housing_test_binary.csv +47 -47
  418. teradataml/data/housing_train.csv +493 -493
  419. teradataml/data/housing_train_attribute.csv +4 -4
  420. teradataml/data/housing_train_binary.csv +437 -437
  421. teradataml/data/housing_train_parameter.csv +2 -2
  422. teradataml/data/housing_train_response.csv +493 -493
  423. teradataml/data/ibm_stock.csv +370 -370
  424. teradataml/data/ibm_stock1.csv +370 -370
  425. teradataml/data/identitymatch_example.json +21 -21
  426. teradataml/data/idf_table.csv +4 -4
  427. teradataml/data/impressions.csv +101 -101
  428. teradataml/data/inflation.csv +21 -21
  429. teradataml/data/initial.csv +3 -3
  430. teradataml/data/insect_sprays.csv +12 -12
  431. teradataml/data/insurance.csv +1339 -1339
  432. teradataml/data/interpolator_example.json +12 -12
  433. teradataml/data/iris_altinput.csv +481 -481
  434. teradataml/data/iris_attribute_output.csv +8 -8
  435. teradataml/data/iris_attribute_test.csv +121 -121
  436. teradataml/data/iris_attribute_train.csv +481 -481
  437. teradataml/data/iris_category_expect_predict.csv +31 -31
  438. teradataml/data/iris_data.csv +151 -0
  439. teradataml/data/iris_input.csv +151 -151
  440. teradataml/data/iris_response_train.csv +121 -121
  441. teradataml/data/iris_test.csv +31 -31
  442. teradataml/data/iris_train.csv +121 -121
  443. teradataml/data/join_table1.csv +4 -4
  444. teradataml/data/join_table2.csv +4 -4
  445. teradataml/data/jsons/anly_function_name.json +6 -6
  446. teradataml/data/jsons/byom/dataikupredict.json +147 -147
  447. teradataml/data/jsons/byom/datarobotpredict.json +146 -146
  448. teradataml/data/jsons/byom/h2opredict.json +194 -194
  449. teradataml/data/jsons/byom/onnxpredict.json +186 -186
  450. teradataml/data/jsons/byom/pmmlpredict.json +146 -146
  451. teradataml/data/jsons/paired_functions.json +435 -435
  452. teradataml/data/jsons/sqle/16.20/Antiselect.json +56 -56
  453. teradataml/data/jsons/sqle/16.20/Attribution.json +249 -249
  454. teradataml/data/jsons/sqle/16.20/DecisionForestPredict.json +156 -156
  455. teradataml/data/jsons/sqle/16.20/DecisionTreePredict.json +170 -170
  456. teradataml/data/jsons/sqle/16.20/GLMPredict.json +122 -122
  457. teradataml/data/jsons/sqle/16.20/MovingAverage.json +367 -367
  458. teradataml/data/jsons/sqle/16.20/NGramSplitter.json +239 -239
  459. teradataml/data/jsons/sqle/16.20/NaiveBayesPredict.json +136 -136
  460. teradataml/data/jsons/sqle/16.20/NaiveBayesTextClassifierPredict.json +235 -235
  461. teradataml/data/jsons/sqle/16.20/Pack.json +98 -98
  462. teradataml/data/jsons/sqle/16.20/SVMSparsePredict.json +162 -162
  463. teradataml/data/jsons/sqle/16.20/Sessionize.json +105 -105
  464. teradataml/data/jsons/sqle/16.20/StringSimilarity.json +86 -86
  465. teradataml/data/jsons/sqle/16.20/Unpack.json +166 -166
  466. teradataml/data/jsons/sqle/16.20/nPath.json +269 -269
  467. teradataml/data/jsons/sqle/17.00/Antiselect.json +56 -56
  468. teradataml/data/jsons/sqle/17.00/Attribution.json +249 -249
  469. teradataml/data/jsons/sqle/17.00/DecisionForestPredict.json +156 -156
  470. teradataml/data/jsons/sqle/17.00/DecisionTreePredict.json +170 -170
  471. teradataml/data/jsons/sqle/17.00/GLMPredict.json +122 -122
  472. teradataml/data/jsons/sqle/17.00/MovingAverage.json +367 -367
  473. teradataml/data/jsons/sqle/17.00/NGramSplitter.json +239 -239
  474. teradataml/data/jsons/sqle/17.00/NaiveBayesPredict.json +136 -136
  475. teradataml/data/jsons/sqle/17.00/NaiveBayesTextClassifierPredict.json +235 -235
  476. teradataml/data/jsons/sqle/17.00/Pack.json +98 -98
  477. teradataml/data/jsons/sqle/17.00/SVMSparsePredict.json +162 -162
  478. teradataml/data/jsons/sqle/17.00/Sessionize.json +105 -105
  479. teradataml/data/jsons/sqle/17.00/StringSimilarity.json +86 -86
  480. teradataml/data/jsons/sqle/17.00/Unpack.json +166 -166
  481. teradataml/data/jsons/sqle/17.00/nPath.json +269 -269
  482. teradataml/data/jsons/sqle/17.05/Antiselect.json +56 -56
  483. teradataml/data/jsons/sqle/17.05/Attribution.json +249 -249
  484. teradataml/data/jsons/sqle/17.05/DecisionForestPredict.json +156 -156
  485. teradataml/data/jsons/sqle/17.05/DecisionTreePredict.json +170 -170
  486. teradataml/data/jsons/sqle/17.05/GLMPredict.json +122 -122
  487. teradataml/data/jsons/sqle/17.05/MovingAverage.json +367 -367
  488. teradataml/data/jsons/sqle/17.05/NGramSplitter.json +239 -239
  489. teradataml/data/jsons/sqle/17.05/NaiveBayesPredict.json +136 -136
  490. teradataml/data/jsons/sqle/17.05/NaiveBayesTextClassifierPredict.json +235 -235
  491. teradataml/data/jsons/sqle/17.05/Pack.json +98 -98
  492. teradataml/data/jsons/sqle/17.05/SVMSparsePredict.json +162 -162
  493. teradataml/data/jsons/sqle/17.05/Sessionize.json +105 -105
  494. teradataml/data/jsons/sqle/17.05/StringSimilarity.json +86 -86
  495. teradataml/data/jsons/sqle/17.05/Unpack.json +166 -166
  496. teradataml/data/jsons/sqle/17.05/nPath.json +269 -269
  497. teradataml/data/jsons/sqle/17.10/Antiselect.json +56 -56
  498. teradataml/data/jsons/sqle/17.10/Attribution.json +249 -249
  499. teradataml/data/jsons/sqle/17.10/DecisionForestPredict.json +185 -185
  500. teradataml/data/jsons/sqle/17.10/DecisionTreePredict.json +171 -171
  501. teradataml/data/jsons/sqle/17.10/GLMPredict.json +151 -151
  502. teradataml/data/jsons/sqle/17.10/MovingAverage.json +368 -368
  503. teradataml/data/jsons/sqle/17.10/NGramSplitter.json +239 -239
  504. teradataml/data/jsons/sqle/17.10/NaiveBayesPredict.json +149 -149
  505. teradataml/data/jsons/sqle/17.10/NaiveBayesTextClassifierPredict.json +288 -288
  506. teradataml/data/jsons/sqle/17.10/Pack.json +133 -133
  507. teradataml/data/jsons/sqle/17.10/SVMSparsePredict.json +193 -193
  508. teradataml/data/jsons/sqle/17.10/Sessionize.json +105 -105
  509. teradataml/data/jsons/sqle/17.10/StringSimilarity.json +86 -86
  510. teradataml/data/jsons/sqle/17.10/TD_BinCodeFit.json +239 -239
  511. teradataml/data/jsons/sqle/17.10/TD_BinCodeTransform.json +70 -70
  512. teradataml/data/jsons/sqle/17.10/TD_CategoricalSummary.json +53 -53
  513. teradataml/data/jsons/sqle/17.10/TD_Chisq.json +67 -67
  514. teradataml/data/jsons/sqle/17.10/TD_ColumnSummary.json +53 -53
  515. teradataml/data/jsons/sqle/17.10/TD_ConvertTo.json +68 -68
  516. teradataml/data/jsons/sqle/17.10/TD_FTest.json +187 -187
  517. teradataml/data/jsons/sqle/17.10/TD_FillRowID.json +51 -51
  518. teradataml/data/jsons/sqle/17.10/TD_FunctionFit.json +46 -46
  519. teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +72 -71
  520. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithMissingValues.json +52 -52
  521. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithoutMissingValues.json +52 -52
  522. teradataml/data/jsons/sqle/17.10/TD_Histogram.json +132 -132
  523. teradataml/data/jsons/sqle/17.10/TD_NumApply.json +147 -147
  524. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingFit.json +182 -182
  525. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +65 -64
  526. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterFit.json +196 -196
  527. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +48 -47
  528. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesFit.json +114 -114
  529. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +72 -71
  530. teradataml/data/jsons/sqle/17.10/TD_QQNorm.json +111 -111
  531. teradataml/data/jsons/sqle/17.10/TD_RoundColumns.json +93 -93
  532. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeFit.json +127 -127
  533. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +70 -69
  534. teradataml/data/jsons/sqle/17.10/TD_ScaleFit.json +156 -156
  535. teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +70 -69
  536. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeFit.json +147 -147
  537. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +48 -47
  538. teradataml/data/jsons/sqle/17.10/TD_StrApply.json +240 -240
  539. teradataml/data/jsons/sqle/17.10/TD_UnivariateStatistics.json +118 -118
  540. teradataml/data/jsons/sqle/17.10/TD_WhichMax.json +52 -52
  541. teradataml/data/jsons/sqle/17.10/TD_WhichMin.json +52 -52
  542. teradataml/data/jsons/sqle/17.10/TD_ZTest.json +171 -171
  543. teradataml/data/jsons/sqle/17.10/Unpack.json +188 -188
  544. teradataml/data/jsons/sqle/17.10/nPath.json +269 -269
  545. teradataml/data/jsons/sqle/17.20/Antiselect.json +56 -56
  546. teradataml/data/jsons/sqle/17.20/Attribution.json +249 -249
  547. teradataml/data/jsons/sqle/17.20/DecisionForestPredict.json +185 -185
  548. teradataml/data/jsons/sqle/17.20/DecisionTreePredict.json +172 -172
  549. teradataml/data/jsons/sqle/17.20/GLMPredict.json +151 -151
  550. teradataml/data/jsons/sqle/17.20/MovingAverage.json +367 -367
  551. teradataml/data/jsons/sqle/17.20/NGramSplitter.json +239 -239
  552. teradataml/data/jsons/sqle/17.20/NaiveBayesPredict.json +149 -149
  553. teradataml/data/jsons/sqle/17.20/NaiveBayesTextClassifierPredict.json +287 -287
  554. teradataml/data/jsons/sqle/17.20/Pack.json +133 -133
  555. teradataml/data/jsons/sqle/17.20/SVMSparsePredict.json +192 -192
  556. teradataml/data/jsons/sqle/17.20/Sessionize.json +105 -105
  557. teradataml/data/jsons/sqle/17.20/StringSimilarity.json +86 -86
  558. teradataml/data/jsons/sqle/17.20/TD_ANOVA.json +76 -76
  559. teradataml/data/jsons/sqle/17.20/TD_BinCodeFit.json +239 -239
  560. teradataml/data/jsons/sqle/17.20/TD_BinCodeTransform.json +71 -71
  561. teradataml/data/jsons/sqle/17.20/TD_CategoricalSummary.json +53 -53
  562. teradataml/data/jsons/sqle/17.20/TD_Chisq.json +67 -67
  563. teradataml/data/jsons/sqle/17.20/TD_ClassificationEvaluator.json +145 -145
  564. teradataml/data/jsons/sqle/17.20/TD_ColumnSummary.json +53 -53
  565. teradataml/data/jsons/sqle/17.20/TD_ColumnTransformer.json +218 -218
  566. teradataml/data/jsons/sqle/17.20/TD_ConvertTo.json +92 -92
  567. teradataml/data/jsons/sqle/17.20/TD_DecisionForest.json +259 -259
  568. teradataml/data/jsons/sqle/17.20/TD_DecisionForestPredict.json +139 -139
  569. teradataml/data/jsons/sqle/17.20/TD_FTest.json +186 -186
  570. teradataml/data/jsons/sqle/17.20/TD_FillRowID.json +52 -52
  571. teradataml/data/jsons/sqle/17.20/TD_FunctionFit.json +46 -46
  572. teradataml/data/jsons/sqle/17.20/TD_FunctionTransform.json +72 -72
  573. teradataml/data/jsons/sqle/17.20/TD_GLM.json +431 -431
  574. teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +125 -125
  575. teradataml/data/jsons/sqle/17.20/TD_GLMPerSegment.json +411 -411
  576. teradataml/data/jsons/sqle/17.20/TD_GLMPredictPerSegment.json +146 -146
  577. teradataml/data/jsons/sqle/17.20/TD_GetFutileColumns.json +91 -91
  578. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithMissingValues.json +76 -76
  579. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithoutMissingValues.json +76 -76
  580. teradataml/data/jsons/sqle/17.20/TD_Histogram.json +152 -152
  581. teradataml/data/jsons/sqle/17.20/TD_KMeans.json +211 -211
  582. teradataml/data/jsons/sqle/17.20/TD_KMeansPredict.json +86 -86
  583. teradataml/data/jsons/sqle/17.20/TD_KNN.json +262 -262
  584. teradataml/data/jsons/sqle/17.20/TD_NaiveBayesTextClassifierTrainer.json +137 -137
  585. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineFit.json +101 -101
  586. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineTransform.json +71 -71
  587. teradataml/data/jsons/sqle/17.20/TD_NumApply.json +147 -147
  588. teradataml/data/jsons/sqle/17.20/TD_OneClassSVM.json +315 -315
  589. teradataml/data/jsons/sqle/17.20/TD_OneClassSVMPredict.json +123 -123
  590. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingFit.json +271 -271
  591. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingTransform.json +65 -65
  592. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingFit.json +229 -229
  593. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingTransform.json +75 -75
  594. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterFit.json +217 -217
  595. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterTransform.json +48 -48
  596. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesFit.json +114 -114
  597. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesTransform.json +72 -72
  598. teradataml/data/jsons/sqle/17.20/TD_QQNorm.json +111 -111
  599. teradataml/data/jsons/sqle/17.20/TD_ROC.json +177 -177
  600. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionFit.json +178 -178
  601. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionMinComponents.json +73 -73
  602. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionTransform.json +74 -74
  603. teradataml/data/jsons/sqle/17.20/TD_RegressionEvaluator.json +137 -137
  604. teradataml/data/jsons/sqle/17.20/TD_RoundColumns.json +93 -93
  605. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeFit.json +127 -127
  606. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeTransform.json +70 -70
  607. teradataml/data/jsons/sqle/17.20/TD_SVM.json +389 -389
  608. teradataml/data/jsons/sqle/17.20/TD_SVMPredict.json +124 -124
  609. teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +156 -156
  610. teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +70 -70
  611. teradataml/data/jsons/sqle/17.20/TD_SentimentExtractor.json +193 -193
  612. teradataml/data/jsons/sqle/17.20/TD_Silhouette.json +142 -142
  613. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeFit.json +147 -147
  614. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeTransform.json +48 -48
  615. teradataml/data/jsons/sqle/17.20/TD_StrApply.json +240 -240
  616. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingFit.json +248 -248
  617. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingTransform.json +75 -75
  618. teradataml/data/jsons/sqle/17.20/TD_TextParser.json +192 -192
  619. teradataml/data/jsons/sqle/17.20/TD_TrainTestSplit.json +142 -142
  620. teradataml/data/jsons/sqle/17.20/TD_UnivariateStatistics.json +117 -117
  621. teradataml/data/jsons/sqle/17.20/TD_VectorDistance.json +182 -182
  622. teradataml/data/jsons/sqle/17.20/TD_WhichMax.json +52 -52
  623. teradataml/data/jsons/sqle/17.20/TD_WhichMin.json +52 -52
  624. teradataml/data/jsons/sqle/17.20/TD_WordEmbeddings.json +241 -241
  625. teradataml/data/jsons/sqle/17.20/TD_XGBoost.json +312 -312
  626. teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +182 -182
  627. teradataml/data/jsons/sqle/17.20/TD_ZTest.json +170 -170
  628. teradataml/data/jsons/sqle/17.20/Unpack.json +188 -188
  629. teradataml/data/jsons/sqle/17.20/nPath.json +269 -269
  630. teradataml/data/jsons/tableoperator/17.00/read_nos.json +197 -197
  631. teradataml/data/jsons/tableoperator/17.05/read_nos.json +197 -197
  632. teradataml/data/jsons/tableoperator/17.05/write_nos.json +194 -194
  633. teradataml/data/jsons/tableoperator/17.10/read_nos.json +183 -183
  634. teradataml/data/jsons/tableoperator/17.10/write_nos.json +194 -194
  635. teradataml/data/jsons/tableoperator/17.20/read_nos.json +182 -182
  636. teradataml/data/jsons/tableoperator/17.20/write_nos.json +223 -223
  637. teradataml/data/jsons/uaf/17.20/TD_ACF.json +149 -149
  638. teradataml/data/jsons/uaf/17.20/TD_ARIMAESTIMATE.json +409 -409
  639. teradataml/data/jsons/uaf/17.20/TD_ARIMAFORECAST.json +79 -79
  640. teradataml/data/jsons/uaf/17.20/TD_ARIMAVALIDATE.json +151 -151
  641. teradataml/data/jsons/uaf/17.20/TD_BINARYMATRIXOP.json +109 -109
  642. teradataml/data/jsons/uaf/17.20/TD_BINARYSERIESOP.json +107 -107
  643. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_GODFREY.json +87 -87
  644. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_PAGAN_GODFREY.json +106 -106
  645. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE.json +80 -80
  646. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE2.json +67 -67
  647. teradataml/data/jsons/uaf/17.20/TD_CUMUL_PERIODOGRAM.json +91 -91
  648. teradataml/data/jsons/uaf/17.20/TD_DFFT.json +136 -136
  649. teradataml/data/jsons/uaf/17.20/TD_DFFT2.json +148 -148
  650. teradataml/data/jsons/uaf/17.20/TD_DFFT2CONV.json +108 -108
  651. teradataml/data/jsons/uaf/17.20/TD_DFFTCONV.json +109 -109
  652. teradataml/data/jsons/uaf/17.20/TD_DICKEY_FULLER.json +86 -86
  653. teradataml/data/jsons/uaf/17.20/TD_DIFF.json +91 -91
  654. teradataml/data/jsons/uaf/17.20/TD_DTW.json +116 -116
  655. teradataml/data/jsons/uaf/17.20/TD_DURBIN_WATSON.json +100 -100
  656. teradataml/data/jsons/uaf/17.20/TD_EXTRACT_RESULTS.json +38 -38
  657. teradataml/data/jsons/uaf/17.20/TD_FITMETRICS.json +100 -100
  658. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4FORMULA.json +84 -84
  659. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4SINUSOIDS.json +70 -70
  660. teradataml/data/jsons/uaf/17.20/TD_GOLDFELD_QUANDT.json +152 -152
  661. teradataml/data/jsons/uaf/17.20/TD_HOLT_WINTERS_FORECAST.json +313 -313
  662. teradataml/data/jsons/uaf/17.20/TD_IDFFT.json +57 -57
  663. teradataml/data/jsons/uaf/17.20/TD_IDFFT2.json +94 -94
  664. teradataml/data/jsons/uaf/17.20/TD_INPUTVALIDATOR.json +63 -63
  665. teradataml/data/jsons/uaf/17.20/TD_LINEAR_REGR.json +181 -181
  666. teradataml/data/jsons/uaf/17.20/TD_LINESPEC.json +102 -102
  667. teradataml/data/jsons/uaf/17.20/TD_MAMEAN.json +182 -182
  668. teradataml/data/jsons/uaf/17.20/TD_MATRIXMULTIPLY.json +67 -67
  669. teradataml/data/jsons/uaf/17.20/TD_MINFO.json +66 -66
  670. teradataml/data/jsons/uaf/17.20/TD_MULTIVAR_REGR.json +178 -178
  671. teradataml/data/jsons/uaf/17.20/TD_PACF.json +114 -114
  672. teradataml/data/jsons/uaf/17.20/TD_PORTMAN.json +118 -118
  673. teradataml/data/jsons/uaf/17.20/TD_POWERSPEC.json +175 -175
  674. teradataml/data/jsons/uaf/17.20/TD_POWERTRANSFORM.json +97 -97
  675. teradataml/data/jsons/uaf/17.20/TD_RESAMPLE.json +173 -173
  676. teradataml/data/jsons/uaf/17.20/TD_SEASONALNORMALIZE.json +136 -136
  677. teradataml/data/jsons/uaf/17.20/TD_SELECTION_CRITERIA.json +89 -89
  678. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_PERIODICITIES.json +79 -79
  679. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_RESIDMEAN.json +67 -67
  680. teradataml/data/jsons/uaf/17.20/TD_SIMPLEEXP.json +184 -184
  681. teradataml/data/jsons/uaf/17.20/TD_SINFO.json +57 -57
  682. teradataml/data/jsons/uaf/17.20/TD_SMOOTHMA.json +162 -162
  683. teradataml/data/jsons/uaf/17.20/TD_TRACKINGOP.json +100 -100
  684. teradataml/data/jsons/uaf/17.20/TD_UNDIFF.json +111 -111
  685. teradataml/data/jsons/uaf/17.20/TD_UNNORMALIZE.json +95 -95
  686. teradataml/data/jsons/uaf/17.20/TD_WHITES_GENERAL.json +77 -77
  687. teradataml/data/kmeans_example.json +17 -17
  688. teradataml/data/kmeans_us_arrests_data.csv +0 -0
  689. teradataml/data/knn_example.json +18 -18
  690. teradataml/data/knnrecommender_example.json +6 -6
  691. teradataml/data/knnrecommenderpredict_example.json +12 -12
  692. teradataml/data/lar_example.json +17 -17
  693. teradataml/data/larpredict_example.json +30 -30
  694. teradataml/data/lc_new_predictors.csv +5 -5
  695. teradataml/data/lc_new_reference.csv +9 -9
  696. teradataml/data/lda_example.json +8 -8
  697. teradataml/data/ldainference_example.json +14 -14
  698. teradataml/data/ldatopicsummary_example.json +8 -8
  699. teradataml/data/levendist_input.csv +13 -13
  700. teradataml/data/levenshteindistance_example.json +10 -10
  701. teradataml/data/linreg_example.json +9 -9
  702. teradataml/data/load_example_data.py +326 -323
  703. teradataml/data/loan_prediction.csv +295 -295
  704. teradataml/data/lungcancer.csv +138 -138
  705. teradataml/data/mappingdata.csv +12 -12
  706. teradataml/data/milk_timeseries.csv +157 -157
  707. teradataml/data/min_max_titanic.csv +4 -4
  708. teradataml/data/minhash_example.json +6 -6
  709. teradataml/data/ml_ratings.csv +7547 -7547
  710. teradataml/data/ml_ratings_10.csv +2445 -2445
  711. teradataml/data/model1_table.csv +5 -5
  712. teradataml/data/model2_table.csv +5 -5
  713. teradataml/data/models/iris_db_glm_model.pmml +56 -56
  714. teradataml/data/models/iris_db_xgb_model.pmml +4471 -4471
  715. teradataml/data/modularity_example.json +12 -12
  716. teradataml/data/movavg_example.json +7 -7
  717. teradataml/data/mtx1.csv +7 -7
  718. teradataml/data/mtx2.csv +13 -13
  719. teradataml/data/multi_model_classification.csv +401 -0
  720. teradataml/data/multi_model_regression.csv +401 -0
  721. teradataml/data/mvdfft8.csv +9 -9
  722. teradataml/data/naivebayes_example.json +9 -9
  723. teradataml/data/naivebayespredict_example.json +19 -19
  724. teradataml/data/naivebayestextclassifier2_example.json +6 -6
  725. teradataml/data/naivebayestextclassifier_example.json +8 -8
  726. teradataml/data/naivebayestextclassifierpredict_example.json +20 -20
  727. teradataml/data/name_Find_configure.csv +10 -10
  728. teradataml/data/namedentityfinder_example.json +14 -14
  729. teradataml/data/namedentityfinderevaluator_example.json +10 -10
  730. teradataml/data/namedentityfindertrainer_example.json +6 -6
  731. teradataml/data/nb_iris_input_test.csv +31 -31
  732. teradataml/data/nb_iris_input_train.csv +121 -121
  733. teradataml/data/nbp_iris_model.csv +13 -13
  734. teradataml/data/ner_extractor_text.csv +2 -2
  735. teradataml/data/ner_sports_test2.csv +29 -29
  736. teradataml/data/ner_sports_train.csv +501 -501
  737. teradataml/data/nerevaluator_example.json +5 -5
  738. teradataml/data/nerextractor_example.json +18 -18
  739. teradataml/data/nermem_sports_test.csv +17 -17
  740. teradataml/data/nermem_sports_train.csv +50 -50
  741. teradataml/data/nertrainer_example.json +6 -6
  742. teradataml/data/ngrams_example.json +6 -6
  743. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Aggregate Functions using SQLAlchemy.ipynb +1455 -1455
  744. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Arithmetic Functions Using SQLAlchemy.ipynb +1993 -1993
  745. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Bit-Byte Manipulation Functions using SQLAlchemy.ipynb +1492 -1492
  746. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Built-in functions using SQLAlchemy.ipynb +536 -536
  747. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Regular Expressions Using SQLAlchemy.ipynb +570 -570
  748. teradataml/data/notebooks/sqlalchemy/Teradata Vantage String Functions Using SQLAlchemy.ipynb +2559 -2559
  749. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Window Aggregate Functions using SQLAlchemy.ipynb +2911 -2911
  750. teradataml/data/notebooks/sqlalchemy/Using Generic SQLAlchemy ClauseElements teradataml DataFrame assign method.ipynb +698 -698
  751. teradataml/data/notebooks/sqlalchemy/teradataml filtering using SQLAlchemy ClauseElements.ipynb +784 -784
  752. teradataml/data/npath_example.json +23 -23
  753. teradataml/data/ntree_example.json +14 -14
  754. teradataml/data/numeric_strings.csv +4 -4
  755. teradataml/data/numerics.csv +4 -4
  756. teradataml/data/ocean_buoy.csv +17 -17
  757. teradataml/data/ocean_buoy2.csv +17 -17
  758. teradataml/data/ocean_buoys.csv +27 -27
  759. teradataml/data/ocean_buoys2.csv +10 -10
  760. teradataml/data/ocean_buoys_nonpti.csv +28 -28
  761. teradataml/data/ocean_buoys_seq.csv +29 -29
  762. teradataml/data/openml_example.json +63 -0
  763. teradataml/data/optional_event_table.csv +4 -4
  764. teradataml/data/orders1.csv +11 -11
  765. teradataml/data/orders1_12.csv +12 -12
  766. teradataml/data/orders_ex.csv +4 -4
  767. teradataml/data/pack_example.json +8 -8
  768. teradataml/data/package_tracking.csv +19 -19
  769. teradataml/data/package_tracking_pti.csv +18 -18
  770. teradataml/data/pagerank_example.json +13 -13
  771. teradataml/data/paragraphs_input.csv +6 -6
  772. teradataml/data/pathanalyzer_example.json +7 -7
  773. teradataml/data/pathgenerator_example.json +7 -7
  774. teradataml/data/phrases.csv +7 -7
  775. teradataml/data/pivot_example.json +8 -8
  776. teradataml/data/pivot_input.csv +22 -22
  777. teradataml/data/playerRating.csv +31 -31
  778. teradataml/data/postagger_example.json +6 -6
  779. teradataml/data/posttagger_output.csv +44 -44
  780. teradataml/data/production_data.csv +16 -16
  781. teradataml/data/production_data2.csv +7 -7
  782. teradataml/data/randomsample_example.json +31 -31
  783. teradataml/data/randomwalksample_example.json +8 -8
  784. teradataml/data/rank_table.csv +6 -6
  785. teradataml/data/ref_mobile_data.csv +4 -4
  786. teradataml/data/ref_mobile_data_dense.csv +2 -2
  787. teradataml/data/ref_url.csv +17 -17
  788. teradataml/data/restaurant_reviews.csv +7 -7
  789. teradataml/data/river_data.csv +145 -145
  790. teradataml/data/roc_example.json +7 -7
  791. teradataml/data/roc_input.csv +101 -101
  792. teradataml/data/rule_inputs.csv +6 -6
  793. teradataml/data/rule_table.csv +2 -2
  794. teradataml/data/sales.csv +7 -7
  795. teradataml/data/sales_transaction.csv +501 -501
  796. teradataml/data/salesdata.csv +342 -342
  797. teradataml/data/sample_cities.csv +2 -2
  798. teradataml/data/sample_shapes.csv +10 -10
  799. teradataml/data/sample_streets.csv +2 -2
  800. teradataml/data/sampling_example.json +15 -15
  801. teradataml/data/sax_example.json +8 -8
  802. teradataml/data/scale_example.json +23 -23
  803. teradataml/data/scale_housing.csv +11 -11
  804. teradataml/data/scale_housing_test.csv +6 -6
  805. teradataml/data/scale_stat.csv +11 -11
  806. teradataml/data/scalebypartition_example.json +13 -13
  807. teradataml/data/scalemap_example.json +13 -13
  808. teradataml/data/scalesummary_example.json +12 -12
  809. teradataml/data/score_category.csv +101 -101
  810. teradataml/data/score_summary.csv +4 -4
  811. teradataml/data/script_example.json +9 -9
  812. teradataml/data/scripts/deploy_script.py +65 -0
  813. teradataml/data/scripts/mapper.R +20 -0
  814. teradataml/data/scripts/mapper.py +15 -15
  815. teradataml/data/scripts/mapper_replace.py +15 -15
  816. teradataml/data/scripts/sklearn/__init__.py +0 -0
  817. teradataml/data/scripts/sklearn/sklearn_fit.py +175 -0
  818. teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
  819. teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
  820. teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
  821. teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
  822. teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
  823. teradataml/data/scripts/sklearn/sklearn_transform.py +179 -0
  824. teradataml/data/seeds.csv +10 -10
  825. teradataml/data/sentenceextractor_example.json +6 -6
  826. teradataml/data/sentiment_extract_input.csv +11 -11
  827. teradataml/data/sentiment_train.csv +16 -16
  828. teradataml/data/sentiment_word.csv +20 -20
  829. teradataml/data/sentiment_word_input.csv +19 -19
  830. teradataml/data/sentimentextractor_example.json +24 -24
  831. teradataml/data/sentimenttrainer_example.json +8 -8
  832. teradataml/data/sequence_table.csv +10 -10
  833. teradataml/data/seriessplitter_example.json +7 -7
  834. teradataml/data/sessionize_example.json +17 -17
  835. teradataml/data/sessionize_table.csv +116 -116
  836. teradataml/data/setop_test1.csv +24 -24
  837. teradataml/data/setop_test2.csv +22 -22
  838. teradataml/data/soc_nw_edges.csv +10 -10
  839. teradataml/data/soc_nw_vertices.csv +7 -7
  840. teradataml/data/souvenir_timeseries.csv +167 -167
  841. teradataml/data/sparse_iris_attribute.csv +5 -5
  842. teradataml/data/sparse_iris_test.csv +121 -121
  843. teradataml/data/sparse_iris_train.csv +601 -601
  844. teradataml/data/star1.csv +6 -6
  845. teradataml/data/state_transition.csv +5 -5
  846. teradataml/data/stock_data.csv +53 -53
  847. teradataml/data/stock_movement.csv +11 -11
  848. teradataml/data/stock_vol.csv +76 -76
  849. teradataml/data/stop_words.csv +8 -8
  850. teradataml/data/store_sales.csv +37 -37
  851. teradataml/data/stringsimilarity_example.json +7 -7
  852. teradataml/data/strsimilarity_input.csv +13 -13
  853. teradataml/data/students.csv +101 -101
  854. teradataml/data/svm_iris_input_test.csv +121 -121
  855. teradataml/data/svm_iris_input_train.csv +481 -481
  856. teradataml/data/svm_iris_model.csv +7 -7
  857. teradataml/data/svmdense_example.json +9 -9
  858. teradataml/data/svmdensepredict_example.json +18 -18
  859. teradataml/data/svmsparse_example.json +7 -7
  860. teradataml/data/svmsparsepredict_example.json +13 -13
  861. teradataml/data/svmsparsesummary_example.json +7 -7
  862. teradataml/data/target_mobile_data.csv +13 -13
  863. teradataml/data/target_mobile_data_dense.csv +5 -5
  864. teradataml/data/templatedata.csv +1201 -1201
  865. teradataml/data/templates/open_source_ml.json +9 -0
  866. teradataml/data/teradataml_example.json +73 -1
  867. teradataml/data/test_classification.csv +101 -0
  868. teradataml/data/test_loan_prediction.csv +53 -53
  869. teradataml/data/test_pacf_12.csv +37 -37
  870. teradataml/data/test_prediction.csv +101 -0
  871. teradataml/data/test_regression.csv +101 -0
  872. teradataml/data/test_river2.csv +109 -109
  873. teradataml/data/text_inputs.csv +6 -6
  874. teradataml/data/textchunker_example.json +7 -7
  875. teradataml/data/textclassifier_example.json +6 -6
  876. teradataml/data/textclassifier_input.csv +7 -7
  877. teradataml/data/textclassifiertrainer_example.json +6 -6
  878. teradataml/data/textmorph_example.json +5 -5
  879. teradataml/data/textparser_example.json +15 -15
  880. teradataml/data/texttagger_example.json +11 -11
  881. teradataml/data/texttokenizer_example.json +6 -6
  882. teradataml/data/texttrainer_input.csv +11 -11
  883. teradataml/data/tf_example.json +6 -6
  884. teradataml/data/tfidf_example.json +13 -13
  885. teradataml/data/tfidf_input1.csv +201 -201
  886. teradataml/data/tfidf_train.csv +6 -6
  887. teradataml/data/time_table1.csv +535 -535
  888. teradataml/data/time_table2.csv +14 -14
  889. teradataml/data/timeseriesdata.csv +1601 -1601
  890. teradataml/data/timeseriesdatasetsd4.csv +105 -105
  891. teradataml/data/titanic.csv +892 -892
  892. teradataml/data/token_table.csv +696 -696
  893. teradataml/data/train_multiclass.csv +101 -0
  894. teradataml/data/train_regression.csv +101 -0
  895. teradataml/data/train_regression_multiple_labels.csv +101 -0
  896. teradataml/data/train_tracking.csv +27 -27
  897. teradataml/data/transformation_table.csv +5 -5
  898. teradataml/data/transformation_table_new.csv +1 -1
  899. teradataml/data/tv_spots.csv +16 -16
  900. teradataml/data/twod_climate_data.csv +117 -117
  901. teradataml/data/uaf_example.json +475 -475
  902. teradataml/data/univariatestatistics_example.json +8 -8
  903. teradataml/data/unpack_example.json +9 -9
  904. teradataml/data/unpivot_example.json +9 -9
  905. teradataml/data/unpivot_input.csv +8 -8
  906. teradataml/data/us_air_pass.csv +36 -36
  907. teradataml/data/us_population.csv +624 -624
  908. teradataml/data/us_states_shapes.csv +52 -52
  909. teradataml/data/varmax_example.json +17 -17
  910. teradataml/data/vectordistance_example.json +25 -25
  911. teradataml/data/ville_climatedata.csv +121 -121
  912. teradataml/data/ville_tempdata.csv +12 -12
  913. teradataml/data/ville_tempdata1.csv +12 -12
  914. teradataml/data/ville_temperature.csv +11 -11
  915. teradataml/data/waveletTable.csv +1605 -1605
  916. teradataml/data/waveletTable2.csv +1605 -1605
  917. teradataml/data/weightedmovavg_example.json +8 -8
  918. teradataml/data/wft_testing.csv +5 -5
  919. teradataml/data/wine_data.csv +1600 -0
  920. teradataml/data/word_embed_input_table1.csv +5 -5
  921. teradataml/data/word_embed_input_table2.csv +4 -4
  922. teradataml/data/word_embed_model.csv +22 -22
  923. teradataml/data/words_input.csv +13 -13
  924. teradataml/data/xconvolve_complex_left.csv +6 -6
  925. teradataml/data/xconvolve_complex_leftmulti.csv +6 -6
  926. teradataml/data/xgboost_example.json +35 -35
  927. teradataml/data/xgboostpredict_example.json +31 -31
  928. teradataml/dataframe/copy_to.py +1764 -1698
  929. teradataml/dataframe/data_transfer.py +2753 -2745
  930. teradataml/dataframe/dataframe.py +17545 -16946
  931. teradataml/dataframe/dataframe_utils.py +1837 -1740
  932. teradataml/dataframe/fastload.py +611 -603
  933. teradataml/dataframe/indexer.py +424 -424
  934. teradataml/dataframe/setop.py +1179 -1166
  935. teradataml/dataframe/sql.py +10090 -6432
  936. teradataml/dataframe/sql_function_parameters.py +439 -388
  937. teradataml/dataframe/sql_functions.py +652 -652
  938. teradataml/dataframe/sql_interfaces.py +220 -220
  939. teradataml/dataframe/vantage_function_types.py +674 -630
  940. teradataml/dataframe/window.py +693 -692
  941. teradataml/dbutils/__init__.py +3 -3
  942. teradataml/dbutils/dbutils.py +1167 -1150
  943. teradataml/dbutils/filemgr.py +267 -267
  944. teradataml/gen_ai/__init__.py +2 -2
  945. teradataml/gen_ai/convAI.py +472 -472
  946. teradataml/geospatial/__init__.py +3 -3
  947. teradataml/geospatial/geodataframe.py +1105 -1094
  948. teradataml/geospatial/geodataframecolumn.py +392 -387
  949. teradataml/geospatial/geometry_types.py +925 -925
  950. teradataml/hyperparameter_tuner/__init__.py +1 -1
  951. teradataml/hyperparameter_tuner/optimizer.py +3783 -2993
  952. teradataml/hyperparameter_tuner/utils.py +281 -187
  953. teradataml/lib/aed_0_1.dll +0 -0
  954. teradataml/lib/libaed_0_1.dylib +0 -0
  955. teradataml/lib/libaed_0_1.so +0 -0
  956. teradataml/libaed_0_1.dylib +0 -0
  957. teradataml/libaed_0_1.so +0 -0
  958. teradataml/opensource/__init__.py +1 -0
  959. teradataml/opensource/sklearn/__init__.py +1 -0
  960. teradataml/opensource/sklearn/_class.py +255 -0
  961. teradataml/opensource/sklearn/_sklearn_wrapper.py +1668 -0
  962. teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
  963. teradataml/opensource/sklearn/constants.py +54 -0
  964. teradataml/options/__init__.py +121 -124
  965. teradataml/options/configure.py +337 -336
  966. teradataml/options/display.py +176 -176
  967. teradataml/plot/__init__.py +2 -2
  968. teradataml/plot/axis.py +1388 -1388
  969. teradataml/plot/constants.py +15 -15
  970. teradataml/plot/figure.py +398 -398
  971. teradataml/plot/plot.py +760 -760
  972. teradataml/plot/query_generator.py +83 -83
  973. teradataml/plot/subplot.py +216 -216
  974. teradataml/scriptmgmt/UserEnv.py +3788 -3761
  975. teradataml/scriptmgmt/__init__.py +3 -3
  976. teradataml/scriptmgmt/lls_utils.py +1616 -1604
  977. teradataml/series/series.py +532 -532
  978. teradataml/series/series_utils.py +71 -71
  979. teradataml/table_operators/Apply.py +949 -917
  980. teradataml/table_operators/Script.py +1719 -1982
  981. teradataml/table_operators/TableOperator.py +1207 -1616
  982. teradataml/table_operators/__init__.py +2 -3
  983. teradataml/table_operators/apply_query_generator.py +262 -262
  984. teradataml/table_operators/query_generator.py +507 -507
  985. teradataml/table_operators/table_operator_query_generator.py +460 -460
  986. teradataml/table_operators/table_operator_util.py +631 -639
  987. teradataml/table_operators/templates/dataframe_apply.template +184 -184
  988. teradataml/table_operators/templates/dataframe_map.template +176 -176
  989. teradataml/table_operators/templates/script_executor.template +170 -170
  990. teradataml/utils/dtypes.py +684 -684
  991. teradataml/utils/internal_buffer.py +84 -84
  992. teradataml/utils/print_versions.py +205 -205
  993. teradataml/utils/utils.py +410 -410
  994. teradataml/utils/validators.py +2239 -2115
  995. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +270 -41
  996. teradataml-20.0.0.0.dist-info/RECORD +1038 -0
  997. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +1 -1
  998. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/zip-safe +1 -1
  999. teradataml/analytics/mle/AdaBoost.py +0 -651
  1000. teradataml/analytics/mle/AdaBoostPredict.py +0 -564
  1001. teradataml/analytics/mle/Antiselect.py +0 -342
  1002. teradataml/analytics/mle/Arima.py +0 -641
  1003. teradataml/analytics/mle/ArimaPredict.py +0 -477
  1004. teradataml/analytics/mle/Attribution.py +0 -1070
  1005. teradataml/analytics/mle/Betweenness.py +0 -658
  1006. teradataml/analytics/mle/Burst.py +0 -711
  1007. teradataml/analytics/mle/CCM.py +0 -600
  1008. teradataml/analytics/mle/CCMPrepare.py +0 -324
  1009. teradataml/analytics/mle/CFilter.py +0 -460
  1010. teradataml/analytics/mle/ChangePointDetection.py +0 -572
  1011. teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
  1012. teradataml/analytics/mle/Closeness.py +0 -737
  1013. teradataml/analytics/mle/ConfusionMatrix.py +0 -420
  1014. teradataml/analytics/mle/Correlation.py +0 -477
  1015. teradataml/analytics/mle/Correlation2.py +0 -573
  1016. teradataml/analytics/mle/CoxHazardRatio.py +0 -679
  1017. teradataml/analytics/mle/CoxPH.py +0 -556
  1018. teradataml/analytics/mle/CoxSurvival.py +0 -478
  1019. teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
  1020. teradataml/analytics/mle/DTW.py +0 -623
  1021. teradataml/analytics/mle/DWT.py +0 -564
  1022. teradataml/analytics/mle/DWT2D.py +0 -599
  1023. teradataml/analytics/mle/DecisionForest.py +0 -716
  1024. teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
  1025. teradataml/analytics/mle/DecisionForestPredict.py +0 -561
  1026. teradataml/analytics/mle/DecisionTree.py +0 -830
  1027. teradataml/analytics/mle/DecisionTreePredict.py +0 -528
  1028. teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
  1029. teradataml/analytics/mle/FMeasure.py +0 -402
  1030. teradataml/analytics/mle/FPGrowth.py +0 -734
  1031. teradataml/analytics/mle/FrequentPaths.py +0 -695
  1032. teradataml/analytics/mle/GLM.py +0 -558
  1033. teradataml/analytics/mle/GLML1L2.py +0 -547
  1034. teradataml/analytics/mle/GLML1L2Predict.py +0 -519
  1035. teradataml/analytics/mle/GLMPredict.py +0 -529
  1036. teradataml/analytics/mle/HMMDecoder.py +0 -945
  1037. teradataml/analytics/mle/HMMEvaluator.py +0 -901
  1038. teradataml/analytics/mle/HMMSupervised.py +0 -521
  1039. teradataml/analytics/mle/HMMUnsupervised.py +0 -572
  1040. teradataml/analytics/mle/Histogram.py +0 -561
  1041. teradataml/analytics/mle/IDWT.py +0 -476
  1042. teradataml/analytics/mle/IDWT2D.py +0 -493
  1043. teradataml/analytics/mle/IdentityMatch.py +0 -763
  1044. teradataml/analytics/mle/Interpolator.py +0 -918
  1045. teradataml/analytics/mle/KMeans.py +0 -485
  1046. teradataml/analytics/mle/KNN.py +0 -627
  1047. teradataml/analytics/mle/KNNRecommender.py +0 -488
  1048. teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
  1049. teradataml/analytics/mle/LAR.py +0 -439
  1050. teradataml/analytics/mle/LARPredict.py +0 -478
  1051. teradataml/analytics/mle/LDA.py +0 -548
  1052. teradataml/analytics/mle/LDAInference.py +0 -492
  1053. teradataml/analytics/mle/LDATopicSummary.py +0 -464
  1054. teradataml/analytics/mle/LevenshteinDistance.py +0 -450
  1055. teradataml/analytics/mle/LinReg.py +0 -433
  1056. teradataml/analytics/mle/LinRegPredict.py +0 -438
  1057. teradataml/analytics/mle/MinHash.py +0 -544
  1058. teradataml/analytics/mle/Modularity.py +0 -587
  1059. teradataml/analytics/mle/NEREvaluator.py +0 -410
  1060. teradataml/analytics/mle/NERExtractor.py +0 -595
  1061. teradataml/analytics/mle/NERTrainer.py +0 -458
  1062. teradataml/analytics/mle/NGrams.py +0 -570
  1063. teradataml/analytics/mle/NPath.py +0 -634
  1064. teradataml/analytics/mle/NTree.py +0 -549
  1065. teradataml/analytics/mle/NaiveBayes.py +0 -462
  1066. teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
  1067. teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
  1068. teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
  1069. teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
  1070. teradataml/analytics/mle/NamedEntityFinder.py +0 -529
  1071. teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
  1072. teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
  1073. teradataml/analytics/mle/POSTagger.py +0 -417
  1074. teradataml/analytics/mle/Pack.py +0 -411
  1075. teradataml/analytics/mle/PageRank.py +0 -535
  1076. teradataml/analytics/mle/PathAnalyzer.py +0 -426
  1077. teradataml/analytics/mle/PathGenerator.py +0 -367
  1078. teradataml/analytics/mle/PathStart.py +0 -464
  1079. teradataml/analytics/mle/PathSummarizer.py +0 -470
  1080. teradataml/analytics/mle/Pivot.py +0 -471
  1081. teradataml/analytics/mle/ROC.py +0 -425
  1082. teradataml/analytics/mle/RandomSample.py +0 -637
  1083. teradataml/analytics/mle/RandomWalkSample.py +0 -490
  1084. teradataml/analytics/mle/SAX.py +0 -779
  1085. teradataml/analytics/mle/SVMDense.py +0 -677
  1086. teradataml/analytics/mle/SVMDensePredict.py +0 -536
  1087. teradataml/analytics/mle/SVMDenseSummary.py +0 -437
  1088. teradataml/analytics/mle/SVMSparse.py +0 -557
  1089. teradataml/analytics/mle/SVMSparsePredict.py +0 -553
  1090. teradataml/analytics/mle/SVMSparseSummary.py +0 -435
  1091. teradataml/analytics/mle/Sampling.py +0 -549
  1092. teradataml/analytics/mle/Scale.py +0 -565
  1093. teradataml/analytics/mle/ScaleByPartition.py +0 -496
  1094. teradataml/analytics/mle/ScaleMap.py +0 -378
  1095. teradataml/analytics/mle/ScaleSummary.py +0 -320
  1096. teradataml/analytics/mle/SentenceExtractor.py +0 -363
  1097. teradataml/analytics/mle/SentimentEvaluator.py +0 -432
  1098. teradataml/analytics/mle/SentimentExtractor.py +0 -578
  1099. teradataml/analytics/mle/SentimentTrainer.py +0 -405
  1100. teradataml/analytics/mle/SeriesSplitter.py +0 -641
  1101. teradataml/analytics/mle/Sessionize.py +0 -475
  1102. teradataml/analytics/mle/SimpleMovAvg.py +0 -397
  1103. teradataml/analytics/mle/StringSimilarity.py +0 -425
  1104. teradataml/analytics/mle/TF.py +0 -389
  1105. teradataml/analytics/mle/TFIDF.py +0 -504
  1106. teradataml/analytics/mle/TextChunker.py +0 -414
  1107. teradataml/analytics/mle/TextClassifier.py +0 -399
  1108. teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
  1109. teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
  1110. teradataml/analytics/mle/TextMorph.py +0 -494
  1111. teradataml/analytics/mle/TextParser.py +0 -623
  1112. teradataml/analytics/mle/TextTagger.py +0 -530
  1113. teradataml/analytics/mle/TextTokenizer.py +0 -502
  1114. teradataml/analytics/mle/UnivariateStatistics.py +0 -488
  1115. teradataml/analytics/mle/Unpack.py +0 -526
  1116. teradataml/analytics/mle/Unpivot.py +0 -438
  1117. teradataml/analytics/mle/VarMax.py +0 -776
  1118. teradataml/analytics/mle/VectorDistance.py +0 -762
  1119. teradataml/analytics/mle/WeightedMovAvg.py +0 -400
  1120. teradataml/analytics/mle/XGBoost.py +0 -842
  1121. teradataml/analytics/mle/XGBoostPredict.py +0 -627
  1122. teradataml/analytics/mle/__init__.py +0 -123
  1123. teradataml/analytics/mle/json/adaboost_mle.json +0 -135
  1124. teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
  1125. teradataml/analytics/mle/json/antiselect_mle.json +0 -34
  1126. teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
  1127. teradataml/analytics/mle/json/arima_mle.json +0 -172
  1128. teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
  1129. teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
  1130. teradataml/analytics/mle/json/betweenness_mle.json +0 -97
  1131. teradataml/analytics/mle/json/burst_mle.json +0 -140
  1132. teradataml/analytics/mle/json/ccm_mle.json +0 -124
  1133. teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
  1134. teradataml/analytics/mle/json/cfilter_mle.json +0 -93
  1135. teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
  1136. teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
  1137. teradataml/analytics/mle/json/closeness_mle.json +0 -104
  1138. teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
  1139. teradataml/analytics/mle/json/correlation_mle.json +0 -86
  1140. teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
  1141. teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
  1142. teradataml/analytics/mle/json/coxph_mle.json +0 -98
  1143. teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
  1144. teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
  1145. teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
  1146. teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
  1147. teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
  1148. teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
  1149. teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
  1150. teradataml/analytics/mle/json/dtw_mle.json +0 -97
  1151. teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
  1152. teradataml/analytics/mle/json/dwt_mle.json +0 -101
  1153. teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
  1154. teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
  1155. teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
  1156. teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
  1157. teradataml/analytics/mle/json/glm_mle.json +0 -111
  1158. teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
  1159. teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
  1160. teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
  1161. teradataml/analytics/mle/json/histogram_mle.json +0 -100
  1162. teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
  1163. teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
  1164. teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
  1165. teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
  1166. teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
  1167. teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
  1168. teradataml/analytics/mle/json/idwt_mle.json +0 -66
  1169. teradataml/analytics/mle/json/interpolator_mle.json +0 -151
  1170. teradataml/analytics/mle/json/kmeans_mle.json +0 -97
  1171. teradataml/analytics/mle/json/knn_mle.json +0 -141
  1172. teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
  1173. teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
  1174. teradataml/analytics/mle/json/lar_mle.json +0 -78
  1175. teradataml/analytics/mle/json/larpredict_mle.json +0 -69
  1176. teradataml/analytics/mle/json/lda_mle.json +0 -130
  1177. teradataml/analytics/mle/json/ldainference_mle.json +0 -78
  1178. teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
  1179. teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
  1180. teradataml/analytics/mle/json/linreg_mle.json +0 -42
  1181. teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
  1182. teradataml/analytics/mle/json/minhash_mle.json +0 -113
  1183. teradataml/analytics/mle/json/modularity_mle.json +0 -91
  1184. teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
  1185. teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
  1186. teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
  1187. teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
  1188. teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
  1189. teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
  1190. teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
  1191. teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
  1192. teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
  1193. teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
  1194. teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
  1195. teradataml/analytics/mle/json/ngrams_mle.json +0 -137
  1196. teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
  1197. teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
  1198. teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
  1199. teradataml/analytics/mle/json/pack_mle.json +0 -58
  1200. teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
  1201. teradataml/analytics/mle/json/pagerank_mle.json +0 -81
  1202. teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
  1203. teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
  1204. teradataml/analytics/mle/json/pathstart_mle.json +0 -62
  1205. teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
  1206. teradataml/analytics/mle/json/pivoting_mle.json +0 -71
  1207. teradataml/analytics/mle/json/postagger_mle.json +0 -51
  1208. teradataml/analytics/mle/json/randomsample_mle.json +0 -131
  1209. teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
  1210. teradataml/analytics/mle/json/roc_mle.json +0 -73
  1211. teradataml/analytics/mle/json/sampling_mle.json +0 -75
  1212. teradataml/analytics/mle/json/sax_mle.json +0 -154
  1213. teradataml/analytics/mle/json/scale_mle.json +0 -93
  1214. teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
  1215. teradataml/analytics/mle/json/scalemap_mle.json +0 -44
  1216. teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
  1217. teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
  1218. teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
  1219. teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
  1220. teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
  1221. teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
  1222. teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
  1223. teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
  1224. teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
  1225. teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
  1226. teradataml/analytics/mle/json/svmdense_mle.json +0 -165
  1227. teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
  1228. teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
  1229. teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
  1230. teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
  1231. teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
  1232. teradataml/analytics/mle/json/textchunker_mle.json +0 -40
  1233. teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
  1234. teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
  1235. teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
  1236. teradataml/analytics/mle/json/textmorph_mle.json +0 -63
  1237. teradataml/analytics/mle/json/textparser_mle.json +0 -166
  1238. teradataml/analytics/mle/json/texttagger_mle.json +0 -81
  1239. teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
  1240. teradataml/analytics/mle/json/tf_mle.json +0 -33
  1241. teradataml/analytics/mle/json/tfidf_mle.json +0 -34
  1242. teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
  1243. teradataml/analytics/mle/json/unpack_mle.json +0 -91
  1244. teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
  1245. teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
  1246. teradataml/analytics/mle/json/varmax_mle.json +0 -176
  1247. teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
  1248. teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
  1249. teradataml/analytics/mle/json/xgboost_mle.json +0 -178
  1250. teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
  1251. teradataml/analytics/sqle/Antiselect.py +0 -321
  1252. teradataml/analytics/sqle/Attribution.py +0 -603
  1253. teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
  1254. teradataml/analytics/sqle/GLMPredict.py +0 -430
  1255. teradataml/analytics/sqle/MovingAverage.py +0 -543
  1256. teradataml/analytics/sqle/NGramSplitter.py +0 -548
  1257. teradataml/analytics/sqle/NPath.py +0 -632
  1258. teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
  1259. teradataml/analytics/sqle/Pack.py +0 -388
  1260. teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
  1261. teradataml/analytics/sqle/Sessionize.py +0 -390
  1262. teradataml/analytics/sqle/StringSimilarity.py +0 -400
  1263. teradataml/analytics/sqle/Unpack.py +0 -503
  1264. teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
  1265. teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
  1266. teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
  1267. teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
  1268. teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
  1269. teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
  1270. teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
  1271. teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
  1272. teradataml/analytics/sqle/json/npath_sqle.json +0 -67
  1273. teradataml/analytics/sqle/json/pack_sqle.json +0 -47
  1274. teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
  1275. teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
  1276. teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
  1277. teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
  1278. teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
  1279. teradataml/catalog/model_cataloging.py +0 -980
  1280. teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
  1281. teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
  1282. teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
  1283. teradataml/table_operators/sandbox_container_util.py +0 -643
  1284. teradataml-17.20.0.7.dist-info/RECORD +0 -1280
  1285. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/top_level.txt +0 -0
@@ -1,999 +1,1071 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Unpublished work.
4
- Copyright (c) 2018 by Teradata Corporation. All rights reserved.
5
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
6
-
7
- Primary Owner: rameshchandra.d@teradata.com
8
- Secondary Owner:
9
-
10
- teradataml context
11
- ----------
12
- A teradataml context functions provide interface to Teradata Vantage. Provides functionality to get and set a global
13
- context which can be used by other analytical functions to get the Teradata Vantage connection.
14
-
15
- """
16
- from sqlalchemy import create_engine
17
- from teradataml.common.exceptions import TeradataMlException
18
- from teradataml.common.warnings import TeradataMlRuntimeWarning
19
- from teradataml.common.messages import Messages
20
- from teradataml.common.messagecodes import MessageCodes
21
- from teradataml.common.sqlbundle import SQLBundle
22
- from teradataml.common.constants import SQLConstants
23
- from teradataml.common.garbagecollector import GarbageCollector
24
- from teradataml.context.aed_context import AEDContext
25
- from teradataml.common.constants import TeradataConstants, Query
26
- from teradataml.common.utils import UtilFuncs
27
- from teradataml.options.configure import configure
28
- from teradataml.utils.utils import execute_sql
29
- from teradataml.utils.validators import _Validators
30
- from teradataml.utils.internal_buffer import _InternalBuffer
31
- from sqlalchemy.engine.base import Engine
32
- import os
33
- import warnings
34
- import atexit
35
- import urllib.parse
36
-
37
- # Store a global Teradata Vantage Connection.
38
- # Right now user can only provide a single Vantage connection at any point of time.
39
- td_connection = None
40
- td_sqlalchemy_engine = None
41
- temporary_database_name = None
42
- user_specified_connection = False
43
- python_packages_installed = False
44
- td_user = None
45
-
46
- function_alias_mappings = {}
47
-
48
- # Current directory is context folder.
49
- teradataml_folder = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
50
- config_folder = os.path.join(teradataml_folder, "config")
51
-
52
-
53
- def _get_current_databasename():
54
- """
55
- Returns the database name associated with the current context.
56
-
57
- PARAMETERS:
58
- None.
59
-
60
- RETURNS:
61
- Database name associated with the current context
62
-
63
- RAISES:
64
- TeradataMlException - If Vantage connection can't be established using the engine.
65
-
66
- EXAMPLES:
67
- _get_current_databasename()
68
- """
69
- if get_connection() is not None:
70
- select_user_query = ""
71
- try:
72
- sqlbundle = SQLBundle()
73
- select_user_query = sqlbundle._get_sql_query(SQLConstants.SQL_SELECT_DATABASE)
74
- result = execute_sql(select_user_query)
75
- return result.fetchall()[0][0]
76
- except TeradataMlException:
77
- raise
78
- except Exception as err:
79
- raise TeradataMlException(Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, select_user_query),
80
- MessageCodes.TDMLDF_EXEC_SQL_FAILED) from err
81
- else:
82
- return None
83
-
84
-
85
- def _get_database_username():
86
- """
87
- Function to get the database user name.
88
-
89
- PARAMETERS:
90
- None.
91
-
92
- RETURNS:
93
- Database user name.
94
-
95
- RAISES:
96
- TeradataMlException - If "select user" query fails.
97
-
98
- EXAMPLES:
99
- _get_database_username()
100
- """
101
- if get_connection() is not None:
102
- select_query = ""
103
- try:
104
- sqlbundle = SQLBundle()
105
- select_query = sqlbundle._get_sql_query(SQLConstants.SQL_SELECT_USER)
106
- result = execute_sql(select_query)
107
- return result.fetchall()[0][0]
108
- except TeradataMlException:
109
- raise
110
- except Exception as err:
111
- raise TeradataMlException(Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, select_query),
112
- MessageCodes.TDMLDF_EXEC_SQL_FAILED) from err
113
- else:
114
- return None
115
-
116
-
117
- def __cleanup_garbage_collection():
118
- """initiate the garbage collection."""
119
- GarbageCollector._cleanup_garbage_collector()
120
-
121
-
122
- def _get_other_connection_parameters(logmech = None, logdata = None, database = None, **kwargs):
123
- """
124
- DESCRIPTION:
125
- Function to generate and return the string for connection parameters.
126
-
127
- PARAMETERS:
128
- logmech:
129
- Optional Argument.
130
- Specifies the logon mechanism - TD2, LDAP, TDNEGO, KRB5 or JWT, to establish the connection.
131
- Types: str
132
-
133
- logdata:
134
- Optional Argument.
135
- Specifies additional connection information needed for the given logon mechanism.
136
- Types: str
137
-
138
- database:
139
- Optional Argument.
140
- Specifies the initial database to use after logon, instead of the user's default database.
141
- Types: str
142
-
143
- kwargs:
144
- Optional Argument.
145
- Specifies the keyword value pairs of other connection parameters to create the connection string.
146
-
147
- RETURNS:
148
- String containing connection parameters, needed to generate engine URL.
149
-
150
- EXAMPLES:
151
- __get_other_connection_parameters(logmech = "JWT", logdata = "<jwt_token>", database = "<database_name>",
152
- kwargs)
153
- """
154
- # Return empty string if there are no additional connection parameters.
155
- if not logmech and not logdata and not database and len(kwargs) == 0:
156
- return ""
157
-
158
- if logmech:
159
- kwargs['LOGMECH'] = logmech.upper()
160
- if logdata:
161
- kwargs['LOGDATA'] = logdata
162
- if database:
163
- kwargs['DATABASE'] = database
164
-
165
- # Create connection parameters string.
166
- other_params = []
167
- for key, val in kwargs.items():
168
- if isinstance(val, str):
169
- # Value of TMODE connection parameter should be upper case (as per driver specification) i.e., ansi -> ANSI.
170
- # Converting all string values to upper case.
171
- if key != "LOGDATA":
172
- val = val.upper()
173
- else:
174
- # Other type values like integer, boolean etc, are converted to string.
175
- # For boolean values, the connection string should contain lower case values i.e., True -> true
176
- val = str(val).lower()
177
- other_params.append("{}={}".format(key.upper(), val))
178
-
179
- return "/?{}".format("&".join(other_params))
180
-
181
-
182
- def create_context(host = None, username = None, password = None, tdsqlengine = None, temp_database_name = None,
183
- logmech = None, logdata = None, database = None, url_encode = True, **kwargs):
184
- """
185
- DESCRIPTION:
186
- Creates a connection to the Teradata Vantage using the teradatasql + teradatasqlalchemy DBAPI and dialect
187
- combination. Users can pass all required parameters (host, username, password) for establishing a connection to
188
- Vantage, or pass a sqlalchemy engine to the tdsqlengine parameter to override the default DBAPI and dialect
189
- combination.
190
-
191
- Note:
192
- 1. teradataml requires that the user has certain permissions on the user's default database or the initial
193
- default database specified using the database argument, or the temporary database when specified using
194
- temp_database_name. These permissions allow the user to:
195
- a. Create tables and views to save results of teradataml analytic functions.
196
- b. Create views in the background for results of DataFrame APIs such as assign(),
197
- filter(), etc., whenever the result for these APIs are accessed using a print().
198
- c. Create view in the background on the query passed to the DataFrame.from_query() API.
199
-
200
- It is expected that the user has the correct permissions to create these objects in the database that
201
- will be used.
202
- The access to the views created may also require issuing additional GRANT SELECT ... WITH GRANT OPTION
203
- permission depending on which database is used and which object the view being created is based on.
204
-
205
- 2. The temp_database_name and database parameters play a crucial role in determining which database
206
- is used by default to lookup for tables/views while creating teradataml DataFrame using 'DataFrame()'
207
- and 'DataFrame.from_table()' and which database is used to create all internal temporary objects.
208
- +------------------------------------------------------+---------------------------------------------+
209
- | Scenario | teradataml behaviour |
210
- +------------------------------------------------------+---------------------------------------------+
211
- | Both temp_database_name and database are provided | Internal temporary objects are created in |
212
- | | temp_database_name, and database table/view |
213
- | | lookup is done from database. |
214
- +------------------------------------------------------+---------------------------------------------+
215
- | database is provided but temp_database_name is not | Database table/view lookup and internal |
216
- | | temporary objects are created in database. |
217
- +------------------------------------------------------+---------------------------------------------+
218
- | temp_database_name is provided but database is not | Internal temporary objects are created in |
219
- | | temp_database_name, database table/view |
220
- | | lookup from the users default database. |
221
- +------------------------------------------------------+---------------------------------------------+
222
- | Neither temp_database_name nor database are provided | Database table/view lookup and internal |
223
- | | temporary objects are created in users |
224
- | | default database. |
225
- +------------------------------------------------------+---------------------------------------------+
226
-
227
- PARAMETERS:
228
- host:
229
- Optional Argument.
230
- Specifies the fully qualified domain name or IP address of the Teradata System.
231
- Types: str
232
-
233
- username:
234
- Optional Argument.
235
- Specifies the username for logging onto the Teradata Vantage.
236
- Types: str
237
-
238
- password:
239
- Optional Argument.
240
- Specifies the password required for the username.
241
- Types: str
242
- Note:
243
- * Encrypted passwords can also be passed to this argument, using Stored Password Protection feature.
244
- Examples section below demonstrates passing encrypted password to 'create_context'.
245
- More details on Stored Password Protection and how to generate key and encrypted password file
246
- can be found at https://pypi.org/project/teradatasql/#StoredPasswordProtection
247
- * Special characters that may be used in the password are encoded by default, except '~'.
248
- The encoding is done using urllib.parse library and can be
249
- disabled by setting "url_encode" = False.
250
- For example, if the password is: "kx%jj5/g", then this password is encoded as below:
251
- "kx%25jj5%2Fg"
252
- where,
253
- %25 represents the '%' character and
254
- %2F represents the '/' character
255
- The details of how the special characters are replaced can be found in the below link:
256
- "https://docs.microfocus.com/OMi/10.62/Content/OMi/ExtGuide/ExtApps/URL_encoding.htm".
257
- Note:
258
- When password contains a space:
259
- * "url_encode" must be set to False.
260
- * In addition to space, other special characters in this password should be manually encoded,
261
- following the link: https://docs.microfocus.com/OMi/10.62/Content/OMi/ExtGuide/ExtApps/URL_encoding.htm
262
- Refer Example 16 in examples section for a detailed demonstration.
263
-
264
- When password contains unreserved characters like tilde("~"), dot("."), underscore("_"), hyphen("-"):
265
- * Character is not URL encoded by default.
266
- * If unreserved character in passed needs to be encoded then,
267
- it must be encoded manually and encoded password must be passed, along with "url_encode" set to False.
268
- * The unreserved characters differ from one Python version to another Python version.
269
- For example, The encoding standards for Python version 3.7 found in the below link:
270
- "https://docs.python.org/3/library/urllib.parse.html#url-quoting".
271
-
272
-
273
- tdsqlengine:
274
- Optional Argument.
275
- Specifies Teradata Vantage sqlalchemy engine object that should be used to establish a Teradata Vantage
276
- connection.
277
- Types: str
278
-
279
- temp_database_name:
280
- Optional Argument.
281
- Specifies the temporary database name where temporary tables, views will be created.
282
- Types: str
283
-
284
- logmech:
285
- Optional Argument.
286
- Specifies the type of logon mechanism to establish a connection to Teradata Vantage.
287
- Permitted Values: 'TD2', 'TDNEGO', 'LDAP', 'KRB5' & 'JWT'.
288
- TD2:
289
- The Teradata 2 (TD2) mechanism provides authentication using a
290
- Vantage username and password. This is the default logon mechanism
291
- using which the connection is established to Vantage.
292
- TDNEGO:
293
- A security mechanism that automatically determines the actual
294
- mechanism required, based on policy, without user's involvement.
295
- The actual mechanism is determined by the TDGSS server configuration
296
- and by the security policy's mechanism restrictions.
297
- LDAP:
298
- A directory-based user logon to Vantage with a directory username
299
- and password and is authenticated by the directory.
300
- KRB5 (Kerberos):
301
- A directory-based user logon to Vantage with a domain username
302
- and password and is authenticated by Kerberos (KRB5 mechanism).
303
- Note: User must have a valid ticket-granting ticket in order to use this logon mechanism.
304
- JWT:
305
- The JSON Web Token (JWT) authentication mechanism enables single
306
- sign-on (SSO) to the Vantage after the user successfully authenticates
307
- to Teradata UDA User Service.
308
- Note: User must use logdata parameter when using 'JWT' as the logon mechanism.
309
- Types: str
310
-
311
- Note:
312
- teradataml expects the client environments are already setup with appropriate
313
- security mechanisms and are in working conditions.
314
- For more information please refer Teradata Vantage™ - Advanced SQL Engine
315
- Security Administration at https://www.info.teradata.com/
316
-
317
- logdata:
318
- Optional Argument.
319
- Specifies parameters to the LOGMECH command beyond those needed by the logon mechanism, such as
320
- user ID, password and tokens (in case of JWT) to successfully authenticate the user.
321
- Types: str
322
-
323
- database:
324
- Optional Argument.
325
- Specifies the initial database to use after logon, instead of the user's default database.
326
- Types: str
327
-
328
- url_encode:
329
- Optional Argument.
330
- Specifies whether the password should be URL encoded or not.
331
- When set to True, passwords are URL encoded, otherwise not.
332
- Default Value: True
333
- Types: bool
334
-
335
- kwargs:
336
- Specifies the keyword-value pairs of connection parameters that are passed to Teradata SQL Driver for
337
- Python. Please refer to https://github.com/Teradata/python-driver#ConnectionParameters to get information
338
- on connection parameters of the driver.
339
- Note: When the type of a connection parameter is integer or boolean (eg: log, lob_support etc,.), pass
340
- integer or boolean value, instead of quoted integer or quoted boolean as suggested in the
341
- documentation. Please check the examples for usage.
342
-
343
- RETURNS:
344
- A Teradata sqlalchemy engine object.
345
-
346
- RAISES:
347
- TeradataMlException
348
-
349
- EXAMPLES:
350
- >>> from teradataml.context.context import *
351
-
352
- # Example 1: Create context using hostname, username and password
353
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword')
354
-
355
- # Example 2: Create context using already created sqlalchemy engine
356
- >>> from sqlalchemy import create_engine
357
- >>> sqlalchemy_engine = create_engine('teradatasql://'+ tduser +':' + tdpassword + '@'+tdhost)
358
- >>> td_context = create_context(tdsqlengine = sqlalchemy_engine)
359
-
360
- # Example 3: Creating context for Vantage with default logmech 'TD2'
361
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='TD2')
362
-
363
- # Example 4: Creating context for Vantage with logmech as 'TDNEGO'
364
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='TDNEGO')
365
-
366
- # Example 5: Creating context for Vantage with logmech as 'LDAP'
367
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='LDAP')
368
-
369
- # Example 6: Creating context for Vantage with logmech as 'KRB5'
370
- >>> td_context = create_context(host = 'tdhost', logmech='KRB5')
371
-
372
- # Example 7: Creating context for Vantage with logmech as 'JWT'
373
- >>> td_context = create_context(host = 'tdhost', logmech='JWT', logdata='token=eyJpc...h8dA')
374
-
375
- # Example 8: Create context using encrypted password and key passed to 'password' parameter.
376
- # The password should be specified in the format mentioned below:
377
- # ENCRYPTED_PASSWORD(file:<PasswordEncryptionKeyFileName>, file:<EncryptedPasswordFileName>)
378
- # The PasswordEncryptionKeyFileName specifies the name of a file that contains the password encryption key
379
- # and associated information.
380
- # The EncryptedPasswordFileName specifies the name of a file that contains the encrypted password and
381
- # associated information.
382
- # Each filename must be preceded by the 'file:' prefix. The PasswordEncryptionKeyFileName must be separated
383
- # from the EncryptedPasswordFileName by a single comma.
384
- >>> encrypted_password = "ENCRYPTED_PASSWORD(file:PassKey.properties, file:EncPass.properties)"
385
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = encrypted_password)
386
-
387
- # Example 9: Create context using encrypted password in LDAP logon mechanism.
388
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = encrypted_password,
389
- logmech='LDAP')
390
-
391
- # Example 10: Create context using hostname, username, password and database parameters, and connect to a
392
- # different initial database by setting the database parameter.
393
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', database =
394
- 'database_name')
395
-
396
- # Example 11: Create context using already created sqlalchemy engine, and connect to a different initial
397
- # database by setting the database parameter.
398
- >>> from sqlalchemy import create_engine
399
- >>> sqlalchemy_engine = create_engine('teradatasql://'+ tduser +':' + tdpassword + '@'+tdhost +
400
- '/?DATABASE=database_name')
401
- >>> td_context = create_context(tdsqlengine = sqlalchemy_engine)
402
-
403
- # Example 12: Create context for Vantage with logmech as 'LDAP', and connect to a different initial
404
- # database by setting the database parameter.
405
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='LDAP',
406
- database = 'database_name')
407
-
408
- # Example 13: Create context using 'tera' mode with log value set to 8 and lob_support disabled.
409
- >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', tmode = 'tera',
410
- log = 8, lob_support = False)
411
-
412
- # Example 14: Create context when password has special characters.
413
- # In this example password "alice@pass" is encoded by default.
414
- >>> td_context = create_context(host = 'tdhost', username='alice_pass', password = 'alice@pass')
415
- UserWarning: Warning: Password is URL encoded.
416
-
417
- # Example 15: Create context when password contains space and special characters.
418
- # "url_encode" must be set to False and special characters should be manually encoded in the password.
419
- # For example, let's say password is: "kx%jj5/ g"
420
- # then password should be manually encoded as: "kx%25jj5%2F g"
421
- # where,
422
- # %25 represents the '%' character and
423
- # %2F represents the '/' character
424
- # space is not encoded.
425
- >>> td_context = create_context(host = 'tdhost', username='alice_pass', password = 'kx%25jj5%2F g',
426
- url_encode=False)
427
-
428
- """
429
- global td_connection
430
- global td_sqlalchemy_engine
431
- global temporary_database_name
432
- global user_specified_connection
433
- global python_packages_installed
434
- global td_user
435
- logmech_valid_values = ['TD2', 'TDNEGO', 'LDAP', 'KRB5', 'JWT']
436
- awu_matrix = []
437
- awu_matrix.append(["host", host, True, (str), True])
438
- awu_matrix.append(["username", username, True, (str), True])
439
- awu_matrix.append(["password", password, True, (str), True])
440
- awu_matrix.append(["tdsqlengine", tdsqlengine, True, (Engine)])
441
- awu_matrix.append(["logmech", logmech, True, (str), True, logmech_valid_values])
442
- awu_matrix.append(["logdata", logdata, True, (str), True])
443
- awu_matrix.append(["database", database, True, (str), True])
444
- awu_matrix.append(["url_encode", url_encode, True, (bool), True])
445
-
446
- awu = _Validators()
447
- awu._validate_function_arguments(awu_matrix)
448
-
449
- # Clearing the internal buffer.
450
- _InternalBuffer.clean()
451
-
452
- if logmech == "JWT" and not logdata:
453
- raise TeradataMlException(Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
454
- 'logdata',
455
- 'logmech=JWT'),
456
- MessageCodes.DEPENDENT_ARG_MISSING)
457
-
458
- # Setting the filter to raise warning every time.
459
- warnings.simplefilter("always", TeradataMlRuntimeWarning)
460
- # Throwing warning and removing context if any.
461
- if td_connection is not None:
462
- warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT))
463
- remove_context()
464
-
465
- # Check if teradata sqlalchemy engine is provided by the user
466
- if tdsqlengine:
467
- try:
468
- td_connection = tdsqlengine.connect()
469
- td_sqlalchemy_engine = tdsqlengine
470
- user_specified_connection = True
471
- except TeradataMlException:
472
- raise
473
- except Exception as err:
474
- raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
475
- MessageCodes.CONNECTION_FAILURE) from err
476
- # Check if host and username and password are provided
477
- elif host:
478
- username = '' if username is None else username
479
-
480
- # Encode the password if authentication is through username/password and url_encode is True.
481
- if password and url_encode:
482
- encoded_password = urllib.parse.quote_plus(password)
483
- if encoded_password != password:
484
- warnings.warn("Warning: Password is URL encoded.", category=TeradataMlRuntimeWarning)
485
- password = encoded_password
486
-
487
- if logmech and logmech.upper() == 'JWT':
488
- host_value = host
489
- elif logmech and logmech.upper() == 'KRB5':
490
- host_value = '{}:@{}'.format(username, host)
491
- else:
492
- host_value = '{}:{}@{}'.format(username, password, host)
493
-
494
- other_connection_parameters = _get_other_connection_parameters(logmech, logdata, database, **kwargs)
495
-
496
- try:
497
- engine_url = "teradatasql://{}{}"
498
- td_sqlalchemy_engine = create_engine(engine_url.format(host_value, other_connection_parameters))
499
- td_connection = td_sqlalchemy_engine.connect()
500
- td_user = username.upper()
501
-
502
- # Masking senstive information - password, logmech and logdata.
503
- if password:
504
- try:
505
- # Below statement raises an AttributeError with SQLAlchemy
506
- # version 1.4.x
507
- td_sqlalchemy_engine.url.password = "***"
508
- except AttributeError:
509
- # Masking the password should be different from above as SQLAlchemy
510
- # converted _URL object to immutable object from version 1.4.x.
511
- new_url = td_sqlalchemy_engine.url.set(password="***")
512
- td_sqlalchemy_engine.url = new_url
513
- except Exception:
514
- pass
515
- _mask_logmech_logdata()
516
-
517
- user_specified_connection = False
518
-
519
- except TeradataMlException:
520
- raise
521
- except Exception as err:
522
- raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
523
- MessageCodes.CONNECTION_FAILURE) from err
524
-
525
- # Load function aliases from config.
526
- _load_function_aliases()
527
-
528
- python_packages_installed = False
529
-
530
- # Assign the tempdatabase name to global
531
- if temp_database_name is None:
532
- temporary_database_name = _get_current_databasename()
533
- else:
534
- temporary_database_name = temp_database_name
535
-
536
- # Connection is established initiate the garbage collection
537
- atexit.register(__cleanup_garbage_collection)
538
- __cleanup_garbage_collection()
539
- # Initialise Dag
540
- __initalise_dag()
541
-
542
- # Set database version.
543
- configure.database_version = _get_database_version()
544
-
545
- # Process Analytic functions.
546
- from teradataml.analytics import _process_analytic_functions
547
- _process_analytic_functions()
548
-
549
- # Return the connection by default
550
- return td_sqlalchemy_engine
551
-
552
-
553
- def _mask_logmech_logdata():
554
- """
555
- Masks sensitive connection information LOGMECH, LOGDATA exposed by sqlalchemy engine object
556
- """
557
- global td_sqlalchemy_engine
558
- try:
559
- # Below statement raises a TypeError with SQLAlchemy version 1.4.x
560
- if ('LOGMECH' in td_sqlalchemy_engine.url.query):
561
- td_sqlalchemy_engine.url.query['LOGMECH'] = "***"
562
- if ('LOGDATA' in td_sqlalchemy_engine.url.query):
563
- td_sqlalchemy_engine.url.query['LOGDATA'] = "***"
564
- except TypeError:
565
- # Masking the password should be different from above as SQLAlchemy
566
- # converted _URL object to immutable object from version 1.4.x.
567
- new_url = td_sqlalchemy_engine.url.update_query_dict({"LOGMECH": "***", "LOGDATA": "***"})
568
- td_sqlalchemy_engine.url = new_url
569
- except Exception:
570
- pass
571
-
572
-
573
- def get_context():
574
- """
575
- DESCRIPTION:
576
- Returns the Teradata Vantage connection associated with the current context.
577
-
578
- PARAMETERS:
579
- None
580
-
581
- RETURNS:
582
- A Teradata sqlalchemy engine object.
583
-
584
- RAISES:
585
- None.
586
-
587
- EXAMPLES:
588
- td_sqlalchemy_engine = get_context()
589
-
590
- """
591
- global td_sqlalchemy_engine
592
- return td_sqlalchemy_engine
593
-
594
-
595
- def get_connection():
596
- """
597
- DESCRIPTION:
598
- Returns the Teradata Vantage connection associated with the current context.
599
-
600
- PARAMETERS:
601
- None
602
-
603
- RETURNS:
604
- A Teradata dbapi connection object.
605
-
606
- RAISES:
607
- None.
608
-
609
- EXAMPLES:
610
- tdconnection = get_connection()
611
-
612
- """
613
- global td_connection
614
- return td_connection
615
-
616
-
617
- def set_context(tdsqlengine, temp_database_name=None):
618
- """
619
- DESCRIPTION:
620
- Specifies a Teradata Vantage sqlalchemy engine as current context.
621
-
622
- PARAMETERS:
623
- tdsqlengine:
624
- Required Argument.
625
- Specifies Teradata Vantage sqlalchemy engine object that should be used to establish a Teradata Vantage
626
- connection.
627
- Types: str
628
-
629
- temp_database_name:
630
- Optional Argument.
631
- Specifies the temporary database name where temporary tables, views will be created.
632
- Types: str
633
-
634
- RETURNS:
635
- A Teradata Vantage connection object.
636
-
637
- RAISES:
638
- TeradataMlException
639
-
640
- EXAMPLES:
641
- set_context(tdsqlengine = td_sqlalchemy_engine)
642
-
643
- """
644
- global td_connection
645
- global td_sqlalchemy_engine
646
- global temporary_database_name
647
- global user_specified_connection
648
- global python_packages_installed
649
- if td_connection is not None:
650
- warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT))
651
- remove_context()
652
-
653
- if tdsqlengine:
654
- try:
655
- td_connection = tdsqlengine.connect()
656
- td_sqlalchemy_engine = tdsqlengine
657
- # Assign the tempdatabase name to global
658
- if temp_database_name is None:
659
- temporary_database_name = _get_current_databasename()
660
- else:
661
- temporary_database_name = temp_database_name
662
-
663
- user_specified_connection = True
664
- except TeradataMlException:
665
- raise
666
- except Exception as err:
667
- raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
668
- MessageCodes.CONNECTION_FAILURE) from err
669
- else:
670
- return None
671
-
672
- # Load function aliases from config.
673
- _load_function_aliases()
674
-
675
- python_packages_installed = False
676
-
677
- # Initialise Dag
678
- __initalise_dag()
679
-
680
- return td_connection
681
-
682
-
683
- def remove_context():
684
- """
685
- DESCRIPTION:
686
- Removes the current context associated with the Teradata Vantage connection.
687
-
688
- PARAMETERS:
689
- None.
690
-
691
- RETURNS:
692
- None.
693
-
694
- RAISES:
695
- None.
696
-
697
- EXAMPLES:
698
- remove_context()
699
-
700
- """
701
- global td_connection
702
- global td_sqlalchemy_engine
703
- global user_specified_connection
704
- global python_packages_installed
705
- global td_user
706
-
707
- # Intiate the garbage collection
708
- __cleanup_garbage_collection()
709
-
710
- if user_specified_connection is not True:
711
- try:
712
- # Close the connection if not user specified connection.
713
- td_connection.close()
714
- td_sqlalchemy_engine.engine.dispose()
715
- except TeradataMlException:
716
- raise
717
- except Exception as err:
718
- raise TeradataMlException(Messages.get_message(MessageCodes.DISCONNECT_FAILURE),
719
- MessageCodes.DISCONNECT_FAILURE) from err
720
- td_connection = None
721
- td_sqlalchemy_engine = None
722
- python_packages_installed = False
723
- td_user = None
724
-
725
- # Closing Dag
726
- __close_dag()
727
- return True
728
-
729
-
730
- def _get_context_temp_databasename(table_type=TeradataConstants.TERADATA_VIEW):
731
- """
732
- Returns the temporary database name associated with the current context.
733
-
734
- PARAMETERS:
735
- table_type:
736
- Optional Argument.
737
- Specifies the type of object - table or view.
738
- Default value: TeradataConstants.TERADATA_VIEW
739
- Types: TeradataConstant
740
-
741
- RETURNS:
742
- Database name associated with the current context
743
-
744
- RAISES:
745
- None.
746
-
747
- EXAMPLES:
748
- _get_context_temp_databasename()
749
- _get_context_temp_databasename(table_type=TeradataConstants.TERADATA_TABLE)
750
- """
751
- global temporary_database_name
752
- if table_type == TeradataConstants.TERADATA_TABLE and \
753
- configure.temp_table_database is not None:
754
- return configure.temp_table_database
755
- if table_type == TeradataConstants.TERADATA_VIEW and \
756
- configure.temp_view_database is not None:
757
- return configure.temp_view_database
758
- return temporary_database_name
759
-
760
-
761
- def __initalise_dag():
762
- """
763
- Intialises the Dag
764
-
765
- PARAMETERS:
766
- None.
767
-
768
- RETURNS:
769
- None
770
-
771
- RAISES:
772
- None.
773
-
774
- EXAMPLES:
775
- __initalise_dag()
776
- """
777
- aed_context = AEDContext()
778
- # Closing the Dag if previous instance is still exists.
779
- __close_dag()
780
- # TODO: Need to add logLevel and log_file functionlaity once AED is implemented these functionalities
781
- aed_context._init_dag(_get_database_username(), _get_context_temp_databasename(),
782
- log_level=4, log_file="")
783
-
784
-
785
- def __close_dag():
786
- """
787
- Closes the Dag
788
-
789
- PARAMETERS:
790
- None.
791
-
792
- RETURNS:
793
- None
794
-
795
- RAISES:
796
- None.
797
-
798
- EXAMPLES:
799
- __close_dag()
800
- """
801
- try:
802
- AEDContext()._close_dag()
803
- # Ignore if any exception occurs.
804
- except TeradataMlException:
805
- pass
806
-
807
-
808
- def _load_function_aliases():
809
- """
810
- Function to load function aliases for analytical functions
811
- based on the vantage version from configuration file.
812
-
813
- PARAMETERS:
814
- None
815
-
816
- RETURNS:
817
- None
818
-
819
- RAISES:
820
- TeradataMLException
821
-
822
- EXAMPLES:
823
- _load_function_aliases()
824
- """
825
-
826
- global function_alias_mappings
827
- function_alias_mappings = {}
828
-
829
- supported_engines = TeradataConstants.SUPPORTED_ENGINES.value
830
- vantage_versions = TeradataConstants.SUPPORTED_VANTAGE_VERSIONS.value
831
-
832
- __set_vantage_version()
833
-
834
- for vv in vantage_versions.keys():
835
- function_alias_mappings_by_engine = {}
836
- for engine in supported_engines.keys():
837
- alias_config_file = os.path.join(config_folder,
838
- "{}_{}".format(supported_engines[engine]["file"], vantage_versions[vv]))
839
- engine_name = supported_engines[engine]['name']
840
- UtilFuncs._check_alias_config_file_exists(vv, alias_config_file)
841
- function_alias_mappings_by_engine[engine_name] = \
842
- UtilFuncs._get_function_mappings_from_config_file(alias_config_file)
843
- function_alias_mappings[vv] = function_alias_mappings_by_engine
844
-
845
-
846
- def _get_vantage_version():
847
- """
848
- Function to determine the underlying Vantage version.
849
-
850
- PARAMETERS:
851
- None
852
-
853
- RETURNS:
854
- A string specifying the Vantage version, else None when not able to determine it.
855
-
856
- RAISES:
857
- Warning
858
-
859
- EXAMPLES:
860
- _get_vantage_version()
861
- """
862
- if td_connection.dialect.has_table(td_connection, "versionInfo", schema="pm"):
863
-
864
- # BTEQ -- Enter your SQL request or BTEQ command:
865
- # select * from pm.versionInfo;
866
- #
867
- # select * from pm.versionInfo;
868
- #
869
- # *** Query completed. 2 rows found. 2 columns returned.
870
- # *** Total elapsed time was 1 second.
871
- #
872
- # InfoKey InfoData
873
- # ------------------------------ --------------------------------------------
874
- # BUILD_VERSION 08.10.00.00-e84ce5f7
875
- # RELEASE Vantage 1.1 GA
876
-
877
- try:
878
- vantage_ver_qry = "select InfoData from pm.versionInfo where InfoKey = 'RELEASE' (NOT CASESPECIFIC)"
879
- res = execute_sql(vantage_ver_qry)
880
- return res.fetchall()[0][0]
881
- except:
882
- return None
883
- else:
884
- # If "pm.versionInfo" does not exist, then vantage version is 1.0
885
- return "vantage1.1"
886
-
887
-
888
- def _get_database_version():
889
- """
890
- DESCRIPTION:
891
- An internal function to determine the underlying Vantage Database version.
892
-
893
- PARAMETERS:
894
- None
895
-
896
- RETURNS:
897
- A string specifying the Vantage Database version, else None when not able to determine it.
898
-
899
- RAISES:
900
- None
901
-
902
- EXAMPLES:
903
- _get_database_version()
904
- """
905
-
906
- # BTEQ -- Enter your SQL request or BTEQ command:
907
- # select * from DBC.DBCInfoV;
908
- # *** Query completed. 3 rows found. 2 columns returned.
909
- # *** Total elapsed time was 1 second.
910
- #
911
- # InfoKey InfoData
912
- # ------------------------------ --------------------------------------------
913
- # VERSION 17.05a.00.147
914
- # LANGUAGE SUPPORT MODE Standard
915
- # RELEASE 17.05a.00.147
916
-
917
- try:
918
- return execute_sql(Query.VANTAGE_VERSION.value).fetchall()[0][0]
919
- except:
920
- return None
921
-
922
-
923
- def __set_vantage_version():
924
- """
925
- Function to set the configuration option vantage_version.
926
-
927
- PARAMETERS:
928
- None
929
-
930
- RETURNS:
931
- None
932
-
933
- RAISES:
934
- TeradataMLException
935
-
936
- EXAMPLES:
937
- __set_vantage_version()
938
- """
939
- vantage_version = _get_vantage_version()
940
- if vantage_version is None:
941
- # Raise warning here.
942
- warnings.warn(Messages.get_message(
943
- MessageCodes.UNABLE_TO_GET_VANTAGE_VERSION).format("vantage_version", configure.vantage_version))
944
- elif "vantage1.1" in vantage_version.lower().replace(" ", ""):
945
- configure.vantage_version = "vantage1.1"
946
- elif "mlengine9.0" in vantage_version.lower().replace(" ", ""):
947
- configure.vantage_version = "vantage1.3"
948
- elif "mlengine08.10" in vantage_version.lower().replace(" ", ""):
949
- configure.vantage_version = "vantage2.0"
950
- else:
951
- # If "pm.versionInfo" does not exist, then vantage version is 1.0
952
- configure.vantage_version = "vantage1.0"
953
-
954
-
955
- def _get_function_mappings():
956
- """
957
- Function to return function aliases for analytical functions.
958
-
959
- PARAMETERS:
960
- None
961
-
962
- RETURNS:
963
- Dict of function aliases of the format
964
- {'mle' : {'func_name': "alias_name", ...},
965
- 'sqle' : {'func_name': "alias_name", ...}
966
- ......
967
- }
968
-
969
- RAISES:
970
- None
971
-
972
- EXAMPLES:
973
- get_function_aliases()
974
- """
975
- global function_alias_mappings
976
- return function_alias_mappings
977
-
978
-
979
- def _get_user():
980
- """
981
- DESCRIPTION:
982
- An internal function to get the database username associated with the current context.
983
-
984
- PARAMETERS:
985
- None.
986
-
987
- RETURNS:
988
- Database username associated with the current context.
989
-
990
- RAISES:
991
- TeradataMlException
992
-
993
- EXAMPLES:
994
- _get_user()
995
- """
996
- global td_user
997
- if not td_user:
998
- td_user = _get_database_username()
999
- return td_user
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Unpublished work.
4
+ Copyright (c) 2018 by Teradata Corporation. All rights reserved.
5
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
6
+
7
+ Primary Owner: rameshchandra.d@teradata.com
8
+ Secondary Owner:
9
+
10
+ teradataml context
11
+ ----------
12
+ A teradataml context functions provide interface to Teradata Vantage. Provides functionality to get and set a global
13
+ context which can be used by other analytical functions to get the Teradata Vantage connection.
14
+
15
+ """
16
+ from pathlib import Path
17
+ from sqlalchemy import create_engine
18
+ from teradatasqlalchemy.telemetry.queryband import collect_queryband
19
+ from teradataml.common.deprecations import argument_deprecation
20
+ from teradataml.common.exceptions import TeradataMlException
21
+ from teradataml.common.warnings import TeradataMlRuntimeWarning
22
+ from teradataml.common.messages import Messages
23
+ from teradataml.common.messagecodes import MessageCodes
24
+ from teradataml.common.sqlbundle import SQLBundle
25
+ from teradataml.common.constants import SQLConstants
26
+ from teradataml.common.garbagecollector import GarbageCollector
27
+ from teradataml.context.aed_context import AEDContext
28
+ from teradataml.common.constants import TeradataConstants, Query
29
+ from teradataml.options.configure import configure
30
+ from teradataml.utils.utils import execute_sql
31
+ from teradataml.utils.validators import _Validators
32
+ from teradataml.utils.internal_buffer import _InternalBuffer
33
+ from sqlalchemy.engine.base import Engine
34
+ from sqlalchemy.engine.url import URL
35
+ import os
36
+ import warnings
37
+ import atexit
38
+ import urllib.parse
39
+
40
+ # Store a global Teradata Vantage Connection.
41
+ # Right now user can only provide a single Vantage connection at any point of time.
42
+ td_connection = None
43
+ td_sqlalchemy_engine = None
44
+ temporary_database_name = None
45
+ user_specified_connection = False
46
+ python_packages_installed = False
47
+ td_user = None
48
+
49
+ function_alias_mappings = {}
50
+
51
+ # Current directory is context folder.
52
+ teradataml_folder = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
53
+ config_folder = os.path.join(teradataml_folder, "config")
54
+
55
+
56
+ def _get_current_databasename():
57
+ """
58
+ Returns the database name associated with the current context.
59
+
60
+ PARAMETERS:
61
+ None.
62
+
63
+ RETURNS:
64
+ Database name associated with the current context
65
+
66
+ RAISES:
67
+ TeradataMlException - If Vantage connection can't be established using the engine.
68
+
69
+ EXAMPLES:
70
+ _get_current_databasename()
71
+ """
72
+ if get_connection() is not None:
73
+ select_user_query = ""
74
+ try:
75
+ sqlbundle = SQLBundle()
76
+ select_user_query = sqlbundle._get_sql_query(SQLConstants.SQL_SELECT_DATABASE)
77
+ result = execute_sql(select_user_query)
78
+ return result.fetchall()[0][0]
79
+ except TeradataMlException:
80
+ raise
81
+ except Exception as err:
82
+ raise TeradataMlException(Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, select_user_query),
83
+ MessageCodes.TDMLDF_EXEC_SQL_FAILED) from err
84
+ else:
85
+ return None
86
+
87
+
88
+ def _get_database_username():
89
+ """
90
+ Function to get the database user name.
91
+
92
+ PARAMETERS:
93
+ None.
94
+
95
+ RETURNS:
96
+ Database user name.
97
+
98
+ RAISES:
99
+ TeradataMlException - If "select user" query fails.
100
+
101
+ EXAMPLES:
102
+ _get_database_username()
103
+ """
104
+ if get_connection() is not None:
105
+ select_query = ""
106
+ try:
107
+ sqlbundle = SQLBundle()
108
+ select_query = sqlbundle._get_sql_query(SQLConstants.SQL_SELECT_USER)
109
+ result = execute_sql(select_query)
110
+ return result.fetchall()[0][0]
111
+ except TeradataMlException:
112
+ raise
113
+ except Exception as err:
114
+ raise TeradataMlException(Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, select_query),
115
+ MessageCodes.TDMLDF_EXEC_SQL_FAILED) from err
116
+ else:
117
+ return None
118
+
119
+
120
+ def __cleanup_garbage_collection():
121
+ """initiate the garbage collection."""
122
+ GarbageCollector._cleanup_garbage_collector()
123
+
124
+
125
+ def _get_other_connection_parameters(logmech = None, logdata = None, database = None, **kwargs):
126
+ """
127
+ DESCRIPTION:
128
+ Internal function to return the connection parameters.
129
+
130
+ PARAMETERS:
131
+ logmech:
132
+ Optional Argument.
133
+ Specifies the logon mechanism - TD2, LDAP, TDNEGO, KRB5 or JWT, to establish the connection.
134
+ Types: str
135
+
136
+ logdata:
137
+ Optional Argument.
138
+ Specifies additional connection information needed for the given logon mechanism.
139
+ Types: str
140
+
141
+ database:
142
+ Optional Argument.
143
+ Specifies the initial database to use after logon, instead of the user's default database.
144
+ Types: str
145
+
146
+ kwargs:
147
+ Optional Argument.
148
+ Specifies the keyword value pairs of other connection parameters to create the connection string.
149
+
150
+ RETURNS:
151
+ dict, needed to generate engine URL.
152
+
153
+ EXAMPLES:
154
+ __get_other_connection_parameters(logmech = "JWT", logdata = "<jwt_token>", database = "<database_name>",
155
+ kwargs)
156
+ """
157
+ # Return empty string if there are no additional connection parameters.
158
+ if not logmech and not logdata and not database and len(kwargs) == 0:
159
+ return ""
160
+
161
+ result = {}
162
+
163
+ if logmech:
164
+ result['LOGMECH'] = logmech.upper()
165
+ if logdata:
166
+ result['LOGDATA'] = logdata
167
+ if database:
168
+ result['DATABASE'] = database
169
+
170
+ # Create connection parameters string.
171
+ other_params = []
172
+ for key, val in kwargs.items():
173
+ if isinstance(val, str):
174
+ # Value of TMODE connection parameter should be upper case (as per driver specification) i.e., ansi -> ANSI.
175
+ # Converting all string values to upper case.
176
+ if key != "LOGDATA":
177
+ val = val.upper()
178
+ else:
179
+ # Other type values like integer, boolean etc, are converted to string.
180
+ # For boolean values, the connection string should contain lower case values i.e., True -> true
181
+ val = str(val).lower()
182
+ result[key] = val
183
+
184
+ return result
185
+
186
+ @argument_deprecation("future", ["url_encode"], False, None)
187
+ @collect_queryband(queryband='CrtCxt')
188
+ def create_context(host = None, username = None, password = None, tdsqlengine = None, temp_database_name = None,
189
+ logmech = None, logdata = None, database = None, url_encode = True, **kwargs):
190
+ """
191
+ DESCRIPTION:
192
+ Creates a connection to the Teradata Vantage using the teradatasql + teradatasqlalchemy DBAPI and dialect
193
+ combination. Users can pass all required parameters (host, username, password) for establishing a connection to
194
+ Vantage, or pass a sqlalchemy engine to the tdsqlengine parameter to override the default DBAPI and dialect
195
+ combination.
196
+
197
+ Note:
198
+ 1. teradataml requires that the user has certain permissions on the user's default database or the initial
199
+ default database specified using the database argument, or the temporary database when specified using
200
+ temp_database_name. These permissions allow the user to:
201
+ a. Create tables and views to save results of teradataml analytic functions.
202
+ b. Create views in the background for results of DataFrame APIs such as assign(),
203
+ filter(), etc., whenever the result for these APIs are accessed using a print().
204
+ c. Create view in the background on the query passed to the DataFrame.from_query() API.
205
+
206
+ It is expected that the user has the correct permissions to create these objects in the database that
207
+ will be used.
208
+ The access to the views created may also require issuing additional GRANT SELECT ... WITH GRANT OPTION
209
+ permission depending on which database is used and which object the view being created is based on.
210
+
211
+ 2. The temp_database_name and database parameters play a crucial role in determining which database
212
+ is used by default to lookup for tables/views while creating teradataml DataFrame using 'DataFrame()'
213
+ and 'DataFrame.from_table()' and which database is used to create all internal temporary objects.
214
+ +------------------------------------------------------+---------------------------------------------+
215
+ | Scenario | teradataml behaviour |
216
+ +------------------------------------------------------+---------------------------------------------+
217
+ | Both temp_database_name and database are provided | Internal temporary objects are created in |
218
+ | | temp_database_name, and database table/view |
219
+ | | lookup is done from database. |
220
+ +------------------------------------------------------+---------------------------------------------+
221
+ | database is provided but temp_database_name is not | Database table/view lookup and internal |
222
+ | | temporary objects are created in database. |
223
+ +------------------------------------------------------+---------------------------------------------+
224
+ | temp_database_name is provided but database is not | Internal temporary objects are created in |
225
+ | | temp_database_name, database table/view |
226
+ | | lookup from the users default database. |
227
+ +------------------------------------------------------+---------------------------------------------+
228
+ | Neither temp_database_name nor database are provided | Database table/view lookup and internal |
229
+ | | temporary objects are created in users |
230
+ | | default database. |
231
+ +------------------------------------------------------+---------------------------------------------+
232
+
233
+ PARAMETERS:
234
+ host:
235
+ Optional Argument.
236
+ Specifies the fully qualified domain name or IP address of the Teradata System.
237
+ Types: str
238
+
239
+ username:
240
+ Optional Argument.
241
+ Specifies the username for logging onto the Teradata Vantage.
242
+ Types: str
243
+
244
+ password:
245
+ Optional Argument.
246
+ Specifies the password required for the username.
247
+ Types: str
248
+ Note:
249
+ * Encrypted passwords can also be passed to this argument, using Stored Password Protection feature.
250
+ Examples section below demonstrates passing encrypted password to 'create_context'.
251
+ More details on Stored Password Protection and how to generate key and encrypted password file
252
+ can be found at https://pypi.org/project/teradatasql/#StoredPasswordProtection
253
+ * Special characters that may be used in the password are encoded by default, except '~'.
254
+ The encoding is done using urllib.parse library and can be
255
+ disabled by setting "url_encode" = False.
256
+ For example, if the password is: "kx%jj5/g", then this password is encoded as below:
257
+ "kx%25jj5%2Fg"
258
+ where,
259
+ %25 represents the '%' character and
260
+ %2F represents the '/' character
261
+ The details of how the special characters are replaced can be found in the below link:
262
+ "https://docs.microfocus.com/OMi/10.62/Content/OMi/ExtGuide/ExtApps/URL_encoding.htm".
263
+ Note:
264
+ When password contains a space:
265
+ * "url_encode" must be set to False.
266
+ * In addition to space, other special characters in this password should be manually encoded,
267
+ following the link: https://docs.microfocus.com/OMi/10.62/Content/OMi/ExtGuide/ExtApps/URL_encoding.htm
268
+ Refer Example 16 in examples section for a detailed demonstration.
269
+
270
+ When password contains unreserved characters like tilde("~"), dot("."), underscore("_"), hyphen("-"):
271
+ * Character is not URL encoded by default.
272
+ * If unreserved character in passed needs to be encoded then,
273
+ it must be encoded manually and encoded password must be passed, along with "url_encode" set to False.
274
+ * The unreserved characters differ from one Python version to another Python version.
275
+ For example, The encoding standards for Python version 3.7 found in the below link:
276
+ "https://docs.python.org/3/library/urllib.parse.html#url-quoting".
277
+
278
+
279
+ tdsqlengine:
280
+ Optional Argument.
281
+ Specifies Teradata Vantage sqlalchemy engine object that should be used to establish a Teradata Vantage
282
+ connection.
283
+ Types: str
284
+
285
+ temp_database_name:
286
+ Optional Argument.
287
+ Specifies the temporary database name where temporary tables, views will be created.
288
+ Types: str
289
+
290
+ logmech:
291
+ Optional Argument.
292
+ Specifies the type of logon mechanism to establish a connection to Teradata Vantage.
293
+ Permitted Values: As supported by the teradata driver.
294
+ Notes:
295
+ 1. teradataml expects the client environments are already setup with appropriate
296
+ security mechanisms and are in working conditions.
297
+ 2. User must have a valid ticket-granting ticket in order to use KRB5 (Kerberos) logon mechanism.
298
+ 3. User must use logdata parameter when using 'JWT' as the logon mechanism.
299
+ 4. Browser Authentication is supported for Windows and macOS.
300
+ For more information please refer Teradata Vantage™ - Advanced SQL Engine
301
+ Security Administration at https://www.info.teradata.com/
302
+ Types: str
303
+
304
+ logdata:
305
+ Optional Argument.
306
+ Specifies parameters to the LOGMECH command beyond those needed by the logon mechanism, such as
307
+ user ID, password and tokens (in case of JWT) to successfully authenticate the user.
308
+ Types: str
309
+
310
+ database:
311
+ Optional Argument.
312
+ Specifies the initial database to use after logon, instead of the user's default database.
313
+ Types: str
314
+
315
+ kwargs:
316
+ Specifies the keyword-value pairs of connection parameters that are passed to Teradata SQL Driver for
317
+ Python. Please refer to https://github.com/Teradata/python-driver#ConnectionParameters to get information
318
+ on connection parameters of the driver.
319
+ Note: When the type of a connection parameter is integer or boolean (eg: log, lob_support etc,.), pass
320
+ integer or boolean value, instead of quoted integer or quoted boolean as suggested in the
321
+ documentation. Please check the examples for usage.
322
+
323
+ RETURNS:
324
+ A Teradata sqlalchemy engine object.
325
+
326
+ RAISES:
327
+ TeradataMlException
328
+
329
+ EXAMPLES:
330
+ >>> from teradataml.context.context import *
331
+
332
+ # Example 1: Create context using hostname, username and password
333
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword')
334
+
335
+ # Example 2: Create context using already created sqlalchemy engine
336
+ >>> from sqlalchemy import create_engine
337
+ >>> sqlalchemy_engine = create_engine('teradatasql://'+ tduser +':' + tdpassword + '@'+tdhost)
338
+ >>> td_context = create_context(tdsqlengine = sqlalchemy_engine)
339
+
340
+ # Example 3: Creating context for Vantage with default logmech 'TD2'
341
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='TD2')
342
+
343
+ # Example 4: Creating context for Vantage with logmech as 'TDNEGO'
344
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='TDNEGO')
345
+
346
+ # Example 5: Creating context for Vantage with logmech as 'LDAP'
347
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='LDAP')
348
+
349
+ # Example 6: Creating context for Vantage with logmech as 'KRB5'
350
+ >>> td_context = create_context(host = 'tdhost', logmech='KRB5')
351
+
352
+ # Example 7: Creating context for Vantage with logmech as 'JWT'
353
+ >>> td_context = create_context(host = 'tdhost', logmech='JWT', logdata='token=eyJpc...h8dA')
354
+
355
+ # Example 8: Create context using encrypted password and key passed to 'password' parameter.
356
+ # The password should be specified in the format mentioned below:
357
+ # ENCRYPTED_PASSWORD(file:<PasswordEncryptionKeyFileName>, file:<EncryptedPasswordFileName>)
358
+ # The PasswordEncryptionKeyFileName specifies the name of a file that contains the password encryption key
359
+ # and associated information.
360
+ # The EncryptedPasswordFileName specifies the name of a file that contains the encrypted password and
361
+ # associated information.
362
+ # Each filename must be preceded by the 'file:' prefix. The PasswordEncryptionKeyFileName must be separated
363
+ # from the EncryptedPasswordFileName by a single comma.
364
+ >>> encrypted_password = "ENCRYPTED_PASSWORD(file:PassKey.properties, file:EncPass.properties)"
365
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = encrypted_password)
366
+
367
+ # Example 9: Create context using encrypted password in LDAP logon mechanism.
368
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = encrypted_password,
369
+ logmech='LDAP')
370
+
371
+ # Example 10: Create context using hostname, username, password and database parameters, and connect to a
372
+ # different initial database by setting the database parameter.
373
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', database =
374
+ 'database_name')
375
+
376
+ # Example 11: Create context using already created sqlalchemy engine, and connect to a different initial
377
+ # database by setting the database parameter.
378
+ >>> from sqlalchemy import create_engine
379
+ >>> sqlalchemy_engine = create_engine('teradatasql://'+ tduser +':' + tdpassword + '@'+tdhost +
380
+ '/?DATABASE=database_name')
381
+ >>> td_context = create_context(tdsqlengine = sqlalchemy_engine)
382
+
383
+ # Example 12: Create context for Vantage with logmech as 'LDAP', and connect to a different initial
384
+ # database by setting the database parameter.
385
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', logmech='LDAP',
386
+ database = 'database_name')
387
+
388
+ # Example 13: Create context using 'tera' mode with log value set to 8 and lob_support disabled.
389
+ >>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', tmode = 'tera',
390
+ log = 8, lob_support = False)
391
+
392
+ """
393
+ global td_connection
394
+ global td_sqlalchemy_engine
395
+ global temporary_database_name
396
+ global user_specified_connection
397
+ global python_packages_installed
398
+ global td_user
399
+ awu_matrix = []
400
+ awu_matrix.append(["host", host, True, (str), True])
401
+ awu_matrix.append(["username", username, True, (str), True])
402
+ awu_matrix.append(["password", password, True, (str), True])
403
+ awu_matrix.append(["tdsqlengine", tdsqlengine, True, (Engine)])
404
+ awu_matrix.append(["logmech", logmech, True, (str), True])
405
+ awu_matrix.append(["logdata", logdata, True, (str), True])
406
+ awu_matrix.append(["database", database, True, (str), True])
407
+
408
+ awu = _Validators()
409
+ awu._validate_function_arguments(awu_matrix)
410
+
411
+ # Clearing the internal buffer.
412
+ _InternalBuffer.clean()
413
+
414
+ if logmech == "JWT" and not logdata:
415
+ raise TeradataMlException(Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
416
+ 'logdata',
417
+ 'logmech=JWT'),
418
+ MessageCodes.DEPENDENT_ARG_MISSING)
419
+
420
+ # Setting the filter to raise warning every time.
421
+ warnings.simplefilter("always", TeradataMlRuntimeWarning)
422
+ # Throwing warning and removing context if any.
423
+ if td_connection is not None:
424
+ warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT), stacklevel=2)
425
+ remove_context()
426
+
427
+ # Check if teradata sqlalchemy engine is provided by the user
428
+ if tdsqlengine:
429
+ try:
430
+ td_connection = tdsqlengine.connect()
431
+ td_sqlalchemy_engine = tdsqlengine
432
+ user_specified_connection = True
433
+ except TeradataMlException:
434
+ raise
435
+ except Exception as err:
436
+ raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
437
+ MessageCodes.CONNECTION_FAILURE) from err
438
+ # Check if host and username and password are provided
439
+ elif host:
440
+ username = '' if username is None else username
441
+
442
+ if logmech and logmech.upper() in ['JWT', 'BROWSER']:
443
+ host_value = host
444
+ elif logmech and logmech.upper() == 'KRB5':
445
+ host_value = '{}:@{}'.format(username, host)
446
+ else:
447
+ host_value = '{}:{}@{}'.format(username, password, host)
448
+
449
+ url_object = URL.create(
450
+ "teradatasql",
451
+ username=username,
452
+ password=password, # plain (unescaped) text
453
+ host=host,
454
+ query=_get_other_connection_parameters(logmech, logdata, database, **kwargs)
455
+ )
456
+
457
+ try:
458
+ td_sqlalchemy_engine = create_engine(url_object)
459
+ td_connection = td_sqlalchemy_engine.connect()
460
+ td_user = username.upper()
461
+
462
+ # Masking senstive information - password, logmech and logdata.
463
+ if password:
464
+ try:
465
+ # Below statement raises an AttributeError with SQLAlchemy
466
+ # version 1.4.x
467
+ td_sqlalchemy_engine.url.password = "***"
468
+ except AttributeError:
469
+ # Masking the password should be different from above as SQLAlchemy
470
+ # converted _URL object to immutable object from version 1.4.x.
471
+ new_url = td_sqlalchemy_engine.url.set(password="***")
472
+ td_sqlalchemy_engine.url = new_url
473
+ except Exception:
474
+ pass
475
+ _mask_logmech_logdata()
476
+
477
+ user_specified_connection = False
478
+
479
+ except TeradataMlException:
480
+ raise
481
+ except Exception as err:
482
+ raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
483
+ MessageCodes.CONNECTION_FAILURE) from err
484
+
485
+ # Load function aliases from config.
486
+ _load_function_aliases()
487
+
488
+ python_packages_installed = False
489
+
490
+ # Assign the tempdatabase name to global
491
+ if temp_database_name is None:
492
+ temporary_database_name = _get_current_databasename()
493
+ else:
494
+ temporary_database_name = temp_database_name
495
+
496
+ # Connection is established initiate the garbage collection
497
+ atexit.register(__cleanup_garbage_collection)
498
+ __cleanup_garbage_collection()
499
+ # Initialise Dag
500
+ __initalise_dag()
501
+
502
+ # Set database version.
503
+ configure.database_version = _get_database_version()
504
+
505
+ # Process Analytic functions.
506
+ from teradataml.analytics import _process_analytic_functions
507
+ _process_analytic_functions()
508
+
509
+ # Return the connection by default
510
+ return td_sqlalchemy_engine
511
+
512
+
513
+ def _mask_logmech_logdata():
514
+ """
515
+ Masks sensitive connection information LOGMECH, LOGDATA exposed by sqlalchemy engine object
516
+ """
517
+ global td_sqlalchemy_engine
518
+ try:
519
+ # Below statement raises a TypeError with SQLAlchemy version 1.4.x
520
+ if ('LOGMECH' in td_sqlalchemy_engine.url.query):
521
+ td_sqlalchemy_engine.url.query['LOGMECH'] = "***"
522
+ if ('LOGDATA' in td_sqlalchemy_engine.url.query):
523
+ td_sqlalchemy_engine.url.query['LOGDATA'] = "***"
524
+ except TypeError:
525
+ # Masking the password should be different from above as SQLAlchemy
526
+ # converted _URL object to immutable object from version 1.4.x.
527
+ new_url = td_sqlalchemy_engine.url.update_query_dict({"LOGMECH": "***", "LOGDATA": "***"})
528
+ td_sqlalchemy_engine.url = new_url
529
+ except Exception:
530
+ pass
531
+
532
+
533
+ def get_context():
534
+ """
535
+ DESCRIPTION:
536
+ Returns the Teradata Vantage connection associated with the current context.
537
+
538
+ PARAMETERS:
539
+ None
540
+
541
+ RETURNS:
542
+ A Teradata sqlalchemy engine object.
543
+
544
+ RAISES:
545
+ None.
546
+
547
+ EXAMPLES:
548
+ td_sqlalchemy_engine = get_context()
549
+
550
+ """
551
+ global td_sqlalchemy_engine
552
+ return td_sqlalchemy_engine
553
+
554
+
555
+ def get_connection():
556
+ """
557
+ DESCRIPTION:
558
+ Returns the Teradata Vantage connection associated with the current context.
559
+
560
+ PARAMETERS:
561
+ None
562
+
563
+ RETURNS:
564
+ A Teradata dbapi connection object.
565
+
566
+ RAISES:
567
+ None.
568
+
569
+ EXAMPLES:
570
+ tdconnection = get_connection()
571
+
572
+ """
573
+ global td_connection
574
+ return td_connection
575
+
576
+
577
+ @collect_queryband(queryband='SetCxt')
578
+ def set_context(tdsqlengine, temp_database_name=None):
579
+ """
580
+ DESCRIPTION:
581
+ Specifies a Teradata Vantage sqlalchemy engine as current context.
582
+
583
+ PARAMETERS:
584
+ tdsqlengine:
585
+ Required Argument.
586
+ Specifies Teradata Vantage sqlalchemy engine object that should be used to establish a Teradata Vantage
587
+ connection.
588
+ Types: str
589
+
590
+ temp_database_name:
591
+ Optional Argument.
592
+ Specifies the temporary database name where temporary tables, views will be created.
593
+ Types: str
594
+
595
+ RETURNS:
596
+ A Teradata Vantage connection object.
597
+
598
+ RAISES:
599
+ TeradataMlException
600
+
601
+ EXAMPLES:
602
+ set_context(tdsqlengine = td_sqlalchemy_engine)
603
+
604
+ """
605
+ global td_connection
606
+ global td_sqlalchemy_engine
607
+ global temporary_database_name
608
+ global user_specified_connection
609
+ global python_packages_installed
610
+ if td_connection is not None:
611
+ warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT), stacklevel=2)
612
+ remove_context()
613
+
614
+ if tdsqlengine:
615
+ try:
616
+ td_connection = tdsqlengine.connect()
617
+ td_sqlalchemy_engine = tdsqlengine
618
+ # Assign the tempdatabase name to global
619
+ if temp_database_name is None:
620
+ temporary_database_name = _get_current_databasename()
621
+ else:
622
+ temporary_database_name = temp_database_name
623
+
624
+ user_specified_connection = True
625
+ except TeradataMlException:
626
+ raise
627
+ except Exception as err:
628
+ raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
629
+ MessageCodes.CONNECTION_FAILURE) from err
630
+ else:
631
+ return None
632
+
633
+ # Load function aliases from config.
634
+ _load_function_aliases()
635
+
636
+ python_packages_installed = False
637
+
638
+ # Initialise Dag
639
+ __initalise_dag()
640
+
641
+ return td_connection
642
+
643
+
644
+ @collect_queryband(queryband='RmCxt')
645
+ def remove_context():
646
+ """
647
+ DESCRIPTION:
648
+ Removes the current context associated with the Teradata Vantage connection.
649
+
650
+ PARAMETERS:
651
+ None.
652
+
653
+ RETURNS:
654
+ None.
655
+
656
+ RAISES:
657
+ None.
658
+
659
+ EXAMPLES:
660
+ remove_context()
661
+
662
+ """
663
+ global td_connection
664
+ global td_sqlalchemy_engine
665
+ global user_specified_connection
666
+ global python_packages_installed
667
+ global td_user
668
+
669
+ # Intiate the garbage collection
670
+ __cleanup_garbage_collection()
671
+
672
+ if user_specified_connection is not True:
673
+ try:
674
+ # Close the connection if not user specified connection.
675
+ td_connection.close()
676
+ td_sqlalchemy_engine.engine.dispose()
677
+ except TeradataMlException:
678
+ raise
679
+ except Exception as err:
680
+ raise TeradataMlException(Messages.get_message(MessageCodes.DISCONNECT_FAILURE),
681
+ MessageCodes.DISCONNECT_FAILURE) from err
682
+ td_connection = None
683
+ td_sqlalchemy_engine = None
684
+ python_packages_installed = False
685
+ td_user = None
686
+
687
+ # Closing Dag
688
+ __close_dag()
689
+ return True
690
+
691
+
692
+ def _get_context_temp_databasename(table_type=TeradataConstants.TERADATA_VIEW):
693
+ """
694
+ Returns the temporary database name associated with the current context.
695
+
696
+ PARAMETERS:
697
+ table_type:
698
+ Optional Argument.
699
+ Specifies the type of object - table or view.
700
+ Default value: TeradataConstants.TERADATA_VIEW
701
+ Types: TeradataConstant
702
+
703
+ RETURNS:
704
+ Database name associated with the current context
705
+
706
+ RAISES:
707
+ None.
708
+
709
+ EXAMPLES:
710
+ _get_context_temp_databasename()
711
+ _get_context_temp_databasename(table_type=TeradataConstants.TERADATA_TABLE)
712
+ """
713
+ global temporary_database_name
714
+ if table_type == TeradataConstants.TERADATA_TABLE and \
715
+ configure.temp_table_database is not None:
716
+ return configure.temp_table_database
717
+ if table_type == TeradataConstants.TERADATA_VIEW and \
718
+ configure.temp_view_database is not None:
719
+ return configure.temp_view_database
720
+ return temporary_database_name
721
+
722
+
723
+ def __initalise_dag():
724
+ """
725
+ Intialises the Dag
726
+
727
+ PARAMETERS:
728
+ None.
729
+
730
+ RETURNS:
731
+ None
732
+
733
+ RAISES:
734
+ None.
735
+
736
+ EXAMPLES:
737
+ __initalise_dag()
738
+ """
739
+ aed_context = AEDContext()
740
+ # Closing the Dag if previous instance is still exists.
741
+ __close_dag()
742
+ # TODO: Need to add logLevel and log_file functionlaity once AED is implemented these functionalities
743
+ aed_context._init_dag(_get_database_username(), _get_context_temp_databasename(),
744
+ log_level=4, log_file="")
745
+
746
+
747
+ def __close_dag():
748
+ """
749
+ Closes the Dag
750
+
751
+ PARAMETERS:
752
+ None.
753
+
754
+ RETURNS:
755
+ None
756
+
757
+ RAISES:
758
+ None.
759
+
760
+ EXAMPLES:
761
+ __close_dag()
762
+ """
763
+ try:
764
+ AEDContext()._close_dag()
765
+ # Ignore if any exception occurs.
766
+ except TeradataMlException:
767
+ pass
768
+
769
+
770
+ def _load_function_aliases():
771
+ """
772
+ Function to load function aliases for analytical functions
773
+ based on the vantage version from configuration file.
774
+
775
+ PARAMETERS:
776
+ None
777
+
778
+ RETURNS:
779
+ None
780
+
781
+ RAISES:
782
+ TeradataMLException
783
+
784
+ EXAMPLES:
785
+ _load_function_aliases()
786
+ """
787
+
788
+ global function_alias_mappings
789
+ function_alias_mappings = {}
790
+
791
+ supported_engines = TeradataConstants.SUPPORTED_ENGINES.value
792
+ vantage_versions = TeradataConstants.SUPPORTED_VANTAGE_VERSIONS.value
793
+
794
+ __set_vantage_version()
795
+
796
+ for vv in vantage_versions.keys():
797
+ function_alias_mappings_by_engine = {}
798
+ for engine in supported_engines.keys():
799
+ alias_config_file = os.path.join(config_folder,
800
+ "{}_{}".format(supported_engines[engine]["file"], vantage_versions[vv]))
801
+ engine_name = supported_engines[engine]['name']
802
+ ContextUtilFuncs._check_alias_config_file_exists(vv, alias_config_file)
803
+ function_alias_mappings_by_engine[engine_name] = \
804
+ ContextUtilFuncs._get_function_mappings_from_config_file(alias_config_file)
805
+ function_alias_mappings[vv] = function_alias_mappings_by_engine
806
+
807
+
808
+ def _get_vantage_version():
809
+ """
810
+ Function to determine the underlying Vantage version.
811
+
812
+ PARAMETERS:
813
+ None
814
+
815
+ RETURNS:
816
+ A string specifying the Vantage version, else None when not able to determine it.
817
+
818
+ RAISES:
819
+ Warning
820
+
821
+ EXAMPLES:
822
+ _get_vantage_version()
823
+ """
824
+ if td_connection.dialect.has_table(td_connection, "versionInfo", schema="pm"):
825
+
826
+ # BTEQ -- Enter your SQL request or BTEQ command:
827
+ # select * from pm.versionInfo;
828
+ #
829
+ # select * from pm.versionInfo;
830
+ #
831
+ # *** Query completed. 2 rows found. 2 columns returned.
832
+ # *** Total elapsed time was 1 second.
833
+ #
834
+ # InfoKey InfoData
835
+ # ------------------------------ --------------------------------------------
836
+ # BUILD_VERSION 08.10.00.00-e84ce5f7
837
+ # RELEASE Vantage 1.1 GA
838
+
839
+ try:
840
+ vantage_ver_qry = "select InfoData from pm.versionInfo where InfoKey = 'RELEASE' (NOT CASESPECIFIC)"
841
+ res = execute_sql(vantage_ver_qry)
842
+ return res.fetchall()[0][0]
843
+ except:
844
+ return None
845
+ else:
846
+ # If "pm.versionInfo" does not exist, then vantage version is 1.0
847
+ return "vantage1.1"
848
+
849
+
850
+ def _get_database_version():
851
+ """
852
+ DESCRIPTION:
853
+ An internal function to determine the underlying Vantage Database version.
854
+
855
+ PARAMETERS:
856
+ None
857
+
858
+ RETURNS:
859
+ A string specifying the Vantage Database version, else None when not able to determine it.
860
+
861
+ RAISES:
862
+ None
863
+
864
+ EXAMPLES:
865
+ _get_database_version()
866
+ """
867
+
868
+ # BTEQ -- Enter your SQL request or BTEQ command:
869
+ # select * from DBC.DBCInfoV;
870
+ # *** Query completed. 3 rows found. 2 columns returned.
871
+ # *** Total elapsed time was 1 second.
872
+ #
873
+ # InfoKey InfoData
874
+ # ------------------------------ --------------------------------------------
875
+ # VERSION 17.05a.00.147
876
+ # LANGUAGE SUPPORT MODE Standard
877
+ # RELEASE 17.05a.00.147
878
+
879
+ try:
880
+ return execute_sql(Query.VANTAGE_VERSION.value).fetchall()[0][0]
881
+ except:
882
+ return None
883
+
884
+
885
+ def __set_vantage_version():
886
+ """
887
+ Function to set the configuration option vantage_version.
888
+
889
+ PARAMETERS:
890
+ None
891
+
892
+ RETURNS:
893
+ None
894
+
895
+ RAISES:
896
+ TeradataMLException
897
+
898
+ EXAMPLES:
899
+ __set_vantage_version()
900
+ """
901
+ vantage_version = _get_vantage_version()
902
+ if vantage_version is None:
903
+ # Raise warning here.
904
+ warnings.warn(Messages.get_message(
905
+ MessageCodes.UNABLE_TO_GET_VANTAGE_VERSION).format("vantage_version", configure.vantage_version))
906
+ elif "vantage1.1" in vantage_version.lower().replace(" ", ""):
907
+ configure.vantage_version = "vantage1.1"
908
+ elif "mlengine9.0" in vantage_version.lower().replace(" ", ""):
909
+ configure.vantage_version = "vantage1.3"
910
+ elif "mlengine08.10" in vantage_version.lower().replace(" ", ""):
911
+ configure.vantage_version = "vantage2.0"
912
+ else:
913
+ # If "pm.versionInfo" does not exist, then vantage version is 1.0
914
+ configure.vantage_version = "vantage1.0"
915
+
916
+
917
+ def _get_function_mappings():
918
+ """
919
+ Function to return function aliases for analytical functions.
920
+
921
+ PARAMETERS:
922
+ None
923
+
924
+ RETURNS:
925
+ Dict of function aliases of the format
926
+ {'mle' : {'func_name': "alias_name", ...},
927
+ 'sqle' : {'func_name': "alias_name", ...}
928
+ ......
929
+ }
930
+
931
+ RAISES:
932
+ None
933
+
934
+ EXAMPLES:
935
+ get_function_aliases()
936
+ """
937
+ global function_alias_mappings
938
+ return function_alias_mappings
939
+
940
+
941
+ def _get_user():
942
+ """
943
+ DESCRIPTION:
944
+ An internal function to get the database username associated with the current context.
945
+
946
+ PARAMETERS:
947
+ None.
948
+
949
+ RETURNS:
950
+ Database username associated with the current context.
951
+
952
+ RAISES:
953
+ TeradataMlException
954
+
955
+ EXAMPLES:
956
+ _get_user()
957
+ """
958
+ global td_user
959
+ if not td_user:
960
+ td_user = _get_database_username()
961
+ return td_user
962
+
963
+
964
+ class ContextUtilFuncs():
965
+ @staticmethod
966
+ def _check_alias_config_file_exists(vantage_version, alias_config_file):
967
+ """
968
+ Function to validate whether alias_config_file exists for the current vantage version.
969
+
970
+ PARAMETERS:
971
+ vantage_version:
972
+ Required Argument.
973
+ Specifies the current vantage version.
974
+
975
+ alias_config_file:
976
+ Required Argument.
977
+ Specifies the location of configuration file to be read.
978
+
979
+ RETURNS:
980
+ True, if the file 'alias_config_file' is present in the
981
+ teradataml/config directory for the current vantage version.
982
+
983
+ RAISES:
984
+ TeradataMLException
985
+
986
+ EXAMPLES:
987
+ ContextUtilFuncs._check_alias_config_file_exists("vantage1.0", "config_file_location")
988
+
989
+ """
990
+ # Raise exception if alias config file is not defined.
991
+ if not Path(alias_config_file).exists():
992
+ raise TeradataMlException(Messages.get_message(
993
+ MessageCodes.CONFIG_ALIAS_CONFIG_FILE_NOT_FOUND).format(alias_config_file,
994
+ vantage_version),
995
+ MessageCodes.CONFIG_ALIAS_CONFIG_FILE_NOT_FOUND)
996
+ return True
997
+
998
+ @staticmethod
999
+ def _get_function_mappings_from_config_file(alias_config_file):
1000
+ """
1001
+ Function to return the function mappings given the location of configuration file in
1002
+ argument 'alias_config_file'.
1003
+
1004
+ PARAMETERS:
1005
+ alias_config_file:
1006
+ Required Argument.
1007
+ Specifies the location of configuration file to be read.
1008
+
1009
+ RETURNS:
1010
+ Function mappings as a dictionary of function_names to alias_names.
1011
+
1012
+ RAISES:
1013
+ TeradataMLException
1014
+
1015
+ EXAMPLES:
1016
+ ContextUtilFuncs._get_function_mappings_from_config_file("config_file_location")
1017
+
1018
+ """
1019
+ repeated_function_names = []
1020
+ function_mappings = {}
1021
+ invalid_function_mappings = []
1022
+ invalid_function_mappings_line_nos = []
1023
+ # Reading configuration files
1024
+ with open(alias_config_file, 'r') as fread:
1025
+ for line_no, line in enumerate(fread.readlines()):
1026
+ line = line.strip()
1027
+
1028
+ # Ignoring empty lines in the config files.
1029
+ if line == "":
1030
+ continue
1031
+
1032
+ # If the separator ":" is not present.
1033
+ if ':' not in line:
1034
+ invalid_function_mappings.append(line)
1035
+ invalid_function_mappings_line_nos.append(str(line_no + 1))
1036
+ else:
1037
+ func_name, alias_name = line.split(":")
1038
+ func_name = func_name.strip()
1039
+ alias_name = alias_name.strip()
1040
+
1041
+ # First line of 'alias_config_file' has header "functionName:aliasName".
1042
+ if line_no == 0 and func_name == "functionName" and alias_name == "aliasName":
1043
+ continue
1044
+
1045
+ if func_name == "" or alias_name == "":
1046
+ invalid_function_mappings.append(line)
1047
+ invalid_function_mappings_line_nos.append(str(line_no + 1))
1048
+ continue
1049
+
1050
+ if func_name.lower() in function_mappings:
1051
+ repeated_function_names.append(func_name.lower())
1052
+
1053
+ # Loading function maps with lower values for key.
1054
+ function_mappings[func_name.lower()] = alias_name
1055
+
1056
+ # Presence of Invalid function mappings in the 'alias_config_file'.
1057
+ if len(invalid_function_mappings) > 0:
1058
+ err_ = Messages.get_message(MessageCodes.CONFIG_ALIAS_INVALID_FUNC_MAPPING)
1059
+ err_ = err_.format("', '".join(invalid_function_mappings),
1060
+ ", ".join(invalid_function_mappings_line_nos),
1061
+ alias_config_file)
1062
+ raise TeradataMlException(err_, MessageCodes.CONFIG_ALIAS_INVALID_FUNC_MAPPING)
1063
+
1064
+ # Raising teradataml exception if there are any duplicates in function names.
1065
+ if len(repeated_function_names) > 0:
1066
+ raise TeradataMlException(Messages.get_message(
1067
+ MessageCodes.CONFIG_ALIAS_DUPLICATES).format(alias_config_file,
1068
+ ", ".join(repeated_function_names)),
1069
+ MessageCodes.CONFIG_ALIAS_DUPLICATES)
1070
+
1071
+ return function_mappings