teradataml 17.20.0.7__py3-none-any.whl → 20.0.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (1285) hide show
  1. teradataml/LICENSE-3RD-PARTY.pdf +0 -0
  2. teradataml/LICENSE.pdf +0 -0
  3. teradataml/README.md +1864 -1640
  4. teradataml/__init__.py +70 -60
  5. teradataml/_version.py +11 -11
  6. teradataml/analytics/Transformations.py +2995 -2995
  7. teradataml/analytics/__init__.py +81 -83
  8. teradataml/analytics/analytic_function_executor.py +2013 -2010
  9. teradataml/analytics/analytic_query_generator.py +958 -958
  10. teradataml/analytics/byom/H2OPredict.py +514 -514
  11. teradataml/analytics/byom/PMMLPredict.py +437 -437
  12. teradataml/analytics/byom/__init__.py +14 -14
  13. teradataml/analytics/json_parser/__init__.py +130 -130
  14. teradataml/analytics/json_parser/analytic_functions_argument.py +1707 -1707
  15. teradataml/analytics/json_parser/json_store.py +191 -191
  16. teradataml/analytics/json_parser/metadata.py +1637 -1637
  17. teradataml/analytics/json_parser/utils.py +804 -803
  18. teradataml/analytics/meta_class.py +196 -196
  19. teradataml/analytics/sqle/DecisionTreePredict.py +455 -470
  20. teradataml/analytics/sqle/NaiveBayesPredict.py +419 -428
  21. teradataml/analytics/sqle/__init__.py +97 -110
  22. teradataml/analytics/sqle/json/decisiontreepredict_sqle.json +78 -78
  23. teradataml/analytics/sqle/json/naivebayespredict_sqle.json +62 -62
  24. teradataml/analytics/table_operator/__init__.py +10 -10
  25. teradataml/analytics/uaf/__init__.py +63 -63
  26. teradataml/analytics/utils.py +693 -692
  27. teradataml/analytics/valib.py +1603 -1600
  28. teradataml/automl/__init__.py +1628 -0
  29. teradataml/automl/custom_json_utils.py +1270 -0
  30. teradataml/automl/data_preparation.py +993 -0
  31. teradataml/automl/data_transformation.py +727 -0
  32. teradataml/automl/feature_engineering.py +1648 -0
  33. teradataml/automl/feature_exploration.py +547 -0
  34. teradataml/automl/model_evaluation.py +163 -0
  35. teradataml/automl/model_training.py +887 -0
  36. teradataml/catalog/__init__.py +1 -3
  37. teradataml/catalog/byom.py +1759 -1716
  38. teradataml/catalog/function_argument_mapper.py +859 -861
  39. teradataml/catalog/model_cataloging_utils.py +491 -1510
  40. teradataml/clients/pkce_client.py +481 -481
  41. teradataml/common/aed_utils.py +6 -2
  42. teradataml/common/bulk_exposed_utils.py +111 -111
  43. teradataml/common/constants.py +1433 -1441
  44. teradataml/common/deprecations.py +160 -0
  45. teradataml/common/exceptions.py +73 -73
  46. teradataml/common/formula.py +742 -742
  47. teradataml/common/garbagecollector.py +592 -635
  48. teradataml/common/messagecodes.py +422 -431
  49. teradataml/common/messages.py +227 -231
  50. teradataml/common/sqlbundle.py +693 -693
  51. teradataml/common/td_coltype_code_to_tdtype.py +48 -48
  52. teradataml/common/utils.py +2418 -2500
  53. teradataml/common/warnings.py +25 -25
  54. teradataml/common/wrapper_utils.py +1 -110
  55. teradataml/config/dummy_file1.cfg +4 -4
  56. teradataml/config/dummy_file2.cfg +2 -2
  57. teradataml/config/sqlengine_alias_definitions_v1.0 +13 -13
  58. teradataml/config/sqlengine_alias_definitions_v1.1 +19 -19
  59. teradataml/config/sqlengine_alias_definitions_v1.3 +18 -18
  60. teradataml/context/aed_context.py +217 -217
  61. teradataml/context/context.py +1071 -999
  62. teradataml/data/A_loan.csv +19 -19
  63. teradataml/data/BINARY_REALS_LEFT.csv +11 -11
  64. teradataml/data/BINARY_REALS_RIGHT.csv +11 -11
  65. teradataml/data/B_loan.csv +49 -49
  66. teradataml/data/BuoyData2.csv +17 -17
  67. teradataml/data/CONVOLVE2_COMPLEX_LEFT.csv +5 -5
  68. teradataml/data/CONVOLVE2_COMPLEX_RIGHT.csv +5 -5
  69. teradataml/data/Convolve2RealsLeft.csv +5 -5
  70. teradataml/data/Convolve2RealsRight.csv +5 -5
  71. teradataml/data/Convolve2ValidLeft.csv +11 -11
  72. teradataml/data/Convolve2ValidRight.csv +11 -11
  73. teradataml/data/DFFTConv_Real_8_8.csv +65 -65
  74. teradataml/data/Orders1_12mf.csv +24 -24
  75. teradataml/data/Pi_loan.csv +7 -7
  76. teradataml/data/SMOOTHED_DATA.csv +7 -7
  77. teradataml/data/TestDFFT8.csv +9 -9
  78. teradataml/data/TestRiver.csv +109 -109
  79. teradataml/data/Traindata.csv +28 -28
  80. teradataml/data/acf.csv +17 -17
  81. teradataml/data/adaboost_example.json +34 -34
  82. teradataml/data/adaboostpredict_example.json +24 -24
  83. teradataml/data/additional_table.csv +10 -10
  84. teradataml/data/admissions_test.csv +21 -21
  85. teradataml/data/admissions_train.csv +41 -41
  86. teradataml/data/admissions_train_nulls.csv +41 -41
  87. teradataml/data/ageandheight.csv +13 -13
  88. teradataml/data/ageandpressure.csv +31 -31
  89. teradataml/data/antiselect_example.json +36 -36
  90. teradataml/data/antiselect_input.csv +8 -8
  91. teradataml/data/antiselect_input_mixed_case.csv +8 -8
  92. teradataml/data/applicant_external.csv +6 -6
  93. teradataml/data/applicant_reference.csv +6 -6
  94. teradataml/data/arima_example.json +9 -9
  95. teradataml/data/assortedtext_input.csv +8 -8
  96. teradataml/data/attribution_example.json +33 -33
  97. teradataml/data/attribution_sample_table.csv +27 -27
  98. teradataml/data/attribution_sample_table1.csv +6 -6
  99. teradataml/data/attribution_sample_table2.csv +11 -11
  100. teradataml/data/bank_churn.csv +10001 -0
  101. teradataml/data/bank_web_clicks1.csv +42 -42
  102. teradataml/data/bank_web_clicks2.csv +91 -91
  103. teradataml/data/bank_web_url.csv +85 -85
  104. teradataml/data/barrier.csv +2 -2
  105. teradataml/data/barrier_new.csv +3 -3
  106. teradataml/data/betweenness_example.json +13 -13
  107. teradataml/data/bin_breaks.csv +8 -8
  108. teradataml/data/bin_fit_ip.csv +3 -3
  109. teradataml/data/binary_complex_left.csv +11 -11
  110. teradataml/data/binary_complex_right.csv +11 -11
  111. teradataml/data/binary_matrix_complex_left.csv +21 -21
  112. teradataml/data/binary_matrix_complex_right.csv +21 -21
  113. teradataml/data/binary_matrix_real_left.csv +21 -21
  114. teradataml/data/binary_matrix_real_right.csv +21 -21
  115. teradataml/data/blood2ageandweight.csv +26 -26
  116. teradataml/data/bmi.csv +501 -0
  117. teradataml/data/boston.csv +507 -507
  118. teradataml/data/buoydata_mix.csv +11 -11
  119. teradataml/data/burst_data.csv +5 -5
  120. teradataml/data/burst_example.json +20 -20
  121. teradataml/data/byom_example.json +17 -17
  122. teradataml/data/bytes_table.csv +3 -3
  123. teradataml/data/cal_housing_ex_raw.csv +70 -70
  124. teradataml/data/callers.csv +7 -7
  125. teradataml/data/calls.csv +10 -10
  126. teradataml/data/cars_hist.csv +33 -33
  127. teradataml/data/cat_table.csv +24 -24
  128. teradataml/data/ccm_example.json +31 -31
  129. teradataml/data/ccm_input.csv +91 -91
  130. teradataml/data/ccm_input2.csv +13 -13
  131. teradataml/data/ccmexample.csv +101 -101
  132. teradataml/data/ccmprepare_example.json +8 -8
  133. teradataml/data/ccmprepare_input.csv +91 -91
  134. teradataml/data/cfilter_example.json +12 -12
  135. teradataml/data/changepointdetection_example.json +18 -18
  136. teradataml/data/changepointdetectionrt_example.json +8 -8
  137. teradataml/data/chi_sq.csv +2 -2
  138. teradataml/data/churn_data.csv +14 -14
  139. teradataml/data/churn_emission.csv +35 -35
  140. teradataml/data/churn_initial.csv +3 -3
  141. teradataml/data/churn_state_transition.csv +5 -5
  142. teradataml/data/citedges_2.csv +745 -745
  143. teradataml/data/citvertices_2.csv +1210 -1210
  144. teradataml/data/clicks2.csv +16 -16
  145. teradataml/data/clickstream.csv +12 -12
  146. teradataml/data/clickstream1.csv +11 -11
  147. teradataml/data/closeness_example.json +15 -15
  148. teradataml/data/complaints.csv +21 -21
  149. teradataml/data/complaints_mini.csv +3 -3
  150. teradataml/data/complaints_testtoken.csv +224 -224
  151. teradataml/data/complaints_tokens_test.csv +353 -353
  152. teradataml/data/complaints_traintoken.csv +472 -472
  153. teradataml/data/computers_category.csv +1001 -1001
  154. teradataml/data/computers_test1.csv +1252 -1252
  155. teradataml/data/computers_train1.csv +5009 -5009
  156. teradataml/data/computers_train1_clustered.csv +5009 -5009
  157. teradataml/data/confusionmatrix_example.json +9 -9
  158. teradataml/data/conversion_event_table.csv +3 -3
  159. teradataml/data/corr_input.csv +17 -17
  160. teradataml/data/correlation_example.json +11 -11
  161. teradataml/data/coxhazardratio_example.json +39 -39
  162. teradataml/data/coxph_example.json +15 -15
  163. teradataml/data/coxsurvival_example.json +28 -28
  164. teradataml/data/cpt.csv +41 -41
  165. teradataml/data/credit_ex_merged.csv +45 -45
  166. teradataml/data/customer_loyalty.csv +301 -301
  167. teradataml/data/customer_loyalty_newseq.csv +31 -31
  168. teradataml/data/dataframe_example.json +146 -146
  169. teradataml/data/decisionforest_example.json +37 -37
  170. teradataml/data/decisionforestpredict_example.json +38 -38
  171. teradataml/data/decisiontree_example.json +21 -21
  172. teradataml/data/decisiontreepredict_example.json +45 -45
  173. teradataml/data/dfft2_size4_real.csv +17 -17
  174. teradataml/data/dfft2_test_matrix16.csv +17 -17
  175. teradataml/data/dfft2conv_real_4_4.csv +65 -65
  176. teradataml/data/diabetes.csv +443 -443
  177. teradataml/data/diabetes_test.csv +89 -89
  178. teradataml/data/dict_table.csv +5 -5
  179. teradataml/data/docperterm_table.csv +4 -4
  180. teradataml/data/docs/__init__.py +1 -1
  181. teradataml/data/docs/byom/docs/DataRobotPredict.py +180 -180
  182. teradataml/data/docs/byom/docs/DataikuPredict.py +177 -177
  183. teradataml/data/docs/byom/docs/H2OPredict.py +324 -324
  184. teradataml/data/docs/byom/docs/ONNXPredict.py +283 -283
  185. teradataml/data/docs/byom/docs/PMMLPredict.py +277 -277
  186. teradataml/data/docs/sqle/docs_17_10/Antiselect.py +82 -82
  187. teradataml/data/docs/sqle/docs_17_10/Attribution.py +199 -199
  188. teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +171 -171
  189. teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +131 -130
  190. teradataml/data/docs/sqle/docs_17_10/CategoricalSummary.py +86 -86
  191. teradataml/data/docs/sqle/docs_17_10/ChiSq.py +90 -90
  192. teradataml/data/docs/sqle/docs_17_10/ColumnSummary.py +85 -85
  193. teradataml/data/docs/sqle/docs_17_10/ConvertTo.py +95 -95
  194. teradataml/data/docs/sqle/docs_17_10/DecisionForestPredict.py +139 -139
  195. teradataml/data/docs/sqle/docs_17_10/DecisionTreePredict.py +151 -151
  196. teradataml/data/docs/sqle/docs_17_10/FTest.py +160 -160
  197. teradataml/data/docs/sqle/docs_17_10/FillRowId.py +82 -82
  198. teradataml/data/docs/sqle/docs_17_10/Fit.py +87 -87
  199. teradataml/data/docs/sqle/docs_17_10/GLMPredict.py +144 -144
  200. teradataml/data/docs/sqle/docs_17_10/GetRowsWithMissingValues.py +84 -84
  201. teradataml/data/docs/sqle/docs_17_10/GetRowsWithoutMissingValues.py +81 -81
  202. teradataml/data/docs/sqle/docs_17_10/Histogram.py +164 -164
  203. teradataml/data/docs/sqle/docs_17_10/MovingAverage.py +134 -134
  204. teradataml/data/docs/sqle/docs_17_10/NGramSplitter.py +208 -208
  205. teradataml/data/docs/sqle/docs_17_10/NPath.py +265 -265
  206. teradataml/data/docs/sqle/docs_17_10/NaiveBayesPredict.py +116 -116
  207. teradataml/data/docs/sqle/docs_17_10/NaiveBayesTextClassifierPredict.py +176 -176
  208. teradataml/data/docs/sqle/docs_17_10/NumApply.py +147 -147
  209. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingFit.py +132 -132
  210. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +103 -103
  211. teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
  212. teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +101 -101
  213. teradataml/data/docs/sqle/docs_17_10/Pack.py +128 -128
  214. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesFit.py +111 -111
  215. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +102 -102
  216. teradataml/data/docs/sqle/docs_17_10/QQNorm.py +104 -104
  217. teradataml/data/docs/sqle/docs_17_10/RoundColumns.py +109 -109
  218. teradataml/data/docs/sqle/docs_17_10/RowNormalizeFit.py +117 -117
  219. teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +99 -98
  220. teradataml/data/docs/sqle/docs_17_10/SVMSparsePredict.py +152 -152
  221. teradataml/data/docs/sqle/docs_17_10/ScaleFit.py +197 -197
  222. teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +99 -98
  223. teradataml/data/docs/sqle/docs_17_10/Sessionize.py +113 -113
  224. teradataml/data/docs/sqle/docs_17_10/SimpleImputeFit.py +116 -116
  225. teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +98 -98
  226. teradataml/data/docs/sqle/docs_17_10/StrApply.py +187 -187
  227. teradataml/data/docs/sqle/docs_17_10/StringSimilarity.py +145 -145
  228. teradataml/data/docs/sqle/docs_17_10/Transform.py +105 -104
  229. teradataml/data/docs/sqle/docs_17_10/UnivariateStatistics.py +141 -141
  230. teradataml/data/docs/sqle/docs_17_10/Unpack.py +214 -214
  231. teradataml/data/docs/sqle/docs_17_10/WhichMax.py +83 -83
  232. teradataml/data/docs/sqle/docs_17_10/WhichMin.py +83 -83
  233. teradataml/data/docs/sqle/docs_17_10/ZTest.py +155 -155
  234. teradataml/data/docs/sqle/docs_17_20/ANOVA.py +126 -126
  235. teradataml/data/docs/sqle/docs_17_20/Antiselect.py +82 -82
  236. teradataml/data/docs/sqle/docs_17_20/Attribution.py +200 -200
  237. teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +171 -171
  238. teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +139 -138
  239. teradataml/data/docs/sqle/docs_17_20/CategoricalSummary.py +86 -86
  240. teradataml/data/docs/sqle/docs_17_20/ChiSq.py +90 -90
  241. teradataml/data/docs/sqle/docs_17_20/ClassificationEvaluator.py +166 -166
  242. teradataml/data/docs/sqle/docs_17_20/ColumnSummary.py +85 -85
  243. teradataml/data/docs/sqle/docs_17_20/ColumnTransformer.py +243 -243
  244. teradataml/data/docs/sqle/docs_17_20/ConvertTo.py +113 -113
  245. teradataml/data/docs/sqle/docs_17_20/DecisionForest.py +279 -279
  246. teradataml/data/docs/sqle/docs_17_20/DecisionForestPredict.py +144 -144
  247. teradataml/data/docs/sqle/docs_17_20/DecisionTreePredict.py +135 -135
  248. teradataml/data/docs/sqle/docs_17_20/FTest.py +160 -160
  249. teradataml/data/docs/sqle/docs_17_20/FillRowId.py +82 -82
  250. teradataml/data/docs/sqle/docs_17_20/Fit.py +87 -87
  251. teradataml/data/docs/sqle/docs_17_20/GLM.py +380 -380
  252. teradataml/data/docs/sqle/docs_17_20/GLMPerSegment.py +414 -414
  253. teradataml/data/docs/sqle/docs_17_20/GLMPredict.py +144 -144
  254. teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +233 -234
  255. teradataml/data/docs/sqle/docs_17_20/GetFutileColumns.py +123 -123
  256. teradataml/data/docs/sqle/docs_17_20/GetRowsWithMissingValues.py +108 -108
  257. teradataml/data/docs/sqle/docs_17_20/GetRowsWithoutMissingValues.py +105 -105
  258. teradataml/data/docs/sqle/docs_17_20/Histogram.py +223 -223
  259. teradataml/data/docs/sqle/docs_17_20/KMeans.py +204 -204
  260. teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +144 -143
  261. teradataml/data/docs/sqle/docs_17_20/KNN.py +214 -214
  262. teradataml/data/docs/sqle/docs_17_20/MovingAverage.py +134 -134
  263. teradataml/data/docs/sqle/docs_17_20/NGramSplitter.py +208 -208
  264. teradataml/data/docs/sqle/docs_17_20/NPath.py +265 -265
  265. teradataml/data/docs/sqle/docs_17_20/NaiveBayesPredict.py +116 -116
  266. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +177 -176
  267. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +126 -126
  268. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +117 -117
  269. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +112 -112
  270. teradataml/data/docs/sqle/docs_17_20/NumApply.py +147 -147
  271. teradataml/data/docs/sqle/docs_17_20/OneClassSVM.py +307 -307
  272. teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +185 -184
  273. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingFit.py +225 -225
  274. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +115 -115
  275. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingFit.py +219 -219
  276. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingTransform.py +127 -127
  277. teradataml/data/docs/sqle/docs_17_20/OutlierFilterFit.py +189 -189
  278. teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +117 -112
  279. teradataml/data/docs/sqle/docs_17_20/Pack.py +128 -128
  280. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesFit.py +111 -111
  281. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +112 -111
  282. teradataml/data/docs/sqle/docs_17_20/QQNorm.py +104 -104
  283. teradataml/data/docs/sqle/docs_17_20/ROC.py +163 -163
  284. teradataml/data/docs/sqle/docs_17_20/RandomProjectionFit.py +154 -154
  285. teradataml/data/docs/sqle/docs_17_20/RandomProjectionMinComponents.py +106 -106
  286. teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +120 -120
  287. teradataml/data/docs/sqle/docs_17_20/RegressionEvaluator.py +211 -211
  288. teradataml/data/docs/sqle/docs_17_20/RoundColumns.py +108 -108
  289. teradataml/data/docs/sqle/docs_17_20/RowNormalizeFit.py +117 -117
  290. teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +111 -110
  291. teradataml/data/docs/sqle/docs_17_20/SVM.py +413 -413
  292. teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +202 -202
  293. teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
  294. teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +197 -197
  295. teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +110 -109
  296. teradataml/data/docs/sqle/docs_17_20/SentimentExtractor.py +206 -206
  297. teradataml/data/docs/sqle/docs_17_20/Sessionize.py +113 -113
  298. teradataml/data/docs/sqle/docs_17_20/Silhouette.py +152 -152
  299. teradataml/data/docs/sqle/docs_17_20/SimpleImputeFit.py +116 -116
  300. teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +109 -108
  301. teradataml/data/docs/sqle/docs_17_20/StrApply.py +187 -187
  302. teradataml/data/docs/sqle/docs_17_20/StringSimilarity.py +145 -145
  303. teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +207 -207
  304. teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +171 -171
  305. teradataml/data/docs/sqle/docs_17_20/TargetEncodingFit.py +266 -266
  306. teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +141 -140
  307. teradataml/data/docs/sqle/docs_17_20/TextParser.py +172 -172
  308. teradataml/data/docs/sqle/docs_17_20/TrainTestSplit.py +159 -159
  309. teradataml/data/docs/sqle/docs_17_20/Transform.py +123 -123
  310. teradataml/data/docs/sqle/docs_17_20/UnivariateStatistics.py +141 -141
  311. teradataml/data/docs/sqle/docs_17_20/Unpack.py +214 -214
  312. teradataml/data/docs/sqle/docs_17_20/VectorDistance.py +168 -168
  313. teradataml/data/docs/sqle/docs_17_20/WhichMax.py +83 -83
  314. teradataml/data/docs/sqle/docs_17_20/WhichMin.py +83 -83
  315. teradataml/data/docs/sqle/docs_17_20/WordEmbeddings.py +236 -236
  316. teradataml/data/docs/sqle/docs_17_20/XGBoost.py +353 -353
  317. teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +275 -275
  318. teradataml/data/docs/sqle/docs_17_20/ZTest.py +155 -155
  319. teradataml/data/docs/tableoperator/docs_17_00/ReadNOS.py +429 -429
  320. teradataml/data/docs/tableoperator/docs_17_05/ReadNOS.py +429 -429
  321. teradataml/data/docs/tableoperator/docs_17_05/WriteNOS.py +347 -347
  322. teradataml/data/docs/tableoperator/docs_17_10/ReadNOS.py +428 -428
  323. teradataml/data/docs/tableoperator/docs_17_10/WriteNOS.py +347 -347
  324. teradataml/data/docs/tableoperator/docs_17_20/ReadNOS.py +439 -439
  325. teradataml/data/docs/tableoperator/docs_17_20/WriteNOS.py +386 -386
  326. teradataml/data/docs/uaf/docs_17_20/ACF.py +195 -195
  327. teradataml/data/docs/uaf/docs_17_20/ArimaEstimate.py +369 -369
  328. teradataml/data/docs/uaf/docs_17_20/ArimaForecast.py +142 -142
  329. teradataml/data/docs/uaf/docs_17_20/ArimaValidate.py +159 -159
  330. teradataml/data/docs/uaf/docs_17_20/BinaryMatrixOp.py +247 -247
  331. teradataml/data/docs/uaf/docs_17_20/BinarySeriesOp.py +252 -252
  332. teradataml/data/docs/uaf/docs_17_20/BreuschGodfrey.py +177 -177
  333. teradataml/data/docs/uaf/docs_17_20/BreuschPaganGodfrey.py +174 -174
  334. teradataml/data/docs/uaf/docs_17_20/Convolve.py +226 -226
  335. teradataml/data/docs/uaf/docs_17_20/Convolve2.py +214 -214
  336. teradataml/data/docs/uaf/docs_17_20/CumulPeriodogram.py +183 -183
  337. teradataml/data/docs/uaf/docs_17_20/DFFT.py +203 -203
  338. teradataml/data/docs/uaf/docs_17_20/DFFT2.py +216 -216
  339. teradataml/data/docs/uaf/docs_17_20/DFFT2Conv.py +215 -215
  340. teradataml/data/docs/uaf/docs_17_20/DFFTConv.py +191 -191
  341. teradataml/data/docs/uaf/docs_17_20/DTW.py +179 -179
  342. teradataml/data/docs/uaf/docs_17_20/DickeyFuller.py +144 -144
  343. teradataml/data/docs/uaf/docs_17_20/DurbinWatson.py +183 -183
  344. teradataml/data/docs/uaf/docs_17_20/ExtractResults.py +184 -184
  345. teradataml/data/docs/uaf/docs_17_20/FitMetrics.py +172 -172
  346. teradataml/data/docs/uaf/docs_17_20/GenseriesFormula.py +205 -205
  347. teradataml/data/docs/uaf/docs_17_20/GenseriesSinusoids.py +142 -142
  348. teradataml/data/docs/uaf/docs_17_20/HoltWintersForecaster.py +258 -258
  349. teradataml/data/docs/uaf/docs_17_20/IDFFT.py +164 -164
  350. teradataml/data/docs/uaf/docs_17_20/IDFFT2.py +198 -198
  351. teradataml/data/docs/uaf/docs_17_20/InputValidator.py +120 -120
  352. teradataml/data/docs/uaf/docs_17_20/LineSpec.py +155 -155
  353. teradataml/data/docs/uaf/docs_17_20/LinearRegr.py +214 -214
  354. teradataml/data/docs/uaf/docs_17_20/MAMean.py +173 -173
  355. teradataml/data/docs/uaf/docs_17_20/MInfo.py +133 -133
  356. teradataml/data/docs/uaf/docs_17_20/MatrixMultiply.py +135 -135
  357. teradataml/data/docs/uaf/docs_17_20/MultivarRegr.py +190 -190
  358. teradataml/data/docs/uaf/docs_17_20/PACF.py +158 -158
  359. teradataml/data/docs/uaf/docs_17_20/Portman.py +216 -216
  360. teradataml/data/docs/uaf/docs_17_20/PowerTransform.py +154 -154
  361. teradataml/data/docs/uaf/docs_17_20/Resample.py +228 -228
  362. teradataml/data/docs/uaf/docs_17_20/SInfo.py +122 -122
  363. teradataml/data/docs/uaf/docs_17_20/SeasonalNormalize.py +165 -165
  364. teradataml/data/docs/uaf/docs_17_20/SelectionCriteria.py +173 -173
  365. teradataml/data/docs/uaf/docs_17_20/SignifPeriodicities.py +170 -170
  366. teradataml/data/docs/uaf/docs_17_20/SignifResidmean.py +163 -163
  367. teradataml/data/docs/uaf/docs_17_20/SimpleExp.py +179 -179
  368. teradataml/data/docs/uaf/docs_17_20/Smoothma.py +207 -207
  369. teradataml/data/docs/uaf/docs_17_20/TrackingOp.py +150 -150
  370. teradataml/data/docs/uaf/docs_17_20/UNDIFF.py +171 -171
  371. teradataml/data/docs/uaf/docs_17_20/Unnormalize.py +201 -201
  372. teradataml/data/docs/uaf/docs_17_20/WhitesGeneral.py +169 -169
  373. teradataml/data/dtw_example.json +17 -17
  374. teradataml/data/dtw_t1.csv +11 -11
  375. teradataml/data/dtw_t2.csv +4 -4
  376. teradataml/data/dwt2d_example.json +15 -15
  377. teradataml/data/dwt_example.json +14 -14
  378. teradataml/data/dwt_filter_dim.csv +5 -5
  379. teradataml/data/emission.csv +9 -9
  380. teradataml/data/emp_table_by_dept.csv +19 -19
  381. teradataml/data/employee_info.csv +4 -4
  382. teradataml/data/employee_table.csv +6 -6
  383. teradataml/data/excluding_event_table.csv +2 -2
  384. teradataml/data/finance_data.csv +6 -6
  385. teradataml/data/finance_data2.csv +61 -61
  386. teradataml/data/finance_data3.csv +93 -93
  387. teradataml/data/fish.csv +160 -0
  388. teradataml/data/fm_blood2ageandweight.csv +26 -26
  389. teradataml/data/fmeasure_example.json +11 -11
  390. teradataml/data/followers_leaders.csv +10 -10
  391. teradataml/data/fpgrowth_example.json +12 -12
  392. teradataml/data/frequentpaths_example.json +29 -29
  393. teradataml/data/friends.csv +9 -9
  394. teradataml/data/fs_input.csv +33 -33
  395. teradataml/data/fs_input1.csv +33 -33
  396. teradataml/data/genData.csv +513 -513
  397. teradataml/data/geodataframe_example.json +39 -39
  398. teradataml/data/glass_types.csv +215 -0
  399. teradataml/data/glm_admissions_model.csv +12 -12
  400. teradataml/data/glm_example.json +29 -29
  401. teradataml/data/glml1l2_example.json +28 -28
  402. teradataml/data/glml1l2predict_example.json +54 -54
  403. teradataml/data/glmpredict_example.json +54 -54
  404. teradataml/data/gq_t1.csv +21 -21
  405. teradataml/data/hconvolve_complex_right.csv +5 -5
  406. teradataml/data/hconvolve_complex_rightmulti.csv +5 -5
  407. teradataml/data/histogram_example.json +11 -11
  408. teradataml/data/hmmdecoder_example.json +78 -78
  409. teradataml/data/hmmevaluator_example.json +24 -24
  410. teradataml/data/hmmsupervised_example.json +10 -10
  411. teradataml/data/hmmunsupervised_example.json +7 -7
  412. teradataml/data/house_values.csv +12 -12
  413. teradataml/data/house_values2.csv +13 -13
  414. teradataml/data/housing_cat.csv +7 -7
  415. teradataml/data/housing_data.csv +9 -9
  416. teradataml/data/housing_test.csv +47 -47
  417. teradataml/data/housing_test_binary.csv +47 -47
  418. teradataml/data/housing_train.csv +493 -493
  419. teradataml/data/housing_train_attribute.csv +4 -4
  420. teradataml/data/housing_train_binary.csv +437 -437
  421. teradataml/data/housing_train_parameter.csv +2 -2
  422. teradataml/data/housing_train_response.csv +493 -493
  423. teradataml/data/ibm_stock.csv +370 -370
  424. teradataml/data/ibm_stock1.csv +370 -370
  425. teradataml/data/identitymatch_example.json +21 -21
  426. teradataml/data/idf_table.csv +4 -4
  427. teradataml/data/impressions.csv +101 -101
  428. teradataml/data/inflation.csv +21 -21
  429. teradataml/data/initial.csv +3 -3
  430. teradataml/data/insect_sprays.csv +12 -12
  431. teradataml/data/insurance.csv +1339 -1339
  432. teradataml/data/interpolator_example.json +12 -12
  433. teradataml/data/iris_altinput.csv +481 -481
  434. teradataml/data/iris_attribute_output.csv +8 -8
  435. teradataml/data/iris_attribute_test.csv +121 -121
  436. teradataml/data/iris_attribute_train.csv +481 -481
  437. teradataml/data/iris_category_expect_predict.csv +31 -31
  438. teradataml/data/iris_data.csv +151 -0
  439. teradataml/data/iris_input.csv +151 -151
  440. teradataml/data/iris_response_train.csv +121 -121
  441. teradataml/data/iris_test.csv +31 -31
  442. teradataml/data/iris_train.csv +121 -121
  443. teradataml/data/join_table1.csv +4 -4
  444. teradataml/data/join_table2.csv +4 -4
  445. teradataml/data/jsons/anly_function_name.json +6 -6
  446. teradataml/data/jsons/byom/dataikupredict.json +147 -147
  447. teradataml/data/jsons/byom/datarobotpredict.json +146 -146
  448. teradataml/data/jsons/byom/h2opredict.json +194 -194
  449. teradataml/data/jsons/byom/onnxpredict.json +186 -186
  450. teradataml/data/jsons/byom/pmmlpredict.json +146 -146
  451. teradataml/data/jsons/paired_functions.json +435 -435
  452. teradataml/data/jsons/sqle/16.20/Antiselect.json +56 -56
  453. teradataml/data/jsons/sqle/16.20/Attribution.json +249 -249
  454. teradataml/data/jsons/sqle/16.20/DecisionForestPredict.json +156 -156
  455. teradataml/data/jsons/sqle/16.20/DecisionTreePredict.json +170 -170
  456. teradataml/data/jsons/sqle/16.20/GLMPredict.json +122 -122
  457. teradataml/data/jsons/sqle/16.20/MovingAverage.json +367 -367
  458. teradataml/data/jsons/sqle/16.20/NGramSplitter.json +239 -239
  459. teradataml/data/jsons/sqle/16.20/NaiveBayesPredict.json +136 -136
  460. teradataml/data/jsons/sqle/16.20/NaiveBayesTextClassifierPredict.json +235 -235
  461. teradataml/data/jsons/sqle/16.20/Pack.json +98 -98
  462. teradataml/data/jsons/sqle/16.20/SVMSparsePredict.json +162 -162
  463. teradataml/data/jsons/sqle/16.20/Sessionize.json +105 -105
  464. teradataml/data/jsons/sqle/16.20/StringSimilarity.json +86 -86
  465. teradataml/data/jsons/sqle/16.20/Unpack.json +166 -166
  466. teradataml/data/jsons/sqle/16.20/nPath.json +269 -269
  467. teradataml/data/jsons/sqle/17.00/Antiselect.json +56 -56
  468. teradataml/data/jsons/sqle/17.00/Attribution.json +249 -249
  469. teradataml/data/jsons/sqle/17.00/DecisionForestPredict.json +156 -156
  470. teradataml/data/jsons/sqle/17.00/DecisionTreePredict.json +170 -170
  471. teradataml/data/jsons/sqle/17.00/GLMPredict.json +122 -122
  472. teradataml/data/jsons/sqle/17.00/MovingAverage.json +367 -367
  473. teradataml/data/jsons/sqle/17.00/NGramSplitter.json +239 -239
  474. teradataml/data/jsons/sqle/17.00/NaiveBayesPredict.json +136 -136
  475. teradataml/data/jsons/sqle/17.00/NaiveBayesTextClassifierPredict.json +235 -235
  476. teradataml/data/jsons/sqle/17.00/Pack.json +98 -98
  477. teradataml/data/jsons/sqle/17.00/SVMSparsePredict.json +162 -162
  478. teradataml/data/jsons/sqle/17.00/Sessionize.json +105 -105
  479. teradataml/data/jsons/sqle/17.00/StringSimilarity.json +86 -86
  480. teradataml/data/jsons/sqle/17.00/Unpack.json +166 -166
  481. teradataml/data/jsons/sqle/17.00/nPath.json +269 -269
  482. teradataml/data/jsons/sqle/17.05/Antiselect.json +56 -56
  483. teradataml/data/jsons/sqle/17.05/Attribution.json +249 -249
  484. teradataml/data/jsons/sqle/17.05/DecisionForestPredict.json +156 -156
  485. teradataml/data/jsons/sqle/17.05/DecisionTreePredict.json +170 -170
  486. teradataml/data/jsons/sqle/17.05/GLMPredict.json +122 -122
  487. teradataml/data/jsons/sqle/17.05/MovingAverage.json +367 -367
  488. teradataml/data/jsons/sqle/17.05/NGramSplitter.json +239 -239
  489. teradataml/data/jsons/sqle/17.05/NaiveBayesPredict.json +136 -136
  490. teradataml/data/jsons/sqle/17.05/NaiveBayesTextClassifierPredict.json +235 -235
  491. teradataml/data/jsons/sqle/17.05/Pack.json +98 -98
  492. teradataml/data/jsons/sqle/17.05/SVMSparsePredict.json +162 -162
  493. teradataml/data/jsons/sqle/17.05/Sessionize.json +105 -105
  494. teradataml/data/jsons/sqle/17.05/StringSimilarity.json +86 -86
  495. teradataml/data/jsons/sqle/17.05/Unpack.json +166 -166
  496. teradataml/data/jsons/sqle/17.05/nPath.json +269 -269
  497. teradataml/data/jsons/sqle/17.10/Antiselect.json +56 -56
  498. teradataml/data/jsons/sqle/17.10/Attribution.json +249 -249
  499. teradataml/data/jsons/sqle/17.10/DecisionForestPredict.json +185 -185
  500. teradataml/data/jsons/sqle/17.10/DecisionTreePredict.json +171 -171
  501. teradataml/data/jsons/sqle/17.10/GLMPredict.json +151 -151
  502. teradataml/data/jsons/sqle/17.10/MovingAverage.json +368 -368
  503. teradataml/data/jsons/sqle/17.10/NGramSplitter.json +239 -239
  504. teradataml/data/jsons/sqle/17.10/NaiveBayesPredict.json +149 -149
  505. teradataml/data/jsons/sqle/17.10/NaiveBayesTextClassifierPredict.json +288 -288
  506. teradataml/data/jsons/sqle/17.10/Pack.json +133 -133
  507. teradataml/data/jsons/sqle/17.10/SVMSparsePredict.json +193 -193
  508. teradataml/data/jsons/sqle/17.10/Sessionize.json +105 -105
  509. teradataml/data/jsons/sqle/17.10/StringSimilarity.json +86 -86
  510. teradataml/data/jsons/sqle/17.10/TD_BinCodeFit.json +239 -239
  511. teradataml/data/jsons/sqle/17.10/TD_BinCodeTransform.json +70 -70
  512. teradataml/data/jsons/sqle/17.10/TD_CategoricalSummary.json +53 -53
  513. teradataml/data/jsons/sqle/17.10/TD_Chisq.json +67 -67
  514. teradataml/data/jsons/sqle/17.10/TD_ColumnSummary.json +53 -53
  515. teradataml/data/jsons/sqle/17.10/TD_ConvertTo.json +68 -68
  516. teradataml/data/jsons/sqle/17.10/TD_FTest.json +187 -187
  517. teradataml/data/jsons/sqle/17.10/TD_FillRowID.json +51 -51
  518. teradataml/data/jsons/sqle/17.10/TD_FunctionFit.json +46 -46
  519. teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +72 -71
  520. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithMissingValues.json +52 -52
  521. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithoutMissingValues.json +52 -52
  522. teradataml/data/jsons/sqle/17.10/TD_Histogram.json +132 -132
  523. teradataml/data/jsons/sqle/17.10/TD_NumApply.json +147 -147
  524. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingFit.json +182 -182
  525. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +65 -64
  526. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterFit.json +196 -196
  527. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +48 -47
  528. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesFit.json +114 -114
  529. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +72 -71
  530. teradataml/data/jsons/sqle/17.10/TD_QQNorm.json +111 -111
  531. teradataml/data/jsons/sqle/17.10/TD_RoundColumns.json +93 -93
  532. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeFit.json +127 -127
  533. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +70 -69
  534. teradataml/data/jsons/sqle/17.10/TD_ScaleFit.json +156 -156
  535. teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +70 -69
  536. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeFit.json +147 -147
  537. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +48 -47
  538. teradataml/data/jsons/sqle/17.10/TD_StrApply.json +240 -240
  539. teradataml/data/jsons/sqle/17.10/TD_UnivariateStatistics.json +118 -118
  540. teradataml/data/jsons/sqle/17.10/TD_WhichMax.json +52 -52
  541. teradataml/data/jsons/sqle/17.10/TD_WhichMin.json +52 -52
  542. teradataml/data/jsons/sqle/17.10/TD_ZTest.json +171 -171
  543. teradataml/data/jsons/sqle/17.10/Unpack.json +188 -188
  544. teradataml/data/jsons/sqle/17.10/nPath.json +269 -269
  545. teradataml/data/jsons/sqle/17.20/Antiselect.json +56 -56
  546. teradataml/data/jsons/sqle/17.20/Attribution.json +249 -249
  547. teradataml/data/jsons/sqle/17.20/DecisionForestPredict.json +185 -185
  548. teradataml/data/jsons/sqle/17.20/DecisionTreePredict.json +172 -172
  549. teradataml/data/jsons/sqle/17.20/GLMPredict.json +151 -151
  550. teradataml/data/jsons/sqle/17.20/MovingAverage.json +367 -367
  551. teradataml/data/jsons/sqle/17.20/NGramSplitter.json +239 -239
  552. teradataml/data/jsons/sqle/17.20/NaiveBayesPredict.json +149 -149
  553. teradataml/data/jsons/sqle/17.20/NaiveBayesTextClassifierPredict.json +287 -287
  554. teradataml/data/jsons/sqle/17.20/Pack.json +133 -133
  555. teradataml/data/jsons/sqle/17.20/SVMSparsePredict.json +192 -192
  556. teradataml/data/jsons/sqle/17.20/Sessionize.json +105 -105
  557. teradataml/data/jsons/sqle/17.20/StringSimilarity.json +86 -86
  558. teradataml/data/jsons/sqle/17.20/TD_ANOVA.json +76 -76
  559. teradataml/data/jsons/sqle/17.20/TD_BinCodeFit.json +239 -239
  560. teradataml/data/jsons/sqle/17.20/TD_BinCodeTransform.json +71 -71
  561. teradataml/data/jsons/sqle/17.20/TD_CategoricalSummary.json +53 -53
  562. teradataml/data/jsons/sqle/17.20/TD_Chisq.json +67 -67
  563. teradataml/data/jsons/sqle/17.20/TD_ClassificationEvaluator.json +145 -145
  564. teradataml/data/jsons/sqle/17.20/TD_ColumnSummary.json +53 -53
  565. teradataml/data/jsons/sqle/17.20/TD_ColumnTransformer.json +218 -218
  566. teradataml/data/jsons/sqle/17.20/TD_ConvertTo.json +92 -92
  567. teradataml/data/jsons/sqle/17.20/TD_DecisionForest.json +259 -259
  568. teradataml/data/jsons/sqle/17.20/TD_DecisionForestPredict.json +139 -139
  569. teradataml/data/jsons/sqle/17.20/TD_FTest.json +186 -186
  570. teradataml/data/jsons/sqle/17.20/TD_FillRowID.json +52 -52
  571. teradataml/data/jsons/sqle/17.20/TD_FunctionFit.json +46 -46
  572. teradataml/data/jsons/sqle/17.20/TD_FunctionTransform.json +72 -72
  573. teradataml/data/jsons/sqle/17.20/TD_GLM.json +431 -431
  574. teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +125 -125
  575. teradataml/data/jsons/sqle/17.20/TD_GLMPerSegment.json +411 -411
  576. teradataml/data/jsons/sqle/17.20/TD_GLMPredictPerSegment.json +146 -146
  577. teradataml/data/jsons/sqle/17.20/TD_GetFutileColumns.json +91 -91
  578. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithMissingValues.json +76 -76
  579. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithoutMissingValues.json +76 -76
  580. teradataml/data/jsons/sqle/17.20/TD_Histogram.json +152 -152
  581. teradataml/data/jsons/sqle/17.20/TD_KMeans.json +211 -211
  582. teradataml/data/jsons/sqle/17.20/TD_KMeansPredict.json +86 -86
  583. teradataml/data/jsons/sqle/17.20/TD_KNN.json +262 -262
  584. teradataml/data/jsons/sqle/17.20/TD_NaiveBayesTextClassifierTrainer.json +137 -137
  585. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineFit.json +101 -101
  586. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineTransform.json +71 -71
  587. teradataml/data/jsons/sqle/17.20/TD_NumApply.json +147 -147
  588. teradataml/data/jsons/sqle/17.20/TD_OneClassSVM.json +315 -315
  589. teradataml/data/jsons/sqle/17.20/TD_OneClassSVMPredict.json +123 -123
  590. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingFit.json +271 -271
  591. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingTransform.json +65 -65
  592. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingFit.json +229 -229
  593. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingTransform.json +75 -75
  594. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterFit.json +217 -217
  595. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterTransform.json +48 -48
  596. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesFit.json +114 -114
  597. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesTransform.json +72 -72
  598. teradataml/data/jsons/sqle/17.20/TD_QQNorm.json +111 -111
  599. teradataml/data/jsons/sqle/17.20/TD_ROC.json +177 -177
  600. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionFit.json +178 -178
  601. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionMinComponents.json +73 -73
  602. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionTransform.json +74 -74
  603. teradataml/data/jsons/sqle/17.20/TD_RegressionEvaluator.json +137 -137
  604. teradataml/data/jsons/sqle/17.20/TD_RoundColumns.json +93 -93
  605. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeFit.json +127 -127
  606. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeTransform.json +70 -70
  607. teradataml/data/jsons/sqle/17.20/TD_SVM.json +389 -389
  608. teradataml/data/jsons/sqle/17.20/TD_SVMPredict.json +124 -124
  609. teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +156 -156
  610. teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +70 -70
  611. teradataml/data/jsons/sqle/17.20/TD_SentimentExtractor.json +193 -193
  612. teradataml/data/jsons/sqle/17.20/TD_Silhouette.json +142 -142
  613. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeFit.json +147 -147
  614. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeTransform.json +48 -48
  615. teradataml/data/jsons/sqle/17.20/TD_StrApply.json +240 -240
  616. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingFit.json +248 -248
  617. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingTransform.json +75 -75
  618. teradataml/data/jsons/sqle/17.20/TD_TextParser.json +192 -192
  619. teradataml/data/jsons/sqle/17.20/TD_TrainTestSplit.json +142 -142
  620. teradataml/data/jsons/sqle/17.20/TD_UnivariateStatistics.json +117 -117
  621. teradataml/data/jsons/sqle/17.20/TD_VectorDistance.json +182 -182
  622. teradataml/data/jsons/sqle/17.20/TD_WhichMax.json +52 -52
  623. teradataml/data/jsons/sqle/17.20/TD_WhichMin.json +52 -52
  624. teradataml/data/jsons/sqle/17.20/TD_WordEmbeddings.json +241 -241
  625. teradataml/data/jsons/sqle/17.20/TD_XGBoost.json +312 -312
  626. teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +182 -182
  627. teradataml/data/jsons/sqle/17.20/TD_ZTest.json +170 -170
  628. teradataml/data/jsons/sqle/17.20/Unpack.json +188 -188
  629. teradataml/data/jsons/sqle/17.20/nPath.json +269 -269
  630. teradataml/data/jsons/tableoperator/17.00/read_nos.json +197 -197
  631. teradataml/data/jsons/tableoperator/17.05/read_nos.json +197 -197
  632. teradataml/data/jsons/tableoperator/17.05/write_nos.json +194 -194
  633. teradataml/data/jsons/tableoperator/17.10/read_nos.json +183 -183
  634. teradataml/data/jsons/tableoperator/17.10/write_nos.json +194 -194
  635. teradataml/data/jsons/tableoperator/17.20/read_nos.json +182 -182
  636. teradataml/data/jsons/tableoperator/17.20/write_nos.json +223 -223
  637. teradataml/data/jsons/uaf/17.20/TD_ACF.json +149 -149
  638. teradataml/data/jsons/uaf/17.20/TD_ARIMAESTIMATE.json +409 -409
  639. teradataml/data/jsons/uaf/17.20/TD_ARIMAFORECAST.json +79 -79
  640. teradataml/data/jsons/uaf/17.20/TD_ARIMAVALIDATE.json +151 -151
  641. teradataml/data/jsons/uaf/17.20/TD_BINARYMATRIXOP.json +109 -109
  642. teradataml/data/jsons/uaf/17.20/TD_BINARYSERIESOP.json +107 -107
  643. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_GODFREY.json +87 -87
  644. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_PAGAN_GODFREY.json +106 -106
  645. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE.json +80 -80
  646. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE2.json +67 -67
  647. teradataml/data/jsons/uaf/17.20/TD_CUMUL_PERIODOGRAM.json +91 -91
  648. teradataml/data/jsons/uaf/17.20/TD_DFFT.json +136 -136
  649. teradataml/data/jsons/uaf/17.20/TD_DFFT2.json +148 -148
  650. teradataml/data/jsons/uaf/17.20/TD_DFFT2CONV.json +108 -108
  651. teradataml/data/jsons/uaf/17.20/TD_DFFTCONV.json +109 -109
  652. teradataml/data/jsons/uaf/17.20/TD_DICKEY_FULLER.json +86 -86
  653. teradataml/data/jsons/uaf/17.20/TD_DIFF.json +91 -91
  654. teradataml/data/jsons/uaf/17.20/TD_DTW.json +116 -116
  655. teradataml/data/jsons/uaf/17.20/TD_DURBIN_WATSON.json +100 -100
  656. teradataml/data/jsons/uaf/17.20/TD_EXTRACT_RESULTS.json +38 -38
  657. teradataml/data/jsons/uaf/17.20/TD_FITMETRICS.json +100 -100
  658. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4FORMULA.json +84 -84
  659. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4SINUSOIDS.json +70 -70
  660. teradataml/data/jsons/uaf/17.20/TD_GOLDFELD_QUANDT.json +152 -152
  661. teradataml/data/jsons/uaf/17.20/TD_HOLT_WINTERS_FORECAST.json +313 -313
  662. teradataml/data/jsons/uaf/17.20/TD_IDFFT.json +57 -57
  663. teradataml/data/jsons/uaf/17.20/TD_IDFFT2.json +94 -94
  664. teradataml/data/jsons/uaf/17.20/TD_INPUTVALIDATOR.json +63 -63
  665. teradataml/data/jsons/uaf/17.20/TD_LINEAR_REGR.json +181 -181
  666. teradataml/data/jsons/uaf/17.20/TD_LINESPEC.json +102 -102
  667. teradataml/data/jsons/uaf/17.20/TD_MAMEAN.json +182 -182
  668. teradataml/data/jsons/uaf/17.20/TD_MATRIXMULTIPLY.json +67 -67
  669. teradataml/data/jsons/uaf/17.20/TD_MINFO.json +66 -66
  670. teradataml/data/jsons/uaf/17.20/TD_MULTIVAR_REGR.json +178 -178
  671. teradataml/data/jsons/uaf/17.20/TD_PACF.json +114 -114
  672. teradataml/data/jsons/uaf/17.20/TD_PORTMAN.json +118 -118
  673. teradataml/data/jsons/uaf/17.20/TD_POWERSPEC.json +175 -175
  674. teradataml/data/jsons/uaf/17.20/TD_POWERTRANSFORM.json +97 -97
  675. teradataml/data/jsons/uaf/17.20/TD_RESAMPLE.json +173 -173
  676. teradataml/data/jsons/uaf/17.20/TD_SEASONALNORMALIZE.json +136 -136
  677. teradataml/data/jsons/uaf/17.20/TD_SELECTION_CRITERIA.json +89 -89
  678. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_PERIODICITIES.json +79 -79
  679. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_RESIDMEAN.json +67 -67
  680. teradataml/data/jsons/uaf/17.20/TD_SIMPLEEXP.json +184 -184
  681. teradataml/data/jsons/uaf/17.20/TD_SINFO.json +57 -57
  682. teradataml/data/jsons/uaf/17.20/TD_SMOOTHMA.json +162 -162
  683. teradataml/data/jsons/uaf/17.20/TD_TRACKINGOP.json +100 -100
  684. teradataml/data/jsons/uaf/17.20/TD_UNDIFF.json +111 -111
  685. teradataml/data/jsons/uaf/17.20/TD_UNNORMALIZE.json +95 -95
  686. teradataml/data/jsons/uaf/17.20/TD_WHITES_GENERAL.json +77 -77
  687. teradataml/data/kmeans_example.json +17 -17
  688. teradataml/data/kmeans_us_arrests_data.csv +0 -0
  689. teradataml/data/knn_example.json +18 -18
  690. teradataml/data/knnrecommender_example.json +6 -6
  691. teradataml/data/knnrecommenderpredict_example.json +12 -12
  692. teradataml/data/lar_example.json +17 -17
  693. teradataml/data/larpredict_example.json +30 -30
  694. teradataml/data/lc_new_predictors.csv +5 -5
  695. teradataml/data/lc_new_reference.csv +9 -9
  696. teradataml/data/lda_example.json +8 -8
  697. teradataml/data/ldainference_example.json +14 -14
  698. teradataml/data/ldatopicsummary_example.json +8 -8
  699. teradataml/data/levendist_input.csv +13 -13
  700. teradataml/data/levenshteindistance_example.json +10 -10
  701. teradataml/data/linreg_example.json +9 -9
  702. teradataml/data/load_example_data.py +326 -323
  703. teradataml/data/loan_prediction.csv +295 -295
  704. teradataml/data/lungcancer.csv +138 -138
  705. teradataml/data/mappingdata.csv +12 -12
  706. teradataml/data/milk_timeseries.csv +157 -157
  707. teradataml/data/min_max_titanic.csv +4 -4
  708. teradataml/data/minhash_example.json +6 -6
  709. teradataml/data/ml_ratings.csv +7547 -7547
  710. teradataml/data/ml_ratings_10.csv +2445 -2445
  711. teradataml/data/model1_table.csv +5 -5
  712. teradataml/data/model2_table.csv +5 -5
  713. teradataml/data/models/iris_db_glm_model.pmml +56 -56
  714. teradataml/data/models/iris_db_xgb_model.pmml +4471 -4471
  715. teradataml/data/modularity_example.json +12 -12
  716. teradataml/data/movavg_example.json +7 -7
  717. teradataml/data/mtx1.csv +7 -7
  718. teradataml/data/mtx2.csv +13 -13
  719. teradataml/data/multi_model_classification.csv +401 -0
  720. teradataml/data/multi_model_regression.csv +401 -0
  721. teradataml/data/mvdfft8.csv +9 -9
  722. teradataml/data/naivebayes_example.json +9 -9
  723. teradataml/data/naivebayespredict_example.json +19 -19
  724. teradataml/data/naivebayestextclassifier2_example.json +6 -6
  725. teradataml/data/naivebayestextclassifier_example.json +8 -8
  726. teradataml/data/naivebayestextclassifierpredict_example.json +20 -20
  727. teradataml/data/name_Find_configure.csv +10 -10
  728. teradataml/data/namedentityfinder_example.json +14 -14
  729. teradataml/data/namedentityfinderevaluator_example.json +10 -10
  730. teradataml/data/namedentityfindertrainer_example.json +6 -6
  731. teradataml/data/nb_iris_input_test.csv +31 -31
  732. teradataml/data/nb_iris_input_train.csv +121 -121
  733. teradataml/data/nbp_iris_model.csv +13 -13
  734. teradataml/data/ner_extractor_text.csv +2 -2
  735. teradataml/data/ner_sports_test2.csv +29 -29
  736. teradataml/data/ner_sports_train.csv +501 -501
  737. teradataml/data/nerevaluator_example.json +5 -5
  738. teradataml/data/nerextractor_example.json +18 -18
  739. teradataml/data/nermem_sports_test.csv +17 -17
  740. teradataml/data/nermem_sports_train.csv +50 -50
  741. teradataml/data/nertrainer_example.json +6 -6
  742. teradataml/data/ngrams_example.json +6 -6
  743. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Aggregate Functions using SQLAlchemy.ipynb +1455 -1455
  744. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Arithmetic Functions Using SQLAlchemy.ipynb +1993 -1993
  745. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Bit-Byte Manipulation Functions using SQLAlchemy.ipynb +1492 -1492
  746. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Built-in functions using SQLAlchemy.ipynb +536 -536
  747. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Regular Expressions Using SQLAlchemy.ipynb +570 -570
  748. teradataml/data/notebooks/sqlalchemy/Teradata Vantage String Functions Using SQLAlchemy.ipynb +2559 -2559
  749. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Window Aggregate Functions using SQLAlchemy.ipynb +2911 -2911
  750. teradataml/data/notebooks/sqlalchemy/Using Generic SQLAlchemy ClauseElements teradataml DataFrame assign method.ipynb +698 -698
  751. teradataml/data/notebooks/sqlalchemy/teradataml filtering using SQLAlchemy ClauseElements.ipynb +784 -784
  752. teradataml/data/npath_example.json +23 -23
  753. teradataml/data/ntree_example.json +14 -14
  754. teradataml/data/numeric_strings.csv +4 -4
  755. teradataml/data/numerics.csv +4 -4
  756. teradataml/data/ocean_buoy.csv +17 -17
  757. teradataml/data/ocean_buoy2.csv +17 -17
  758. teradataml/data/ocean_buoys.csv +27 -27
  759. teradataml/data/ocean_buoys2.csv +10 -10
  760. teradataml/data/ocean_buoys_nonpti.csv +28 -28
  761. teradataml/data/ocean_buoys_seq.csv +29 -29
  762. teradataml/data/openml_example.json +63 -0
  763. teradataml/data/optional_event_table.csv +4 -4
  764. teradataml/data/orders1.csv +11 -11
  765. teradataml/data/orders1_12.csv +12 -12
  766. teradataml/data/orders_ex.csv +4 -4
  767. teradataml/data/pack_example.json +8 -8
  768. teradataml/data/package_tracking.csv +19 -19
  769. teradataml/data/package_tracking_pti.csv +18 -18
  770. teradataml/data/pagerank_example.json +13 -13
  771. teradataml/data/paragraphs_input.csv +6 -6
  772. teradataml/data/pathanalyzer_example.json +7 -7
  773. teradataml/data/pathgenerator_example.json +7 -7
  774. teradataml/data/phrases.csv +7 -7
  775. teradataml/data/pivot_example.json +8 -8
  776. teradataml/data/pivot_input.csv +22 -22
  777. teradataml/data/playerRating.csv +31 -31
  778. teradataml/data/postagger_example.json +6 -6
  779. teradataml/data/posttagger_output.csv +44 -44
  780. teradataml/data/production_data.csv +16 -16
  781. teradataml/data/production_data2.csv +7 -7
  782. teradataml/data/randomsample_example.json +31 -31
  783. teradataml/data/randomwalksample_example.json +8 -8
  784. teradataml/data/rank_table.csv +6 -6
  785. teradataml/data/ref_mobile_data.csv +4 -4
  786. teradataml/data/ref_mobile_data_dense.csv +2 -2
  787. teradataml/data/ref_url.csv +17 -17
  788. teradataml/data/restaurant_reviews.csv +7 -7
  789. teradataml/data/river_data.csv +145 -145
  790. teradataml/data/roc_example.json +7 -7
  791. teradataml/data/roc_input.csv +101 -101
  792. teradataml/data/rule_inputs.csv +6 -6
  793. teradataml/data/rule_table.csv +2 -2
  794. teradataml/data/sales.csv +7 -7
  795. teradataml/data/sales_transaction.csv +501 -501
  796. teradataml/data/salesdata.csv +342 -342
  797. teradataml/data/sample_cities.csv +2 -2
  798. teradataml/data/sample_shapes.csv +10 -10
  799. teradataml/data/sample_streets.csv +2 -2
  800. teradataml/data/sampling_example.json +15 -15
  801. teradataml/data/sax_example.json +8 -8
  802. teradataml/data/scale_example.json +23 -23
  803. teradataml/data/scale_housing.csv +11 -11
  804. teradataml/data/scale_housing_test.csv +6 -6
  805. teradataml/data/scale_stat.csv +11 -11
  806. teradataml/data/scalebypartition_example.json +13 -13
  807. teradataml/data/scalemap_example.json +13 -13
  808. teradataml/data/scalesummary_example.json +12 -12
  809. teradataml/data/score_category.csv +101 -101
  810. teradataml/data/score_summary.csv +4 -4
  811. teradataml/data/script_example.json +9 -9
  812. teradataml/data/scripts/deploy_script.py +65 -0
  813. teradataml/data/scripts/mapper.R +20 -0
  814. teradataml/data/scripts/mapper.py +15 -15
  815. teradataml/data/scripts/mapper_replace.py +15 -15
  816. teradataml/data/scripts/sklearn/__init__.py +0 -0
  817. teradataml/data/scripts/sklearn/sklearn_fit.py +175 -0
  818. teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
  819. teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
  820. teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
  821. teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
  822. teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
  823. teradataml/data/scripts/sklearn/sklearn_transform.py +179 -0
  824. teradataml/data/seeds.csv +10 -10
  825. teradataml/data/sentenceextractor_example.json +6 -6
  826. teradataml/data/sentiment_extract_input.csv +11 -11
  827. teradataml/data/sentiment_train.csv +16 -16
  828. teradataml/data/sentiment_word.csv +20 -20
  829. teradataml/data/sentiment_word_input.csv +19 -19
  830. teradataml/data/sentimentextractor_example.json +24 -24
  831. teradataml/data/sentimenttrainer_example.json +8 -8
  832. teradataml/data/sequence_table.csv +10 -10
  833. teradataml/data/seriessplitter_example.json +7 -7
  834. teradataml/data/sessionize_example.json +17 -17
  835. teradataml/data/sessionize_table.csv +116 -116
  836. teradataml/data/setop_test1.csv +24 -24
  837. teradataml/data/setop_test2.csv +22 -22
  838. teradataml/data/soc_nw_edges.csv +10 -10
  839. teradataml/data/soc_nw_vertices.csv +7 -7
  840. teradataml/data/souvenir_timeseries.csv +167 -167
  841. teradataml/data/sparse_iris_attribute.csv +5 -5
  842. teradataml/data/sparse_iris_test.csv +121 -121
  843. teradataml/data/sparse_iris_train.csv +601 -601
  844. teradataml/data/star1.csv +6 -6
  845. teradataml/data/state_transition.csv +5 -5
  846. teradataml/data/stock_data.csv +53 -53
  847. teradataml/data/stock_movement.csv +11 -11
  848. teradataml/data/stock_vol.csv +76 -76
  849. teradataml/data/stop_words.csv +8 -8
  850. teradataml/data/store_sales.csv +37 -37
  851. teradataml/data/stringsimilarity_example.json +7 -7
  852. teradataml/data/strsimilarity_input.csv +13 -13
  853. teradataml/data/students.csv +101 -101
  854. teradataml/data/svm_iris_input_test.csv +121 -121
  855. teradataml/data/svm_iris_input_train.csv +481 -481
  856. teradataml/data/svm_iris_model.csv +7 -7
  857. teradataml/data/svmdense_example.json +9 -9
  858. teradataml/data/svmdensepredict_example.json +18 -18
  859. teradataml/data/svmsparse_example.json +7 -7
  860. teradataml/data/svmsparsepredict_example.json +13 -13
  861. teradataml/data/svmsparsesummary_example.json +7 -7
  862. teradataml/data/target_mobile_data.csv +13 -13
  863. teradataml/data/target_mobile_data_dense.csv +5 -5
  864. teradataml/data/templatedata.csv +1201 -1201
  865. teradataml/data/templates/open_source_ml.json +9 -0
  866. teradataml/data/teradataml_example.json +73 -1
  867. teradataml/data/test_classification.csv +101 -0
  868. teradataml/data/test_loan_prediction.csv +53 -53
  869. teradataml/data/test_pacf_12.csv +37 -37
  870. teradataml/data/test_prediction.csv +101 -0
  871. teradataml/data/test_regression.csv +101 -0
  872. teradataml/data/test_river2.csv +109 -109
  873. teradataml/data/text_inputs.csv +6 -6
  874. teradataml/data/textchunker_example.json +7 -7
  875. teradataml/data/textclassifier_example.json +6 -6
  876. teradataml/data/textclassifier_input.csv +7 -7
  877. teradataml/data/textclassifiertrainer_example.json +6 -6
  878. teradataml/data/textmorph_example.json +5 -5
  879. teradataml/data/textparser_example.json +15 -15
  880. teradataml/data/texttagger_example.json +11 -11
  881. teradataml/data/texttokenizer_example.json +6 -6
  882. teradataml/data/texttrainer_input.csv +11 -11
  883. teradataml/data/tf_example.json +6 -6
  884. teradataml/data/tfidf_example.json +13 -13
  885. teradataml/data/tfidf_input1.csv +201 -201
  886. teradataml/data/tfidf_train.csv +6 -6
  887. teradataml/data/time_table1.csv +535 -535
  888. teradataml/data/time_table2.csv +14 -14
  889. teradataml/data/timeseriesdata.csv +1601 -1601
  890. teradataml/data/timeseriesdatasetsd4.csv +105 -105
  891. teradataml/data/titanic.csv +892 -892
  892. teradataml/data/token_table.csv +696 -696
  893. teradataml/data/train_multiclass.csv +101 -0
  894. teradataml/data/train_regression.csv +101 -0
  895. teradataml/data/train_regression_multiple_labels.csv +101 -0
  896. teradataml/data/train_tracking.csv +27 -27
  897. teradataml/data/transformation_table.csv +5 -5
  898. teradataml/data/transformation_table_new.csv +1 -1
  899. teradataml/data/tv_spots.csv +16 -16
  900. teradataml/data/twod_climate_data.csv +117 -117
  901. teradataml/data/uaf_example.json +475 -475
  902. teradataml/data/univariatestatistics_example.json +8 -8
  903. teradataml/data/unpack_example.json +9 -9
  904. teradataml/data/unpivot_example.json +9 -9
  905. teradataml/data/unpivot_input.csv +8 -8
  906. teradataml/data/us_air_pass.csv +36 -36
  907. teradataml/data/us_population.csv +624 -624
  908. teradataml/data/us_states_shapes.csv +52 -52
  909. teradataml/data/varmax_example.json +17 -17
  910. teradataml/data/vectordistance_example.json +25 -25
  911. teradataml/data/ville_climatedata.csv +121 -121
  912. teradataml/data/ville_tempdata.csv +12 -12
  913. teradataml/data/ville_tempdata1.csv +12 -12
  914. teradataml/data/ville_temperature.csv +11 -11
  915. teradataml/data/waveletTable.csv +1605 -1605
  916. teradataml/data/waveletTable2.csv +1605 -1605
  917. teradataml/data/weightedmovavg_example.json +8 -8
  918. teradataml/data/wft_testing.csv +5 -5
  919. teradataml/data/wine_data.csv +1600 -0
  920. teradataml/data/word_embed_input_table1.csv +5 -5
  921. teradataml/data/word_embed_input_table2.csv +4 -4
  922. teradataml/data/word_embed_model.csv +22 -22
  923. teradataml/data/words_input.csv +13 -13
  924. teradataml/data/xconvolve_complex_left.csv +6 -6
  925. teradataml/data/xconvolve_complex_leftmulti.csv +6 -6
  926. teradataml/data/xgboost_example.json +35 -35
  927. teradataml/data/xgboostpredict_example.json +31 -31
  928. teradataml/dataframe/copy_to.py +1764 -1698
  929. teradataml/dataframe/data_transfer.py +2753 -2745
  930. teradataml/dataframe/dataframe.py +17545 -16946
  931. teradataml/dataframe/dataframe_utils.py +1837 -1740
  932. teradataml/dataframe/fastload.py +611 -603
  933. teradataml/dataframe/indexer.py +424 -424
  934. teradataml/dataframe/setop.py +1179 -1166
  935. teradataml/dataframe/sql.py +10090 -6432
  936. teradataml/dataframe/sql_function_parameters.py +439 -388
  937. teradataml/dataframe/sql_functions.py +652 -652
  938. teradataml/dataframe/sql_interfaces.py +220 -220
  939. teradataml/dataframe/vantage_function_types.py +674 -630
  940. teradataml/dataframe/window.py +693 -692
  941. teradataml/dbutils/__init__.py +3 -3
  942. teradataml/dbutils/dbutils.py +1167 -1150
  943. teradataml/dbutils/filemgr.py +267 -267
  944. teradataml/gen_ai/__init__.py +2 -2
  945. teradataml/gen_ai/convAI.py +472 -472
  946. teradataml/geospatial/__init__.py +3 -3
  947. teradataml/geospatial/geodataframe.py +1105 -1094
  948. teradataml/geospatial/geodataframecolumn.py +392 -387
  949. teradataml/geospatial/geometry_types.py +925 -925
  950. teradataml/hyperparameter_tuner/__init__.py +1 -1
  951. teradataml/hyperparameter_tuner/optimizer.py +3783 -2993
  952. teradataml/hyperparameter_tuner/utils.py +281 -187
  953. teradataml/lib/aed_0_1.dll +0 -0
  954. teradataml/lib/libaed_0_1.dylib +0 -0
  955. teradataml/lib/libaed_0_1.so +0 -0
  956. teradataml/libaed_0_1.dylib +0 -0
  957. teradataml/libaed_0_1.so +0 -0
  958. teradataml/opensource/__init__.py +1 -0
  959. teradataml/opensource/sklearn/__init__.py +1 -0
  960. teradataml/opensource/sklearn/_class.py +255 -0
  961. teradataml/opensource/sklearn/_sklearn_wrapper.py +1668 -0
  962. teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
  963. teradataml/opensource/sklearn/constants.py +54 -0
  964. teradataml/options/__init__.py +121 -124
  965. teradataml/options/configure.py +337 -336
  966. teradataml/options/display.py +176 -176
  967. teradataml/plot/__init__.py +2 -2
  968. teradataml/plot/axis.py +1388 -1388
  969. teradataml/plot/constants.py +15 -15
  970. teradataml/plot/figure.py +398 -398
  971. teradataml/plot/plot.py +760 -760
  972. teradataml/plot/query_generator.py +83 -83
  973. teradataml/plot/subplot.py +216 -216
  974. teradataml/scriptmgmt/UserEnv.py +3788 -3761
  975. teradataml/scriptmgmt/__init__.py +3 -3
  976. teradataml/scriptmgmt/lls_utils.py +1616 -1604
  977. teradataml/series/series.py +532 -532
  978. teradataml/series/series_utils.py +71 -71
  979. teradataml/table_operators/Apply.py +949 -917
  980. teradataml/table_operators/Script.py +1719 -1982
  981. teradataml/table_operators/TableOperator.py +1207 -1616
  982. teradataml/table_operators/__init__.py +2 -3
  983. teradataml/table_operators/apply_query_generator.py +262 -262
  984. teradataml/table_operators/query_generator.py +507 -507
  985. teradataml/table_operators/table_operator_query_generator.py +460 -460
  986. teradataml/table_operators/table_operator_util.py +631 -639
  987. teradataml/table_operators/templates/dataframe_apply.template +184 -184
  988. teradataml/table_operators/templates/dataframe_map.template +176 -176
  989. teradataml/table_operators/templates/script_executor.template +170 -170
  990. teradataml/utils/dtypes.py +684 -684
  991. teradataml/utils/internal_buffer.py +84 -84
  992. teradataml/utils/print_versions.py +205 -205
  993. teradataml/utils/utils.py +410 -410
  994. teradataml/utils/validators.py +2239 -2115
  995. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +270 -41
  996. teradataml-20.0.0.0.dist-info/RECORD +1038 -0
  997. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +1 -1
  998. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/zip-safe +1 -1
  999. teradataml/analytics/mle/AdaBoost.py +0 -651
  1000. teradataml/analytics/mle/AdaBoostPredict.py +0 -564
  1001. teradataml/analytics/mle/Antiselect.py +0 -342
  1002. teradataml/analytics/mle/Arima.py +0 -641
  1003. teradataml/analytics/mle/ArimaPredict.py +0 -477
  1004. teradataml/analytics/mle/Attribution.py +0 -1070
  1005. teradataml/analytics/mle/Betweenness.py +0 -658
  1006. teradataml/analytics/mle/Burst.py +0 -711
  1007. teradataml/analytics/mle/CCM.py +0 -600
  1008. teradataml/analytics/mle/CCMPrepare.py +0 -324
  1009. teradataml/analytics/mle/CFilter.py +0 -460
  1010. teradataml/analytics/mle/ChangePointDetection.py +0 -572
  1011. teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
  1012. teradataml/analytics/mle/Closeness.py +0 -737
  1013. teradataml/analytics/mle/ConfusionMatrix.py +0 -420
  1014. teradataml/analytics/mle/Correlation.py +0 -477
  1015. teradataml/analytics/mle/Correlation2.py +0 -573
  1016. teradataml/analytics/mle/CoxHazardRatio.py +0 -679
  1017. teradataml/analytics/mle/CoxPH.py +0 -556
  1018. teradataml/analytics/mle/CoxSurvival.py +0 -478
  1019. teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
  1020. teradataml/analytics/mle/DTW.py +0 -623
  1021. teradataml/analytics/mle/DWT.py +0 -564
  1022. teradataml/analytics/mle/DWT2D.py +0 -599
  1023. teradataml/analytics/mle/DecisionForest.py +0 -716
  1024. teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
  1025. teradataml/analytics/mle/DecisionForestPredict.py +0 -561
  1026. teradataml/analytics/mle/DecisionTree.py +0 -830
  1027. teradataml/analytics/mle/DecisionTreePredict.py +0 -528
  1028. teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
  1029. teradataml/analytics/mle/FMeasure.py +0 -402
  1030. teradataml/analytics/mle/FPGrowth.py +0 -734
  1031. teradataml/analytics/mle/FrequentPaths.py +0 -695
  1032. teradataml/analytics/mle/GLM.py +0 -558
  1033. teradataml/analytics/mle/GLML1L2.py +0 -547
  1034. teradataml/analytics/mle/GLML1L2Predict.py +0 -519
  1035. teradataml/analytics/mle/GLMPredict.py +0 -529
  1036. teradataml/analytics/mle/HMMDecoder.py +0 -945
  1037. teradataml/analytics/mle/HMMEvaluator.py +0 -901
  1038. teradataml/analytics/mle/HMMSupervised.py +0 -521
  1039. teradataml/analytics/mle/HMMUnsupervised.py +0 -572
  1040. teradataml/analytics/mle/Histogram.py +0 -561
  1041. teradataml/analytics/mle/IDWT.py +0 -476
  1042. teradataml/analytics/mle/IDWT2D.py +0 -493
  1043. teradataml/analytics/mle/IdentityMatch.py +0 -763
  1044. teradataml/analytics/mle/Interpolator.py +0 -918
  1045. teradataml/analytics/mle/KMeans.py +0 -485
  1046. teradataml/analytics/mle/KNN.py +0 -627
  1047. teradataml/analytics/mle/KNNRecommender.py +0 -488
  1048. teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
  1049. teradataml/analytics/mle/LAR.py +0 -439
  1050. teradataml/analytics/mle/LARPredict.py +0 -478
  1051. teradataml/analytics/mle/LDA.py +0 -548
  1052. teradataml/analytics/mle/LDAInference.py +0 -492
  1053. teradataml/analytics/mle/LDATopicSummary.py +0 -464
  1054. teradataml/analytics/mle/LevenshteinDistance.py +0 -450
  1055. teradataml/analytics/mle/LinReg.py +0 -433
  1056. teradataml/analytics/mle/LinRegPredict.py +0 -438
  1057. teradataml/analytics/mle/MinHash.py +0 -544
  1058. teradataml/analytics/mle/Modularity.py +0 -587
  1059. teradataml/analytics/mle/NEREvaluator.py +0 -410
  1060. teradataml/analytics/mle/NERExtractor.py +0 -595
  1061. teradataml/analytics/mle/NERTrainer.py +0 -458
  1062. teradataml/analytics/mle/NGrams.py +0 -570
  1063. teradataml/analytics/mle/NPath.py +0 -634
  1064. teradataml/analytics/mle/NTree.py +0 -549
  1065. teradataml/analytics/mle/NaiveBayes.py +0 -462
  1066. teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
  1067. teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
  1068. teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
  1069. teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
  1070. teradataml/analytics/mle/NamedEntityFinder.py +0 -529
  1071. teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
  1072. teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
  1073. teradataml/analytics/mle/POSTagger.py +0 -417
  1074. teradataml/analytics/mle/Pack.py +0 -411
  1075. teradataml/analytics/mle/PageRank.py +0 -535
  1076. teradataml/analytics/mle/PathAnalyzer.py +0 -426
  1077. teradataml/analytics/mle/PathGenerator.py +0 -367
  1078. teradataml/analytics/mle/PathStart.py +0 -464
  1079. teradataml/analytics/mle/PathSummarizer.py +0 -470
  1080. teradataml/analytics/mle/Pivot.py +0 -471
  1081. teradataml/analytics/mle/ROC.py +0 -425
  1082. teradataml/analytics/mle/RandomSample.py +0 -637
  1083. teradataml/analytics/mle/RandomWalkSample.py +0 -490
  1084. teradataml/analytics/mle/SAX.py +0 -779
  1085. teradataml/analytics/mle/SVMDense.py +0 -677
  1086. teradataml/analytics/mle/SVMDensePredict.py +0 -536
  1087. teradataml/analytics/mle/SVMDenseSummary.py +0 -437
  1088. teradataml/analytics/mle/SVMSparse.py +0 -557
  1089. teradataml/analytics/mle/SVMSparsePredict.py +0 -553
  1090. teradataml/analytics/mle/SVMSparseSummary.py +0 -435
  1091. teradataml/analytics/mle/Sampling.py +0 -549
  1092. teradataml/analytics/mle/Scale.py +0 -565
  1093. teradataml/analytics/mle/ScaleByPartition.py +0 -496
  1094. teradataml/analytics/mle/ScaleMap.py +0 -378
  1095. teradataml/analytics/mle/ScaleSummary.py +0 -320
  1096. teradataml/analytics/mle/SentenceExtractor.py +0 -363
  1097. teradataml/analytics/mle/SentimentEvaluator.py +0 -432
  1098. teradataml/analytics/mle/SentimentExtractor.py +0 -578
  1099. teradataml/analytics/mle/SentimentTrainer.py +0 -405
  1100. teradataml/analytics/mle/SeriesSplitter.py +0 -641
  1101. teradataml/analytics/mle/Sessionize.py +0 -475
  1102. teradataml/analytics/mle/SimpleMovAvg.py +0 -397
  1103. teradataml/analytics/mle/StringSimilarity.py +0 -425
  1104. teradataml/analytics/mle/TF.py +0 -389
  1105. teradataml/analytics/mle/TFIDF.py +0 -504
  1106. teradataml/analytics/mle/TextChunker.py +0 -414
  1107. teradataml/analytics/mle/TextClassifier.py +0 -399
  1108. teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
  1109. teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
  1110. teradataml/analytics/mle/TextMorph.py +0 -494
  1111. teradataml/analytics/mle/TextParser.py +0 -623
  1112. teradataml/analytics/mle/TextTagger.py +0 -530
  1113. teradataml/analytics/mle/TextTokenizer.py +0 -502
  1114. teradataml/analytics/mle/UnivariateStatistics.py +0 -488
  1115. teradataml/analytics/mle/Unpack.py +0 -526
  1116. teradataml/analytics/mle/Unpivot.py +0 -438
  1117. teradataml/analytics/mle/VarMax.py +0 -776
  1118. teradataml/analytics/mle/VectorDistance.py +0 -762
  1119. teradataml/analytics/mle/WeightedMovAvg.py +0 -400
  1120. teradataml/analytics/mle/XGBoost.py +0 -842
  1121. teradataml/analytics/mle/XGBoostPredict.py +0 -627
  1122. teradataml/analytics/mle/__init__.py +0 -123
  1123. teradataml/analytics/mle/json/adaboost_mle.json +0 -135
  1124. teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
  1125. teradataml/analytics/mle/json/antiselect_mle.json +0 -34
  1126. teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
  1127. teradataml/analytics/mle/json/arima_mle.json +0 -172
  1128. teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
  1129. teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
  1130. teradataml/analytics/mle/json/betweenness_mle.json +0 -97
  1131. teradataml/analytics/mle/json/burst_mle.json +0 -140
  1132. teradataml/analytics/mle/json/ccm_mle.json +0 -124
  1133. teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
  1134. teradataml/analytics/mle/json/cfilter_mle.json +0 -93
  1135. teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
  1136. teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
  1137. teradataml/analytics/mle/json/closeness_mle.json +0 -104
  1138. teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
  1139. teradataml/analytics/mle/json/correlation_mle.json +0 -86
  1140. teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
  1141. teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
  1142. teradataml/analytics/mle/json/coxph_mle.json +0 -98
  1143. teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
  1144. teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
  1145. teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
  1146. teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
  1147. teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
  1148. teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
  1149. teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
  1150. teradataml/analytics/mle/json/dtw_mle.json +0 -97
  1151. teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
  1152. teradataml/analytics/mle/json/dwt_mle.json +0 -101
  1153. teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
  1154. teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
  1155. teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
  1156. teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
  1157. teradataml/analytics/mle/json/glm_mle.json +0 -111
  1158. teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
  1159. teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
  1160. teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
  1161. teradataml/analytics/mle/json/histogram_mle.json +0 -100
  1162. teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
  1163. teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
  1164. teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
  1165. teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
  1166. teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
  1167. teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
  1168. teradataml/analytics/mle/json/idwt_mle.json +0 -66
  1169. teradataml/analytics/mle/json/interpolator_mle.json +0 -151
  1170. teradataml/analytics/mle/json/kmeans_mle.json +0 -97
  1171. teradataml/analytics/mle/json/knn_mle.json +0 -141
  1172. teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
  1173. teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
  1174. teradataml/analytics/mle/json/lar_mle.json +0 -78
  1175. teradataml/analytics/mle/json/larpredict_mle.json +0 -69
  1176. teradataml/analytics/mle/json/lda_mle.json +0 -130
  1177. teradataml/analytics/mle/json/ldainference_mle.json +0 -78
  1178. teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
  1179. teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
  1180. teradataml/analytics/mle/json/linreg_mle.json +0 -42
  1181. teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
  1182. teradataml/analytics/mle/json/minhash_mle.json +0 -113
  1183. teradataml/analytics/mle/json/modularity_mle.json +0 -91
  1184. teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
  1185. teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
  1186. teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
  1187. teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
  1188. teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
  1189. teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
  1190. teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
  1191. teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
  1192. teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
  1193. teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
  1194. teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
  1195. teradataml/analytics/mle/json/ngrams_mle.json +0 -137
  1196. teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
  1197. teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
  1198. teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
  1199. teradataml/analytics/mle/json/pack_mle.json +0 -58
  1200. teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
  1201. teradataml/analytics/mle/json/pagerank_mle.json +0 -81
  1202. teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
  1203. teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
  1204. teradataml/analytics/mle/json/pathstart_mle.json +0 -62
  1205. teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
  1206. teradataml/analytics/mle/json/pivoting_mle.json +0 -71
  1207. teradataml/analytics/mle/json/postagger_mle.json +0 -51
  1208. teradataml/analytics/mle/json/randomsample_mle.json +0 -131
  1209. teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
  1210. teradataml/analytics/mle/json/roc_mle.json +0 -73
  1211. teradataml/analytics/mle/json/sampling_mle.json +0 -75
  1212. teradataml/analytics/mle/json/sax_mle.json +0 -154
  1213. teradataml/analytics/mle/json/scale_mle.json +0 -93
  1214. teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
  1215. teradataml/analytics/mle/json/scalemap_mle.json +0 -44
  1216. teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
  1217. teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
  1218. teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
  1219. teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
  1220. teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
  1221. teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
  1222. teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
  1223. teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
  1224. teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
  1225. teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
  1226. teradataml/analytics/mle/json/svmdense_mle.json +0 -165
  1227. teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
  1228. teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
  1229. teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
  1230. teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
  1231. teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
  1232. teradataml/analytics/mle/json/textchunker_mle.json +0 -40
  1233. teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
  1234. teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
  1235. teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
  1236. teradataml/analytics/mle/json/textmorph_mle.json +0 -63
  1237. teradataml/analytics/mle/json/textparser_mle.json +0 -166
  1238. teradataml/analytics/mle/json/texttagger_mle.json +0 -81
  1239. teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
  1240. teradataml/analytics/mle/json/tf_mle.json +0 -33
  1241. teradataml/analytics/mle/json/tfidf_mle.json +0 -34
  1242. teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
  1243. teradataml/analytics/mle/json/unpack_mle.json +0 -91
  1244. teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
  1245. teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
  1246. teradataml/analytics/mle/json/varmax_mle.json +0 -176
  1247. teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
  1248. teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
  1249. teradataml/analytics/mle/json/xgboost_mle.json +0 -178
  1250. teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
  1251. teradataml/analytics/sqle/Antiselect.py +0 -321
  1252. teradataml/analytics/sqle/Attribution.py +0 -603
  1253. teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
  1254. teradataml/analytics/sqle/GLMPredict.py +0 -430
  1255. teradataml/analytics/sqle/MovingAverage.py +0 -543
  1256. teradataml/analytics/sqle/NGramSplitter.py +0 -548
  1257. teradataml/analytics/sqle/NPath.py +0 -632
  1258. teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
  1259. teradataml/analytics/sqle/Pack.py +0 -388
  1260. teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
  1261. teradataml/analytics/sqle/Sessionize.py +0 -390
  1262. teradataml/analytics/sqle/StringSimilarity.py +0 -400
  1263. teradataml/analytics/sqle/Unpack.py +0 -503
  1264. teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
  1265. teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
  1266. teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
  1267. teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
  1268. teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
  1269. teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
  1270. teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
  1271. teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
  1272. teradataml/analytics/sqle/json/npath_sqle.json +0 -67
  1273. teradataml/analytics/sqle/json/pack_sqle.json +0 -47
  1274. teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
  1275. teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
  1276. teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
  1277. teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
  1278. teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
  1279. teradataml/catalog/model_cataloging.py +0 -980
  1280. teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
  1281. teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
  1282. teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
  1283. teradataml/table_operators/sandbox_container_util.py +0 -643
  1284. teradataml-17.20.0.7.dist-info/RECORD +0 -1280
  1285. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.0.dist-info}/top_level.txt +0 -0
