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,1600 +1,1603 @@
1
- """
2
- Unpublished work.
3
- Copyright (c) 2020 by Teradata Corporation. All rights reserved.
4
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
5
-
6
- Primary Owner: PankajVinod.Purandare@teradata.com
7
- Secondary Owner: Adithya.Avvaru@teradata.com
8
-
9
- This file implements the core framework that allows user to execute any Vantage Analytics
10
- Library (VALIB) Function.
11
- """
12
- import time
13
- import uuid
14
- from math import floor
15
- from teradataml.common import messages
16
- from teradataml.common.constants import TeradataConstants, ValibConstants as VC
17
- from teradataml.common.exceptions import TeradataMlException
18
- from teradataml.common.garbagecollector import GarbageCollector
19
- from teradataml.common.messages import Messages, MessageCodes
20
- from teradataml.common.utils import UtilFuncs
21
- from teradataml.context.context import get_context, _get_current_databasename
22
- from teradataml.options.configure import configure
23
- from teradataml.dataframe.dataframe import DataFrame, in_schema
24
- from teradataml.utils.validators import _Validators
25
- from teradataml.analytics.Transformations import Binning, Derive, OneHotEncoder, FillNa, \
26
- LabelEncoder, MinMaxScalar, Retain, Sigmoid, ZScore
27
-
28
- class _VALIB():
29
- """ An internal class for executing VALIB analytic functions. """
30
-
31
- def __init__(self, *c, **kwargs):
32
- """ Constructor for VALIB function execution. """
33
- # Vantage SQL name of the VALIB function.
34
- self.__sql_func_name = ""
35
- # teradataml name of the VALIB function.
36
- self.__tdml_valib_name = ""
37
- self.__func_arg_sql_syntax_eles = []
38
- self.__func_other_arg_sql_names = []
39
- self.__func_other_args = []
40
- self.result = None
41
- self.__generated_sql = None
42
- self.__multioutput_attr_map = {}
43
- self.__multioutput_attr_map.update(VC.TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP.value)
44
- self.__output_arg_map = {}
45
- self.__output_arg_map.update(VC.VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP.value)
46
-
47
- @property
48
- def _tdml_valib_name(self):
49
- """
50
- DESCRIPTION:
51
- Function to return VAL function name.
52
-
53
- RETURNS:
54
- str
55
-
56
- RAISES:
57
- None
58
-
59
- EXAMPLES:
60
- valib.LinReg._tdml_valib_name
61
- """
62
- return self.__tdml_valib_name
63
-
64
- def __getattr__(self, item):
65
- """
66
- DESCRIPTION:
67
- Returns an attribute of the _VALIB class.
68
-
69
- PARAMETERS:
70
- item:
71
- Required Argument.
72
- Specifes the name of the attribute.
73
-
74
- RETURNS:
75
- An object of _VALIB class.
76
-
77
- RAISES:
78
- None.
79
-
80
- EXAMPLES:
81
- valib.ValibFunctionName
82
- """
83
- return self.__get_valib_instance(item)
84
-
85
- def __call__(self, **kwargs):
86
- """
87
- DESCRIPTION:
88
- Function makes the instance of this class callable.
89
-
90
- PARAMETERS:
91
- kwargs:
92
- Keyword arguments for the callable function.
93
-
94
- RETURNS:
95
- Returns a callable of object of _VALIB class.
96
-
97
- RAISES:
98
- None.
99
-
100
- EXAMPLES:
101
- valib.ValibFunctionName()
102
- """
103
- # Input arguments passed to a function.
104
- # Use the same as the data members for the dynamic class.
105
- self.__dyn_cls_data_members = kwargs
106
- return self._execute_valib_function(**kwargs)
107
-
108
- def __get_valib_instance(self, item):
109
- """
110
- DESCRIPTION:
111
- Function creates and returns an instance of valib class for the function
112
- name assigning the SQL function name and teradataml function name attributes.
113
- PARAMETERS:
114
- item:
115
- Required Argument.
116
- Specifies the name of the attribute/function.
117
- Types: str
118
-
119
- RETURNS:
120
- An object of _VALIB class.
121
-
122
- RAISES:
123
- None.
124
-
125
- EXAMPLES:
126
- valib.__get_valib_instance("<function_name>")
127
- """
128
- valib_f = _VALIB()
129
- valib_f.__tdml_valib_name = item
130
-
131
- # Overwriting the multioutput attribute mapper with evaluator map if tdml function name
132
- # is present in the constant TERDATAML_EVALUATOR_OUTPUT_ATTR_MAP.
133
- evaluator_map = VC.TERDATAML_EVALUATOR_OUTPUT_ATTR_MAP.value
134
- if item in evaluator_map:
135
- valib_f.__multioutput_attr_map = {}
136
- valib_f.__multioutput_attr_map.update(evaluator_map)
137
-
138
- try:
139
- valib_f.__sql_func_name = VC.TERADATAML_VALIB_SQL_FUNCTION_NAME_MAP.value[item].upper()
140
- except:
141
- valib_f.__sql_func_name = item.upper()
142
- return valib_f
143
-
144
- def __create_dynamic_valib_class(self):
145
- """
146
- DESCRIPTION:
147
- Function dynamically creates a class of VALIB function type.
148
-
149
- PARAMETERS:
150
- None
151
-
152
- RETURNS:
153
- An object of dynamic class of VALIB function name.
154
-
155
- RAISES:
156
- None.
157
-
158
- EXAMPLE:
159
- self.__create_dynamic_valib_class()
160
- """
161
-
162
- # Constructor for the dynamic class.
163
- def constructor(self):
164
- """ Constructor for dynamic class """
165
- # Do Nothing...
166
- pass
167
- self.__dyn_cls_data_members["__init__"] = constructor
168
-
169
- # __repr__ method for dynamic class.
170
- def print_result(self):
171
- """ Function to be used for representation of VALIB function type object. """
172
- repr_string = ""
173
- for key in self._valib_results:
174
- repr_string = "{}\n############ {} Output ############".format(repr_string, key)
175
- repr_string = "{}\n\n{}\n\n".format(repr_string, getattr(self, key))
176
- return repr_string
177
- self.__dyn_cls_data_members["__repr__"] = print_result
178
-
179
- query = (self.__query, self.__generated_sql)
180
- # Print the underlying SQL stored procedure call or generated SQL.
181
- def show_query(self, query_type="sp"):
182
- """
183
- Function to return the underlying SQL query.
184
- """
185
- _Validators._validate_permitted_values(arg=query_type,
186
- permitted_values=["sp", "sql", "both"],
187
- arg_name="query_type")
188
- if query_type.lower() == "sp":
189
- return query[0]
190
- elif query_type.lower() == "sql":
191
- return query[1]
192
- return query
193
-
194
- self.__dyn_cls_data_members["show_query"] = show_query
195
-
196
- # To list attributes using dict()
197
- self.__dyn_cls_data_members["__dict__"] = self.__dyn_cls_data_members
198
-
199
- # Dynamic class creation with VALIB function name.
200
- valib_class = type(self.__tdml_valib_name, (object,), self.__dyn_cls_data_members)
201
-
202
- return valib_class()
203
-
204
- def __create_output_dataframes(self, out_var):
205
- """
206
- DESCRIPTION:
207
- Internal function to create output DataFrame, set the index labels to
208
- None and add the same to the result list.
209
- Function makes sure that all these created variables are added to the
210
- dynamic class as data members.
211
-
212
- PARAMETERS:
213
- out_var:
214
- Required Argument.
215
- Specifies the name of the output DataFrame.
216
- Types: str
217
-
218
- RETURNS:
219
- None.
220
-
221
- RAISES:
222
- None.
223
-
224
- EXAMPLES:
225
- self.__create_output_dataframes("result")
226
- """
227
- self.__dyn_cls_data_members[out_var] = DataFrame(
228
- in_schema(self.__db_name, self.__dyn_cls_data_members[out_var]))
229
- self.__dyn_cls_data_members[out_var]._index_label = None
230
- self.__dyn_cls_data_members[out_var]._index_query_required = False
231
- self.__dyn_cls_data_members[VC.OUTPUT_DATAFRAME_RESULTS.value].append(out_var)
232
-
233
- def __generate_execute_sp_query(self):
234
- """
235
- DESCRIPTION:
236
- Function generates a stored procedure call corresponding to the function
237
- and execute the same.
238
-
239
- PARAMETERS:
240
- None.
241
-
242
- RETURNS:
243
- Console output of query, if any, otherwise None.
244
-
245
- RAISES:
246
- TeradataMlException
247
-
248
- EXAMPLES:
249
- self.__generate_execute_sp_query()
250
- """
251
- # Generate and execute SQL VALIB SP call.
252
- if configure.val_install_location is None:
253
- message = Messages.get_message(MessageCodes.UNKNOWN_INSTALL_LOCATION,
254
- "Vantage analytic functions",
255
- "option 'configure.val_install_location'")
256
- raise TeradataMlException(message, MessageCodes.MISSING_ARGS)
257
-
258
- query_string = "call {0}.td_analyze('{1}', '{2};');"
259
- self.__query = query_string.format(configure.val_install_location, self.__sql_func_name,
260
- ";".join(self.__func_arg_sql_syntax_eles))
261
-
262
- return UtilFuncs._execute_query(self.__query, expect_none_result=True)
263
-
264
- def __generate_valib_sql_argument_syntax(self, arg, arg_name):
265
- """
266
- DESCRIPTION:
267
- Function to generate the VALIB SQL function argument syntax.
268
-
269
- PARAMETERS:
270
- arg:
271
- Required Argument.
272
- Specifies an argument value to be used in VALIB function call.
273
- Types: Any object that can be converted to a string.
274
-
275
- arg_name:
276
- Required Argument.
277
- Specifies a SQL argument name to be used in VALIB function call.
278
- Types: String
279
-
280
- RETURNS:
281
- None
282
-
283
- RAISES:
284
- None
285
-
286
- EXAMPLES:
287
- self.__generate_valib_sql_argument_syntax(argument, "argument_name")
288
- """
289
- arg = UtilFuncs._teradata_collapse_arglist(arg, "")
290
- self.__func_arg_sql_syntax_eles.append("{}={}".format(arg_name, arg))
291
-
292
- def __extract_db_tbl_name(self, table_name, arg_name, extract_table=True, remove_quotes=False):
293
- """
294
- DESCRIPTION:
295
- Function processes the table name argument to extract database or table from it.
296
-
297
- PARAMETERS:
298
- table_name:
299
- Required Argument.
300
- Specifies the fully-qualified table name.
301
- Types: String
302
-
303
- arg_name:
304
- Required Argument.
305
- Specifies a SQL argument name to be used in VALIB function call.
306
- Types: String
307
-
308
- extract_table:
309
- Optional Argument.
310
- Specifies whether to extract a table name or database name from
311
- "table_name". When set to 'True', table name is extracted otherwise
312
- database name is extracted.
313
- Default Value: True
314
- Types: bool
315
-
316
- remove_quotes:
317
- Optional Argument.
318
- Specifies whether to remove quotes from the extracted string or not.
319
- When set to 'True', double quotes will be removed from the extracted
320
- name.
321
- Default Value: False
322
- Types: bool
323
-
324
- RETURNS:
325
- Extracted name.
326
-
327
- RAISES:
328
- None.
329
-
330
- EXAMPLES:
331
- # Extract the table name and remove quotes.
332
- self.__extract_db_tbl_name(self, table_name, arg_name, remove_quotes=True)
333
-
334
- # Extract the database name.
335
- self.__extract_db_tbl_name(self, table_name, arg_name, extract_table=False)
336
- """
337
- # Extract table name or db name from the 'table_name'
338
- if extract_table:
339
- name = UtilFuncs._extract_table_name(table_name)
340
- else:
341
- name = UtilFuncs._extract_db_name(table_name)
342
-
343
- # Remove quotes.
344
- if remove_quotes:
345
- name = name.replace("\"", "")
346
-
347
- # Generate VALIB function argument call syntax.
348
- self.__generate_valib_sql_argument_syntax(name, arg_name)
349
-
350
- return name
351
-
352
- def __get_temp_table_name(self):
353
- """
354
- DESCRIPTION:
355
- Generate and get the table name for the outputs.
356
-
357
- PARAMETERS:
358
- None.
359
-
360
- RETURNS:
361
- None.
362
-
363
- RAISES:
364
- None.
365
-
366
- EXAMPLES:
367
- self.__get_temp_table_name()
368
- """
369
- prefix = "valib_{}".format(self.__tdml_valib_name.lower())
370
- return UtilFuncs._generate_temp_table_name(prefix=prefix, use_default_database=True,
371
- gc_on_quit=True, quote=False,
372
- table_type=TeradataConstants.TERADATA_TABLE)
373
-
374
- def __process_dyn_cls_output_member(self, arg_name, out_tablename, out_var=None):
375
- """
376
- DESCRIPTION:
377
- Function to process output table name argument. As part of processing it does:
378
- * Generates the SQL clause for argument name.
379
- * Adds a data member to the dynamic class dictionary, with the name same as
380
- exposed name of the output DataFrame.
381
-
382
- PARAMETERS:
383
- arg_name:
384
- Required Argument.
385
- Specifies the output table SQL argument name.
386
- Types: str
387
-
388
- out_tablename:
389
- Required Argument.
390
- Specifies the output table name.
391
- Types: str
392
-
393
- out_var:
394
- Optional Argument.
395
- Specifies the output DataFrame name to use.
396
- If this is None, then value for this is extracted from
397
- 'TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP'.
398
- Types: str
399
-
400
- RETURNS:
401
- None.
402
-
403
- RAISES:
404
- None.
405
-
406
- EXAMPLES:
407
- self.__process_dyn_cls_output_member("outputtablename", out_tablename,
408
- ValibConstants.DEFAULT_OUTPUT_VAR.value)
409
- """
410
- if out_var is None:
411
- # If output variable name is None, then extract it from the MAP.
412
- # This output variable corresponds to the output DataFrame name of the function.
413
- func_name = self.__get_output_attr_map_func_name()
414
- out_var = self.__multioutput_attr_map[func_name][arg_name]
415
-
416
- # Add the output DataFrame name, to the dictionary of dynamic class.
417
- # At start we will just add the corresponding table name as it's value.
418
- self.__dyn_cls_data_members[out_var] = self.__extract_db_tbl_name(table_name=out_tablename,
419
- arg_name=arg_name)
420
-
421
- def __get_table_name_with_extension(self, table_name, extension):
422
- """
423
- DESCRIPTION:
424
- Internal function to create a table name using the extension and add it to Garbage
425
- Collector.
426
-
427
- PARAMETERS:
428
- table_name:
429
- Required Argument.
430
- Specifies the table name for which extension is to be suffixed.
431
- Types: str
432
-
433
- extension:
434
- Required Argument.
435
- Specifies the suffix string that is to be added at the end of the table name.
436
- Types: str
437
-
438
- RETURNS:
439
- The new table name.
440
-
441
- EXAMPLE:
442
- self.__get_table_name_with_extension(table_name="<table_name>", extension="_rpt")
443
- """
444
- # Add extension to the table name.
445
- generated_table_name = "{}{}".format(table_name, extension)
446
-
447
- # Register new output table to the GC.
448
- gc_tabname = "\"{}\".\"{}\"".format(self.__db_name, generated_table_name)
449
- GarbageCollector._add_to_garbagecollector(gc_tabname, TeradataConstants.TERADATA_TABLE)
450
-
451
- return generated_table_name
452
-
453
- def __get_output_attr_map_func_name(self):
454
- """
455
- DESCRIPTION:
456
- Function to get either teradataml function name or SQL function name from
457
- "__multioutput_attr_map" based on whether the function is evaluator function or not.
458
-
459
- PARAMETERS:
460
- None.
461
-
462
- RETURNS:
463
- Either teradataml function name or SQL function name.
464
-
465
- RAISES:
466
- None.
467
-
468
- EXAMPLES:
469
- self.__get_output_attr_map_func_name()
470
- """
471
- # __multioutput_attr_map can have either SQL function name or tdml function name.
472
- # If the function is evaluator function, then __multioutput_attr_map contains the
473
- # dictionary of tdml function name to dictionary of output tables. Otherwise, it
474
- # contains the dictionary of SQL function name to dictionary of output tables.
475
- func_name = self.__sql_func_name
476
- if self.__tdml_valib_name in self.__multioutput_attr_map:
477
- func_name = self.__tdml_valib_name
478
- return func_name
479
-
480
- def __process_func_outputs(self, query_exec_output):
481
- """
482
- DESCRIPTION:
483
- Internal function to process the output tables generated by a stored procedure
484
- call. Function creates the required output DataFrames from the tables and a
485
- result list.
486
-
487
- PARAMETERS:
488
- query_exec_output:
489
- Required Argument.
490
- Specifies the output captured by the UtilFuncs._execute_query() API.
491
- If no output is generated None should be passed.
492
- Types: tuple
493
-
494
- RETURNS:
495
- None.
496
-
497
- RAISES:
498
- None.
499
-
500
- EXAMPLES:
501
- exec_out = self.__generate_execute_sp_query()
502
- self.__process_func_outputs(query_exec_output=exec_out)
503
- """
504
- self.__dyn_cls_data_members[VC.OUTPUT_DATAFRAME_RESULTS.value] = []
505
-
506
- func_name = self.__get_output_attr_map_func_name()
507
-
508
- # Processing gensql/gensqlonly output.
509
- # Checking if user has passed gen_sql or gen_sql_only as an argument and is true.
510
- # If gen_sql_only is true, don't process the output and return.
511
- gen_sql_only = self.__dyn_cls_data_members.get("gen_sql_only", False)
512
- if gen_sql_only:
513
- self.__generated_sql = query_exec_output[0][0][0]
514
- self.__dyn_cls_data_members[VC.DEFAULT_OUTPUT_VAR.value] = None
515
- return
516
- elif self.__dyn_cls_data_members.get("gen_sql", False):
517
- self.__generated_sql = query_exec_output[0][0][0]
518
-
519
- if func_name in self.__multioutput_attr_map:
520
- # Process each output and get it ready for dynamic class creation.
521
- valib_output_mapper = self.__multioutput_attr_map[func_name]
522
- for key in valib_output_mapper:
523
- out_var = valib_output_mapper[key]
524
- self.__create_output_dataframes(out_var=out_var)
525
- elif VC.DEFAULT_OUTPUT_VAR.value in self.__dyn_cls_data_members:
526
- # Process functions that generate only one output.
527
- self.__create_output_dataframes(out_var=VC.DEFAULT_OUTPUT_VAR.value)
528
- else:
529
- # Function which will not produce any output table, but will return result set.
530
- # "result_set" will contain the actual result data in a list of list format.
531
- self.__dyn_cls_data_members["result_set"] = query_exec_output[0]
532
- # "result_columns" will contain the list of column names of the result data.
533
- self.__dyn_cls_data_members["result_columns"] = query_exec_output[1]
534
- # TODO - Add support for EXP's does not producing any output tables. Future Purpose.
535
-
536
- def __process_output_extensions(self, output_table_name, output_extensions):
537
- """
538
- DESCRIPTION:
539
- Function to process extended outputs of the function.
540
- Extended outputs are the output tables generated by SQL function, using
541
- the existing output table name and adding some extensions to it.
542
- For example,
543
- Linear function takes one argument for producing the output tables, but
544
- it's ends up creating multiple output tables.
545
- This is how it created these tables.
546
- * Creates a coefficients and statistics table by using the name passed to
547
- "outputtablename" argument.
548
- * Creates a statistical measures table using the name passed to
549
- "outputtablename" argument and appending "_rpt" to it.
550
- * Creates a XML reports table using the name passed to "outputtablename"
551
- argument and appending "_txt" to it.
552
-
553
- PARAMETERS:
554
- output_table_name:
555
- Required Argument.
556
- Specifies the output table name to use the extensions with to produce new
557
- output table names.
558
- Types: str
559
-
560
- output_extensions:
561
- Required Argument.
562
- Specifies a mapper with output table extensions as keys and output dataframe name
563
- as value.
564
- Types: dict
565
-
566
- RETURNS:
567
- None.
568
-
569
- RAISES:
570
- None.
571
-
572
- EXAMPLES:
573
- self.__process_output_extensions("output_table_name",
574
- {"_rpt": "output_df_name1",
575
- "_txt": "output_df_name1"})
576
- """
577
-
578
- # Now let's process the output extensions and respective output DataFrames.
579
- for extension in output_extensions:
580
- new_table_name = self.__get_table_name_with_extension(table_name=output_table_name,
581
- extension=extension)
582
-
583
- # Get the teradataml output variable name corresponding to the extension.
584
- func_name = self.__get_output_attr_map_func_name()
585
- out_var = self.__multioutput_attr_map[func_name][extension]
586
-
587
- # Add the table name to the dynamic class as it's data member.
588
- self.__dyn_cls_data_members[out_var] = new_table_name
589
-
590
- def __process_output_argument(self):
591
- """
592
- DESCRIPTION:
593
- Function to process output argument(s) of a VALIB function.
594
-
595
- PARAMETERS:
596
- None.
597
-
598
- RETURNS:
599
- None.
600
-
601
- RAISES:
602
- None.
603
-
604
- EXAMPLES:
605
- self.__process_output_argument()
606
- """
607
-
608
- #
609
- # Note:
610
- # So far all the functions we have seen, only one output database argument is present
611
- # in SQL functions. In case in future, a function with more output database arguments
612
- # are added, we will need to modify this function, especially the below piece and treat
613
- # database arguments as we are processing the output table name arguments.
614
- #
615
- # Default SQL argument name for the output database argument.
616
- database_arg_name = "outputdatabase"
617
- if self.__sql_func_name in self.__output_arg_map:
618
- # Extract output database argument name for the function and use the same.
619
- database_arg_name = self.__output_arg_map[self.__sql_func_name]["db"]
620
-
621
- out_tablename = self.__get_temp_table_name()
622
- self.__db_name = self.__extract_db_tbl_name(table_name=out_tablename,
623
- arg_name=database_arg_name,
624
- extract_table=False)
625
-
626
- #
627
- # Note:
628
- # So far all the functions visited, we observed following characteristics about
629
- # processing the output tables by SQL function.
630
- # 1. Function produces only one table, with argument name as "outputtablename",
631
- # which is our default case.
632
- # 2. Function produces only one table, with argument name different than
633
- # "outputtablename". In such case, we use 'VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP'
634
- # to extract the SQL argument name for specifying the output table.
635
- # 3. Function produces multiple output tables with multiple output table arguments.
636
- # In such case, we use 'VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP' to extract the SQL
637
- # argument names for specifying the output tables.
638
- # 4. Function produces multiple output tables with just one output table argument.
639
- # In such cases, SQL uses the specified table name to create one of the output
640
- # table and other output tables are created based on the pre-defined extensions
641
- # which are appended to the specified table name and using the same.
642
- #
643
- # Now that we have processed the output database name argument, we will now process the
644
- # output table name argument(s).
645
- if self.__sql_func_name in self.__output_arg_map:
646
- # Extract the function output argument map.
647
- func_output_argument_map = self.__output_arg_map[self.__sql_func_name]
648
-
649
- # Extract output table argument name(s) for the function and use the same.
650
- table_arg_names = func_output_argument_map["tbls"]
651
-
652
- if not isinstance(table_arg_names, list):
653
- # This is a block to process functions producing multiple outputs with
654
- # 1. One output table argument.
655
- # 2. Use the same argument to produce other argument with some extension to it.
656
- #
657
- # Extract the table name from the generated name and add it to SQL syntax.
658
- table_name = self.__extract_db_tbl_name(table_name=out_tablename,
659
- arg_name=table_arg_names)
660
-
661
- # Process all mandatory output extensions, irrespective of whether the function
662
- # is scoring or evaluator or any other function.
663
- if "mandatory_output_extensions" in func_output_argument_map:
664
- mandatory_extensions = func_output_argument_map["mandatory_output_extensions"]
665
- self.__process_output_extensions(table_name, mandatory_extensions)
666
-
667
- if "evaluator_output_extensions" in func_output_argument_map:
668
- # We process either the table in "table_arg_names" or
669
- # "evaluator_output_extensions" based on whether the function is evaluator
670
- # function or not.
671
- #
672
- # If the function is:
673
- # 1. evaluator function, process extensions as mentioned in evaluator based
674
- # output extensions.
675
- # 2. NOT evaluator function (scoring or any other function):
676
- # a. with an entry in TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP,
677
- # process table in the variable "table_arg_names".
678
- # b. without an entry in TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP,
679
- # process table as "result".
680
- if self.__tdml_valib_name in self.__multioutput_attr_map:
681
- evaluator_extensions = \
682
- func_output_argument_map["evaluator_output_extensions"]
683
- self.__process_output_extensions(table_name, evaluator_extensions)
684
-
685
- elif self.__sql_func_name in self.__multioutput_attr_map:
686
- out_var = \
687
- self.__multioutput_attr_map[self.__sql_func_name][table_arg_names]
688
- self.__dyn_cls_data_members[out_var] = table_name
689
-
690
- else:
691
- out_var = VC.DEFAULT_OUTPUT_VAR.value
692
- self.__dyn_cls_data_members[out_var] = table_name
693
-
694
- else:
695
- # If function produces only one output table, but uses different argument name.
696
- func_name = self.__get_output_attr_map_func_name()
697
- out_var = self.__multioutput_attr_map[func_name][table_arg_names]
698
- self.__dyn_cls_data_members[out_var] = table_name
699
- else:
700
- # Function produces multiple outputs.
701
- for arg_name in table_arg_names:
702
- # Generate a table name for each output and add the name to the dictionary
703
- # for further processing and dynamic class creation.
704
- out_tablename = self.__get_temp_table_name()
705
- self.__process_dyn_cls_output_member(arg_name, out_tablename)
706
- else:
707
- # Let's use the default output table name argument "outputtablename".
708
- self.__process_dyn_cls_output_member("outputtablename", out_tablename,
709
- VC.DEFAULT_OUTPUT_VAR.value)
710
-
711
- def __process_input_argument(self, df, database_arg_name, table_arg_name):
712
- """
713
- DESCRIPTION:
714
- Function to process input argument(s).
715
-
716
- PARAMETERS:
717
- df:
718
- Required Argument.
719
- Specifies the input teradataml DataFrame.
720
- Types: teradataml DataFrame
721
-
722
- database_arg_name:
723
- Required Argument.
724
- Specifies the name of the database argument.
725
- Types: String
726
-
727
- table_arg_name:
728
- Required Argument.
729
- Specifies the name of the table argument.
730
- Types: String
731
-
732
- RETURNS:
733
- None.
734
-
735
- RAISES:
736
- None.
737
-
738
- EXAMPLES:
739
- self.__process_input_argument(df, "db", "table")
740
- """
741
- # Assuming that df._table_name always contains FQDN.
742
- db_name = UtilFuncs()._get_db_name_from_dataframe(df)
743
-
744
- self.__generate_valib_sql_argument_syntax(db_name, database_arg_name)
745
- self.__extract_db_tbl_name(df._table_name, table_arg_name, remove_quotes=True)
746
-
747
- def __process_other_arguments(self, **kwargs):
748
- """
749
- DESCRIPTION:
750
- Function to process other arguments.
751
-
752
- PARAMETERS:
753
- kwargs:
754
- Specifies the keyword arguments passed to a function.
755
-
756
- RETURNS:
757
- None.
758
-
759
- RAISES:
760
- None.
761
-
762
- EXAMPLES:
763
- self.__process_other_arguments(arg1="string", arg2="db", arg3=2)
764
- """
765
- # Argument name dictionary.
766
- function_arguments = VC.TERADATAML_VALIB_FUNCTION_ARGUMENT_MAP.value
767
- try:
768
- func_arg_mapper = function_arguments[self.__sql_func_name]
769
- except:
770
- func_arg_mapper = None
771
-
772
- # Input argument name mapper extracted from VALIB_FUNCTION_MULTIINPUT_ARGUMENT_MAP.
773
- input_arguments = VC.VALIB_FUNCTION_MULTIINPUT_ARGUMENT_MAP.value
774
- try:
775
- func_input_arg_mapper = input_arguments[self.__sql_func_name]
776
- input_handling_required = True
777
- except:
778
- func_input_arg_mapper = None
779
- input_handling_required = False
780
-
781
- for arg in kwargs:
782
- arg_notin_arg_mapper = func_arg_mapper is not None and arg not in func_arg_mapper
783
- # Raise error if incorrect argument is passed.
784
- error_msg = "{0}() got an unexpected keyword argument '{1}'".\
785
- format(self.__tdml_valib_name, arg)
786
- if input_handling_required:
787
- if arg_notin_arg_mapper and arg not in func_input_arg_mapper:
788
- raise TypeError(error_msg)
789
- else:
790
- if arg_notin_arg_mapper:
791
- raise TypeError(error_msg)
792
-
793
- # Arguments to ignore and the once which will not be processed.
794
- if arg.lower() in VC.IGNORE_ARGUMENTS.value:
795
- if arg.lower() == "outputstyle":
796
- # If user has passed an argument "outputstyle", then we will ignore
797
- # user value and then create a table as final outcome.
798
- self.__generate_valib_sql_argument_syntax("table", "outputstyle")
799
-
800
- # Other arguments mentioned in 'ValibConstants.IGNORE_ARGUMENTS' will be ignored.
801
- continue
802
-
803
- # Pop each argument from kwargs.
804
- arg_value = kwargs.get(arg)
805
-
806
- if input_handling_required and arg in func_input_arg_mapper:
807
- # Argument provided is an input argument.
808
- # Let's get the names of the database and table arguments for this arg.
809
- self.__process_input_argument(df=arg_value,
810
- database_arg_name=
811
- func_input_arg_mapper[arg]["database_arg"],
812
- table_arg_name=
813
- func_input_arg_mapper[arg]["table_arg"])
814
- else:
815
- # Get the SQL argument name.
816
- arg_name = func_arg_mapper[arg] if isinstance(func_arg_mapper, dict) else arg
817
- self.__generate_valib_sql_argument_syntax(arg_value, arg_name)
818
-
819
- def __process_val_transformations(self, transformations, tf_tdml_arg, tf_sql_arg, data,
820
- data_arg="data"):
821
- """
822
- DESCRIPTION:
823
- Internal function to process the transformation(s) and generate the SQL
824
- argument syntax for the argument.
825
-
826
- PARAMETERS:
827
- transformations:
828
- Required Argument.
829
- Specifies the transformation(s) to be used for variable transformation.
830
- Types: FillNa
831
-
832
- tf_tdml_arg:
833
- Required Argument.
834
- Specifies the name of the argument that accepts transformation(s)
835
- to be used for variable transformation.
836
- Types: str
837
-
838
- tf_sql_arg:
839
- Required Argument.
840
- Specifies the SQL argument name used for the transformation(s).
841
- Types: str
842
-
843
- data:
844
- Required Argument.
845
- Specifies the input teradataml DataFrame used for Variable Transformation.
846
- Types: teradataml DataFrame
847
-
848
- data_arg:
849
- Optional Argument.
850
- Specifies the name of the input data argument.
851
- Default Value: "data"
852
- Types: string
853
-
854
- RETURNS:
855
- None
856
-
857
- RAISES:
858
- ValueError
859
-
860
- EXAMPLES:
861
- self.__process_val_transformations(fillna, "fillna", "nullreplacement", data)
862
- """
863
- # A list to contains SQL syntax of each transformation.
864
- tf_syntax_elements = []
865
-
866
- for tf in UtilFuncs._as_list(transformations):
867
- # Validates the existence of the columns used for transformation
868
- # in the input data.
869
- if tf.columns is not None:
870
- _Validators._validate_dataframe_has_argument_columns(
871
- UtilFuncs._as_list(tf.columns), "columns in {}".format(tf_tdml_arg), data,
872
- data_arg)
873
- tf_syntax_elements.append(tf._val_sql_syntax())
874
-
875
- # Add an entry for transformation in SQL argument syntax.
876
- self.__generate_valib_sql_argument_syntax(arg="".join(tf_syntax_elements),
877
- arg_name=tf_sql_arg)
878
-
879
- def _execute_valib_function(self,
880
- skip_data_arg_processing=False,
881
- skip_output_arg_processing=False,
882
- skip_other_arg_processing=False,
883
- skip_func_output_processing=False,
884
- skip_dyn_cls_processing=False,
885
- **kwargs):
886
- """
887
- DESCRIPTION:
888
- Function processes arguments and executes the VALIB function.
889
-
890
- PARAMETERS:
891
- skip_data_arg_processing:
892
- Optional Argument.
893
- Specifies whether to skip data argument processing or not.
894
- Default is to process the data argument.
895
- When set to True, caller should make sure to process "data" argument and
896
- pass SQL argument and values as part of kwargs to this function.
897
- Default Value: False
898
- Types: bool
899
-
900
- skip_output_arg_processing:
901
- Optional Argument.
902
- Specifies whether to skip output argument processing or not.
903
- Default is to process the output arguments.
904
- When set to True, caller should make sure to process all output arguments and
905
- pass equivalent SQL argument and values as part of kwargs to this function.
906
- Default Value: False
907
- Types: bool
908
-
909
- skip_other_arg_processing:
910
- Optional Argument.
911
- Specifies whether to skip other argument processing or not.
912
- Default is to process the other arguments, i.e., kwargs.
913
- When set to True, caller should make sure to process all other arguments are
914
- processed internally by the function.
915
- Default Value: False
916
- Types: bool
917
-
918
- skip_func_output_processing:
919
- Optional Argument.
920
- Specifies whether to skip function output processing or not.
921
- Default is to process the same.
922
- When set to True, caller should make sure to process function output
923
- arguments. Generally, when this argument is set to True, one must also
924
- set "skip_dyn_cls_processing" to True.
925
- Default Value: False
926
- Types: bool
927
-
928
- skip_dyn_cls_processing:
929
- Optional Argument.
930
- Specifies whether to skip dynamic class processing or not.
931
- Default is to process the dynamic class, where it creates a dynamic
932
- class and an instance of the same and returns the same.
933
- When set to True, caller should make sure to process dynamic class and
934
- return an instance of the same.
935
- arguments.
936
- Default Value: False
937
- Types: bool
938
-
939
- kwargs:
940
- Specifies the keyword arguments passed to a function.
941
-
942
- RETURNS:
943
- None.
944
-
945
- RAISES:
946
- TeradataMlException, TypeError
947
-
948
- EXAMPLES:
949
- self._execute_valib_function(arg1="string", arg2="db", arg3=2)
950
- """
951
- if not skip_data_arg_processing:
952
- # Process data argument.
953
- try:
954
- data = kwargs.pop("data")
955
- if not isinstance(data, DataFrame):
956
- raise TypeError(Messages.get_message(MessageCodes.UNSUPPORTED_DATATYPE,
957
- ["data"], ["teradataml DataFrame"]))
958
- self.__process_input_argument(data, "database", "tablename")
959
- except KeyError:
960
- # Raise TeradataMlException.
961
- error_msg = Messages.get_message(MessageCodes.MISSING_ARGS, ["data"])
962
- raise TeradataMlException(error_msg, MessageCodes.MISSING_ARGS)
963
-
964
- if not skip_output_arg_processing:
965
- # Process output arguments.
966
- self.__process_output_argument()
967
-
968
- if not skip_other_arg_processing:
969
- # Process other arguments.
970
- self.__process_other_arguments(**kwargs)
971
-
972
- # If the function is evaluator function, add SQL argument "scoringmethod=evaluate".
973
- if self.__tdml_valib_name in self.__multioutput_attr_map:
974
- scoring_method_values = VC.SCORING_METHOD_ARG_VALUE.value
975
- score_method = "non-default"
976
- if kwargs.get("gen_sql_only", False):
977
- score_method = "default"
978
- self.__generate_valib_sql_argument_syntax(scoring_method_values[score_method],
979
- VC.SCORING_METHOD_ARG_NAME.value)
980
-
981
- # Generate the query.
982
- exec_out = self.__generate_execute_sp_query()
983
-
984
- if not skip_func_output_processing:
985
- # Process the function output DataFrames.
986
- self.__process_func_outputs(query_exec_output=exec_out)
987
-
988
- if not skip_dyn_cls_processing:
989
- # Generate the dynamic class and create a object of the
990
- # same and return the same.
991
- return self.__create_dynamic_valib_class()
992
-
993
- def Association(self, data, group_column, item_column, **kwargs):
994
- """
995
- Please refer to Teradata Python Function Reference guide for Documentation.
996
- Reference guide can be found at: https://docs.teradata.com
997
- """
998
- # Add required arguments, i.e., positional arguments to kwargs for
999
- # further processing.
1000
- kwargs["data"] = data
1001
- kwargs["group_column"] = group_column
1002
- kwargs["item_column"] = item_column
1003
-
1004
- # Get a new instance of _VALIB() class for function execution.
1005
- valib_inst = self.__get_valib_instance("Association")
1006
-
1007
- # Add all arguments to dynamic class as data members.
1008
- valib_inst.__dyn_cls_data_members = {}
1009
- valib_inst.__dyn_cls_data_members.update(kwargs)
1010
-
1011
- # Get the value of "combinations", "no_support_results", "process_type"
1012
- # parameters from kwargs.
1013
- # These three parameters decide the number of output table generated.
1014
- combinations = kwargs.get("combinations", 11)
1015
- no_support_results = kwargs.get("no_support_results", True)
1016
- process_type = kwargs.get("process_type", "all")
1017
- support_result_prefix = kwargs.pop("support_result_prefix", "ml__valib_association")
1018
-
1019
- # Support table information based on the combinations.
1020
- # This dict contains a list of names of the support output tables those will
1021
- # be generated for a specific combination.
1022
- combinations_support_tables = {
1023
- 11: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT"],
1024
- 12: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT"],
1025
- 13: ["_0_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_1_SUPPORT"],
1026
- 14: ["_0_TO_1_SUPPORT", "_3_TO_1_SUPPORT", "_4_TO_1_SUPPORT"],
1027
- 21: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT"],
1028
- 22: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_2_SUPPORT"],
1029
- 23: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_2_SUPPORT"],
1030
- 31: ["_0_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_1_SUPPORT"],
1031
- 32: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_2_SUPPORT"],
1032
- 41: ["_0_TO_1_SUPPORT", "_3_TO_1_SUPPORT", "_4_TO_1_SUPPORT"],
1033
- }
1034
-
1035
- # This dict contains name of the support output table mapped to its corresponding
1036
- # exposed output teradataml DataFrame name.
1037
- support_result_names = {
1038
- "_0_TO_1_SUPPORT": "support_result_01",
1039
- "_1_TO_1_SUPPORT": "support_result_11",
1040
- "_2_TO_1_SUPPORT": "support_result_21",
1041
- "_3_TO_1_SUPPORT": "support_result_31",
1042
- "_4_TO_1_SUPPORT": "support_result_41",
1043
- "_2_TO_2_SUPPORT": "support_result_22",
1044
- "_3_TO_2_SUPPORT": "support_result_32",
1045
- }
1046
-
1047
- # Association rules produces various outputs. It generates:
1048
- # 1. Support Tables
1049
- # 2. Affinity Tables.
1050
-
1051
- # Support tables are generated when one of the following conditions occur:
1052
- # 1. When "process_type" is 'support'. Then only two tables are generated as follows:
1053
- # a. <support_result_prefix>_1_ITEM_SUPPORT
1054
- # b. <support_result_prefix>_group_count
1055
- # 2. When "no_support_results" is set to False.
1056
- # a. Multiple support table are generated based on the values passed
1057
- # to "combinations".
1058
- # b. A GROUP COUNT support table is also generated.
1059
-
1060
- # Here are some details on how and what outputs are generated:
1061
- # 1. When "process_type" is 'support', then:
1062
- # a. No affinity tables are generated.
1063
- # b. Only two support tables are generated, which are named as:
1064
- # i. <support_result_prefix>_1_ITEM_SUPPORT
1065
- # ii. <support_result_prefix>_group_count
1066
- # 2. When "no_support_results" is set to False.
1067
- # a. Affinity tables are generated.
1068
- # b. Multiple support table are generated, along with GROUP COUNT table.
1069
- # 3. When "no_support_results" is set to True.
1070
- # a. Only affinity tables are generated.
1071
- # b. No support tables are generated.
1072
-
1073
- # Affinity tables are generated based on the values passed to "combinations"
1074
- # parameter. Number of outputs generated is equal to the number of values passed
1075
- # to "combinations".
1076
- # Here are some cases to understand about this processing:
1077
- # 1. If "combinations" parameter is not passed, i.e., is None, then only
1078
- # one output table is generated.
1079
- # 2. If only one value is passed to "combinations" parameter, then only
1080
- # one output table is generated.
1081
- # 3. If only one value is passed in a list to "combinations" parameter,
1082
- # then only one output table is generated.
1083
- # 4. If list with multiple values is passed to "combinations" parameter,
1084
- # then number of output tables generated is equal to length of the list.
1085
- # 5. If empty list is passed to "combinations" parameter, then SQL will
1086
- # take care of throwing appropriate exceptions.
1087
-
1088
- # Let's add the entry for the function in multi-output attribute mapper
1089
- # as function produces multiple outputs.
1090
- valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name] = {}
1091
-
1092
- # To process output table parameters:
1093
- # 1. Let's generate the output database name parameter first.
1094
- # 2. Then generate the output table parameter.
1095
- # 3. Once the arguments and it's values are generated, call
1096
- # _execute_valib_function() and make sure to skip the
1097
- # output argument processing only.
1098
-
1099
- # Let's first get the temp table name to be used for creating output
1100
- # tables. Extract the database name and table name which will be used
1101
- # as follows:
1102
- # 1. Database name will be passed to SQL argument 'outputdatabase'.
1103
- # 2. Table name extracted will be used to generate the values for
1104
- # SQL argument 'outputtablename'.
1105
- out_tablename = valib_inst.__get_temp_table_name()
1106
-
1107
- # Add an entry for "outputdatabase" in SQL argument syntax.
1108
- valib_inst.__db_name = valib_inst.__extract_db_tbl_name(table_name=out_tablename,
1109
- arg_name="outputdatabase",
1110
- extract_table=False,
1111
- remove_quotes=True)
1112
-
1113
- __table_name = UtilFuncs._extract_table_name(out_tablename).replace("\"", "")
1114
-
1115
- # Let's start processing the output table argument.
1116
- # A list containing the output table name argument values.
1117
- output_table_names = []
1118
-
1119
- # For Association we will create two new variables to store the output DataFrame
1120
- # attribute names for support tables and affinity tables.
1121
- #
1122
- # This is done specifically for Association function as output attribute names
1123
- # will vary based on the input values for "combinations" parameter. Thus, it will
1124
- # help user to know the names of the output DataFrame attributes generated for
1125
- # a specific function call.
1126
- sup_table_attrs = "support_outputs"
1127
- aff_table_attrs = "affinity_outputs"
1128
- valib_inst.__dyn_cls_data_members[sup_table_attrs] = []
1129
- valib_inst.__dyn_cls_data_members[aff_table_attrs] = []
1130
-
1131
- # Before we proceed here is a common function which will be used for
1132
- # processing support tables.
1133
- def process_support_tables(out_var, support_table_name):
1134
- """ Internal function to process support tables. """
1135
- valib_inst.__dyn_cls_data_members[out_var] = support_table_name
1136
- valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name][out_var] = out_var
1137
- if out_var not in valib_inst.__dyn_cls_data_members[sup_table_attrs]:
1138
- valib_inst.__dyn_cls_data_members[sup_table_attrs].append(out_var)
1139
- GarbageCollector._add_to_garbagecollector(support_table_name,
1140
- TeradataConstants.TERADATA_TABLE)
1141
-
1142
- # GROUP_COUNT support table will be generated, when "process_type" is 'support'
1143
- # or "no_support_results" is set to False.
1144
- # Add the entry for the table in the output mappers.
1145
- if process_type.lower() == "support" or not no_support_results:
1146
- # Output attribute name of the group count table is "group_count".
1147
- out_var = "group_count"
1148
- grp_cnt_table_name = "{}_group_count".format(support_result_prefix)
1149
- process_support_tables(out_var=out_var, support_table_name=grp_cnt_table_name)
1150
-
1151
- # Let's process the other support tables and affinity tables.
1152
- if process_type.lower() == "support":
1153
- # We are here that means only 1 item support table along with group count
1154
- # support table is generated. Group count table entry is already added.
1155
- # Output attribute name of the 1 item support table is "support_1_item".
1156
- out_var = "support_1_item"
1157
- sup_tbl_name = "{}_1_ITEM_SUPPORT".format(support_result_prefix)
1158
- process_support_tables(out_var=out_var, support_table_name=sup_tbl_name)
1159
-
1160
- # Value for output table does not matter when "process_type" is 'support'.
1161
- # No affinity tables are generated.
1162
- output_table_names.append(__table_name)
1163
- else:
1164
- # Affinity tables and other support tables are generated only when "process_type"
1165
- # is not equal to 'support'.
1166
-
1167
- # Process the affinity tables.
1168
- for combination in UtilFuncs._as_list(combinations):
1169
- # Generate the new output table name.
1170
- extension = "_{}".format(combination)
1171
- out_var = "{}{}".format(VC.DEFAULT_OUTPUT_VAR.value, extension)
1172
- new_tbl_name = valib_inst.__get_table_name_with_extension(table_name=__table_name,
1173
- extension=extension)
1174
-
1175
- # Add an entry for affinity output in mappers, which will produce the
1176
- # output DataFrames.
1177
- valib_inst.__dyn_cls_data_members[out_var] = new_tbl_name
1178
- valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name][out_var] = out_var
1179
- valib_inst.__dyn_cls_data_members[aff_table_attrs].append(out_var)
1180
-
1181
- # Add the name of the output affinity table, which will be used as value
1182
- # for the "outputtablename" argument.
1183
- output_table_names.append(new_tbl_name)
1184
-
1185
- if not no_support_results:
1186
- # Other support tables are also generated and are not dropped in the end
1187
- # by Vantage, hence we will create output DataFrames for each one of those.
1188
- # Let's process all those support tables.
1189
- # 'combinations_support_tables' contains a name of list of support
1190
- # output tables those will be generated for a specific combination.
1191
- for sup_postfix in combinations_support_tables[combination]:
1192
- sup_out_var = support_result_names[sup_postfix]
1193
- sup_tbl_name = "{}{}".format(support_result_prefix, sup_postfix)
1194
- process_support_tables(out_var=sup_out_var, support_table_name=sup_tbl_name)
1195
-
1196
- # Add an entry for "outputtablename" in SQL argument syntax.
1197
- valib_inst.__generate_valib_sql_argument_syntax(arg=output_table_names,
1198
- arg_name="outputtablename")
1199
-
1200
- # Execute the function, skip output argument and output dataframe processing.
1201
- return valib_inst._execute_valib_function(skip_output_arg_processing=True,
1202
- support_result_prefix=support_result_prefix,
1203
- **kwargs)
1204
-
1205
- def KMeans(self, data, columns, centers, **kwargs):
1206
- """
1207
- Please refer to Teradata Python Function Reference guide for Documentation.
1208
- Reference guide can be found at: https://docs.teradata.com
1209
- """
1210
- # Add the required arguments to kwargs for further processing.
1211
- kwargs["data"] = data
1212
- kwargs["columns"] = columns
1213
- kwargs["centers"] = centers
1214
-
1215
- # Get a new instance of _VALIB() class for function execution.
1216
- new_valib_obj = self.__get_valib_instance("KMeans")
1217
-
1218
- # Add all arguments to dynamic class as data members.
1219
- new_valib_obj.__dyn_cls_data_members = {}
1220
- new_valib_obj.__dyn_cls_data_members.update(kwargs)
1221
-
1222
- centroids_data = kwargs.pop("centroids_data", None)
1223
-
1224
- # If there is no "centroids_data", do normal processing.
1225
- if centroids_data is None:
1226
- return new_valib_obj._execute_valib_function(**kwargs)
1227
-
1228
- # If "centroids_data" is provided, special handling for output argument is needed.
1229
- if not isinstance(centroids_data, DataFrame):
1230
- raise TypeError(Messages.get_message(MessageCodes.UNSUPPORTED_DATATYPE,
1231
- ["centroids_data"], ["teradataml DataFrame"]))
1232
-
1233
- # The following things has to be handled:
1234
- # 1. The table in "centroids_data" is updated with new centroids and the same table
1235
- # is the result (new output) table.
1236
- # Extract database name and add it to Valib SQL argument syntax.
1237
- new_valib_obj.__db_name = new_valib_obj.__extract_db_tbl_name(
1238
- table_name=centroids_data._table_name,
1239
- arg_name="outputdatabase",
1240
- extract_table=False,
1241
- remove_quotes=True)
1242
-
1243
- # Extract table name and add it to Valib SQL argument syntax.
1244
- table_name = new_valib_obj.__extract_db_tbl_name(table_name=centroids_data._table_name,
1245
- arg_name="outputtablename",
1246
- extract_table=True,
1247
- remove_quotes=True)
1248
-
1249
- # Since output argument processing will be skipped, table name is added in dynamic
1250
- # class data member "result", which will be replaced with DataFrame while processing
1251
- # function outputs in the function _execute_valib_function.
1252
- new_valib_obj.__dyn_cls_data_members[VC.DEFAULT_OUTPUT_VAR.value] = table_name
1253
-
1254
- # 2. Execute the valib function call based on the arguments along with newly added
1255
- # the SQL argument 'continuation=true' and process output and other arguments
1256
- # related information.
1257
- return new_valib_obj._execute_valib_function(skip_output_arg_processing=True,
1258
- continuation=True,
1259
- **kwargs)
1260
-
1261
- def DecisionTreePredict(self, data, model, **kwargs):
1262
- """
1263
- Please refer to Teradata Python Function Reference guide for Documentation.
1264
- Reference guide can be found at: https://docs.teradata.com
1265
- """
1266
- # Add the required arguments to kwargs for further processing.
1267
- kwargs["data"] = data
1268
- kwargs["model"] = model
1269
-
1270
- # Get a new instance of _VALIB() class for function execution.
1271
- new_valib_obj = self.__get_valib_instance("DecisionTreePredict")
1272
-
1273
- # Add all arguments to dynamic class as data members.
1274
- new_valib_obj.__dyn_cls_data_members = {}
1275
- new_valib_obj.__dyn_cls_data_members.update(kwargs)
1276
-
1277
- return new_valib_obj._execute_valib_function(profile=True, **kwargs)
1278
-
1279
- def DecisionTreeEvaluator(self, data, model, **kwargs):
1280
- """
1281
- Please refer to Teradata Python Function Reference guide for Documentation.
1282
- Reference guide can be found at: https://docs.teradata.com
1283
- """
1284
- # Add the required arguments to kwargs for further processing.
1285
- kwargs["data"] = data
1286
- kwargs["model"] = model
1287
-
1288
- # Get a new instance of _VALIB() class for function execution.
1289
- new_valib_obj = self.__get_valib_instance("DecisionTreeEvaluator")
1290
-
1291
- # Add all arguments to dynamic class as data members.
1292
- new_valib_obj.__dyn_cls_data_members = {}
1293
- new_valib_obj.__dyn_cls_data_members.update(kwargs)
1294
-
1295
- return new_valib_obj._execute_valib_function(profile=True, **kwargs)
1296
-
1297
- def __validate_overlap_arguments(self, data_val, data_arg, columns_val, columns_arg,
1298
- is_optional = True):
1299
- """
1300
- DESCRIPTION:
1301
- Internal function to validate pair of data{i} and columns{i} arguments.
1302
-
1303
- PARAMETERS:
1304
- data_val:
1305
- Required Argument.
1306
- Specifies the teradataml Dataframe containing input data.
1307
- Types: teradataml Dataframe
1308
-
1309
- data_arg:
1310
- Required Argument.
1311
- Specifies the argument name for the teradataml DataFrame specified in the
1312
- argument "data_val".
1313
- Types: str
1314
-
1315
- columns_val:
1316
- Required Argument.
1317
- Specifies the list of column(s) present in the DataFrame "data_val".
1318
- Types: str OR list of strings (str)
1319
-
1320
- columns_arg:
1321
- Required Argument.
1322
- Specifies the argument name for the columns specified in the
1323
- argument "columns_val".
1324
- Types: str
1325
-
1326
- is_optional:
1327
- Optional Argument.
1328
- Specifies whether the values in arguments "data_val" and "columns_val" are
1329
- optional in Overlap() function.
1330
- If True, the values in these arguments should be validated as optional arguments
1331
- in Overlap() function. Otherwise, these values are considered as required
1332
- arguments.
1333
- Default Value: True
1334
- Types: bool
1335
-
1336
- RETURNS:
1337
- None.
1338
-
1339
- EXAMPLES:
1340
- valib.__validate_overlap_arguments(data_val=data, data_arg="data",
1341
- columns_val=columns, columns_arg="columns",
1342
- is_optional=False)
1343
- """
1344
- # Create argument information matrix to do parameter checking.
1345
- __arg_info_matrix = []
1346
- __arg_info_matrix.append([data_arg, data_val, is_optional, (DataFrame)])
1347
- __arg_info_matrix.append([columns_arg, columns_val, is_optional, (str, list), True])
1348
-
1349
- _Validators._validate_function_arguments(arg_list=__arg_info_matrix)
1350
-
1351
- _Validators._validate_dataframe_has_argument_columns(data=data_val,
1352
- data_arg=data_arg,
1353
- columns=columns_val,
1354
- column_arg=columns_arg,
1355
- is_partition_arg=False)
1356
-
1357
- # TODO- Delete LogRegPredict function definition if Jira TDAF-7867 is resolved.
1358
- def LogRegPredict(self, **kwargs):
1359
- """
1360
- Please refer to Teradata Python Function Reference guide for Documentation.
1361
- Reference guide can be found at: https://docs.teradata.com
1362
- """
1363
-
1364
- # Get a new instance of _VALIB() class for function execution.
1365
- valib_inst = self.__get_valib_instance("LogRegPredict")
1366
-
1367
- # Add all arguments to dynamic class as data members.
1368
- valib_inst.__dyn_cls_data_members = {}
1369
- valib_inst.__dyn_cls_data_members.update(kwargs)
1370
-
1371
- # Setting scoringmethod to "score" if gen_sql_only is True.
1372
- gen_sql_only = kwargs.get("gen_sql_only", False)
1373
- if gen_sql_only:
1374
- valib_inst.__generate_valib_sql_argument_syntax(arg="score",
1375
- arg_name="scoringmethod")
1376
-
1377
- return valib_inst._execute_valib_function(**kwargs)
1378
-
1379
- def Overlap(self, data1, columns1, **kwargs):
1380
- """
1381
- Please refer to Teradata Python Function Reference guide for Documentation.
1382
- Reference guide can be found at: https://docs.teradata.com
1383
- """
1384
- # Validate the required arguments - data1 and columns1.
1385
- # Other arguments are validated as and when they are being processed.
1386
- self.__validate_overlap_arguments(data_val=data1, data_arg="data1",
1387
- columns_val=columns1, columns_arg="columns1",
1388
- is_optional=False)
1389
-
1390
- kwargs["data1"] = data1
1391
- kwargs["columns1"] = columns1
1392
-
1393
- # Each columns argument can take string or list of strings.
1394
- # Ensure all columns related arguments to be list of one or more strings.
1395
- columns1 = UtilFuncs._as_list(columns1)
1396
-
1397
- valib_inst = self.__get_valib_instance("Overlap")
1398
-
1399
- # Add all arguments to dynamic class as data members.
1400
- valib_inst.__dyn_cls_data_members = {}
1401
- valib_inst.__dyn_cls_data_members.update(kwargs)
1402
-
1403
- parse_kwargs = True
1404
- ind = 1
1405
- database_names = []
1406
- table_names = []
1407
- column_names_df = []
1408
-
1409
- """
1410
- The argument names are data1, data2, ..., dataN and columns1, columns2, ... columnsN
1411
- corresponding to each data arguments.
1412
- Note:
1413
- 1. The number of data arguments should be same as that of columns related arguments.
1414
- 2. The number of columns in each of the columns related arguments (including
1415
- "columns1" argument) should be same.
1416
- """
1417
- while parse_kwargs:
1418
- data_arg_name = "data{}".format(str(ind))
1419
- data_arg_value = kwargs.pop(data_arg_name, None)
1420
- if data_arg_value is None:
1421
- parse_kwargs = False
1422
- else:
1423
- columns_arg_name = "columns{}".format(str(ind))
1424
- columns_arg_value = kwargs.pop(columns_arg_name, None)
1425
-
1426
- # Raise error if dataN is present and columnsN is not present.
1427
- if columns_arg_value is None:
1428
- err_ = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
1429
- columns_arg_name, data_arg_name)
1430
- raise TeradataMlException(err_, MessageCodes.DEPENDENT_ARG_MISSING)
1431
-
1432
- self.__validate_overlap_arguments(data_val=data_arg_value,
1433
- data_arg=data_arg_name,
1434
- columns_val=columns_arg_value,
1435
- columns_arg=columns_arg_name)
1436
-
1437
- # Each columns argument can take string or list of strings.
1438
- # Ensure all columns related arguments to be list of one or more strings.
1439
- columns_arg_value = UtilFuncs._as_list(columns_arg_value)
1440
-
1441
- if len(columns_arg_value) != len(columns1):
1442
- err_ = Messages.get_message(MessageCodes.INVALID_LENGTH_ARGS,
1443
- "'columns1', 'columns2', ..., 'columnsN'")
1444
- raise TeradataMlException(err_ ,MessageCodes.INVALID_LENGTH_ARGS)
1445
-
1446
- # If all the validations are done,
1447
- # 1. extract database names
1448
- # 2. extract table names
1449
- # 3. generate SQL syntax for 'columns' argument.
1450
- database_names.append(UtilFuncs()._get_db_name_from_dataframe(data_arg_value))
1451
- __table_name = UtilFuncs._extract_table_name(data_arg_value._table_name).\
1452
- replace("\"", "")
1453
- table_names.append(__table_name)
1454
- column_names_df.append("{" + ",".join(columns_arg_value) + "}")
1455
-
1456
- ind = ind + 1
1457
-
1458
- # gensqlonly implementation.
1459
- gen_sql_only = kwargs.pop("gen_sql_only", False)
1460
- if gen_sql_only:
1461
- valib_inst.__generate_valib_sql_argument_syntax(arg=str(gen_sql_only),
1462
- arg_name="gensqlonly")
1463
-
1464
- # Raise error if there are additional arguments.
1465
- if len(kwargs) != 0:
1466
- err_ = "The keyword arguments for Overlap() should have data1, data2, ..., dataN " \
1467
- "and corresponding columns1, columns2, ..., columnsN. " \
1468
- "Found additional arguments {}."
1469
- raise TypeError(err_.format(list(kwargs.keys())))
1470
-
1471
- # Generate SQL syntax for SQL arguments database, tablename and columns.
1472
- valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(database_names),
1473
- arg_name="database")
1474
- valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(table_names),
1475
- arg_name="tablename")
1476
- valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(column_names_df),
1477
- arg_name="columns")
1478
-
1479
- return valib_inst._execute_valib_function(skip_data_arg_processing=True,
1480
- skip_other_arg_processing=True)
1481
-
1482
- def Transform(self, data, bins=None, derive=None, one_hot_encode=None, fillna=None,
1483
- label_encode=None, rescale=None, retain=None, sigmoid=None, zscore=None,
1484
- **kwargs):
1485
- """
1486
- Please refer to Teradata Python Function Reference guide for Documentation.
1487
- Reference guide can be found at: https://docs.teradata.com
1488
- """
1489
- # Argument Validations
1490
- # Note:
1491
- # Commented code is kept for future purpose. Once all commented code is updated
1492
- # note will be removed as well.
1493
- arg_info_matrix = []
1494
- arg_info_matrix.append(["data", data, False, (DataFrame)])
1495
- arg_info_matrix.append(["bins", bins, True, (Binning, list)])
1496
- arg_info_matrix.append(["derive", derive, True, (Derive, list)])
1497
- arg_info_matrix.append(["one_hot_encode", one_hot_encode, True, (OneHotEncoder, list)])
1498
- arg_info_matrix.append(["fillna", fillna, True, (FillNa, list)])
1499
- arg_info_matrix.append(["rescale", rescale, True, (MinMaxScalar, list)])
1500
- arg_info_matrix.append(["label_encode", label_encode, True, (LabelEncoder, list)])
1501
- arg_info_matrix.append(["retain", retain, True, (Retain, list)])
1502
- arg_info_matrix.append(["sigmoid", sigmoid, True, (Sigmoid, list)])
1503
- arg_info_matrix.append(["zscore", zscore, True, (ZScore, list)])
1504
-
1505
- # Argument validations.
1506
- _Validators._validate_function_arguments(arg_info_matrix)
1507
-
1508
- # Add "data" to kwargs for further processing.
1509
- kwargs["data"] = data
1510
-
1511
- # Get a new instance of _VALIB() class for function execution.
1512
- valib_inst = self.__get_valib_instance("Transform")
1513
-
1514
- # Add all arguments to dynamic class as data members.
1515
- valib_inst.__dyn_cls_data_members = {}
1516
- valib_inst.__dyn_cls_data_members.update(kwargs)
1517
- valib_inst.__dyn_cls_data_members["bins"] = bins
1518
- valib_inst.__dyn_cls_data_members["derive"] = derive
1519
- valib_inst.__dyn_cls_data_members["one_hot_encode"] = one_hot_encode
1520
- valib_inst.__dyn_cls_data_members["fillna"] = fillna
1521
- valib_inst.__dyn_cls_data_members["label_encode"] = label_encode
1522
- valib_inst.__dyn_cls_data_members["rescale"] = rescale
1523
- valib_inst.__dyn_cls_data_members["retain"] = retain
1524
- valib_inst.__dyn_cls_data_members["sigmoid"] = sigmoid
1525
- valib_inst.__dyn_cls_data_members["zscore"] = zscore
1526
-
1527
- # Add "outputstyle" argument to generate output table.
1528
- valib_inst.__generate_valib_sql_argument_syntax(arg="table", arg_name="outputstyle")
1529
-
1530
- # Bin Coding Transformation
1531
- if bins is not None:
1532
- valib_inst.__process_val_transformations(bins, "bins", "bincode", data)
1533
-
1534
- # Derive Transformation
1535
- if derive is not None:
1536
- valib_inst.__process_val_transformations(derive, "derive", "derive", data)
1537
-
1538
- # OneHotEncoder Transformation
1539
- if one_hot_encode is not None:
1540
- valib_inst.__process_val_transformations(one_hot_encode, "one_hot_encode", "designcode", data)
1541
-
1542
- # Null Replacement Transformation
1543
- if fillna is not None:
1544
- valib_inst.__process_val_transformations(fillna, "fillna", "nullreplacement", data)
1545
-
1546
- # LabelEncoder Transformation
1547
- if label_encode is not None:
1548
- valib_inst.__process_val_transformations(label_encode, "label_encode", "recode", data)
1549
-
1550
- # MinMaxScalar Transformation
1551
- if rescale is not None:
1552
- valib_inst.__process_val_transformations(rescale, "rescale", "rescale", data)
1553
-
1554
- # Retain Transformation
1555
- if retain is not None:
1556
- valib_inst.__process_val_transformations(retain, "retain", "retain", data)
1557
-
1558
- # Sigmoid Transformation
1559
- if sigmoid is not None:
1560
- valib_inst.__process_val_transformations(sigmoid, "sigmoid", "sigmoid", data)
1561
-
1562
- # ZScore Transformation
1563
- if zscore is not None:
1564
- valib_inst.__process_val_transformations(zscore, "zscore", "zscore", data)
1565
-
1566
- # Execute the function, just do not process the output dataframes
1567
- # and dynamic class creation for the function.
1568
- return valib_inst._execute_valib_function(**kwargs)
1569
-
1570
- def XmlToHtmlReport(self, data, analysis_type, **kwargs):
1571
- """
1572
- Please refer to Teradata Python Function Reference guide for Documentation.
1573
- Reference guide can be found at: https://docs.teradata.com
1574
- """
1575
- # Add the required arguments to kwargs for further processing.
1576
- kwargs["data"] = data
1577
- kwargs["analysis_type"] = analysis_type
1578
- # Dict that maps teradataml Class name to SQL name.
1579
- tdml_classname_to_sql_name = {"DecisionTree": "decisiontree",
1580
- "DecisionTreeEvaluator": "decisiontreescore",
1581
- "PCA": "factor",
1582
- "PCAEvaluator": "factorscore",
1583
- "LinReg": "linear",
1584
- "LogReg": "logistic",
1585
- "LogRegEvaluator": "logisticscore"}
1586
-
1587
- if analysis_type in tdml_classname_to_sql_name:
1588
- kwargs["analysis_type"] = tdml_classname_to_sql_name[analysis_type]
1589
-
1590
- # Get a new instance of _VALIB() class for function execution.
1591
- new_valib_obj = self.__get_valib_instance("XmlToHtmlReport")
1592
-
1593
- # Add all arguments to dynamic class as data members.
1594
- new_valib_obj.__dyn_cls_data_members = {}
1595
- new_valib_obj.__dyn_cls_data_members.update(kwargs)
1596
-
1597
- return new_valib_obj._execute_valib_function(**kwargs)
1598
-
1599
- # Define an object of type _VALIB, that will allow user to execute any VALIB function.
1600
- valib = _VALIB()
1
+ """
2
+ Unpublished work.
3
+ Copyright (c) 2020 by Teradata Corporation. All rights reserved.
4
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
5
+
6
+ Primary Owner: PankajVinod.Purandare@teradata.com
7
+ Secondary Owner: Adithya.Avvaru@teradata.com
8
+
9
+ This file implements the core framework that allows user to execute any Vantage Analytics
10
+ Library (VALIB) Function.
11
+ """
12
+ import time
13
+ import uuid
14
+ from math import floor
15
+
16
+ from teradatasqlalchemy.telemetry.queryband import collect_queryband
17
+ from teradataml.common import messages
18
+ from teradataml.common.constants import TeradataConstants, ValibConstants as VC
19
+ from teradataml.common.exceptions import TeradataMlException
20
+ from teradataml.common.garbagecollector import GarbageCollector
21
+ from teradataml.common.messages import Messages, MessageCodes
22
+ from teradataml.common.utils import UtilFuncs
23
+ from teradataml.context.context import get_context, _get_current_databasename
24
+ from teradataml.options.configure import configure
25
+ from teradataml.dataframe.dataframe import DataFrame, in_schema
26
+ from teradataml.utils.validators import _Validators
27
+ from teradataml.analytics.Transformations import Binning, Derive, OneHotEncoder, FillNa, \
28
+ LabelEncoder, MinMaxScalar, Retain, Sigmoid, ZScore
29
+
30
+ class _VALIB():
31
+ """ An internal class for executing VALIB analytic functions. """
32
+
33
+ def __init__(self, *c, **kwargs):
34
+ """ Constructor for VALIB function execution. """
35
+ # Vantage SQL name of the VALIB function.
36
+ self.__sql_func_name = ""
37
+ # teradataml name of the VALIB function.
38
+ self.__tdml_valib_name = ""
39
+ self.__func_arg_sql_syntax_eles = []
40
+ self.__func_other_arg_sql_names = []
41
+ self.__func_other_args = []
42
+ self.result = None
43
+ self.__generated_sql = None
44
+ self.__multioutput_attr_map = {}
45
+ self.__multioutput_attr_map.update(VC.TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP.value)
46
+ self.__output_arg_map = {}
47
+ self.__output_arg_map.update(VC.VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP.value)
48
+
49
+ @property
50
+ def _tdml_valib_name(self):
51
+ """
52
+ DESCRIPTION:
53
+ Function to return VAL function name.
54
+
55
+ RETURNS:
56
+ str
57
+
58
+ RAISES:
59
+ None
60
+
61
+ EXAMPLES:
62
+ valib.LinReg._tdml_valib_name
63
+ """
64
+ return self.__tdml_valib_name
65
+
66
+ def __getattr__(self, item):
67
+ """
68
+ DESCRIPTION:
69
+ Returns an attribute of the _VALIB class.
70
+
71
+ PARAMETERS:
72
+ item:
73
+ Required Argument.
74
+ Specifes the name of the attribute.
75
+
76
+ RETURNS:
77
+ An object of _VALIB class.
78
+
79
+ RAISES:
80
+ None.
81
+
82
+ EXAMPLES:
83
+ valib.ValibFunctionName
84
+ """
85
+ return self.__get_valib_instance(item)
86
+
87
+ def __call__(self, **kwargs):
88
+ """
89
+ DESCRIPTION:
90
+ Function makes the instance of this class callable.
91
+
92
+ PARAMETERS:
93
+ kwargs:
94
+ Keyword arguments for the callable function.
95
+
96
+ RETURNS:
97
+ Returns a callable of object of _VALIB class.
98
+
99
+ RAISES:
100
+ None.
101
+
102
+ EXAMPLES:
103
+ valib.ValibFunctionName()
104
+ """
105
+ # Input arguments passed to a function.
106
+ # Use the same as the data members for the dynamic class.
107
+ self.__dyn_cls_data_members = kwargs
108
+ return self._execute_valib_function(**kwargs)
109
+
110
+ def __get_valib_instance(self, item):
111
+ """
112
+ DESCRIPTION:
113
+ Function creates and returns an instance of valib class for the function
114
+ name assigning the SQL function name and teradataml function name attributes.
115
+ PARAMETERS:
116
+ item:
117
+ Required Argument.
118
+ Specifies the name of the attribute/function.
119
+ Types: str
120
+
121
+ RETURNS:
122
+ An object of _VALIB class.
123
+
124
+ RAISES:
125
+ None.
126
+
127
+ EXAMPLES:
128
+ valib.__get_valib_instance("<function_name>")
129
+ """
130
+ valib_f = _VALIB()
131
+ valib_f.__tdml_valib_name = item
132
+
133
+ # Overwriting the multioutput attribute mapper with evaluator map if tdml function name
134
+ # is present in the constant TERDATAML_EVALUATOR_OUTPUT_ATTR_MAP.
135
+ evaluator_map = VC.TERDATAML_EVALUATOR_OUTPUT_ATTR_MAP.value
136
+ if item in evaluator_map:
137
+ valib_f.__multioutput_attr_map = {}
138
+ valib_f.__multioutput_attr_map.update(evaluator_map)
139
+
140
+ try:
141
+ valib_f.__sql_func_name = VC.TERADATAML_VALIB_SQL_FUNCTION_NAME_MAP.value[item].upper()
142
+ except:
143
+ valib_f.__sql_func_name = item.upper()
144
+ return valib_f
145
+
146
+ def __create_dynamic_valib_class(self):
147
+ """
148
+ DESCRIPTION:
149
+ Function dynamically creates a class of VALIB function type.
150
+
151
+ PARAMETERS:
152
+ None
153
+
154
+ RETURNS:
155
+ An object of dynamic class of VALIB function name.
156
+
157
+ RAISES:
158
+ None.
159
+
160
+ EXAMPLE:
161
+ self.__create_dynamic_valib_class()
162
+ """
163
+
164
+ # Constructor for the dynamic class.
165
+ def constructor(self):
166
+ """ Constructor for dynamic class """
167
+ # Do Nothing...
168
+ pass
169
+ self.__dyn_cls_data_members["__init__"] = constructor
170
+
171
+ # __repr__ method for dynamic class.
172
+ def print_result(self):
173
+ """ Function to be used for representation of VALIB function type object. """
174
+ repr_string = ""
175
+ for key in self._valib_results:
176
+ repr_string = "{}\n############ {} Output ############".format(repr_string, key)
177
+ repr_string = "{}\n\n{}\n\n".format(repr_string, getattr(self, key))
178
+ return repr_string
179
+ self.__dyn_cls_data_members["__repr__"] = print_result
180
+
181
+ query = (self.__query, self.__generated_sql)
182
+ # Print the underlying SQL stored procedure call or generated SQL.
183
+ def show_query(self, query_type="sp"):
184
+ """
185
+ Function to return the underlying SQL query.
186
+ """
187
+ _Validators._validate_permitted_values(arg=query_type,
188
+ permitted_values=["sp", "sql", "both"],
189
+ arg_name="query_type")
190
+ if query_type.lower() == "sp":
191
+ return query[0]
192
+ elif query_type.lower() == "sql":
193
+ return query[1]
194
+ return query
195
+
196
+ self.__dyn_cls_data_members["show_query"] = show_query
197
+
198
+ # To list attributes using dict()
199
+ self.__dyn_cls_data_members["__dict__"] = self.__dyn_cls_data_members
200
+
201
+ # Dynamic class creation with VALIB function name.
202
+ valib_class = type(self.__tdml_valib_name, (object,), self.__dyn_cls_data_members)
203
+
204
+ return valib_class()
205
+
206
+ def __create_output_dataframes(self, out_var):
207
+ """
208
+ DESCRIPTION:
209
+ Internal function to create output DataFrame, set the index labels to
210
+ None and add the same to the result list.
211
+ Function makes sure that all these created variables are added to the
212
+ dynamic class as data members.
213
+
214
+ PARAMETERS:
215
+ out_var:
216
+ Required Argument.
217
+ Specifies the name of the output DataFrame.
218
+ Types: str
219
+
220
+ RETURNS:
221
+ None.
222
+
223
+ RAISES:
224
+ None.
225
+
226
+ EXAMPLES:
227
+ self.__create_output_dataframes("result")
228
+ """
229
+ self.__dyn_cls_data_members[out_var] = DataFrame(
230
+ in_schema(self.__db_name, self.__dyn_cls_data_members[out_var]))
231
+ self.__dyn_cls_data_members[out_var]._index_label = None
232
+ self.__dyn_cls_data_members[out_var]._index_query_required = False
233
+ self.__dyn_cls_data_members[VC.OUTPUT_DATAFRAME_RESULTS.value].append(out_var)
234
+
235
+ @collect_queryband(attr="_VALIB__sql_func_name")
236
+ def __generate_execute_sp_query(self):
237
+ """
238
+ DESCRIPTION:
239
+ Function generates a stored procedure call corresponding to the function
240
+ and execute the same.
241
+
242
+ PARAMETERS:
243
+ None.
244
+
245
+ RETURNS:
246
+ Console output of query, if any, otherwise None.
247
+
248
+ RAISES:
249
+ TeradataMlException
250
+
251
+ EXAMPLES:
252
+ self.__generate_execute_sp_query()
253
+ """
254
+ # Generate and execute SQL VALIB SP call.
255
+ if configure.val_install_location is None:
256
+ message = Messages.get_message(MessageCodes.UNKNOWN_INSTALL_LOCATION,
257
+ "Vantage analytic functions",
258
+ "option 'configure.val_install_location'")
259
+ raise TeradataMlException(message, MessageCodes.MISSING_ARGS)
260
+
261
+ query_string = "call {0}.td_analyze('{1}', '{2};');"
262
+ self.__query = query_string.format(configure.val_install_location, self.__sql_func_name,
263
+ ";".join(self.__func_arg_sql_syntax_eles))
264
+
265
+ return UtilFuncs._execute_query(self.__query, expect_none_result=True)
266
+
267
+ def __generate_valib_sql_argument_syntax(self, arg, arg_name):
268
+ """
269
+ DESCRIPTION:
270
+ Function to generate the VALIB SQL function argument syntax.
271
+
272
+ PARAMETERS:
273
+ arg:
274
+ Required Argument.
275
+ Specifies an argument value to be used in VALIB function call.
276
+ Types: Any object that can be converted to a string.
277
+
278
+ arg_name:
279
+ Required Argument.
280
+ Specifies a SQL argument name to be used in VALIB function call.
281
+ Types: String
282
+
283
+ RETURNS:
284
+ None
285
+
286
+ RAISES:
287
+ None
288
+
289
+ EXAMPLES:
290
+ self.__generate_valib_sql_argument_syntax(argument, "argument_name")
291
+ """
292
+ arg = UtilFuncs._teradata_collapse_arglist(arg, "")
293
+ self.__func_arg_sql_syntax_eles.append("{}={}".format(arg_name, arg))
294
+
295
+ def __extract_db_tbl_name(self, table_name, arg_name, extract_table=True, remove_quotes=False):
296
+ """
297
+ DESCRIPTION:
298
+ Function processes the table name argument to extract database or table from it.
299
+
300
+ PARAMETERS:
301
+ table_name:
302
+ Required Argument.
303
+ Specifies the fully-qualified table name.
304
+ Types: String
305
+
306
+ arg_name:
307
+ Required Argument.
308
+ Specifies a SQL argument name to be used in VALIB function call.
309
+ Types: String
310
+
311
+ extract_table:
312
+ Optional Argument.
313
+ Specifies whether to extract a table name or database name from
314
+ "table_name". When set to 'True', table name is extracted otherwise
315
+ database name is extracted.
316
+ Default Value: True
317
+ Types: bool
318
+
319
+ remove_quotes:
320
+ Optional Argument.
321
+ Specifies whether to remove quotes from the extracted string or not.
322
+ When set to 'True', double quotes will be removed from the extracted
323
+ name.
324
+ Default Value: False
325
+ Types: bool
326
+
327
+ RETURNS:
328
+ Extracted name.
329
+
330
+ RAISES:
331
+ None.
332
+
333
+ EXAMPLES:
334
+ # Extract the table name and remove quotes.
335
+ self.__extract_db_tbl_name(self, table_name, arg_name, remove_quotes=True)
336
+
337
+ # Extract the database name.
338
+ self.__extract_db_tbl_name(self, table_name, arg_name, extract_table=False)
339
+ """
340
+ # Extract table name or db name from the 'table_name'
341
+ if extract_table:
342
+ name = UtilFuncs._extract_table_name(table_name)
343
+ else:
344
+ name = UtilFuncs._extract_db_name(table_name)
345
+
346
+ # Remove quotes.
347
+ if remove_quotes:
348
+ name = name.replace("\"", "")
349
+
350
+ # Generate VALIB function argument call syntax.
351
+ self.__generate_valib_sql_argument_syntax(name, arg_name)
352
+
353
+ return name
354
+
355
+ def __get_temp_table_name(self):
356
+ """
357
+ DESCRIPTION:
358
+ Generate and get the table name for the outputs.
359
+
360
+ PARAMETERS:
361
+ None.
362
+
363
+ RETURNS:
364
+ None.
365
+
366
+ RAISES:
367
+ None.
368
+
369
+ EXAMPLES:
370
+ self.__get_temp_table_name()
371
+ """
372
+ prefix = "valib_{}".format(self.__tdml_valib_name.lower())
373
+ return UtilFuncs._generate_temp_table_name(prefix=prefix, use_default_database=True,
374
+ gc_on_quit=True, quote=False,
375
+ table_type=TeradataConstants.TERADATA_TABLE)
376
+
377
+ def __process_dyn_cls_output_member(self, arg_name, out_tablename, out_var=None):
378
+ """
379
+ DESCRIPTION:
380
+ Function to process output table name argument. As part of processing it does:
381
+ * Generates the SQL clause for argument name.
382
+ * Adds a data member to the dynamic class dictionary, with the name same as
383
+ exposed name of the output DataFrame.
384
+
385
+ PARAMETERS:
386
+ arg_name:
387
+ Required Argument.
388
+ Specifies the output table SQL argument name.
389
+ Types: str
390
+
391
+ out_tablename:
392
+ Required Argument.
393
+ Specifies the output table name.
394
+ Types: str
395
+
396
+ out_var:
397
+ Optional Argument.
398
+ Specifies the output DataFrame name to use.
399
+ If this is None, then value for this is extracted from
400
+ 'TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP'.
401
+ Types: str
402
+
403
+ RETURNS:
404
+ None.
405
+
406
+ RAISES:
407
+ None.
408
+
409
+ EXAMPLES:
410
+ self.__process_dyn_cls_output_member("outputtablename", out_tablename,
411
+ ValibConstants.DEFAULT_OUTPUT_VAR.value)
412
+ """
413
+ if out_var is None:
414
+ # If output variable name is None, then extract it from the MAP.
415
+ # This output variable corresponds to the output DataFrame name of the function.
416
+ func_name = self.__get_output_attr_map_func_name()
417
+ out_var = self.__multioutput_attr_map[func_name][arg_name]
418
+
419
+ # Add the output DataFrame name, to the dictionary of dynamic class.
420
+ # At start we will just add the corresponding table name as it's value.
421
+ self.__dyn_cls_data_members[out_var] = self.__extract_db_tbl_name(table_name=out_tablename,
422
+ arg_name=arg_name)
423
+
424
+ def __get_table_name_with_extension(self, table_name, extension):
425
+ """
426
+ DESCRIPTION:
427
+ Internal function to create a table name using the extension and add it to Garbage
428
+ Collector.
429
+
430
+ PARAMETERS:
431
+ table_name:
432
+ Required Argument.
433
+ Specifies the table name for which extension is to be suffixed.
434
+ Types: str
435
+
436
+ extension:
437
+ Required Argument.
438
+ Specifies the suffix string that is to be added at the end of the table name.
439
+ Types: str
440
+
441
+ RETURNS:
442
+ The new table name.
443
+
444
+ EXAMPLE:
445
+ self.__get_table_name_with_extension(table_name="<table_name>", extension="_rpt")
446
+ """
447
+ # Add extension to the table name.
448
+ generated_table_name = "{}{}".format(table_name, extension)
449
+
450
+ # Register new output table to the GC.
451
+ gc_tabname = "\"{}\".\"{}\"".format(self.__db_name, generated_table_name)
452
+ GarbageCollector._add_to_garbagecollector(gc_tabname, TeradataConstants.TERADATA_TABLE)
453
+
454
+ return generated_table_name
455
+
456
+ def __get_output_attr_map_func_name(self):
457
+ """
458
+ DESCRIPTION:
459
+ Function to get either teradataml function name or SQL function name from
460
+ "__multioutput_attr_map" based on whether the function is evaluator function or not.
461
+
462
+ PARAMETERS:
463
+ None.
464
+
465
+ RETURNS:
466
+ Either teradataml function name or SQL function name.
467
+
468
+ RAISES:
469
+ None.
470
+
471
+ EXAMPLES:
472
+ self.__get_output_attr_map_func_name()
473
+ """
474
+ # __multioutput_attr_map can have either SQL function name or tdml function name.
475
+ # If the function is evaluator function, then __multioutput_attr_map contains the
476
+ # dictionary of tdml function name to dictionary of output tables. Otherwise, it
477
+ # contains the dictionary of SQL function name to dictionary of output tables.
478
+ func_name = self.__sql_func_name
479
+ if self.__tdml_valib_name in self.__multioutput_attr_map:
480
+ func_name = self.__tdml_valib_name
481
+ return func_name
482
+
483
+ def __process_func_outputs(self, query_exec_output):
484
+ """
485
+ DESCRIPTION:
486
+ Internal function to process the output tables generated by a stored procedure
487
+ call. Function creates the required output DataFrames from the tables and a
488
+ result list.
489
+
490
+ PARAMETERS:
491
+ query_exec_output:
492
+ Required Argument.
493
+ Specifies the output captured by the UtilFuncs._execute_query() API.
494
+ If no output is generated None should be passed.
495
+ Types: tuple
496
+
497
+ RETURNS:
498
+ None.
499
+
500
+ RAISES:
501
+ None.
502
+
503
+ EXAMPLES:
504
+ exec_out = self.__generate_execute_sp_query()
505
+ self.__process_func_outputs(query_exec_output=exec_out)
506
+ """
507
+ self.__dyn_cls_data_members[VC.OUTPUT_DATAFRAME_RESULTS.value] = []
508
+
509
+ func_name = self.__get_output_attr_map_func_name()
510
+
511
+ # Processing gensql/gensqlonly output.
512
+ # Checking if user has passed gen_sql or gen_sql_only as an argument and is true.
513
+ # If gen_sql_only is true, don't process the output and return.
514
+ gen_sql_only = self.__dyn_cls_data_members.get("gen_sql_only", False)
515
+ if gen_sql_only:
516
+ self.__generated_sql = query_exec_output[0][0][0]
517
+ self.__dyn_cls_data_members[VC.DEFAULT_OUTPUT_VAR.value] = None
518
+ return
519
+ elif self.__dyn_cls_data_members.get("gen_sql", False):
520
+ self.__generated_sql = query_exec_output[0][0][0]
521
+
522
+ if func_name in self.__multioutput_attr_map:
523
+ # Process each output and get it ready for dynamic class creation.
524
+ valib_output_mapper = self.__multioutput_attr_map[func_name]
525
+ for key in valib_output_mapper:
526
+ out_var = valib_output_mapper[key]
527
+ self.__create_output_dataframes(out_var=out_var)
528
+ elif VC.DEFAULT_OUTPUT_VAR.value in self.__dyn_cls_data_members:
529
+ # Process functions that generate only one output.
530
+ self.__create_output_dataframes(out_var=VC.DEFAULT_OUTPUT_VAR.value)
531
+ else:
532
+ # Function which will not produce any output table, but will return result set.
533
+ # "result_set" will contain the actual result data in a list of list format.
534
+ self.__dyn_cls_data_members["result_set"] = query_exec_output[0]
535
+ # "result_columns" will contain the list of column names of the result data.
536
+ self.__dyn_cls_data_members["result_columns"] = query_exec_output[1]
537
+ # TODO - Add support for EXP's does not producing any output tables. Future Purpose.
538
+
539
+ def __process_output_extensions(self, output_table_name, output_extensions):
540
+ """
541
+ DESCRIPTION:
542
+ Function to process extended outputs of the function.
543
+ Extended outputs are the output tables generated by SQL function, using
544
+ the existing output table name and adding some extensions to it.
545
+ For example,
546
+ Linear function takes one argument for producing the output tables, but
547
+ it's ends up creating multiple output tables.
548
+ This is how it created these tables.
549
+ * Creates a coefficients and statistics table by using the name passed to
550
+ "outputtablename" argument.
551
+ * Creates a statistical measures table using the name passed to
552
+ "outputtablename" argument and appending "_rpt" to it.
553
+ * Creates a XML reports table using the name passed to "outputtablename"
554
+ argument and appending "_txt" to it.
555
+
556
+ PARAMETERS:
557
+ output_table_name:
558
+ Required Argument.
559
+ Specifies the output table name to use the extensions with to produce new
560
+ output table names.
561
+ Types: str
562
+
563
+ output_extensions:
564
+ Required Argument.
565
+ Specifies a mapper with output table extensions as keys and output dataframe name
566
+ as value.
567
+ Types: dict
568
+
569
+ RETURNS:
570
+ None.
571
+
572
+ RAISES:
573
+ None.
574
+
575
+ EXAMPLES:
576
+ self.__process_output_extensions("output_table_name",
577
+ {"_rpt": "output_df_name1",
578
+ "_txt": "output_df_name1"})
579
+ """
580
+
581
+ # Now let's process the output extensions and respective output DataFrames.
582
+ for extension in output_extensions:
583
+ new_table_name = self.__get_table_name_with_extension(table_name=output_table_name,
584
+ extension=extension)
585
+
586
+ # Get the teradataml output variable name corresponding to the extension.
587
+ func_name = self.__get_output_attr_map_func_name()
588
+ out_var = self.__multioutput_attr_map[func_name][extension]
589
+
590
+ # Add the table name to the dynamic class as it's data member.
591
+ self.__dyn_cls_data_members[out_var] = new_table_name
592
+
593
+ def __process_output_argument(self):
594
+ """
595
+ DESCRIPTION:
596
+ Function to process output argument(s) of a VALIB function.
597
+
598
+ PARAMETERS:
599
+ None.
600
+
601
+ RETURNS:
602
+ None.
603
+
604
+ RAISES:
605
+ None.
606
+
607
+ EXAMPLES:
608
+ self.__process_output_argument()
609
+ """
610
+
611
+ #
612
+ # Note:
613
+ # So far all the functions we have seen, only one output database argument is present
614
+ # in SQL functions. In case in future, a function with more output database arguments
615
+ # are added, we will need to modify this function, especially the below piece and treat
616
+ # database arguments as we are processing the output table name arguments.
617
+ #
618
+ # Default SQL argument name for the output database argument.
619
+ database_arg_name = "outputdatabase"
620
+ if self.__sql_func_name in self.__output_arg_map:
621
+ # Extract output database argument name for the function and use the same.
622
+ database_arg_name = self.__output_arg_map[self.__sql_func_name]["db"]
623
+
624
+ out_tablename = self.__get_temp_table_name()
625
+ self.__db_name = self.__extract_db_tbl_name(table_name=out_tablename,
626
+ arg_name=database_arg_name,
627
+ extract_table=False)
628
+
629
+ #
630
+ # Note:
631
+ # So far all the functions visited, we observed following characteristics about
632
+ # processing the output tables by SQL function.
633
+ # 1. Function produces only one table, with argument name as "outputtablename",
634
+ # which is our default case.
635
+ # 2. Function produces only one table, with argument name different than
636
+ # "outputtablename". In such case, we use 'VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP'
637
+ # to extract the SQL argument name for specifying the output table.
638
+ # 3. Function produces multiple output tables with multiple output table arguments.
639
+ # In such case, we use 'VALIB_FUNCTION_OUTPUT_ARGUMENT_MAP' to extract the SQL
640
+ # argument names for specifying the output tables.
641
+ # 4. Function produces multiple output tables with just one output table argument.
642
+ # In such cases, SQL uses the specified table name to create one of the output
643
+ # table and other output tables are created based on the pre-defined extensions
644
+ # which are appended to the specified table name and using the same.
645
+ #
646
+ # Now that we have processed the output database name argument, we will now process the
647
+ # output table name argument(s).
648
+ if self.__sql_func_name in self.__output_arg_map:
649
+ # Extract the function output argument map.
650
+ func_output_argument_map = self.__output_arg_map[self.__sql_func_name]
651
+
652
+ # Extract output table argument name(s) for the function and use the same.
653
+ table_arg_names = func_output_argument_map["tbls"]
654
+
655
+ if not isinstance(table_arg_names, list):
656
+ # This is a block to process functions producing multiple outputs with
657
+ # 1. One output table argument.
658
+ # 2. Use the same argument to produce other argument with some extension to it.
659
+ #
660
+ # Extract the table name from the generated name and add it to SQL syntax.
661
+ table_name = self.__extract_db_tbl_name(table_name=out_tablename,
662
+ arg_name=table_arg_names)
663
+
664
+ # Process all mandatory output extensions, irrespective of whether the function
665
+ # is scoring or evaluator or any other function.
666
+ if "mandatory_output_extensions" in func_output_argument_map:
667
+ mandatory_extensions = func_output_argument_map["mandatory_output_extensions"]
668
+ self.__process_output_extensions(table_name, mandatory_extensions)
669
+
670
+ if "evaluator_output_extensions" in func_output_argument_map:
671
+ # We process either the table in "table_arg_names" or
672
+ # "evaluator_output_extensions" based on whether the function is evaluator
673
+ # function or not.
674
+ #
675
+ # If the function is:
676
+ # 1. evaluator function, process extensions as mentioned in evaluator based
677
+ # output extensions.
678
+ # 2. NOT evaluator function (scoring or any other function):
679
+ # a. with an entry in TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP,
680
+ # process table in the variable "table_arg_names".
681
+ # b. without an entry in TERADATAML_VALIB_MULTIOUTPUT_ATTR_MAP,
682
+ # process table as "result".
683
+ if self.__tdml_valib_name in self.__multioutput_attr_map:
684
+ evaluator_extensions = \
685
+ func_output_argument_map["evaluator_output_extensions"]
686
+ self.__process_output_extensions(table_name, evaluator_extensions)
687
+
688
+ elif self.__sql_func_name in self.__multioutput_attr_map:
689
+ out_var = \
690
+ self.__multioutput_attr_map[self.__sql_func_name][table_arg_names]
691
+ self.__dyn_cls_data_members[out_var] = table_name
692
+
693
+ else:
694
+ out_var = VC.DEFAULT_OUTPUT_VAR.value
695
+ self.__dyn_cls_data_members[out_var] = table_name
696
+
697
+ else:
698
+ # If function produces only one output table, but uses different argument name.
699
+ func_name = self.__get_output_attr_map_func_name()
700
+ out_var = self.__multioutput_attr_map[func_name][table_arg_names]
701
+ self.__dyn_cls_data_members[out_var] = table_name
702
+ else:
703
+ # Function produces multiple outputs.
704
+ for arg_name in table_arg_names:
705
+ # Generate a table name for each output and add the name to the dictionary
706
+ # for further processing and dynamic class creation.
707
+ out_tablename = self.__get_temp_table_name()
708
+ self.__process_dyn_cls_output_member(arg_name, out_tablename)
709
+ else:
710
+ # Let's use the default output table name argument "outputtablename".
711
+ self.__process_dyn_cls_output_member("outputtablename", out_tablename,
712
+ VC.DEFAULT_OUTPUT_VAR.value)
713
+
714
+ def __process_input_argument(self, df, database_arg_name, table_arg_name):
715
+ """
716
+ DESCRIPTION:
717
+ Function to process input argument(s).
718
+
719
+ PARAMETERS:
720
+ df:
721
+ Required Argument.
722
+ Specifies the input teradataml DataFrame.
723
+ Types: teradataml DataFrame
724
+
725
+ database_arg_name:
726
+ Required Argument.
727
+ Specifies the name of the database argument.
728
+ Types: String
729
+
730
+ table_arg_name:
731
+ Required Argument.
732
+ Specifies the name of the table argument.
733
+ Types: String
734
+
735
+ RETURNS:
736
+ None.
737
+
738
+ RAISES:
739
+ None.
740
+
741
+ EXAMPLES:
742
+ self.__process_input_argument(df, "db", "table")
743
+ """
744
+ # Assuming that df._table_name always contains FQDN.
745
+ db_name = UtilFuncs()._get_db_name_from_dataframe(df)
746
+
747
+ self.__generate_valib_sql_argument_syntax(db_name, database_arg_name)
748
+ self.__extract_db_tbl_name(df._table_name, table_arg_name, remove_quotes=True)
749
+
750
+ def __process_other_arguments(self, **kwargs):
751
+ """
752
+ DESCRIPTION:
753
+ Function to process other arguments.
754
+
755
+ PARAMETERS:
756
+ kwargs:
757
+ Specifies the keyword arguments passed to a function.
758
+
759
+ RETURNS:
760
+ None.
761
+
762
+ RAISES:
763
+ None.
764
+
765
+ EXAMPLES:
766
+ self.__process_other_arguments(arg1="string", arg2="db", arg3=2)
767
+ """
768
+ # Argument name dictionary.
769
+ function_arguments = VC.TERADATAML_VALIB_FUNCTION_ARGUMENT_MAP.value
770
+ try:
771
+ func_arg_mapper = function_arguments[self.__sql_func_name]
772
+ except:
773
+ func_arg_mapper = None
774
+
775
+ # Input argument name mapper extracted from VALIB_FUNCTION_MULTIINPUT_ARGUMENT_MAP.
776
+ input_arguments = VC.VALIB_FUNCTION_MULTIINPUT_ARGUMENT_MAP.value
777
+ try:
778
+ func_input_arg_mapper = input_arguments[self.__sql_func_name]
779
+ input_handling_required = True
780
+ except:
781
+ func_input_arg_mapper = None
782
+ input_handling_required = False
783
+
784
+ for arg in kwargs:
785
+ arg_notin_arg_mapper = func_arg_mapper is not None and arg not in func_arg_mapper
786
+ # Raise error if incorrect argument is passed.
787
+ error_msg = "{0}() got an unexpected keyword argument '{1}'".\
788
+ format(self.__tdml_valib_name, arg)
789
+ if input_handling_required:
790
+ if arg_notin_arg_mapper and arg not in func_input_arg_mapper:
791
+ raise TypeError(error_msg)
792
+ else:
793
+ if arg_notin_arg_mapper:
794
+ raise TypeError(error_msg)
795
+
796
+ # Arguments to ignore and the once which will not be processed.
797
+ if arg.lower() in VC.IGNORE_ARGUMENTS.value:
798
+ if arg.lower() == "outputstyle":
799
+ # If user has passed an argument "outputstyle", then we will ignore
800
+ # user value and then create a table as final outcome.
801
+ self.__generate_valib_sql_argument_syntax("table", "outputstyle")
802
+
803
+ # Other arguments mentioned in 'ValibConstants.IGNORE_ARGUMENTS' will be ignored.
804
+ continue
805
+
806
+ # Pop each argument from kwargs.
807
+ arg_value = kwargs.get(arg)
808
+
809
+ if input_handling_required and arg in func_input_arg_mapper:
810
+ # Argument provided is an input argument.
811
+ # Let's get the names of the database and table arguments for this arg.
812
+ self.__process_input_argument(df=arg_value,
813
+ database_arg_name=
814
+ func_input_arg_mapper[arg]["database_arg"],
815
+ table_arg_name=
816
+ func_input_arg_mapper[arg]["table_arg"])
817
+ else:
818
+ # Get the SQL argument name.
819
+ arg_name = func_arg_mapper[arg] if isinstance(func_arg_mapper, dict) else arg
820
+ self.__generate_valib_sql_argument_syntax(arg_value, arg_name)
821
+
822
+ def __process_val_transformations(self, transformations, tf_tdml_arg, tf_sql_arg, data,
823
+ data_arg="data"):
824
+ """
825
+ DESCRIPTION:
826
+ Internal function to process the transformation(s) and generate the SQL
827
+ argument syntax for the argument.
828
+
829
+ PARAMETERS:
830
+ transformations:
831
+ Required Argument.
832
+ Specifies the transformation(s) to be used for variable transformation.
833
+ Types: FillNa
834
+
835
+ tf_tdml_arg:
836
+ Required Argument.
837
+ Specifies the name of the argument that accepts transformation(s)
838
+ to be used for variable transformation.
839
+ Types: str
840
+
841
+ tf_sql_arg:
842
+ Required Argument.
843
+ Specifies the SQL argument name used for the transformation(s).
844
+ Types: str
845
+
846
+ data:
847
+ Required Argument.
848
+ Specifies the input teradataml DataFrame used for Variable Transformation.
849
+ Types: teradataml DataFrame
850
+
851
+ data_arg:
852
+ Optional Argument.
853
+ Specifies the name of the input data argument.
854
+ Default Value: "data"
855
+ Types: string
856
+
857
+ RETURNS:
858
+ None
859
+
860
+ RAISES:
861
+ ValueError
862
+
863
+ EXAMPLES:
864
+ self.__process_val_transformations(fillna, "fillna", "nullreplacement", data)
865
+ """
866
+ # A list to contains SQL syntax of each transformation.
867
+ tf_syntax_elements = []
868
+
869
+ for tf in UtilFuncs._as_list(transformations):
870
+ # Validates the existence of the columns used for transformation
871
+ # in the input data.
872
+ if tf.columns is not None:
873
+ _Validators._validate_dataframe_has_argument_columns(
874
+ UtilFuncs._as_list(tf.columns), "columns in {}".format(tf_tdml_arg), data,
875
+ data_arg)
876
+ tf_syntax_elements.append(tf._val_sql_syntax())
877
+
878
+ # Add an entry for transformation in SQL argument syntax.
879
+ self.__generate_valib_sql_argument_syntax(arg="".join(tf_syntax_elements),
880
+ arg_name=tf_sql_arg)
881
+
882
+ def _execute_valib_function(self,
883
+ skip_data_arg_processing=False,
884
+ skip_output_arg_processing=False,
885
+ skip_other_arg_processing=False,
886
+ skip_func_output_processing=False,
887
+ skip_dyn_cls_processing=False,
888
+ **kwargs):
889
+ """
890
+ DESCRIPTION:
891
+ Function processes arguments and executes the VALIB function.
892
+
893
+ PARAMETERS:
894
+ skip_data_arg_processing:
895
+ Optional Argument.
896
+ Specifies whether to skip data argument processing or not.
897
+ Default is to process the data argument.
898
+ When set to True, caller should make sure to process "data" argument and
899
+ pass SQL argument and values as part of kwargs to this function.
900
+ Default Value: False
901
+ Types: bool
902
+
903
+ skip_output_arg_processing:
904
+ Optional Argument.
905
+ Specifies whether to skip output argument processing or not.
906
+ Default is to process the output arguments.
907
+ When set to True, caller should make sure to process all output arguments and
908
+ pass equivalent SQL argument and values as part of kwargs to this function.
909
+ Default Value: False
910
+ Types: bool
911
+
912
+ skip_other_arg_processing:
913
+ Optional Argument.
914
+ Specifies whether to skip other argument processing or not.
915
+ Default is to process the other arguments, i.e., kwargs.
916
+ When set to True, caller should make sure to process all other arguments are
917
+ processed internally by the function.
918
+ Default Value: False
919
+ Types: bool
920
+
921
+ skip_func_output_processing:
922
+ Optional Argument.
923
+ Specifies whether to skip function output processing or not.
924
+ Default is to process the same.
925
+ When set to True, caller should make sure to process function output
926
+ arguments. Generally, when this argument is set to True, one must also
927
+ set "skip_dyn_cls_processing" to True.
928
+ Default Value: False
929
+ Types: bool
930
+
931
+ skip_dyn_cls_processing:
932
+ Optional Argument.
933
+ Specifies whether to skip dynamic class processing or not.
934
+ Default is to process the dynamic class, where it creates a dynamic
935
+ class and an instance of the same and returns the same.
936
+ When set to True, caller should make sure to process dynamic class and
937
+ return an instance of the same.
938
+ arguments.
939
+ Default Value: False
940
+ Types: bool
941
+
942
+ kwargs:
943
+ Specifies the keyword arguments passed to a function.
944
+
945
+ RETURNS:
946
+ None.
947
+
948
+ RAISES:
949
+ TeradataMlException, TypeError
950
+
951
+ EXAMPLES:
952
+ self._execute_valib_function(arg1="string", arg2="db", arg3=2)
953
+ """
954
+ if not skip_data_arg_processing:
955
+ # Process data argument.
956
+ try:
957
+ data = kwargs.pop("data")
958
+ if not isinstance(data, DataFrame):
959
+ raise TypeError(Messages.get_message(MessageCodes.UNSUPPORTED_DATATYPE,
960
+ ["data"], ["teradataml DataFrame"]))
961
+ self.__process_input_argument(data, "database", "tablename")
962
+ except KeyError:
963
+ # Raise TeradataMlException.
964
+ error_msg = Messages.get_message(MessageCodes.MISSING_ARGS, ["data"])
965
+ raise TeradataMlException(error_msg, MessageCodes.MISSING_ARGS)
966
+
967
+ if not skip_output_arg_processing:
968
+ # Process output arguments.
969
+ self.__process_output_argument()
970
+
971
+ if not skip_other_arg_processing:
972
+ # Process other arguments.
973
+ self.__process_other_arguments(**kwargs)
974
+
975
+ # If the function is evaluator function, add SQL argument "scoringmethod=evaluate".
976
+ if self.__tdml_valib_name in self.__multioutput_attr_map:
977
+ scoring_method_values = VC.SCORING_METHOD_ARG_VALUE.value
978
+ score_method = "non-default"
979
+ if kwargs.get("gen_sql_only", False):
980
+ score_method = "default"
981
+ self.__generate_valib_sql_argument_syntax(scoring_method_values[score_method],
982
+ VC.SCORING_METHOD_ARG_NAME.value)
983
+
984
+ # Generate the query.
985
+ exec_out = self.__generate_execute_sp_query()
986
+
987
+ if not skip_func_output_processing:
988
+ # Process the function output DataFrames.
989
+ self.__process_func_outputs(query_exec_output=exec_out)
990
+
991
+ if not skip_dyn_cls_processing:
992
+ # Generate the dynamic class and create a object of the
993
+ # same and return the same.
994
+ return self.__create_dynamic_valib_class()
995
+
996
+ def Association(self, data, group_column, item_column, **kwargs):
997
+ """
998
+ Please refer to Teradata Python Function Reference guide for Documentation.
999
+ Reference guide can be found at: https://docs.teradata.com
1000
+ """
1001
+ # Add required arguments, i.e., positional arguments to kwargs for
1002
+ # further processing.
1003
+ kwargs["data"] = data
1004
+ kwargs["group_column"] = group_column
1005
+ kwargs["item_column"] = item_column
1006
+
1007
+ # Get a new instance of _VALIB() class for function execution.
1008
+ valib_inst = self.__get_valib_instance("Association")
1009
+
1010
+ # Add all arguments to dynamic class as data members.
1011
+ valib_inst.__dyn_cls_data_members = {}
1012
+ valib_inst.__dyn_cls_data_members.update(kwargs)
1013
+
1014
+ # Get the value of "combinations", "no_support_results", "process_type"
1015
+ # parameters from kwargs.
1016
+ # These three parameters decide the number of output table generated.
1017
+ combinations = kwargs.get("combinations", 11)
1018
+ no_support_results = kwargs.get("no_support_results", True)
1019
+ process_type = kwargs.get("process_type", "all")
1020
+ support_result_prefix = kwargs.pop("support_result_prefix", "ml__valib_association")
1021
+
1022
+ # Support table information based on the combinations.
1023
+ # This dict contains a list of names of the support output tables those will
1024
+ # be generated for a specific combination.
1025
+ combinations_support_tables = {
1026
+ 11: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT"],
1027
+ 12: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT"],
1028
+ 13: ["_0_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_1_SUPPORT"],
1029
+ 14: ["_0_TO_1_SUPPORT", "_3_TO_1_SUPPORT", "_4_TO_1_SUPPORT"],
1030
+ 21: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT"],
1031
+ 22: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_2_SUPPORT"],
1032
+ 23: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_2_SUPPORT"],
1033
+ 31: ["_0_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_1_SUPPORT"],
1034
+ 32: ["_0_TO_1_SUPPORT", "_1_TO_1_SUPPORT", "_2_TO_1_SUPPORT", "_3_TO_2_SUPPORT"],
1035
+ 41: ["_0_TO_1_SUPPORT", "_3_TO_1_SUPPORT", "_4_TO_1_SUPPORT"],
1036
+ }
1037
+
1038
+ # This dict contains name of the support output table mapped to its corresponding
1039
+ # exposed output teradataml DataFrame name.
1040
+ support_result_names = {
1041
+ "_0_TO_1_SUPPORT": "support_result_01",
1042
+ "_1_TO_1_SUPPORT": "support_result_11",
1043
+ "_2_TO_1_SUPPORT": "support_result_21",
1044
+ "_3_TO_1_SUPPORT": "support_result_31",
1045
+ "_4_TO_1_SUPPORT": "support_result_41",
1046
+ "_2_TO_2_SUPPORT": "support_result_22",
1047
+ "_3_TO_2_SUPPORT": "support_result_32",
1048
+ }
1049
+
1050
+ # Association rules produces various outputs. It generates:
1051
+ # 1. Support Tables
1052
+ # 2. Affinity Tables.
1053
+
1054
+ # Support tables are generated when one of the following conditions occur:
1055
+ # 1. When "process_type" is 'support'. Then only two tables are generated as follows:
1056
+ # a. <support_result_prefix>_1_ITEM_SUPPORT
1057
+ # b. <support_result_prefix>_group_count
1058
+ # 2. When "no_support_results" is set to False.
1059
+ # a. Multiple support table are generated based on the values passed
1060
+ # to "combinations".
1061
+ # b. A GROUP COUNT support table is also generated.
1062
+
1063
+ # Here are some details on how and what outputs are generated:
1064
+ # 1. When "process_type" is 'support', then:
1065
+ # a. No affinity tables are generated.
1066
+ # b. Only two support tables are generated, which are named as:
1067
+ # i. <support_result_prefix>_1_ITEM_SUPPORT
1068
+ # ii. <support_result_prefix>_group_count
1069
+ # 2. When "no_support_results" is set to False.
1070
+ # a. Affinity tables are generated.
1071
+ # b. Multiple support table are generated, along with GROUP COUNT table.
1072
+ # 3. When "no_support_results" is set to True.
1073
+ # a. Only affinity tables are generated.
1074
+ # b. No support tables are generated.
1075
+
1076
+ # Affinity tables are generated based on the values passed to "combinations"
1077
+ # parameter. Number of outputs generated is equal to the number of values passed
1078
+ # to "combinations".
1079
+ # Here are some cases to understand about this processing:
1080
+ # 1. If "combinations" parameter is not passed, i.e., is None, then only
1081
+ # one output table is generated.
1082
+ # 2. If only one value is passed to "combinations" parameter, then only
1083
+ # one output table is generated.
1084
+ # 3. If only one value is passed in a list to "combinations" parameter,
1085
+ # then only one output table is generated.
1086
+ # 4. If list with multiple values is passed to "combinations" parameter,
1087
+ # then number of output tables generated is equal to length of the list.
1088
+ # 5. If empty list is passed to "combinations" parameter, then SQL will
1089
+ # take care of throwing appropriate exceptions.
1090
+
1091
+ # Let's add the entry for the function in multi-output attribute mapper
1092
+ # as function produces multiple outputs.
1093
+ valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name] = {}
1094
+
1095
+ # To process output table parameters:
1096
+ # 1. Let's generate the output database name parameter first.
1097
+ # 2. Then generate the output table parameter.
1098
+ # 3. Once the arguments and it's values are generated, call
1099
+ # _execute_valib_function() and make sure to skip the
1100
+ # output argument processing only.
1101
+
1102
+ # Let's first get the temp table name to be used for creating output
1103
+ # tables. Extract the database name and table name which will be used
1104
+ # as follows:
1105
+ # 1. Database name will be passed to SQL argument 'outputdatabase'.
1106
+ # 2. Table name extracted will be used to generate the values for
1107
+ # SQL argument 'outputtablename'.
1108
+ out_tablename = valib_inst.__get_temp_table_name()
1109
+
1110
+ # Add an entry for "outputdatabase" in SQL argument syntax.
1111
+ valib_inst.__db_name = valib_inst.__extract_db_tbl_name(table_name=out_tablename,
1112
+ arg_name="outputdatabase",
1113
+ extract_table=False,
1114
+ remove_quotes=True)
1115
+
1116
+ __table_name = UtilFuncs._extract_table_name(out_tablename).replace("\"", "")
1117
+
1118
+ # Let's start processing the output table argument.
1119
+ # A list containing the output table name argument values.
1120
+ output_table_names = []
1121
+
1122
+ # For Association we will create two new variables to store the output DataFrame
1123
+ # attribute names for support tables and affinity tables.
1124
+ #
1125
+ # This is done specifically for Association function as output attribute names
1126
+ # will vary based on the input values for "combinations" parameter. Thus, it will
1127
+ # help user to know the names of the output DataFrame attributes generated for
1128
+ # a specific function call.
1129
+ sup_table_attrs = "support_outputs"
1130
+ aff_table_attrs = "affinity_outputs"
1131
+ valib_inst.__dyn_cls_data_members[sup_table_attrs] = []
1132
+ valib_inst.__dyn_cls_data_members[aff_table_attrs] = []
1133
+
1134
+ # Before we proceed here is a common function which will be used for
1135
+ # processing support tables.
1136
+ def process_support_tables(out_var, support_table_name):
1137
+ """ Internal function to process support tables. """
1138
+ valib_inst.__dyn_cls_data_members[out_var] = support_table_name
1139
+ valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name][out_var] = out_var
1140
+ if out_var not in valib_inst.__dyn_cls_data_members[sup_table_attrs]:
1141
+ valib_inst.__dyn_cls_data_members[sup_table_attrs].append(out_var)
1142
+ GarbageCollector._add_to_garbagecollector(support_table_name,
1143
+ TeradataConstants.TERADATA_TABLE)
1144
+
1145
+ # GROUP_COUNT support table will be generated, when "process_type" is 'support'
1146
+ # or "no_support_results" is set to False.
1147
+ # Add the entry for the table in the output mappers.
1148
+ if process_type.lower() == "support" or not no_support_results:
1149
+ # Output attribute name of the group count table is "group_count".
1150
+ out_var = "group_count"
1151
+ grp_cnt_table_name = "{}_group_count".format(support_result_prefix)
1152
+ process_support_tables(out_var=out_var, support_table_name=grp_cnt_table_name)
1153
+
1154
+ # Let's process the other support tables and affinity tables.
1155
+ if process_type.lower() == "support":
1156
+ # We are here that means only 1 item support table along with group count
1157
+ # support table is generated. Group count table entry is already added.
1158
+ # Output attribute name of the 1 item support table is "support_1_item".
1159
+ out_var = "support_1_item"
1160
+ sup_tbl_name = "{}_1_ITEM_SUPPORT".format(support_result_prefix)
1161
+ process_support_tables(out_var=out_var, support_table_name=sup_tbl_name)
1162
+
1163
+ # Value for output table does not matter when "process_type" is 'support'.
1164
+ # No affinity tables are generated.
1165
+ output_table_names.append(__table_name)
1166
+ else:
1167
+ # Affinity tables and other support tables are generated only when "process_type"
1168
+ # is not equal to 'support'.
1169
+
1170
+ # Process the affinity tables.
1171
+ for combination in UtilFuncs._as_list(combinations):
1172
+ # Generate the new output table name.
1173
+ extension = "_{}".format(combination)
1174
+ out_var = "{}{}".format(VC.DEFAULT_OUTPUT_VAR.value, extension)
1175
+ new_tbl_name = valib_inst.__get_table_name_with_extension(table_name=__table_name,
1176
+ extension=extension)
1177
+
1178
+ # Add an entry for affinity output in mappers, which will produce the
1179
+ # output DataFrames.
1180
+ valib_inst.__dyn_cls_data_members[out_var] = new_tbl_name
1181
+ valib_inst.__multioutput_attr_map[valib_inst.__sql_func_name][out_var] = out_var
1182
+ valib_inst.__dyn_cls_data_members[aff_table_attrs].append(out_var)
1183
+
1184
+ # Add the name of the output affinity table, which will be used as value
1185
+ # for the "outputtablename" argument.
1186
+ output_table_names.append(new_tbl_name)
1187
+
1188
+ if not no_support_results:
1189
+ # Other support tables are also generated and are not dropped in the end
1190
+ # by Vantage, hence we will create output DataFrames for each one of those.
1191
+ # Let's process all those support tables.
1192
+ # 'combinations_support_tables' contains a name of list of support
1193
+ # output tables those will be generated for a specific combination.
1194
+ for sup_postfix in combinations_support_tables[combination]:
1195
+ sup_out_var = support_result_names[sup_postfix]
1196
+ sup_tbl_name = "{}{}".format(support_result_prefix, sup_postfix)
1197
+ process_support_tables(out_var=sup_out_var, support_table_name=sup_tbl_name)
1198
+
1199
+ # Add an entry for "outputtablename" in SQL argument syntax.
1200
+ valib_inst.__generate_valib_sql_argument_syntax(arg=output_table_names,
1201
+ arg_name="outputtablename")
1202
+
1203
+ # Execute the function, skip output argument and output dataframe processing.
1204
+ return valib_inst._execute_valib_function(skip_output_arg_processing=True,
1205
+ support_result_prefix=support_result_prefix,
1206
+ **kwargs)
1207
+
1208
+ def KMeans(self, data, columns, centers, **kwargs):
1209
+ """
1210
+ Please refer to Teradata Python Function Reference guide for Documentation.
1211
+ Reference guide can be found at: https://docs.teradata.com
1212
+ """
1213
+ # Add the required arguments to kwargs for further processing.
1214
+ kwargs["data"] = data
1215
+ kwargs["columns"] = columns
1216
+ kwargs["centers"] = centers
1217
+
1218
+ # Get a new instance of _VALIB() class for function execution.
1219
+ new_valib_obj = self.__get_valib_instance("KMeans")
1220
+
1221
+ # Add all arguments to dynamic class as data members.
1222
+ new_valib_obj.__dyn_cls_data_members = {}
1223
+ new_valib_obj.__dyn_cls_data_members.update(kwargs)
1224
+
1225
+ centroids_data = kwargs.pop("centroids_data", None)
1226
+
1227
+ # If there is no "centroids_data", do normal processing.
1228
+ if centroids_data is None:
1229
+ return new_valib_obj._execute_valib_function(**kwargs)
1230
+
1231
+ # If "centroids_data" is provided, special handling for output argument is needed.
1232
+ if not isinstance(centroids_data, DataFrame):
1233
+ raise TypeError(Messages.get_message(MessageCodes.UNSUPPORTED_DATATYPE,
1234
+ ["centroids_data"], ["teradataml DataFrame"]))
1235
+
1236
+ # The following things has to be handled:
1237
+ # 1. The table in "centroids_data" is updated with new centroids and the same table
1238
+ # is the result (new output) table.
1239
+ # Extract database name and add it to Valib SQL argument syntax.
1240
+ new_valib_obj.__db_name = new_valib_obj.__extract_db_tbl_name(
1241
+ table_name=centroids_data._table_name,
1242
+ arg_name="outputdatabase",
1243
+ extract_table=False,
1244
+ remove_quotes=True)
1245
+
1246
+ # Extract table name and add it to Valib SQL argument syntax.
1247
+ table_name = new_valib_obj.__extract_db_tbl_name(table_name=centroids_data._table_name,
1248
+ arg_name="outputtablename",
1249
+ extract_table=True,
1250
+ remove_quotes=True)
1251
+
1252
+ # Since output argument processing will be skipped, table name is added in dynamic
1253
+ # class data member "result", which will be replaced with DataFrame while processing
1254
+ # function outputs in the function _execute_valib_function.
1255
+ new_valib_obj.__dyn_cls_data_members[VC.DEFAULT_OUTPUT_VAR.value] = table_name
1256
+
1257
+ # 2. Execute the valib function call based on the arguments along with newly added
1258
+ # the SQL argument 'continuation=true' and process output and other arguments
1259
+ # related information.
1260
+ return new_valib_obj._execute_valib_function(skip_output_arg_processing=True,
1261
+ continuation=True,
1262
+ **kwargs)
1263
+
1264
+ def DecisionTreePredict(self, data, model, **kwargs):
1265
+ """
1266
+ Please refer to Teradata Python Function Reference guide for Documentation.
1267
+ Reference guide can be found at: https://docs.teradata.com
1268
+ """
1269
+ # Add the required arguments to kwargs for further processing.
1270
+ kwargs["data"] = data
1271
+ kwargs["model"] = model
1272
+
1273
+ # Get a new instance of _VALIB() class for function execution.
1274
+ new_valib_obj = self.__get_valib_instance("DecisionTreePredict")
1275
+
1276
+ # Add all arguments to dynamic class as data members.
1277
+ new_valib_obj.__dyn_cls_data_members = {}
1278
+ new_valib_obj.__dyn_cls_data_members.update(kwargs)
1279
+
1280
+ return new_valib_obj._execute_valib_function(profile=True, **kwargs)
1281
+
1282
+ def DecisionTreeEvaluator(self, data, model, **kwargs):
1283
+ """
1284
+ Please refer to Teradata Python Function Reference guide for Documentation.
1285
+ Reference guide can be found at: https://docs.teradata.com
1286
+ """
1287
+ # Add the required arguments to kwargs for further processing.
1288
+ kwargs["data"] = data
1289
+ kwargs["model"] = model
1290
+
1291
+ # Get a new instance of _VALIB() class for function execution.
1292
+ new_valib_obj = self.__get_valib_instance("DecisionTreeEvaluator")
1293
+
1294
+ # Add all arguments to dynamic class as data members.
1295
+ new_valib_obj.__dyn_cls_data_members = {}
1296
+ new_valib_obj.__dyn_cls_data_members.update(kwargs)
1297
+
1298
+ return new_valib_obj._execute_valib_function(profile=True, **kwargs)
1299
+
1300
+ def __validate_overlap_arguments(self, data_val, data_arg, columns_val, columns_arg,
1301
+ is_optional = True):
1302
+ """
1303
+ DESCRIPTION:
1304
+ Internal function to validate pair of data{i} and columns{i} arguments.
1305
+
1306
+ PARAMETERS:
1307
+ data_val:
1308
+ Required Argument.
1309
+ Specifies the teradataml Dataframe containing input data.
1310
+ Types: teradataml Dataframe
1311
+
1312
+ data_arg:
1313
+ Required Argument.
1314
+ Specifies the argument name for the teradataml DataFrame specified in the
1315
+ argument "data_val".
1316
+ Types: str
1317
+
1318
+ columns_val:
1319
+ Required Argument.
1320
+ Specifies the list of column(s) present in the DataFrame "data_val".
1321
+ Types: str OR list of strings (str)
1322
+
1323
+ columns_arg:
1324
+ Required Argument.
1325
+ Specifies the argument name for the columns specified in the
1326
+ argument "columns_val".
1327
+ Types: str
1328
+
1329
+ is_optional:
1330
+ Optional Argument.
1331
+ Specifies whether the values in arguments "data_val" and "columns_val" are
1332
+ optional in Overlap() function.
1333
+ If True, the values in these arguments should be validated as optional arguments
1334
+ in Overlap() function. Otherwise, these values are considered as required
1335
+ arguments.
1336
+ Default Value: True
1337
+ Types: bool
1338
+
1339
+ RETURNS:
1340
+ None.
1341
+
1342
+ EXAMPLES:
1343
+ valib.__validate_overlap_arguments(data_val=data, data_arg="data",
1344
+ columns_val=columns, columns_arg="columns",
1345
+ is_optional=False)
1346
+ """
1347
+ # Create argument information matrix to do parameter checking.
1348
+ __arg_info_matrix = []
1349
+ __arg_info_matrix.append([data_arg, data_val, is_optional, (DataFrame)])
1350
+ __arg_info_matrix.append([columns_arg, columns_val, is_optional, (str, list), True])
1351
+
1352
+ _Validators._validate_function_arguments(arg_list=__arg_info_matrix)
1353
+
1354
+ _Validators._validate_dataframe_has_argument_columns(data=data_val,
1355
+ data_arg=data_arg,
1356
+ columns=columns_val,
1357
+ column_arg=columns_arg,
1358
+ is_partition_arg=False)
1359
+
1360
+ # TODO- Delete LogRegPredict function definition if Jira TDAF-7867 is resolved.
1361
+ def LogRegPredict(self, **kwargs):
1362
+ """
1363
+ Please refer to Teradata Python Function Reference guide for Documentation.
1364
+ Reference guide can be found at: https://docs.teradata.com
1365
+ """
1366
+
1367
+ # Get a new instance of _VALIB() class for function execution.
1368
+ valib_inst = self.__get_valib_instance("LogRegPredict")
1369
+
1370
+ # Add all arguments to dynamic class as data members.
1371
+ valib_inst.__dyn_cls_data_members = {}
1372
+ valib_inst.__dyn_cls_data_members.update(kwargs)
1373
+
1374
+ # Setting scoringmethod to "score" if gen_sql_only is True.
1375
+ gen_sql_only = kwargs.get("gen_sql_only", False)
1376
+ if gen_sql_only:
1377
+ valib_inst.__generate_valib_sql_argument_syntax(arg="score",
1378
+ arg_name="scoringmethod")
1379
+
1380
+ return valib_inst._execute_valib_function(**kwargs)
1381
+
1382
+ def Overlap(self, data1, columns1, **kwargs):
1383
+ """
1384
+ Please refer to Teradata Python Function Reference guide for Documentation.
1385
+ Reference guide can be found at: https://docs.teradata.com
1386
+ """
1387
+ # Validate the required arguments - data1 and columns1.
1388
+ # Other arguments are validated as and when they are being processed.
1389
+ self.__validate_overlap_arguments(data_val=data1, data_arg="data1",
1390
+ columns_val=columns1, columns_arg="columns1",
1391
+ is_optional=False)
1392
+
1393
+ kwargs["data1"] = data1
1394
+ kwargs["columns1"] = columns1
1395
+
1396
+ # Each columns argument can take string or list of strings.
1397
+ # Ensure all columns related arguments to be list of one or more strings.
1398
+ columns1 = UtilFuncs._as_list(columns1)
1399
+
1400
+ valib_inst = self.__get_valib_instance("Overlap")
1401
+
1402
+ # Add all arguments to dynamic class as data members.
1403
+ valib_inst.__dyn_cls_data_members = {}
1404
+ valib_inst.__dyn_cls_data_members.update(kwargs)
1405
+
1406
+ parse_kwargs = True
1407
+ ind = 1
1408
+ database_names = []
1409
+ table_names = []
1410
+ column_names_df = []
1411
+
1412
+ """
1413
+ The argument names are data1, data2, ..., dataN and columns1, columns2, ... columnsN
1414
+ corresponding to each data arguments.
1415
+ Note:
1416
+ 1. The number of data arguments should be same as that of columns related arguments.
1417
+ 2. The number of columns in each of the columns related arguments (including
1418
+ "columns1" argument) should be same.
1419
+ """
1420
+ while parse_kwargs:
1421
+ data_arg_name = "data{}".format(str(ind))
1422
+ data_arg_value = kwargs.pop(data_arg_name, None)
1423
+ if data_arg_value is None:
1424
+ parse_kwargs = False
1425
+ else:
1426
+ columns_arg_name = "columns{}".format(str(ind))
1427
+ columns_arg_value = kwargs.pop(columns_arg_name, None)
1428
+
1429
+ # Raise error if dataN is present and columnsN is not present.
1430
+ if columns_arg_value is None:
1431
+ err_ = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
1432
+ columns_arg_name, data_arg_name)
1433
+ raise TeradataMlException(err_, MessageCodes.DEPENDENT_ARG_MISSING)
1434
+
1435
+ self.__validate_overlap_arguments(data_val=data_arg_value,
1436
+ data_arg=data_arg_name,
1437
+ columns_val=columns_arg_value,
1438
+ columns_arg=columns_arg_name)
1439
+
1440
+ # Each columns argument can take string or list of strings.
1441
+ # Ensure all columns related arguments to be list of one or more strings.
1442
+ columns_arg_value = UtilFuncs._as_list(columns_arg_value)
1443
+
1444
+ if len(columns_arg_value) != len(columns1):
1445
+ err_ = Messages.get_message(MessageCodes.INVALID_LENGTH_ARGS,
1446
+ "'columns1', 'columns2', ..., 'columnsN'")
1447
+ raise TeradataMlException(err_ ,MessageCodes.INVALID_LENGTH_ARGS)
1448
+
1449
+ # If all the validations are done,
1450
+ # 1. extract database names
1451
+ # 2. extract table names
1452
+ # 3. generate SQL syntax for 'columns' argument.
1453
+ database_names.append(UtilFuncs()._get_db_name_from_dataframe(data_arg_value))
1454
+ __table_name = UtilFuncs._extract_table_name(data_arg_value._table_name).\
1455
+ replace("\"", "")
1456
+ table_names.append(__table_name)
1457
+ column_names_df.append("{" + ",".join(columns_arg_value) + "}")
1458
+
1459
+ ind = ind + 1
1460
+
1461
+ # gensqlonly implementation.
1462
+ gen_sql_only = kwargs.pop("gen_sql_only", False)
1463
+ if gen_sql_only:
1464
+ valib_inst.__generate_valib_sql_argument_syntax(arg=str(gen_sql_only),
1465
+ arg_name="gensqlonly")
1466
+
1467
+ # Raise error if there are additional arguments.
1468
+ if len(kwargs) != 0:
1469
+ err_ = "The keyword arguments for Overlap() should have data1, data2, ..., dataN " \
1470
+ "and corresponding columns1, columns2, ..., columnsN. " \
1471
+ "Found additional arguments {}."
1472
+ raise TypeError(err_.format(list(kwargs.keys())))
1473
+
1474
+ # Generate SQL syntax for SQL arguments database, tablename and columns.
1475
+ valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(database_names),
1476
+ arg_name="database")
1477
+ valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(table_names),
1478
+ arg_name="tablename")
1479
+ valib_inst.__generate_valib_sql_argument_syntax(arg=",".join(column_names_df),
1480
+ arg_name="columns")
1481
+
1482
+ return valib_inst._execute_valib_function(skip_data_arg_processing=True,
1483
+ skip_other_arg_processing=True)
1484
+
1485
+ def Transform(self, data, bins=None, derive=None, one_hot_encode=None, fillna=None,
1486
+ label_encode=None, rescale=None, retain=None, sigmoid=None, zscore=None,
1487
+ **kwargs):
1488
+ """
1489
+ Please refer to Teradata Python Function Reference guide for Documentation.
1490
+ Reference guide can be found at: https://docs.teradata.com
1491
+ """
1492
+ # Argument Validations
1493
+ # Note:
1494
+ # Commented code is kept for future purpose. Once all commented code is updated
1495
+ # note will be removed as well.
1496
+ arg_info_matrix = []
1497
+ arg_info_matrix.append(["data", data, False, (DataFrame)])
1498
+ arg_info_matrix.append(["bins", bins, True, (Binning, list)])
1499
+ arg_info_matrix.append(["derive", derive, True, (Derive, list)])
1500
+ arg_info_matrix.append(["one_hot_encode", one_hot_encode, True, (OneHotEncoder, list)])
1501
+ arg_info_matrix.append(["fillna", fillna, True, (FillNa, list)])
1502
+ arg_info_matrix.append(["rescale", rescale, True, (MinMaxScalar, list)])
1503
+ arg_info_matrix.append(["label_encode", label_encode, True, (LabelEncoder, list)])
1504
+ arg_info_matrix.append(["retain", retain, True, (Retain, list)])
1505
+ arg_info_matrix.append(["sigmoid", sigmoid, True, (Sigmoid, list)])
1506
+ arg_info_matrix.append(["zscore", zscore, True, (ZScore, list)])
1507
+
1508
+ # Argument validations.
1509
+ _Validators._validate_function_arguments(arg_info_matrix)
1510
+
1511
+ # Add "data" to kwargs for further processing.
1512
+ kwargs["data"] = data
1513
+
1514
+ # Get a new instance of _VALIB() class for function execution.
1515
+ valib_inst = self.__get_valib_instance("Transform")
1516
+
1517
+ # Add all arguments to dynamic class as data members.
1518
+ valib_inst.__dyn_cls_data_members = {}
1519
+ valib_inst.__dyn_cls_data_members.update(kwargs)
1520
+ valib_inst.__dyn_cls_data_members["bins"] = bins
1521
+ valib_inst.__dyn_cls_data_members["derive"] = derive
1522
+ valib_inst.__dyn_cls_data_members["one_hot_encode"] = one_hot_encode
1523
+ valib_inst.__dyn_cls_data_members["fillna"] = fillna
1524
+ valib_inst.__dyn_cls_data_members["label_encode"] = label_encode
1525
+ valib_inst.__dyn_cls_data_members["rescale"] = rescale
1526
+ valib_inst.__dyn_cls_data_members["retain"] = retain
1527
+ valib_inst.__dyn_cls_data_members["sigmoid"] = sigmoid
1528
+ valib_inst.__dyn_cls_data_members["zscore"] = zscore
1529
+
1530
+ # Add "outputstyle" argument to generate output table.
1531
+ valib_inst.__generate_valib_sql_argument_syntax(arg="table", arg_name="outputstyle")
1532
+
1533
+ # Bin Coding Transformation
1534
+ if bins is not None:
1535
+ valib_inst.__process_val_transformations(bins, "bins", "bincode", data)
1536
+
1537
+ # Derive Transformation
1538
+ if derive is not None:
1539
+ valib_inst.__process_val_transformations(derive, "derive", "derive", data)
1540
+
1541
+ # OneHotEncoder Transformation
1542
+ if one_hot_encode is not None:
1543
+ valib_inst.__process_val_transformations(one_hot_encode, "one_hot_encode", "designcode", data)
1544
+
1545
+ # Null Replacement Transformation
1546
+ if fillna is not None:
1547
+ valib_inst.__process_val_transformations(fillna, "fillna", "nullreplacement", data)
1548
+
1549
+ # LabelEncoder Transformation
1550
+ if label_encode is not None:
1551
+ valib_inst.__process_val_transformations(label_encode, "label_encode", "recode", data)
1552
+
1553
+ # MinMaxScalar Transformation
1554
+ if rescale is not None:
1555
+ valib_inst.__process_val_transformations(rescale, "rescale", "rescale", data)
1556
+
1557
+ # Retain Transformation
1558
+ if retain is not None:
1559
+ valib_inst.__process_val_transformations(retain, "retain", "retain", data)
1560
+
1561
+ # Sigmoid Transformation
1562
+ if sigmoid is not None:
1563
+ valib_inst.__process_val_transformations(sigmoid, "sigmoid", "sigmoid", data)
1564
+
1565
+ # ZScore Transformation
1566
+ if zscore is not None:
1567
+ valib_inst.__process_val_transformations(zscore, "zscore", "zscore", data)
1568
+
1569
+ # Execute the function, just do not process the output dataframes
1570
+ # and dynamic class creation for the function.
1571
+ return valib_inst._execute_valib_function(**kwargs)
1572
+
1573
+ def XmlToHtmlReport(self, data, analysis_type, **kwargs):
1574
+ """
1575
+ Please refer to Teradata Python Function Reference guide for Documentation.
1576
+ Reference guide can be found at: https://docs.teradata.com
1577
+ """
1578
+ # Add the required arguments to kwargs for further processing.
1579
+ kwargs["data"] = data
1580
+ kwargs["analysis_type"] = analysis_type
1581
+ # Dict that maps teradataml Class name to SQL name.
1582
+ tdml_classname_to_sql_name = {"DecisionTree": "decisiontree",
1583
+ "DecisionTreeEvaluator": "decisiontreescore",
1584
+ "PCA": "factor",
1585
+ "PCAEvaluator": "factorscore",
1586
+ "LinReg": "linear",
1587
+ "LogReg": "logistic",
1588
+ "LogRegEvaluator": "logisticscore"}
1589
+
1590
+ if analysis_type in tdml_classname_to_sql_name:
1591
+ kwargs["analysis_type"] = tdml_classname_to_sql_name[analysis_type]
1592
+
1593
+ # Get a new instance of _VALIB() class for function execution.
1594
+ new_valib_obj = self.__get_valib_instance("XmlToHtmlReport")
1595
+
1596
+ # Add all arguments to dynamic class as data members.
1597
+ new_valib_obj.__dyn_cls_data_members = {}
1598
+ new_valib_obj.__dyn_cls_data_members.update(kwargs)
1599
+
1600
+ return new_valib_obj._execute_valib_function(**kwargs)
1601
+
1602
+ # Define an object of type _VALIB, that will allow user to execute any VALIB function.
1603
+ valib = _VALIB()