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