@@ -1,1510 +1,491 @@
1
- """
2
- Copyright (c) 2020 by Teradata Corporation. All rights reserved.
3
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
-
5
- Primary Owner: Rohit.Khurd@teradata.com
6
- Secondary Owner:
7
-
8
- teradataml Model Cataloging utilities
9
- -------------------------------------
10
- The teradataml Model Cataloging utility functions provide internal utilities that
11
- the Model Cataloging APIs make use of.
12
- """
13
- import importlib
14
- import warnings
15
- import pandas as pd
16
- import re
17
-
18
- from teradataml.common.constants import ModelCatalogingConstants as mac,\
19
- FunctionArgumentMapperConstants as famc
20
- from teradataml.common.constants import TeradataConstants
21
- from teradataml.common.exceptions import TeradataMlException
22
- from teradataml.common.utils import UtilFuncs
23
- from teradataml.common.messagecodes import MessageCodes
24
- from teradataml.common.messages import Messages
25
- from teradataml.context.context import get_connection, get_context, _get_current_databasename
26
- from teradataml.dataframe.dataframe_utils import DataFrameUtils as df_utils
27
- from teradataml.catalog.function_argument_mapper import _argument_mapper
28
- from teradataml.common.sqlbundle import SQLBundle
29
- from teradataml.utils.utils import execute_sql
30
- from teradatasqlalchemy import CLOB
31
- from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
32
- from sqlalchemy.sql.expression import select, case as case_when
33
- from sqlalchemy import func
34
-
35
-
36
- def __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name):
37
- """
38
- DESCRIPTION:
39
- Internal function to find SQL equivalent name for given teradataml name.
40
-
41
- PARAMETERS:
42
- function_arg_map:
43
- Required Argument.
44
- The teradataml-sql map for the function obtained using function_argument_mapper.
45
- Types: dict
46
-
47
- arg_type:
48
- Required Argument.
49
- Specifies a string representing the type of lookup, one of the keys in the function argument map.
50
- Acceptable values: 'arguments', 'inputs', 'outputs'
51
- Types: str
52
-
53
- name:
54
- Required Argument.
55
- Specifies the teradataml input, output, or argument name to lookup.
56
- Types: str
57
-
58
- RETURNS:
59
- A String representing the SQL equivalent name for the teradataml name passed as input.
60
-
61
- EXAMPLES:
62
- >>> sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name)
63
- """
64
- if name in function_arg_map[arg_type][famc.TDML_TO_SQL.value]:
65
- sql_name = function_arg_map[arg_type][famc.TDML_TO_SQL.value][name]
66
-
67
- if isinstance(sql_name, dict):
68
- sql_name = sql_name[famc.TDML_NAME.value]
69
-
70
- if isinstance(sql_name, list):
71
- sql_name = sql_name[0]
72
-
73
- return sql_name
74
-
75
- # No SQL name found for given teradataml input name
76
- return None
77
-
78
-
79
- def __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name):
80
- """
81
- DESCRIPTION:
82
- Internal function to find teradataml equivalent name and type, if any, for given SQL name.
83
-
84
- PARAMETERS:
85
- function_arg_map:
86
- Required Argument.
87
- The teradataml-sql map for the function obtained using function_argument_mapper.
88
- Types: dict
89
-
90
- arg_type:
91
- Required Argument.
92
- Specifies a string representing the type of lookup, one of the keys in the function argument map.
93
- Acceptable values: 'arguments', 'inputs', 'outputs'
94
- Types: str
95
-
96
- name:
97
- Required Argument.
98
- Specifies the SQL input, output, or argument name to lookup.
99
- Types: str
100
-
101
- RETURNS:
102
- * A String representing the teradataml equivalent name for the SQL name when arg_type
103
- is 'inputs' or 'outputs'.
104
- * A dictionary with tdml_name and tdml_type for the SQL name when arg_type
105
- is 'arguments'.
106
-
107
-
108
- EXAMPLES:
109
- >>> tdml_name = __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name)
110
- """
111
- if name in function_arg_map[arg_type][famc.SQL_TO_TDML.value]:
112
- tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name]
113
-
114
- # Check for alternate names.
115
- if isinstance(tdml_name, dict) and famc.ALTERNATE_TO.value in tdml_name:
116
- alternate_to = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name][
117
- famc.ALTERNATE_TO.value]
118
- tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][alternate_to]
119
-
120
- if isinstance(tdml_name, list):
121
- tdml_name = tdml_name[0]
122
-
123
- return tdml_name
124
-
125
- # No teradataml name found for given teradataml input name
126
- return None
127
-
128
-
129
- def __get_model_inputs_outputs(model, function_arg_map):
130
- """
131
- DESCRIPTION:
132
- Internal function to get input and output information of the model to be saved.
133
-
134
- PARAMETERS:
135
- model:
136
- Required Argument.
137
- The model (analytic function object instance) to be saved.
138
- Types: teradataml Analytic Function object
139
-
140
- function_arg_map:
141
- Required Argument.
142
- The teradataml-sql map for the function obtained using function_argument_mapper.
143
- Types: dict
144
-
145
- RETURNS:
146
- A tuple of two dictionaries, and a list:
147
- * The first containing input information.
148
- * The second containing output information.
149
- * The list containing names of tables to remove entries from GC for.
150
-
151
- EXAMPLE:
152
- >>> inputs, outputs, tables_to_not_gc = __get_model_inputs_outputs(model, function_arg_map)
153
- """
154
- input_json = {}
155
- output_json = {}
156
- remove_tables_entries_from_gc = []
157
-
158
- # First, let's identify the output DataFrames
159
- output_tables = [df._table_name for df in model._mlresults]
160
-
161
- for key in model.__dict__:
162
- if not key.startswith('_'):
163
- member = getattr(model, key)
164
- # The DataFrame is input if it is not output
165
- if isinstance(member, DataFrame):
166
- if member._table_name not in output_tables:
167
- # Populate the input dictionary
168
- # We construct a dictionary of the following form:
169
- # { "<schema_name> :
170
- # { "<table_name>" :
171
- # { "nrows": <num_rows>,
172
- # "ncols": <num_cols>,
173
- # "input_name": <SQL name for the input>,
174
- # "client_specific_input_name": <tdml name for the input>
175
- # },
176
- # ...
177
- # }
178
- # }
179
- tdp = preparer(td_dialect)
180
- nrows, ncols = member.shape
181
- db_schema = UtilFuncs._extract_db_name(member._table_name)
182
- # Add quotes around the DB name in case we are getting it using _get_current_databasename()
183
- db_schema = tdp.quote(_get_current_databasename()) if db_schema is None else db_schema
184
- db_table_name = UtilFuncs._extract_table_name(member._table_name)
185
-
186
- if db_schema not in input_json:
187
- input_json[db_schema] = {}
188
- input_json[db_schema][db_table_name] = {}
189
- input_json[db_schema][db_table_name]["nrows"] = int(nrows)
190
- input_json[db_schema][db_table_name]["ncols"] = ncols
191
- input_json[db_schema][db_table_name]["input_name"] = __get_arg_sql_name_from_tdml(function_arg_map,
192
- arg_type=famc.INPUTS.value,
193
- name=key)
194
- input_json[db_schema][db_table_name]["client_specific_input_name"] = key
195
- else:
196
- # Populate the output dictionary
197
- # We construct a dictionary of the following form:
198
- # { "<Output SQL Name> :
199
- # { "table_name": "<Database qualified name of the table>",
200
- # "client_specific_name": "<TDML specific name of the output>"
201
- # },
202
- # ...
203
- # }
204
-
205
- # teradataml Analytic functions models can be of two types:
206
- # 1. Non-lazy OR
207
- # 2. Lazy
208
- # When model is non-lazy, that means model tables are already present/created on the system.
209
- # When model is lazy, it may happen that model tables are yet to be evaluated/created.
210
- # So first, let's make sure that model is evaluated, i.e., model tables are created,
211
- # if they are not created already.
212
- #
213
- if member._table_name is None:
214
- member._table_name = df_utils._execute_node_return_db_object_name(member._nodeid,
215
- member._metaexpr)
216
- output_table_name = member._table_name
217
- if __is_view(output_table_name):
218
- # If output table is not of type table, which means it's a view.
219
- # So instead of using view name for persisting, we must materialize the same.
220
- #
221
- # To do so, let's just generate another temporary table name. One can notice, when
222
- # we generate the temporary table name, we set the following flag 'gc_on_quit=True'.
223
- # One can say, why to mark it for GC, when we are going to persist it.
224
- # Only reason we added it for GC, so that, if in case anything goes wrong from the point
225
- # we create the table to the end of the model saving, later this will be GC'ed as
226
- # model saving had failed. Later we remove entry from GC, when model info is saved in
227
- # MC tables and model is persisted in table.
228
- #
229
- output_table_name = UtilFuncs._generate_temp_table_name(prefix="td_saved_model_",
230
- use_default_database=True,
231
- gc_on_quit=True, quote=False,
232
- table_type=TeradataConstants.TERADATA_TABLE)
233
-
234
- base_query = SQLBundle._build_base_query(member._table_name)
235
- crt_table_query = SQLBundle._build_create_table_with_data(output_table_name, base_query)
236
- UtilFuncs._execute_ddl_statement(crt_table_query)
237
-
238
- # Append the name of the table to remove entry from GC.
239
- remove_tables_entries_from_gc.append(output_table_name)
240
-
241
- sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.OUTPUTS.value, name=key)
242
- output_json[sql_name] = {}
243
- output_json[sql_name]["table_name"] = output_table_name
244
- output_json[sql_name]["client_specific_name"] = key
245
-
246
- return input_json, output_json, remove_tables_entries_from_gc
247
-
248
-
249
- def __check_if_client_specific_use(key, function_arg_map, is_sql_name=False):
250
- """
251
- DESCRIPTION:
252
- Internal function to check if the argument corresponds to a client-only specific argument.
253
-
254
- PARAMETERS:
255
- key:
256
- Required Argument.
257
- The teradataml or SQL argument name to check for.
258
- Types: str
259
-
260
- function_arg_map:
261
- Required Argument.
262
- The teradataml-sql map for the function obtained using function_argument_mapper.
263
- Types: dict
264
-
265
- is_sql_name:
266
- Optional Argument.
267
- Specifies a boolean value indicating whether the key is a SQL or teradataml key.
268
- Types: bool
269
- Default Value: False
270
-
271
- RETURNS:
272
- A tuple containing:
273
- * A boolean value indicating whether the argument is or has:
274
- - a client-only specific argument: True
275
- - else False
276
- * A string specifying whether it is used in sequence_column ('used_in_sequence_by') or formula ('used_in_formula')
277
-
278
- EXAMPLES:
279
- >>> client_only, where_used = __check_if_client_specific_use(key, function_arg_map, is_sql_name=False)
280
- """
281
- # Let's assume SQL Name was passed
282
- sql_name = key
283
-
284
- if not is_sql_name:
285
- if key in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
286
- sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.ARGUMENTS.value, name=key)
287
- else:
288
- # No SQL name found for given teradataml input name
289
- return False, None
290
-
291
- if isinstance(sql_name, dict):
292
- sql_name = sql_name[famc.TDML_NAME.value]
293
-
294
- if isinstance(sql_name, list):
295
- sql_name = sql_name[0]
296
-
297
- # Check if SQL name is an alternate name
298
- sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name]
299
- if famc.ALTERNATE_TO.value in sql_block:
300
- alternate_to = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.ALTERNATE_TO.value]
301
- sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_to]
302
-
303
- # Check and return boolean indicating if it is a formula or sequence_input_by argument
304
- if famc.USED_IN_SEQUENCE_INPUT_BY.value in sql_block:
305
- return True, famc.USED_IN_SEQUENCE_INPUT_BY.value
306
- elif famc.USED_IN_FORMULA.value in sql_block:
307
- return True, famc.USED_IN_FORMULA.value
308
- else:
309
- return False, None
310
-
311
-
312
- def __get_model_parameters(model, function_arg_map):
313
- """
314
- DESCRIPTION:
315
- Internal function to get parameter information of the model to be saved.
316
-
317
- PARAMETERS:
318
- model:
319
- Required argument.
320
- The model (analytic function object instance) to be saved.
321
- Types: teradataml Analytic Function object.
322
-
323
- function_arg_map:
324
- Required argument.
325
- The teradataml-sql map for the function obtained using function_argument_mapper.
326
- Types: dict
327
-
328
- RETURNS:
329
- A dict containing the information about parameters passed to model.
330
-
331
- EXAMPLES:
332
- >>> model_parameters = __get_model_parameters(model, function_arg_map)
333
- """
334
- parameter_json = {}
335
-
336
- # Get the attributes that are specific to the SQL syntax of the model algorithm
337
- sql_specific_attributes = model._get_sql_specific_attributes()
338
-
339
- # First, let's identify the parameters
340
- nonsql_argument_counter = 1
341
- for key in model.__dict__:
342
- if not key.startswith('_'):
343
- member = getattr(model, key)
344
- # Check if this is an attribute, not a DataFrame
345
- if not isinstance(member, DataFrame) and key != "sqlmr_query":
346
- # Check if it is a special or client specific argument
347
- special_use, used_in = __check_if_client_specific_use(key, function_arg_map)
348
-
349
- value = member
350
- # Add quotes to Boolean values as they tend to be handled in unintended way with JSON.
351
- if type(member) == bool or key == famc.TDML_FORMULA_NAME.value:
352
- value = str(member)
353
- else:
354
- if isinstance(member, list):
355
- # We try to save the list as a string representation that could readily be used,
356
- # in SQL, and has no language specific representation.
357
- # Here, we remove the '[' and ']' from the string representation.
358
- # We also avoid adding quotes around single-item list.
359
- if len(member) == 1:
360
- value = str(member[0]) if type(member[0]) == bool else member[0]
361
- elif len(member) > 1:
362
- if type(member[0]) == bool:
363
- member = ['{}'.format(val) for val in member]
364
- value = str(member).lstrip('[').rstrip(']')
365
- else:
366
- # Empty list has no meaning, but no chance of running into this with the validation
367
- # in the function wrappers.
368
- value = None
369
- if value is not None:
370
- if special_use:
371
- sql_name = '__nonsql_argument_{}__'.format(nonsql_argument_counter)
372
- nonsql_argument_counter = nonsql_argument_counter + 1
373
- else:
374
- sql_name = __get_arg_sql_name_from_tdml(function_arg_map,arg_type=famc.ARGUMENTS.value,name=key)
375
- parameter_json[sql_name] = {}
376
- parameter_json[sql_name]["value"] = value
377
- parameter_json[sql_name]["client_specific_name"] = key
378
-
379
- sql_name = '__nonsql_argument_{}__'.format(nonsql_argument_counter)
380
- parameter_json[sql_name] = {}
381
- parameter_json[sql_name]["value"] = model.__class__.__name__
382
- parameter_json[sql_name]["client_specific_name"] = "__class_name__"
383
-
384
- # Add the SQL specific arguments
385
- for sql_name in sql_specific_attributes:
386
- parameter_json[sql_name] = {}
387
- parameter_json[sql_name]["value"] = sql_specific_attributes[sql_name]
388
- # Also save the formula related property names for corresponding SQL arguments
389
- if hasattr(model, '_sql_formula_attribute_mapper'):
390
- if sql_name in model._sql_formula_attribute_mapper:
391
- parameter_json[sql_name]["client_specific_name"] = model._sql_formula_attribute_mapper[sql_name]
392
-
393
- return parameter_json
394
-
395
-
396
- def __check_if_model_exists(name, created=False, accessible=False,
397
- raise_error_if_exists=False, raise_error_if_model_not_found=False):
398
- """
399
- DESCRIPTION:
400
- Internal function to check if model with model_name, exists or not.
401
-
402
- PARAMETERS:
403
- name:
404
- Required Argument.
405
- Specifies the name of the model to check whether it exists or not.
406
- Types: str
407
-
408
- created:
409
- Optional Argument.
410
- Specifies whether to check if the model exists and is created by the user.
411
- Default Value: False (Check for all models)
412
- Types: bool
413
-
414
- accessible:
415
- Optional Argument.
416
- Specifies whether to check if the model exists and is accessible by the user.
417
- Default Value: False (Check for all models)
418
- Types: bool
419
-
420
- raise_error_if_exists:
421
- Optional Argument.
422
- Specifies the flag to decide whether to raise error when model exists or not.
423
- Default Value: False (Do not raise exception)
424
- Types: bool
425
-
426
- raise_error_if_model_not_found:
427
- Optional Argument.
428
- Specifies the flag to decide whether to raise error when model is found or not.
429
- Default Value: False (Do not raise exception)
430
- Types: bool
431
-
432
- RETURNS:
433
- None.
434
-
435
- RAISES:
436
- TeradataMlException - MODEL_ALREADY_EXISTS, MODEL_NOT_FOUND
437
-
438
- EXAMPLES:
439
- >>> meta_df = __check_if_model_exists("glm_out")
440
- """
441
- # Get the DataFrame for the Models metadata table.
442
- if created:
443
- current_user = __get_current_user()
444
- models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
445
- models_meta_df = models_meta_df[models_meta_df[mac.CREATED_BY.value].str.lower() == current_user.lower()]
446
- elif accessible:
447
- models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELSX.value))
448
- else:
449
- models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
450
-
451
- # Get the model created by current client user, using teradataml, with name as model_name.
452
- model_name = models_meta_df.Name
453
-
454
- # Filter Expression.
455
- if name is not None:
456
- models_meta_df = models_meta_df[model_name == name]
457
-
458
- num_rows = models_meta_df.shape[0]
459
-
460
- if raise_error_if_exists:
461
- if num_rows == 1 and name is not None:
462
- # If model with name 'name' already exists.
463
- raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_ALREADY_EXISTS,
464
- name),
465
- MessageCodes.MODEL_ALREADY_EXISTS)
466
-
467
- if raise_error_if_model_not_found:
468
- if num_rows == 0:
469
- if not created:
470
- # 'name' MODEL_NOT_FOUND
471
- raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
472
- name, ''),
473
- MessageCodes.MODEL_NOT_FOUND)
474
- else:
475
- # 'name' MODEL_NOT_FOUND or not created by user.
476
- raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
477
- name, ' or not created by user'),
478
- MessageCodes.MODEL_NOT_FOUND)
479
-
480
-
481
- def __check_if_model_cataloging_tables_exists(raise_error_if_does_not_exists=True):
482
- """
483
- DESCRIPTION:
484
- Check whether Model Cataloging tables (one of the views - ModelCataloging.ModelsV) exists or not.
485
-
486
- PARAMETERS:
487
- raise_error_if_does_not_exists:
488
- Optional Argument.
489
- Specifies the flag to decide whether to raise error when Model Cataloging tables does not exist.
490
- Default Value: True (Raise exception)
491
- Types: bool
492
-
493
- RAISES:
494
- None.
495
-
496
- RETURNS:
497
- True, if the view exists, else False.
498
-
499
- EXAMPLES:
500
- >>> __check_if_model_cataloging_tables_exists()
501
- """
502
- # Get current connection().
503
- conn = get_connection()
504
-
505
- # Check whether tables exists on the system or not.
506
- model_table_exists = conn.dialect.has_view(conn, view_name=mac.MODELS.value,
507
- schema=mac.MODEL_CATALOG_DB.value)
508
-
509
- # If both tables exist, return True.
510
- if model_table_exists:
511
- return True
512
-
513
- # We are here means the Model Cataloging view does not exist.
514
- # Let's raise error if 'raise_error_if_does_not_exists' set to True.
515
- if raise_error_if_does_not_exists:
516
- # Raise error, as one or both Model Cataloging tables does not exist.
517
- # MODEL_CATALOGING_TABLE_DOES_EXIST
518
- raise TeradataMlException(
519
- Messages.get_message(MessageCodes.MODEL_CATALOGING_TABLE_DOES_EXIST),
520
- MessageCodes.MODEL_CATALOGING_TABLE_DOES_EXIST)
521
-
522
-
523
- def __get_tables_for_model(name, current_user):
524
- """
525
- DESCRIPTION:
526
- Function to get model tables for a given model name.
527
-
528
- PARAMETERS:
529
- name:
530
- Required Argument.
531
- Specifies the name of the model to get the model tables for.
532
- Types: str
533
-
534
- current_user:
535
- Required Argument.
536
- Specifies the name of the current Vantage user.
537
- Types: str
538
-
539
- RETURNS:
540
- A list of model tables associated with the model.
541
-
542
- EXAMPLES:
543
- >>> table_list = __get_tables_for_model(name, current_user)
544
- """
545
- # Get list of tables
546
- model_object_info = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_OBJECTS.value))
547
- model_info = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELSX.value))
548
- model_info = model_info[model_info[mac.CREATED_BY.value].str.lower() == current_user.lower()]
549
- model_info = model_info[model_info[mac.MODEL_NAME.value] == name]
550
- model_objects_to_publish = model_info.join(model_object_info,
551
- on=[model_info.Name == model_object_info.ModelName],
552
- how='inner').select([mac.MODEL_OBJ_TABLE_NAME.value])
553
-
554
- model_objects_to_publish = model_objects_to_publish.to_pandas().squeeze()
555
- if isinstance(model_objects_to_publish, str):
556
- # If there is only one output table
557
- return [model_objects_to_publish]
558
- else:
559
- # For multiple or no output tables
560
- return model_objects_to_publish.tolist()
561
-
562
-
563
- def __get_current_user(conn=None):
564
- """
565
- DESCRIPTION:
566
- Internal function to return the current Vantage user
567
-
568
- PARAMETERS:
569
- conn:
570
- Optional Argument,
571
- The underlying SQLAlchemy engine for the connection.
572
- Types: SQLAlchemy engine
573
-
574
- RETURNS:
575
- A string representing the name of the current database user.
576
-
577
- EXAMPLE:
578
- >>> current_user = __get_current_user()
579
- """
580
- if conn is None:
581
- conn = get_connection()
582
-
583
- return execute_sql('select user').fetchall()[0][0]
584
-
585
-
586
- def __get_like_filter_expression_on_col(metaexpr, column_name, like):
587
- """
588
- DESCRIPTION:
589
- Internal function to get the filter expression on column_name containing string matching with like.
590
- (Case insensitive matching)
591
-
592
- PARAMETERS:
593
- metaexpr:
594
- Required Argument.
595
- Specifies the teradataml DataFrame meta data.
596
- Types: _MetaExpression
597
-
598
- column_name:
599
- Required Argument.
600
- Specifies the column name which is to be used in filter expression.
601
- Types: str
602
-
603
- like:
604
- Required Argument.
605
- Specifies the pattern to be matched in filter expression.
606
- Types: str
607
-
608
- RETURNS:
609
- _SQLColumnExpression object
610
-
611
- RAISES:
612
- None
613
-
614
- EXAMPLES:
615
- >>> filter_expression = __get_like_filter_expression_on_col(models_meta_df._metaexpr,
616
- ... mmc.MMT_COL_model_class.value,
617
- ... function_name)
618
- """
619
- return metaexpr._filter(0, 'like', [column_name], like = like, match_arg='i')
620
-
621
-
622
- def __get_model_engine(model):
623
- """
624
- DESCRIPTION:
625
- Internal function to return the engine name on which the model was generated.
626
-
627
- PARAMETERS:
628
- model:
629
- Required Argument.
630
- Model object, for which engine is to be found.
631
- Types: str
632
-
633
- RETURNS:
634
- Engine name ('ML Engine' or 'Advanced SQL Engine')
635
-
636
- RAISES:
637
- TeradataMlException
638
-
639
- EXAMPLES:
640
- >>> __get_model_engine(model)
641
- """
642
- if ".mle." in str(type(model)):
643
- return mac.MODEL_ENGINE_ML.value
644
- elif ".sqle." in str(type(model)):
645
- return mac.MODEL_ENGINE_ADVSQL.value
646
- else:
647
- raise TeradataMlException(Messages.get_message(MessageCodes.UNKNOWN_MODEL_ENGINE,
648
- str(type(model))),
649
- MessageCodes.UNKNOWN_MODEL_ENGINE)
650
-
651
-
652
- def __get_wrapper_class(model_engine, model_class):
653
- """
654
- DESCRIPTION:
655
- Internal function to the wrapper class that can be executed to create the instance of the
656
- model_class from engine specified in model_engine.
657
-
658
- PARAMETERS:
659
- model_engine:
660
- Required Argument.
661
- Model engine string 'ML Engine' or 'Advanced SQL Engine'.
662
- Types: str
663
-
664
- model_class:
665
- Required Argument.
666
- Model class string for the analytical function wrapper.
667
- Types: str
668
-
669
- RETURNS:
670
- A wrapper CLASS
671
-
672
- RAISES:
673
- ValueError - When invalid engine is passed.
674
- AttributeError - When model_class wrapper function, does is not from model_engine.
675
-
676
- EXAMPLES:
677
- >>> __get_wrapper_class("ML Engine", "GLM")
678
- """
679
- if model_engine == mac.MODEL_ENGINE_ML.value:
680
- module_name = "teradataml.analytics.mle"
681
- elif model_engine == mac.MODEL_ENGINE_ADVSQL.value:
682
- module_name = "teradataml.analytics.sqle"
683
- else:
684
- raise ValueError("Invalid Engine found in Model Cataloging table.")
685
-
686
- wrapper_module = importlib.import_module(module_name)
687
-
688
- return getattr(wrapper_module, model_class)
689
-
690
-
691
- def __is_view(tablename):
692
- """
693
- DESCRIPTION:
694
- Internal function to check whether the object is view or not.
695
-
696
- PARAMETERS:
697
- tablename:
698
- Required Argument.
699
- Table name or view name to be checked.
700
- Types: str
701
-
702
- RAISES:
703
- None.
704
-
705
- RETURNS:
706
- True when the tablename is view, else false.
707
-
708
- EXAMPLES:
709
- >>> __is_view('"dbaname"."tablename"')
710
- """
711
- db_name = UtilFuncs._teradata_unquote_arg(UtilFuncs._extract_db_name(tablename), "\"")
712
- table_view_name = UtilFuncs._teradata_unquote_arg(UtilFuncs._extract_table_name(tablename), "\"")
713
- query = SQLBundle._build_select_table_kind(db_name, "{0}".format(table_view_name), "'V'")
714
-
715
- pdf = pd.read_sql(query, get_context())
716
- if pdf.shape[0] > 0:
717
- return True
718
- else:
719
- return False
720
-
721
-
722
- def __delete_model_tableview(tableviewname):
723
- """
724
- DESCRIPTION:
725
- Internal function to remove table name or view.
726
-
727
- PARAMETERS:
728
- tableviewname:
729
- Required Argument.
730
- Table name or view name to be deleted.
731
- Types: str
732
-
733
- RAISES:
734
- None.
735
-
736
- RETURNS:
737
- bool
738
-
739
- EXAMPLES:
740
- >>> __delete_model_tableview('"dbname"."tableviewname"')
741
- """
742
- if not __is_view(tableviewname):
743
- try:
744
- UtilFuncs._drop_table(tableviewname)
745
- except:
746
- return False
747
- else:
748
- try:
749
- UtilFuncs._drop_view(tableviewname)
750
- except:
751
- return False
752
-
753
- return True
754
-
755
-
756
- def __get_all_formula_related_args(function_arg_map):
757
- """
758
- DESCRIPTION:
759
- Internal function to find a list of all formula related arguments for a function.
760
-
761
- PARAMETERS:
762
- function_arg_map:
763
- Required Argument.
764
- The teradataml-sql map for the function obtained using function_argument_mapper.
765
- Types: dict
766
-
767
- RETURNS:
768
- A dictionary mapping all SQL Arguments for the function related to formula to its role in formula.
769
-
770
- EXAMPLE:
771
- >>> __get_all_formula_related_args(function_arg_map)
772
- """
773
- formula_args = {}
774
- for arg_name in function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value]:
775
- arg = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][arg_name]
776
- # Ignore alternate names
777
- if famc.ALTERNATE_TO.value in arg:
778
- alternate_name = arg[famc.ALTERNATE_TO.value]
779
- arg = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_name]
780
-
781
- if famc.USED_IN_FORMULA.value in arg:
782
- formula_args[arg_name] = {}
783
- formula_args[arg_name][famc.USED_IN_FORMULA.value] = arg[famc.USED_IN_FORMULA.value]
784
- formula_args[arg_name]['arg_value'] = None
785
-
786
- return formula_args
787
-
788
-
789
- def __fix_imbalanced_quotes(arg):
790
- """
791
- DESCRIPTION:
792
- Internal function to fix imbalanced quotes around a string.
793
-
794
- PARAMETERS:
795
- arg:
796
- Required Argument.
797
- The string to fix the imbalanced quotes for, if any.
798
- Types: str
799
-
800
- RETURNS:
801
- The input string with any imbalanced quotes stripped.
802
-
803
- EXAMPLE:
804
- >>> __fix_imbalanced_quotes('hello"')
805
- hello
806
- """
807
- for quote in ["'", '"']:
808
- if (arg.startswith(quote) and not arg.endswith(quote)) or (not arg.startswith(quote) and arg.endswith(quote)):
809
- return arg.strip(quote)
810
-
811
- return arg
812
-
813
-
814
- def __get_tdml_parameter_value_for_sequence(function_arg_map, attr_value):
815
- """
816
- DESCRIPTION:
817
- Internal function to form sequence_column teradataml argument from SQL arguments.
818
-
819
- PARAMETERS:
820
- function_arg_map:
821
- Required Argument.
822
- The teradataml-sql map for the function obtained using function_argument_mapper.
823
- Types: dict
824
-
825
- attr_value:
826
- Required Argument.
827
- The value of the SQL sequence argument.
828
-
829
- RETURNS:
830
- A dictionary mapping the teradataml sequence argument to its values.
831
-
832
- EXAMPLES:
833
- >>> tdml_sequence_args = __get_tdml_parameter_value_for_sequence(function_arg_map, sql_sequence_arg)
834
- """
835
- sequence_dict = {}
836
- tdml_name = None
837
- for column in attr_value.split(','):
838
- if len(column) == 0:
839
- continue
840
- if ':' in column:
841
- input_name, col_val = column.split(':')
842
- input_name = __fix_imbalanced_quotes(input_name)
843
- col_val = __fix_imbalanced_quotes(col_val)
844
- tdml_name = '{}_{}'.format(__get_arg_tdml_name_from_sql(function_arg_map, famc.INPUTS.value,
845
- input_name.lower()),
846
- 'sequence_column')
847
- tdml_name = __fix_imbalanced_quotes(tdml_name)
848
- sequence_dict[tdml_name] = [col_val]
849
- else:
850
- if tdml_name not in sequence_dict:
851
- # This means there is only one input and the input name was not specified in the
852
- # SequenceInputBy clause. So we get the only input name.
853
- tdml_name = list(function_arg_map[famc.INPUTS.value][famc.TDML_TO_SQL.value].keys())[0]
854
- tdml_name = '{}_{}'.format(tdml_name, 'sequence_column')
855
- sequence_dict[tdml_name] = []
856
- column = __fix_imbalanced_quotes(column)
857
- sequence_dict[tdml_name].append(column)
858
-
859
- return sequence_dict
860
-
861
-
862
- def __get_target_column(name):
863
- """
864
- DESCRIPTION:
865
- Internal function to get the target column of a saved model.
866
-
867
- PARAMETERS:
868
- name:
869
- Required Argument.
870
- Specifies the name used to save the model.
871
- Types: str
872
-
873
- RETURNS:
874
- A String representing the name of the target column.
875
-
876
- EXAMPLES:
877
- >>> target_column = __get_target_column('GLMModel')
878
- """
879
- model_details = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILSX.value))
880
- model_details = model_details[model_details[mac.MODEL_DERIVED_NAME.value] == name]
881
- target_column = model_details.select([mac.MODEL_DERIVED_TARGET_COLUMN.value]).squeeze()
882
- return target_column
883
-
884
-
885
- def __get_tdml_parameter_value_for_formula(formula_args, target_column):
886
- """
887
- DESCRIPTION:
888
- Internal function to build the formula argument based on the SQL equivalent inputs.
889
-
890
- PARAMETERS:
891
- formula_args:
892
- Required Argument.
893
- A dictionary mapping all SQL Arguments for the function related to formula to its role in formula.
894
- Types: dict
895
-
896
- target_column:
897
- Required Argument.
898
- The target column for the model, if any.
899
- Types: str
900
-
901
- RETURNS:
902
- A String representing the formula argument to be used with teradataml.
903
-
904
- EXAMPLES:
905
- >>> formula = __get_tdml_parameter_value_for_formula(formula_args, target_column)
906
- """
907
- dependent_var = target_column
908
- all_vars = []
909
-
910
- for arg in formula_args:
911
- if formula_args[arg]['arg_value'] is not None:
912
- if formula_args[arg][famc.USED_IN_FORMULA.value] == famc.DEPENDENT_ATTR.value:
913
- dependent_var = formula_args[arg]['arg_value'].strip("'")
914
- else:
915
- all_vars.extend(formula_args[arg]['arg_value'].split(','))
916
-
917
- # Remove duplicates
918
- all_vars = list(set(all_vars))
919
- all_vars = [var.strip("'") for var in all_vars]
920
-
921
- # Remove dependent variable if it occurs in all_vars
922
- if dependent_var in all_vars:
923
- all_vars.pop(all_vars.index(dependent_var))
924
-
925
- formula = '{} ~ {}'.format(dependent_var, ' + '. join(all_vars))
926
- return formula
927
-
928
-
929
- def __cast_arg_values_to_tdml_types(value, type_):
930
- """
931
- DESCRIPTION:
932
- Internal function used by retrieve_model() to cast the retrieved model parameters to the expected python types.
933
-
934
- PARAMETERS:
935
- value:
936
- Required Argument.
937
- Specifies the value retrieved that needs a type cast.
938
- Types: str
939
-
940
- type_:
941
- Required Argument.
942
- Specifies the Python type the value needs to be cast to.
943
- Type: Python type or tuple of Python types
944
-
945
- RETURNS:
946
- The value cast to the required Python type.
947
-
948
- RAISES:
949
- None
950
-
951
- EXAMPLE:
952
- >>> cast_value = __cast_arg_values_to_tdml_types('0.1', float)
953
- """
954
- return_value = None
955
- required_type = type_
956
-
957
- accepted_bool_values = ['1', 't', 'true', 'y', 'yes']
958
-
959
- # If the required_type is a tuple, we need to consider the possibility of the value being a list
960
- if isinstance(required_type, tuple):
961
- # The function_argument_mapper adds the type of the object in the list as the first value in the tuple
962
- required_type = required_type[0]
963
-
964
- # Use regex to split the string value into a list.
965
- # This is required only when we expect the values to be a list as well, in which case,
966
- # the 'value' will be a comma-separated list of strings.
967
- # The pattern matches anything but whitespace and comma and not in quotes, or anything in quotes,
968
- # basically avoiding splitting on a comma when surrounded by quotes.
969
- pattern = r"[^',\s]+|'[^']*'"
970
- values = re.findall(pattern, value)
971
- if len(values) > 1:
972
- if required_type == bool:
973
- # Remove the quotes surrounding items in a list,
974
- # and check for their presence in the acceptable TRUE values.
975
- return_value = [val.strip().strip("'").lower() in accepted_bool_values for val in values]
976
- else:
977
- # Remove the quotes surrounding items in a list cast them to the required type.
978
- return_value = [required_type(val.strip().strip("'")) for val in values]
979
- else:
980
- value = values[0]
981
-
982
- if return_value is None:
983
- if required_type == bool:
984
- # Remove the quotes surrounding the value,
985
- # and check for their presence in the acceptable TRUE values.
986
- return_value = value.strip().strip("'").lower() in accepted_bool_values
987
- else:
988
- # Remove the quotes surrounding the value and cast it to the required type.
989
- return_value = required_type(value.strip().strip("'"))
990
-
991
- return return_value
992
-
993
-
994
- def __get_model_access(name):
995
- """
996
- DESCRIPTION:
997
- Internal function to get the current access level of a saved model.
998
-
999
- PARAMETERS:
1000
- name:
1001
- Required Argument.
1002
- Specifies the name of the saved model to get the access level for.
1003
- Types: str
1004
-
1005
- RAISES:
1006
- None.
1007
-
1008
- RETURNS:
1009
- A String representing the access level of the saved model.
1010
-
1011
- EXAMPLES:
1012
- >>> __get_model_access('saved_glm_model')
1013
- """
1014
- df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILS.value))
1015
- return df[df[mac.MODEL_DERIVED_NAME.value] == name].select([mac.MODEL_ACCESS.value]).squeeze()
1016
-
1017
-
1018
- def __get_tdml_type_for_tdml_arg(name, function_arg_map):
1019
- """
1020
- DESCRIPTION:
1021
- Internal function to get the Python type for the given teradataml model class attribute.
1022
-
1023
- PARAMETERS:
1024
- name:
1025
- Required Argument.
1026
- Specifies the teradataml name for the attribute to get the expected python type for.
1027
- Types: str
1028
-
1029
- function_arg_map:
1030
- Required Argument.
1031
- Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
1032
- Types: dict
1033
-
1034
- RETURNS:
1035
- Python type for the given teradataml model class attribute name.
1036
- None when argument name not found.
1037
-
1038
- RAISES:
1039
- None
1040
-
1041
- EXAMPLES:
1042
- >>> from teradataml.catalog.function_argument_mapper import _argument_mapper
1043
- >>> function_arg_map = _argument_mapper._get_function_map('ML Engine', 'glm')
1044
- >>> tdml_type = __get_tdml_type_for_tdml_arg('linkfunction', function_arg_map)
1045
- """
1046
- # Let's check if the function argument mapper has the information about the argument we are looking for.
1047
- # If not, let's return None.
1048
- if name not in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
1049
- return None
1050
-
1051
- tdml_type = str
1052
- sql_name = function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value][name]
1053
-
1054
- # We can ignore formula letting it default to str
1055
- special_use, used_in = __check_if_client_specific_use(name, function_arg_map)
1056
- if not special_use or used_in == famc.USED_IN_SEQUENCE_INPUT_BY.value:
1057
- tdml_type = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.TDML_TYPE.value]
1058
-
1059
- return tdml_type
1060
-
1061
-
1062
- def __retrieve_model_class(name, model_client, function_arg_map):
1063
- """
1064
- DESCRIPTION:
1065
- Internal function to get the teradataml class used for generating model given it's name.
1066
-
1067
- PARAMETERS:
1068
- name:
1069
- Optional Argument. Required when model was saved by teradataml.
1070
- Specifies the name of the model to retrieve the model attributes and output information for.
1071
- Types: str
1072
-
1073
- model_client:
1074
- Required Argument.
1075
- Specified the name of the client used to generate the model.
1076
- Types: str
1077
-
1078
- function_arg_map:
1079
- Optional Argument. Required when model was not saved by teradataml.
1080
- Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
1081
- Types: dict
1082
-
1083
- RETURNS:
1084
- A String representing the teradataml class name corresponding to the model.
1085
-
1086
- EXAMPLES:
1087
- >>> model_class = __retrieve_model_class(name, model_client, function_arg_map)
1088
- """
1089
- if model_client == mac.MODEL_TDML.value:
1090
- # Create DF on top of ModelAttributesV view
1091
- model_arguments = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_ATTRS.value))
1092
- model_arguments = model_arguments[model_arguments[mac.MODEL_DERIVED_NAME.value] == name]
1093
- model_class = model_arguments[model_arguments.ClientSpecificAttributeName.str.
1094
- contains(mac.MODEL_CLIENT_CLASS_KEY.value) == 1].\
1095
- select([mac.MODEL_ATTR_VALUE.value]).squeeze()
1096
- else:
1097
- model_class = function_arg_map[famc.FUNCTION_TDML_NAME.value]
1098
-
1099
- return model_class
1100
-
1101
-
1102
- def __retrieve_model_client_engine_algorithm(name, return_details=False):
1103
- """
1104
- DESCRIPTION:
1105
- Internal function to get the the model generating engine, client, algorithm, and optionally the model details
1106
- given the model name.
1107
-
1108
- PARAMETERS:
1109
- name:
1110
- Required Argument.
1111
- Specifies the name of the model to retrieve the model attributes and output information for.
1112
- Types: str
1113
-
1114
- return_details:
1115
- Optional Argument.
1116
- Specifies whether to also return the row from the ModelDetailsV corresponding to the model.
1117
- Types: bool
1118
- Default Value: False
1119
-
1120
- RETURNS:
1121
- A tuple containing:
1122
- * the name of the client that was used to generate the model,
1123
- * the name of the engine that generated the model, and
1124
- * the name of the algorithm used to generate the model.
1125
- * If return_details=True, then additionally, the ModelDetailsV row related to the model.
1126
-
1127
- EXAMPLES:
1128
- >>> model_client, model_engine, algorithm = __retrieve_model_client_engine_algorithm(name)
1129
- """
1130
-
1131
- model_details = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILS.value))
1132
- model_details = model_details[model_details[mac.MODEL_DERIVED_NAME.value] == name]
1133
- model_algorithm = model_details.select([mac.MODEL_DERIVED_ALGORITHM.value]).squeeze().lower()
1134
-
1135
- model_client_and_eng = model_details.select([mac.MODEL_DERIVED_GENCLIENT.value,
1136
- mac.MODEL_DERIVED_GENENG.value]).squeeze()
1137
-
1138
- model_client = model_client_and_eng.select([mac.MODEL_DERIVED_GENCLIENT.value]).squeeze()
1139
- model_engine = model_client_and_eng.select([mac.MODEL_DERIVED_GENENG.value]).squeeze()
1140
-
1141
- if return_details:
1142
- return model_client, model_engine, model_algorithm, model_details
1143
- else:
1144
- return model_client, model_engine, model_algorithm
1145
-
1146
-
1147
- def __retrieve_model_attributes(name, model_client, function_arg_map):
1148
- """
1149
- DESCRIPTION:
1150
- Internal function to get the the attributes used for generating model given it's name.
1151
-
1152
- PARAMETERS:
1153
- name:
1154
- Required Argument.
1155
- Specifies the name of the model to retrieve the model attributes and output information for.
1156
- Types: str
1157
-
1158
- model_client:
1159
- Required Argument.
1160
- Specified the name of the engine that generated the model.
1161
- Types: str
1162
-
1163
- function_arg_map:
1164
- Required Argument.
1165
- Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
1166
- Types: dict
1167
-
1168
- RETURNS:
1169
- A tuple of dictionaries:
1170
- * the first one containing the attribute names and their values, and
1171
- * the second one containing the formula related properties and their values, if the model saving client was
1172
- teradataml.
1173
-
1174
- EXAMPLES:
1175
- >>> model_parameters, formula_related_params = __retrieve_model_attributes(name, model_client, function_arg_map)
1176
- """
1177
- # Create DF on top of ModelAttributesV view and
1178
- # 1. get only rows related to the model named 'name'.
1179
- model_arguments = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_ATTRS.value))
1180
- model_arguments = model_arguments[model_arguments[mac.MODEL_DERIVED_NAME.value] == name]
1181
-
1182
- if model_client == mac.MODEL_TDML.value:
1183
- attr_name_to_use = mac.MODEL_ATTR_CLIENT_NAME.value
1184
- else:
1185
- attr_name_to_use = mac.MODEL_ATTR_NAME.value
1186
-
1187
- if model_client != mac.MODEL_TDML.value:
1188
- # 2. Filter out the the row where "AttributeName" is not like __nonsql_argument_
1189
- model_arguments = model_arguments.assign(notSqlonly=model_arguments.AttributeName.str.contains('__nonsql_argument_'))
1190
- model_arguments = model_arguments[model_arguments.notSqlonly == 0]
1191
- else:
1192
- # 2. Filter out the the row where "ClientSpecificAttributeName" is not NULL
1193
- model_arguments = model_arguments[model_arguments[attr_name_to_use] != None]
1194
-
1195
- # Make sure the non-lazy view exists before SQLAlchemy construct can be used
1196
- if model_arguments._table_name is None:
1197
- model_arguments._table_name = df_utils._execute_node_return_db_object_name(model_arguments._nodeid,
1198
- model_arguments._metaexpr)
1199
-
1200
- # Since lengthier arguments can be a clob column, casting the smaller to clob
1201
- # to select one of the two as applicable without values being truncated.
1202
- select_expression = [model_arguments[attr_name_to_use].expression.label("AttrName"),
1203
- case_when([(model_arguments[mac.MODEL_ATTR_VALUE.value].expression == None,
1204
- model_arguments[mac.MODEL_ATTR_VALUEC.value].expression)],
1205
- else_=func.cast(model_arguments[mac.MODEL_ATTR_VALUE.value].expression,
1206
- type_=CLOB)).expression.label("AttrValue")]
1207
-
1208
- # Get the final list of AttNames (Client/SQL) and their values (CLOB type)
1209
- final_list = DataFrame.from_query(str(select(select_expression).compile(compile_kwargs={"literal_binds": True})))
1210
-
1211
- # Model Parameters
1212
- final_list = final_list[final_list["AttrName"] != mac.MODEL_CLIENT_CLASS_KEY.value]
1213
- params = final_list.to_pandas().to_dict()
1214
- model_parameters = {}
1215
- formula_related_params = {}
1216
-
1217
- index_len = len(params["AttrName"])
1218
- if model_client == mac.MODEL_TDML.value:
1219
- for i in range(index_len):
1220
- # Check if the arguments are related to formula
1221
- if params["AttrName"][i] == '__all_columns':
1222
- formula_related_params['__all_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
1223
- (str, list))
1224
- elif params["AttrName"][i] == '__numeric_columns':
1225
- formula_related_params['__numeric_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
1226
- (str, list))
1227
- elif params["AttrName"][i] == '__categorical_columns':
1228
- formula_related_params['__categorical_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"]
1229
- [i], (str, list))
1230
- elif params["AttrName"][i] == '__response_column':
1231
- formula_related_params['__response_column'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
1232
- str)
1233
- else:
1234
- tdml_type = __get_tdml_type_for_tdml_arg(params["AttrName"][i], function_arg_map)
1235
- # tdml_type can be None when we do not have information about the argument in
1236
- # the function argument mapper. Let's ignore it in the retrieval.
1237
- if tdml_type is not None:
1238
- model_parameters[params["AttrName"][i]] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
1239
- tdml_type)
1240
- else:
1241
- formula_args = None
1242
- for i in range(index_len):
1243
- model_param_name = __get_arg_tdml_name_from_sql(function_arg_map,
1244
- arg_type=famc.ARGUMENTS.value,
1245
- name=params["AttrName"][i].lower())
1246
-
1247
- attr_value = params["AttrValue"][i]
1248
-
1249
- special_use, used_in = __check_if_client_specific_use(params["AttrName"][i].lower(),
1250
- function_arg_map, is_sql_name=True)
1251
- if special_use:
1252
- if used_in == famc.USED_IN_FORMULA.value:
1253
- # Get formula
1254
- if formula_args is None:
1255
- formula_args = __get_all_formula_related_args(function_arg_map)
1256
- formula_args[params["AttrName"][i].lower()]['arg_value'] = attr_value
1257
- else:
1258
- # Get dictionary of sequence_column arguments
1259
- sequence_by = __get_tdml_parameter_value_for_sequence(function_arg_map, attr_value)
1260
- if sequence_by:
1261
- for seq_key in sequence_by:
1262
- model_parameters[seq_key] = sequence_by[seq_key]
1263
- else:
1264
- # tdml_name can be None when we do not have information about the SQL argument in
1265
- # the function argument mapper. Let's ignore it in the retrieval.
1266
- if model_param_name is None:
1267
- warnings.warn(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME,
1268
- params["AttrName"][i]))
1269
- continue
1270
- model_param_type = model_param_name[famc.TDML_TYPE.value]
1271
- model_param_name = model_param_name[famc.TDML_NAME.value]
1272
- model_parameters[model_param_name] = __cast_arg_values_to_tdml_types(attr_value,
1273
- model_param_type)
1274
-
1275
- if formula_args is not None:
1276
- formula = __get_tdml_parameter_value_for_formula(formula_args, __get_target_column(name))
1277
- model_parameters[famc.TDML_FORMULA_NAME.value] = formula
1278
-
1279
- return model_parameters, formula_related_params
1280
-
1281
-
1282
- def __retrieve_model_outputs(name, model_client, function_arg_map):
1283
- """
1284
- DESCRIPTION:
1285
- Internal function to get the output DataFrames corresponding to a saved model given it's name.
1286
-
1287
- PARAMETERS:
1288
- name:
1289
- Required Argument.
1290
- Specifies the name of the model to retrieve the model output information for.
1291
- Types: str
1292
-
1293
- model_client:
1294
- Required Argument.
1295
- Specifies the name of the client that generated the model.
1296
- Types: str
1297
-
1298
- function_arg_map:
1299
- Required Argument.
1300
- Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
1301
- Types: dict
1302
-
1303
- RAISES:
1304
- TeradataMlException
1305
-
1306
- RETURNS:
1307
- A Pandas DataFrame with the teradataml specific name for the output, and the underlying
1308
- table names corresponding to them.
1309
-
1310
- EXAMPLES:
1311
- >>> output_df = __retrieve_model_outputs(name, model_client, function_arg_map)
1312
- """
1313
- # Let's also get the output table map
1314
- model_outputs = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_OBJECTS.value))
1315
- model_outputs = model_outputs[model_outputs[mac.MODEL_DERIVED_NAME.value] == name]
1316
- if model_client == mac.MODEL_TDML.value:
1317
- model_outputs = model_outputs.assign(drop_columns=True,
1318
- OutputName=model_outputs[mac.MODEL_OBJ_CLIENT_NAME.value],
1319
- OutputTableName=model_outputs[mac.MODEL_OBJ_TABLE_NAME.value]).to_pandas()
1320
- else:
1321
- model_outputs = model_outputs.assign(drop_columns=True,
1322
- OutputName=model_outputs[mac.MODEL_OBJ_NAME.value],
1323
- OutputTableName=model_outputs[mac.MODEL_OBJ_TABLE_NAME.value]).to_pandas()
1324
- output_names = []
1325
- output_table_names = []
1326
- index_len = len(model_outputs["OutputName"])
1327
- for i in range(index_len):
1328
- output_name = __get_arg_tdml_name_from_sql(function_arg_map, famc.OUTPUTS.value,
1329
- model_outputs["OutputName"][i].lower())
1330
- # We raise an exception when we are not able to get the teradataml name
1331
- # for the SQL name of the output table.
1332
- if output_name is None:
1333
- raise TeradataMlException(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME),
1334
- MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME)
1335
- output_names.append(output_name)
1336
- output_table_names.append(model_outputs["OutputTableName"][i])
1337
- model_outputs = pd.DataFrame({'OutputName': output_names, 'OutputTableName': output_table_names})
1338
-
1339
- return model_outputs
1340
-
1341
-
1342
- def __retrieve_model_inputs(name, model_client, function_arg_map):
1343
- """
1344
- DESCRIPTION:
1345
- Internal function to get the input DataFrames corresponding to a saved model given it's name.
1346
-
1347
- PARAMETERS:
1348
- name:
1349
- Required Argument.
1350
- Specifies the name of the model to retrieve the model input information for.
1351
- Types: str
1352
-
1353
- model_client:
1354
- Required Argument.
1355
- Specifies the name of the client that generated the model.
1356
- Types: str
1357
-
1358
- function_arg_map:
1359
- Required Argument.
1360
- Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
1361
- Types: dict
1362
-
1363
- RETURNS:
1364
- A dict mapping the teradataml specific name for the input to actual input DataFrame.
1365
- The dictionary is of the following form:
1366
- {
1367
- <tdml_input_name> :
1368
- {
1369
- 'TableName' : <actual_table_name>,
1370
- 'NRows': <number of rows>,
1371
- 'NCols': <number of columns>
1372
- }
1373
- }
1374
-
1375
- EXAMPLES:
1376
- >>> input_info = __retrieve_model_inputs(name, model_client, function_arg_map)
1377
- """
1378
- model_inputs = {}
1379
-
1380
- # First get the model_id
1381
- model_id = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
1382
- model_id = model_id[model_id[mac.MODEL_NAME.value] == name].select([mac.MODEL_ID.value]).squeeze().item()
1383
-
1384
- # Now find the inputs related to the model
1385
- model_training_data = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_INPUTSX.value))
1386
- model_training_data = model_training_data[model_training_data[mac.MODEL_ID.value] == model_id]
1387
- model_training_data = model_training_data.to_pandas().to_dict()
1388
-
1389
- index_len = len(model_training_data[mac.MODEL_ID.value])
1390
- for i in range(index_len):
1391
- if model_client == mac.MODEL_TDML.value:
1392
- input_name = model_training_data[mac.MODEL_INPUT_CLIENT_NAME.value][i]
1393
- table_name = model_training_data[mac.MODEL_INPUT_TABLE_NAME.value][i]
1394
- else:
1395
- input_name = __get_arg_tdml_name_from_sql(function_arg_map, famc.INPUTS.value,
1396
- model_training_data[mac.MODEL_INPUT_NAME.value][i].lower())
1397
- # if input_name is None then we have been unable to get the tdml name from the SQL name
1398
- # for the input. In this case, we ignore the input initialization and continue.
1399
- if input_name is None:
1400
- warnings.warn(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME,
1401
- model_training_data[mac.MODEL_INPUT_NAME.value][i]))
1402
- continue
1403
- table_name = model_training_data[mac.MODEL_INPUT_TABLE_NAME.value][i]
1404
-
1405
- # No need for further processing if the TableName associated with an input is None.
1406
- if table_name is None:
1407
- continue
1408
-
1409
- nrows = model_training_data[mac.MODEL_INPUT_NROWS.value][i]
1410
- ncols = model_training_data[mac.MODEL_INPUT_NCOLS.value][i]
1411
-
1412
- model_inputs[input_name] = {}
1413
- model_inputs[input_name][mac.MODEL_OBJ_TABLE_NAME.value] = table_name
1414
- model_inputs[input_name][mac.MODEL_INPUT_NROWS.value] = nrows
1415
- model_inputs[input_name][mac.MODEL_INPUT_NCOLS.value] = ncols
1416
-
1417
- return model_inputs
1418
-
1419
-
1420
- def __retrieve_argument_and_output_map(name):
1421
- """
1422
- DESCRIPTION:
1423
- Internal function to get the teradataml function class corresponding to the model to retrieve,
1424
- along with the attributes and output objects to initialize the model with.
1425
-
1426
- PARAMETERS:
1427
- name:
1428
- Required Argument.
1429
- Specifies the name of the model to retrieve the model attributes and output information for.
1430
- Types: str
1431
-
1432
- RETURNS:
1433
- A tuple with the following elements:
1434
- * the function class to initialize for the model,
1435
- * the model generating engine to help with the initialization, and
1436
- * the dictionary containing the attributes and their values including output table objects.
1437
-
1438
- EXAMPLES:
1439
- >>> model_class, model_engine, attribute_dictionary = __retrieve_argument_and_output_map(name)
1440
- """
1441
- # First, let's get the model engine, client, algorithm, and other details.
1442
- model_client, model_engine, model_algorithm, model_details = __retrieve_model_client_engine_algorithm(name, True)
1443
-
1444
- # Get the build_time, algorithm_name/model_class, target_column, prediction_type to be returned later as parameters.
1445
- # model_algorithm is also use to figure out the Python class to be instantiated.
1446
- build_time = model_details.select([mac.MODEL_DERIVED_BUILD_TIME.value]).squeeze()
1447
- prediction_type = model_details.select([mac.MODEL_DERIVED_PREDICTION_TYPE.value]).squeeze()
1448
- target_column = model_details.select([mac.MODEL_DERIVED_TARGET_COLUMN.value]).squeeze()
1449
-
1450
- # Get the teradataml model class corresponding to the model
1451
- function_arg_map = _argument_mapper._get_function_map(engine=model_engine,
1452
- function_name=model_algorithm.lower())
1453
- model_class = __retrieve_model_class(name, model_client, function_arg_map)
1454
-
1455
- # Get the model attributes and formula related arguments
1456
- model_parameters, formula_related_args = __retrieve_model_attributes(name, model_client, function_arg_map)
1457
- # Also append the algorithm_name, build_time, target_column, and prediction_type for the function
1458
- model_parameters['__algorithm_name'] = model_algorithm
1459
- if build_time is not None:
1460
- model_parameters['__build_time'] = build_time.item()
1461
- if target_column is not None:
1462
- model_parameters['__target_column'] = target_column
1463
- if prediction_type is not None:
1464
- model_parameters['__prediction_type'] = prediction_type
1465
-
1466
- # Merge the formula related arguments
1467
- model_parameters = {**model_parameters, **formula_related_args}
1468
-
1469
- # Try plugging in the input DataFrames as well
1470
- model_inputs = __retrieve_model_inputs(name, model_client, function_arg_map)
1471
- for input_name in model_inputs:
1472
- table_name = model_inputs[input_name][mac.MODEL_OBJ_TABLE_NAME.value]
1473
- sname = UtilFuncs._extract_db_name(table_name)
1474
- tname = UtilFuncs._extract_table_name(table_name)
1475
-
1476
- # Add quoted around the DB and Table names if necessary.
1477
- tdp = preparer(td_dialect)
1478
- if sname is not None:
1479
- sname = tdp.quote(UtilFuncs._teradata_unquote_arg(sname, quote='"'))
1480
- if tname is not None:
1481
- tname = tdp.quote(UtilFuncs._teradata_unquote_arg(tname, quote='"'))
1482
-
1483
- # Try creating the input DataFrames
1484
- try:
1485
- if sname is None:
1486
- input = DataFrame(tname)
1487
- else:
1488
- input = DataFrame(in_schema(sname, tname))
1489
-
1490
- model_inputs[input_name] = input
1491
- except Exception as err:
1492
- # We are most likely not able to create a DataFrame on the input as the input may no longer be existent.
1493
- # In this case, we just initialize it to None.
1494
- warnings.warn("Unable to fetch input details for the '{}' argument "
1495
- "from underlying object named '{}'".format(input_name, table_name))
1496
- model_inputs[input_name] = None
1497
-
1498
- # Let's also get the output table map
1499
- model_outputs = __retrieve_model_outputs(name, model_client, function_arg_map)
1500
- tables = model_outputs.to_dict()
1501
- model_tables = {}
1502
- index_len = len(tables["OutputName"])
1503
- for i in range(index_len):
1504
- output_name = tables["OutputName"][i]
1505
- model_tables[output_name] = tables["OutputTableName"][i]
1506
-
1507
- return model_class, model_engine, {**model_inputs, **model_parameters, **model_tables}
1508
-
1509
-
1510
- from teradataml.dataframe.dataframe import DataFrame, in_schema
1
+ """
2
+ Copyright (c) 2020 by Teradata Corporation. All rights reserved.
3
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
+
5
+ Primary Owner: Rohit.Khurd@teradata.com
6
+ Secondary Owner:
7
+
8
+ teradataml Model Cataloging utilities
9
+ -------------------------------------
10
+ The teradataml Model Cataloging utility functions provide internal utilities that
11
+ the Model Cataloging APIs make use of.
12
+ """
13
+ import importlib
14
+ import warnings
15
+ import pandas as pd
16
+ import re
17
+
18
+ from teradataml.common.constants import ModelCatalogingConstants as mac,\
19
+ FunctionArgumentMapperConstants as famc
20
+ from teradataml.common.constants import TeradataConstants
21
+ from teradataml.common.exceptions import TeradataMlException
22
+ from teradataml.common.utils import UtilFuncs
23
+ from teradataml.common.messagecodes import MessageCodes
24
+ from teradataml.common.messages import Messages
25
+ from teradataml.context.context import get_connection, get_context, _get_current_databasename
26
+ from teradataml.dataframe.dataframe_utils import DataFrameUtils as df_utils
27
+ from teradataml.catalog.function_argument_mapper import _argument_mapper
28
+ from teradataml.common.sqlbundle import SQLBundle
29
+ from teradataml.utils.utils import execute_sql
30
+ from teradatasqlalchemy import CLOB
31
+ from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
32
+ from sqlalchemy.sql.expression import select, case as case_when
33
+ from sqlalchemy import func
34
+
35
+
36
+ def __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name):
37
+ """
38
+ DESCRIPTION:
39
+ Internal function to find SQL equivalent name for given teradataml name.
40
+
41
+ PARAMETERS:
42
+ function_arg_map:
43
+ Required Argument.
44
+ The teradataml-sql map for the function obtained using function_argument_mapper.
45
+ Types: dict
46
+
47
+ arg_type:
48
+ Required Argument.
49
+ Specifies a string representing the type of lookup, one of the keys in the function argument map.
50
+ Acceptable values: 'arguments', 'inputs', 'outputs'
51
+ Types: str
52
+
53
+ name:
54
+ Required Argument.
55
+ Specifies the teradataml input, output, or argument name to lookup.
56
+ Types: str
57
+
58
+ RETURNS:
59
+ A String representing the SQL equivalent name for the teradataml name passed as input.
60
+
61
+ EXAMPLES:
62
+ >>> sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name)
63
+ """
64
+ if name in function_arg_map[arg_type][famc.TDML_TO_SQL.value]:
65
+ sql_name = function_arg_map[arg_type][famc.TDML_TO_SQL.value][name]
66
+
67
+ if isinstance(sql_name, dict):
68
+ sql_name = sql_name[famc.TDML_NAME.value]
69
+
70
+ if isinstance(sql_name, list):
71
+ sql_name = sql_name[0]
72
+
73
+ return sql_name
74
+
75
+ # No SQL name found for given teradataml input name
76
+ return None
77
+
78
+
79
+ def __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name):
80
+ """
81
+ DESCRIPTION:
82
+ Internal function to find teradataml equivalent name and type, if any, for given SQL name.
83
+
84
+ PARAMETERS:
85
+ function_arg_map:
86
+ Required Argument.
87
+ The teradataml-sql map for the function obtained using function_argument_mapper.
88
+ Types: dict
89
+
90
+ arg_type:
91
+ Required Argument.
92
+ Specifies a string representing the type of lookup, one of the keys in the function argument map.
93
+ Acceptable values: 'arguments', 'inputs', 'outputs'
94
+ Types: str
95
+
96
+ name:
97
+ Required Argument.
98
+ Specifies the SQL input, output, or argument name to lookup.
99
+ Types: str
100
+
101
+ RETURNS:
102
+ * A String representing the teradataml equivalent name for the SQL name when arg_type
103
+ is 'inputs' or 'outputs'.
104
+ * A dictionary with tdml_name and tdml_type for the SQL name when arg_type
105
+ is 'arguments'.
106
+
107
+
108
+ EXAMPLES:
109
+ >>> tdml_name = __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name)
110
+ """
111
+ if name in function_arg_map[arg_type][famc.SQL_TO_TDML.value]:
112
+ tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name]
113
+
114
+ # Check for alternate names.
115
+ if isinstance(tdml_name, dict) and famc.ALTERNATE_TO.value in tdml_name:
116
+ alternate_to = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name][
117
+ famc.ALTERNATE_TO.value]
118
+ tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][alternate_to]
119
+
120
+ if isinstance(tdml_name, list):
121
+ tdml_name = tdml_name[0]
122
+
123
+ return tdml_name
124
+
125
+ # No teradataml name found for given teradataml input name
126
+ return None
127
+
128
+
129
+ def __get_model_inputs_outputs(model, function_arg_map):
130
+ """
131
+ DESCRIPTION:
132
+ Internal function to get input and output information of the model to be saved.
133
+
134
+ PARAMETERS:
135
+ model:
136
+ Required Argument.
137
+ The model (analytic function object instance) to be saved.
138
+ Types: teradataml Analytic Function object
139
+
140
+ function_arg_map:
141
+ Required Argument.
142
+ The teradataml-sql map for the function obtained using function_argument_mapper.
143
+ Types: dict
144
+
145
+ RETURNS:
146
+ A tuple of two dictionaries, and a list:
147
+ * The first containing input information.
148
+ * The second containing output information.
149
+ * The list containing names of tables to remove entries from GC for.
150
+
151
+ EXAMPLE:
152
+ >>> inputs, outputs, tables_to_not_gc = __get_model_inputs_outputs(model, function_arg_map)
153
+ """
154
+ input_json = {}
155
+ output_json = {}
156
+ remove_tables_entries_from_gc = []
157
+
158
+ # First, let's identify the output DataFrames
159
+ output_tables = [df._table_name for df in model._mlresults]
160
+
161
+ for key in model.__dict__:
162
+ if not key.startswith('_'):
163
+ member = getattr(model, key)
164
+ # The DataFrame is input if it is not output
165
+ if isinstance(member, DataFrame):
166
+ if member._table_name not in output_tables:
167
+ # Populate the input dictionary
168
+ # We construct a dictionary of the following form:
169
+ # { "<schema_name> :
170
+ # { "<table_name>" :
171
+ # { "nrows": <num_rows>,
172
+ # "ncols": <num_cols>,
173
+ # "input_name": <SQL name for the input>,
174
+ # "client_specific_input_name": <tdml name for the input>
175
+ # },
176
+ # ...
177
+ # }
178
+ # }
179
+ tdp = preparer(td_dialect)
180
+ nrows, ncols = member.shape
181
+ db_schema = UtilFuncs._extract_db_name(member._table_name)
182
+ # Add quotes around the DB name in case we are getting it using _get_current_databasename()
183
+ db_schema = tdp.quote(_get_current_databasename()) if db_schema is None else db_schema
184
+ db_table_name = UtilFuncs._extract_table_name(member._table_name)
185
+
186
+ if db_schema not in input_json:
187
+ input_json[db_schema] = {}
188
+ input_json[db_schema][db_table_name] = {}
189
+ input_json[db_schema][db_table_name]["nrows"] = int(nrows)
190
+ input_json[db_schema][db_table_name]["ncols"] = ncols
191
+ input_json[db_schema][db_table_name]["input_name"] = __get_arg_sql_name_from_tdml(function_arg_map,
192
+ arg_type=famc.INPUTS.value,
193
+ name=key)
194
+ input_json[db_schema][db_table_name]["client_specific_input_name"] = key
195
+ else:
196
+ # Populate the output dictionary
197
+ # We construct a dictionary of the following form:
198
+ # { "<Output SQL Name> :
199
+ # { "table_name": "<Database qualified name of the table>",
200
+ # "client_specific_name": "<TDML specific name of the output>"
201
+ # },
202
+ # ...
203
+ # }
204
+
205
+ # teradataml Analytic functions models can be of two types:
206
+ # 1. Non-lazy OR
207
+ # 2. Lazy
208
+ # When model is non-lazy, that means model tables are already present/created on the system.
209
+ # When model is lazy, it may happen that model tables are yet to be evaluated/created.
210
+ # So first, let's make sure that model is evaluated, i.e., model tables are created,
211
+ # if they are not created already.
212
+ #
213
+ if member._table_name is None:
214
+ member._table_name = df_utils._execute_node_return_db_object_name(member._nodeid,
215
+ member._metaexpr)
216
+ output_table_name = member._table_name
217
+ if __is_view(output_table_name):
218
+ # If output table is not of type table, which means it's a view.
219
+ # So instead of using view name for persisting, we must materialize the same.
220
+ #
221
+ # To do so, let's just generate another temporary table name. One can notice, when
222
+ # we generate the temporary table name, we set the following flag 'gc_on_quit=True'.
223
+ # One can say, why to mark it for GC, when we are going to persist it.
224
+ # Only reason we added it for GC, so that, if in case anything goes wrong from the point
225
+ # we create the table to the end of the model saving, later this will be GC'ed as
226
+ # model saving had failed. Later we remove entry from GC, when model info is saved in
227
+ # MC tables and model is persisted in table.
228
+ #
229
+ output_table_name = UtilFuncs._generate_temp_table_name(prefix="td_saved_model_",
230
+ use_default_database=True,
231
+ gc_on_quit=True, quote=False,
232
+ table_type=TeradataConstants.TERADATA_TABLE)
233
+
234
+ base_query = SQLBundle._build_base_query(member._table_name)
235
+ crt_table_query = SQLBundle._build_create_table_with_data(output_table_name, base_query)
236
+ UtilFuncs._execute_ddl_statement(crt_table_query)
237
+
238
+ # Append the name of the table to remove entry from GC.
239
+ remove_tables_entries_from_gc.append(output_table_name)
240
+
241
+ sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.OUTPUTS.value, name=key)
242
+ output_json[sql_name] = {}
243
+ output_json[sql_name]["table_name"] = output_table_name
244
+ output_json[sql_name]["client_specific_name"] = key
245
+
246
+ return input_json, output_json, remove_tables_entries_from_gc
247
+
248
+
249
+ def __check_if_client_specific_use(key, function_arg_map, is_sql_name=False):
250
+ """
251
+ DESCRIPTION:
252
+ Internal function to check if the argument corresponds to a client-only specific argument.
253
+
254
+ PARAMETERS:
255
+ key:
256
+ Required Argument.
257
+ The teradataml or SQL argument name to check for.
258
+ Types: str
259
+
260
+ function_arg_map:
261
+ Required Argument.
262
+ The teradataml-sql map for the function obtained using function_argument_mapper.
263
+ Types: dict
264
+
265
+ is_sql_name:
266
+ Optional Argument.
267
+ Specifies a boolean value indicating whether the key is a SQL or teradataml key.
268
+ Types: bool
269
+ Default Value: False
270
+
271
+ RETURNS:
272
+ A tuple containing:
273
+ * A boolean value indicating whether the argument is or has:
274
+ - a client-only specific argument: True
275
+ - else False
276
+ * A string specifying whether it is used in sequence_column ('used_in_sequence_by') or formula ('used_in_formula')
277
+
278
+ EXAMPLES:
279
+ >>> client_only, where_used = __check_if_client_specific_use(key, function_arg_map, is_sql_name=False)
280
+ """
281
+ # Let's assume SQL Name was passed
282
+ sql_name = key
283
+
284
+ if not is_sql_name:
285
+ if key in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
286
+ sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.ARGUMENTS.value, name=key)
287
+ else:
288
+ # No SQL name found for given teradataml input name
289
+ return False, None
290
+
291
+ if isinstance(sql_name, dict):
292
+ sql_name = sql_name[famc.TDML_NAME.value]
293
+
294
+ if isinstance(sql_name, list):
295
+ sql_name = sql_name[0]
296
+
297
+ # Check if SQL name is an alternate name
298
+ sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name]
299
+ if famc.ALTERNATE_TO.value in sql_block:
300
+ alternate_to = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.ALTERNATE_TO.value]
301
+ sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_to]
302
+
303
+ # Check and return boolean indicating if it is a formula or sequence_input_by argument
304
+ if famc.USED_IN_SEQUENCE_INPUT_BY.value in sql_block:
305
+ return True, famc.USED_IN_SEQUENCE_INPUT_BY.value
306
+ elif famc.USED_IN_FORMULA.value in sql_block:
307
+ return True, famc.USED_IN_FORMULA.value
308
+ else:
309
+ return False, None
310
+
311
+ def __check_if_model_exists(name, created=False, accessible=False,
312
+ raise_error_if_exists=False, raise_error_if_model_not_found=False):
313
+ """
314
+ DESCRIPTION:
315
+ Internal function to check if model with model_name, exists or not.
316
+
317
+ PARAMETERS:
318
+ name:
319
+ Required Argument.
320
+ Specifies the name of the model to check whether it exists or not.
321
+ Types: str
322
+
323
+ created:
324
+ Optional Argument.
325
+ Specifies whether to check if the model exists and is created by the user.
326
+ Default Value: False (Check for all models)
327
+ Types: bool
328
+
329
+ accessible:
330
+ Optional Argument.
331
+ Specifies whether to check if the model exists and is accessible by the user.
332
+ Default Value: False (Check for all models)
333
+ Types: bool
334
+
335
+ raise_error_if_exists:
336
+ Optional Argument.
337
+ Specifies the flag to decide whether to raise error when model exists or not.
338
+ Default Value: False (Do not raise exception)
339
+ Types: bool
340
+
341
+ raise_error_if_model_not_found:
342
+ Optional Argument.
343
+ Specifies the flag to decide whether to raise error when model is found or not.
344
+ Default Value: False (Do not raise exception)
345
+ Types: bool
346
+
347
+ RETURNS:
348
+ None.
349
+
350
+ RAISES:
351
+ TeradataMlException - MODEL_ALREADY_EXISTS, MODEL_NOT_FOUND
352
+
353
+ EXAMPLES:
354
+ >>> meta_df = __check_if_model_exists("glm_out")
355
+ """
356
+ # Get the DataFrame for the Models metadata table.
357
+ if created:
358
+ current_user = __get_current_user()
359
+ models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
360
+ models_meta_df = models_meta_df[models_meta_df[mac.CREATED_BY.value].str.lower() == current_user.lower()]
361
+ elif accessible:
362
+ models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELSX.value))
363
+ else:
364
+ models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
365
+
366
+ # Get the model created by current client user, using teradataml, with name as model_name.
367
+ model_name = models_meta_df.Name
368
+
369
+ # Filter Expression.
370
+ if name is not None:
371
+ models_meta_df = models_meta_df[model_name == name]
372
+
373
+ num_rows = models_meta_df.shape[0]
374
+
375
+ if raise_error_if_exists:
376
+ if num_rows == 1 and name is not None:
377
+ # If model with name 'name' already exists.
378
+ raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_ALREADY_EXISTS,
379
+ name),
380
+ MessageCodes.MODEL_ALREADY_EXISTS)
381
+
382
+ if raise_error_if_model_not_found:
383
+ if num_rows == 0:
384
+ if not created:
385
+ # 'name' MODEL_NOT_FOUND
386
+ raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
387
+ name, ''),
388
+ MessageCodes.MODEL_NOT_FOUND)
389
+ else:
390
+ # 'name' MODEL_NOT_FOUND or not created by user.
391
+ raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
392
+ name, ' or not created by user'),
393
+ MessageCodes.MODEL_NOT_FOUND)
394
+
395
+ def __get_current_user(conn=None):
396
+ """
397
+ DESCRIPTION:
398
+ Internal function to return the current Vantage user
399
+
400
+ PARAMETERS:
401
+ conn:
402
+ Optional Argument,
403
+ The underlying SQLAlchemy engine for the connection.
404
+ Types: SQLAlchemy engine
405
+
406
+ RETURNS:
407
+ A string representing the name of the current database user.
408
+
409
+ EXAMPLE:
410
+ >>> current_user = __get_current_user()
411
+ """
412
+ if conn is None:
413
+ conn = get_connection()
414
+
415
+ return execute_sql('select user').fetchall()[0][0]
416
+
417
+
418
+ def __get_like_filter_expression_on_col(metaexpr, column_name, like):
419
+ """
420
+ DESCRIPTION:
421
+ Internal function to get the filter expression on column_name containing string matching with like.
422
+ (Case insensitive matching)
423
+
424
+ PARAMETERS:
425
+ metaexpr:
426
+ Required Argument.
427
+ Specifies the teradataml DataFrame meta data.
428
+ Types: _MetaExpression
429
+
430
+ column_name:
431
+ Required Argument.
432
+ Specifies the column name which is to be used in filter expression.
433
+ Types: str
434
+
435
+ like:
436
+ Required Argument.
437
+ Specifies the pattern to be matched in filter expression.
438
+ Types: str
439
+
440
+ RETURNS:
441
+ _SQLColumnExpression object
442
+
443
+ RAISES:
444
+ None
445
+
446
+ EXAMPLES:
447
+ >>> filter_expression = __get_like_filter_expression_on_col(models_meta_df._metaexpr,
448
+ ... mmc.MMT_COL_model_class.value,
449
+ ... function_name)
450
+ """
451
+ return metaexpr._filter(0, 'like', [column_name], like = like, match_arg='i')
452
+
453
+
454
+ def __get_wrapper_class(model_engine, model_class):
455
+ """
456
+ DESCRIPTION:
457
+ Internal function to the wrapper class that can be executed to create the instance of the
458
+ model_class from engine specified in model_engine.
459
+
460
+ PARAMETERS:
461
+ model_engine:
462
+ Required Argument.
463
+ Model engine string 'ML Engine' or 'Advanced SQL Engine'.
464
+ Types: str
465
+
466
+ model_class:
467
+ Required Argument.
468
+ Model class string for the analytical function wrapper.
469
+ Types: str
470
+
471
+ RETURNS:
472
+ A wrapper CLASS
473
+
474
+ RAISES:
475
+ ValueError - When invalid engine is passed.
476
+ AttributeError - When model_class wrapper function, does is not from model_engine.
477
+
478
+ EXAMPLES:
479
+ >>> __get_wrapper_class("SQL Engine", "GLM")
480
+ """
481
+ if model_engine == mac.MODEL_ENGINE_ADVSQL.value:
482
+ module_name = "teradataml.analytics.sqle"
483
+ else:
484
+ raise ValueError("Invalid Engine found in Model Cataloging table.")
485
+
486
+ wrapper_module = importlib.import_module(module_name)
487
+
488
+ return getattr(wrapper_module, model_class)
489
+
490
+
491
+ from teradataml.dataframe.dataframe import DataFrame, in_schema