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

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

Potentially problematic release.


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

Files changed (1303) hide show
  1. teradataml/LICENSE-3RD-PARTY.pdf +0 -0
  2. teradataml/LICENSE.pdf +0 -0
  3. teradataml/README.md +1935 -1640
  4. teradataml/__init__.py +70 -60
  5. teradataml/_version.py +11 -11
  6. teradataml/analytics/Transformations.py +2995 -2995
  7. teradataml/analytics/__init__.py +81 -83
  8. teradataml/analytics/analytic_function_executor.py +2040 -2010
  9. teradataml/analytics/analytic_query_generator.py +958 -958
  10. teradataml/analytics/byom/H2OPredict.py +514 -514
  11. teradataml/analytics/byom/PMMLPredict.py +437 -437
  12. teradataml/analytics/byom/__init__.py +14 -14
  13. teradataml/analytics/json_parser/__init__.py +130 -130
  14. teradataml/analytics/json_parser/analytic_functions_argument.py +1707 -1707
  15. teradataml/analytics/json_parser/json_store.py +191 -191
  16. teradataml/analytics/json_parser/metadata.py +1637 -1637
  17. teradataml/analytics/json_parser/utils.py +798 -803
  18. teradataml/analytics/meta_class.py +196 -196
  19. teradataml/analytics/sqle/DecisionTreePredict.py +455 -470
  20. teradataml/analytics/sqle/NaiveBayesPredict.py +419 -428
  21. teradataml/analytics/sqle/__init__.py +97 -110
  22. teradataml/analytics/sqle/json/decisiontreepredict_sqle.json +78 -78
  23. teradataml/analytics/sqle/json/naivebayespredict_sqle.json +62 -62
  24. teradataml/analytics/table_operator/__init__.py +10 -10
  25. teradataml/analytics/uaf/__init__.py +63 -63
  26. teradataml/analytics/utils.py +693 -692
  27. teradataml/analytics/valib.py +1603 -1600
  28. teradataml/automl/__init__.py +1683 -0
  29. teradataml/automl/custom_json_utils.py +1270 -0
  30. teradataml/automl/data_preparation.py +1011 -0
  31. teradataml/automl/data_transformation.py +789 -0
  32. teradataml/automl/feature_engineering.py +1580 -0
  33. teradataml/automl/feature_exploration.py +554 -0
  34. teradataml/automl/model_evaluation.py +151 -0
  35. teradataml/automl/model_training.py +1026 -0
  36. teradataml/catalog/__init__.py +1 -3
  37. teradataml/catalog/byom.py +1759 -1716
  38. teradataml/catalog/function_argument_mapper.py +859 -861
  39. teradataml/catalog/model_cataloging_utils.py +491 -1510
  40. teradataml/clients/auth_client.py +133 -0
  41. teradataml/clients/pkce_client.py +481 -481
  42. teradataml/common/aed_utils.py +7 -2
  43. teradataml/common/bulk_exposed_utils.py +111 -111
  44. teradataml/common/constants.py +1438 -1441
  45. teradataml/common/deprecations.py +160 -0
  46. teradataml/common/exceptions.py +73 -73
  47. teradataml/common/formula.py +742 -742
  48. teradataml/common/garbagecollector.py +597 -635
  49. teradataml/common/messagecodes.py +424 -431
  50. teradataml/common/messages.py +228 -231
  51. teradataml/common/sqlbundle.py +693 -693
  52. teradataml/common/td_coltype_code_to_tdtype.py +48 -48
  53. teradataml/common/utils.py +2424 -2500
  54. teradataml/common/warnings.py +25 -25
  55. teradataml/common/wrapper_utils.py +1 -110
  56. teradataml/config/dummy_file1.cfg +4 -4
  57. teradataml/config/dummy_file2.cfg +2 -2
  58. teradataml/config/sqlengine_alias_definitions_v1.0 +13 -13
  59. teradataml/config/sqlengine_alias_definitions_v1.1 +19 -19
  60. teradataml/config/sqlengine_alias_definitions_v1.3 +18 -18
  61. teradataml/context/aed_context.py +217 -217
  62. teradataml/context/context.py +1091 -999
  63. teradataml/data/A_loan.csv +19 -19
  64. teradataml/data/BINARY_REALS_LEFT.csv +11 -11
  65. teradataml/data/BINARY_REALS_RIGHT.csv +11 -11
  66. teradataml/data/B_loan.csv +49 -49
  67. teradataml/data/BuoyData2.csv +17 -17
  68. teradataml/data/CONVOLVE2_COMPLEX_LEFT.csv +5 -5
  69. teradataml/data/CONVOLVE2_COMPLEX_RIGHT.csv +5 -5
  70. teradataml/data/Convolve2RealsLeft.csv +5 -5
  71. teradataml/data/Convolve2RealsRight.csv +5 -5
  72. teradataml/data/Convolve2ValidLeft.csv +11 -11
  73. teradataml/data/Convolve2ValidRight.csv +11 -11
  74. teradataml/data/DFFTConv_Real_8_8.csv +65 -65
  75. teradataml/data/Orders1_12mf.csv +24 -24
  76. teradataml/data/Pi_loan.csv +7 -7
  77. teradataml/data/SMOOTHED_DATA.csv +7 -7
  78. teradataml/data/TestDFFT8.csv +9 -9
  79. teradataml/data/TestRiver.csv +109 -109
  80. teradataml/data/Traindata.csv +28 -28
  81. teradataml/data/acf.csv +17 -17
  82. teradataml/data/adaboost_example.json +34 -34
  83. teradataml/data/adaboostpredict_example.json +24 -24
  84. teradataml/data/additional_table.csv +10 -10
  85. teradataml/data/admissions_test.csv +21 -21
  86. teradataml/data/admissions_train.csv +41 -41
  87. teradataml/data/admissions_train_nulls.csv +41 -41
  88. teradataml/data/advertising.csv +201 -0
  89. teradataml/data/ageandheight.csv +13 -13
  90. teradataml/data/ageandpressure.csv +31 -31
  91. teradataml/data/antiselect_example.json +36 -36
  92. teradataml/data/antiselect_input.csv +8 -8
  93. teradataml/data/antiselect_input_mixed_case.csv +8 -8
  94. teradataml/data/applicant_external.csv +6 -6
  95. teradataml/data/applicant_reference.csv +6 -6
  96. teradataml/data/arima_example.json +9 -9
  97. teradataml/data/assortedtext_input.csv +8 -8
  98. teradataml/data/attribution_example.json +33 -33
  99. teradataml/data/attribution_sample_table.csv +27 -27
  100. teradataml/data/attribution_sample_table1.csv +6 -6
  101. teradataml/data/attribution_sample_table2.csv +11 -11
  102. teradataml/data/bank_churn.csv +10001 -0
  103. teradataml/data/bank_marketing.csv +11163 -0
  104. teradataml/data/bank_web_clicks1.csv +42 -42
  105. teradataml/data/bank_web_clicks2.csv +91 -91
  106. teradataml/data/bank_web_url.csv +85 -85
  107. teradataml/data/barrier.csv +2 -2
  108. teradataml/data/barrier_new.csv +3 -3
  109. teradataml/data/betweenness_example.json +13 -13
  110. teradataml/data/bike_sharing.csv +732 -0
  111. teradataml/data/bin_breaks.csv +8 -8
  112. teradataml/data/bin_fit_ip.csv +3 -3
  113. teradataml/data/binary_complex_left.csv +11 -11
  114. teradataml/data/binary_complex_right.csv +11 -11
  115. teradataml/data/binary_matrix_complex_left.csv +21 -21
  116. teradataml/data/binary_matrix_complex_right.csv +21 -21
  117. teradataml/data/binary_matrix_real_left.csv +21 -21
  118. teradataml/data/binary_matrix_real_right.csv +21 -21
  119. teradataml/data/blood2ageandweight.csv +26 -26
  120. teradataml/data/bmi.csv +501 -0
  121. teradataml/data/boston.csv +507 -507
  122. teradataml/data/boston2cols.csv +721 -0
  123. teradataml/data/breast_cancer.csv +570 -0
  124. teradataml/data/buoydata_mix.csv +11 -11
  125. teradataml/data/burst_data.csv +5 -5
  126. teradataml/data/burst_example.json +20 -20
  127. teradataml/data/byom_example.json +17 -17
  128. teradataml/data/bytes_table.csv +3 -3
  129. teradataml/data/cal_housing_ex_raw.csv +70 -70
  130. teradataml/data/callers.csv +7 -7
  131. teradataml/data/calls.csv +10 -10
  132. teradataml/data/cars_hist.csv +33 -33
  133. teradataml/data/cat_table.csv +24 -24
  134. teradataml/data/ccm_example.json +31 -31
  135. teradataml/data/ccm_input.csv +91 -91
  136. teradataml/data/ccm_input2.csv +13 -13
  137. teradataml/data/ccmexample.csv +101 -101
  138. teradataml/data/ccmprepare_example.json +8 -8
  139. teradataml/data/ccmprepare_input.csv +91 -91
  140. teradataml/data/cfilter_example.json +12 -12
  141. teradataml/data/changepointdetection_example.json +18 -18
  142. teradataml/data/changepointdetectionrt_example.json +8 -8
  143. teradataml/data/chi_sq.csv +2 -2
  144. teradataml/data/churn_data.csv +14 -14
  145. teradataml/data/churn_emission.csv +35 -35
  146. teradataml/data/churn_initial.csv +3 -3
  147. teradataml/data/churn_state_transition.csv +5 -5
  148. teradataml/data/citedges_2.csv +745 -745
  149. teradataml/data/citvertices_2.csv +1210 -1210
  150. teradataml/data/clicks2.csv +16 -16
  151. teradataml/data/clickstream.csv +12 -12
  152. teradataml/data/clickstream1.csv +11 -11
  153. teradataml/data/closeness_example.json +15 -15
  154. teradataml/data/complaints.csv +21 -21
  155. teradataml/data/complaints_mini.csv +3 -3
  156. teradataml/data/complaints_testtoken.csv +224 -224
  157. teradataml/data/complaints_tokens_test.csv +353 -353
  158. teradataml/data/complaints_traintoken.csv +472 -472
  159. teradataml/data/computers_category.csv +1001 -1001
  160. teradataml/data/computers_test1.csv +1252 -1252
  161. teradataml/data/computers_train1.csv +5009 -5009
  162. teradataml/data/computers_train1_clustered.csv +5009 -5009
  163. teradataml/data/confusionmatrix_example.json +9 -9
  164. teradataml/data/conversion_event_table.csv +3 -3
  165. teradataml/data/corr_input.csv +17 -17
  166. teradataml/data/correlation_example.json +11 -11
  167. teradataml/data/coxhazardratio_example.json +39 -39
  168. teradataml/data/coxph_example.json +15 -15
  169. teradataml/data/coxsurvival_example.json +28 -28
  170. teradataml/data/cpt.csv +41 -41
  171. teradataml/data/credit_ex_merged.csv +45 -45
  172. teradataml/data/customer_loyalty.csv +301 -301
  173. teradataml/data/customer_loyalty_newseq.csv +31 -31
  174. teradataml/data/customer_segmentation_test.csv +2628 -0
  175. teradataml/data/customer_segmentation_train.csv +8069 -0
  176. teradataml/data/dataframe_example.json +146 -146
  177. teradataml/data/decisionforest_example.json +37 -37
  178. teradataml/data/decisionforestpredict_example.json +38 -38
  179. teradataml/data/decisiontree_example.json +21 -21
  180. teradataml/data/decisiontreepredict_example.json +45 -45
  181. teradataml/data/dfft2_size4_real.csv +17 -17
  182. teradataml/data/dfft2_test_matrix16.csv +17 -17
  183. teradataml/data/dfft2conv_real_4_4.csv +65 -65
  184. teradataml/data/diabetes.csv +443 -443
  185. teradataml/data/diabetes_test.csv +89 -89
  186. teradataml/data/dict_table.csv +5 -5
  187. teradataml/data/docperterm_table.csv +4 -4
  188. teradataml/data/docs/__init__.py +1 -1
  189. teradataml/data/docs/byom/docs/DataRobotPredict.py +180 -180
  190. teradataml/data/docs/byom/docs/DataikuPredict.py +177 -177
  191. teradataml/data/docs/byom/docs/H2OPredict.py +324 -324
  192. teradataml/data/docs/byom/docs/ONNXPredict.py +283 -283
  193. teradataml/data/docs/byom/docs/PMMLPredict.py +277 -277
  194. teradataml/data/docs/sqle/docs_17_10/Antiselect.py +82 -82
  195. teradataml/data/docs/sqle/docs_17_10/Attribution.py +199 -199
  196. teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +171 -171
  197. teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +131 -130
  198. teradataml/data/docs/sqle/docs_17_10/CategoricalSummary.py +86 -86
  199. teradataml/data/docs/sqle/docs_17_10/ChiSq.py +90 -90
  200. teradataml/data/docs/sqle/docs_17_10/ColumnSummary.py +85 -85
  201. teradataml/data/docs/sqle/docs_17_10/ConvertTo.py +95 -95
  202. teradataml/data/docs/sqle/docs_17_10/DecisionForestPredict.py +139 -139
  203. teradataml/data/docs/sqle/docs_17_10/DecisionTreePredict.py +151 -151
  204. teradataml/data/docs/sqle/docs_17_10/FTest.py +160 -160
  205. teradataml/data/docs/sqle/docs_17_10/FillRowId.py +82 -82
  206. teradataml/data/docs/sqle/docs_17_10/Fit.py +87 -87
  207. teradataml/data/docs/sqle/docs_17_10/GLMPredict.py +144 -144
  208. teradataml/data/docs/sqle/docs_17_10/GetRowsWithMissingValues.py +84 -84
  209. teradataml/data/docs/sqle/docs_17_10/GetRowsWithoutMissingValues.py +81 -81
  210. teradataml/data/docs/sqle/docs_17_10/Histogram.py +164 -164
  211. teradataml/data/docs/sqle/docs_17_10/MovingAverage.py +134 -134
  212. teradataml/data/docs/sqle/docs_17_10/NGramSplitter.py +208 -208
  213. teradataml/data/docs/sqle/docs_17_10/NPath.py +265 -265
  214. teradataml/data/docs/sqle/docs_17_10/NaiveBayesPredict.py +116 -116
  215. teradataml/data/docs/sqle/docs_17_10/NaiveBayesTextClassifierPredict.py +176 -176
  216. teradataml/data/docs/sqle/docs_17_10/NumApply.py +147 -147
  217. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingFit.py +134 -132
  218. teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +109 -103
  219. teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
  220. teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +105 -101
  221. teradataml/data/docs/sqle/docs_17_10/Pack.py +128 -128
  222. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesFit.py +111 -111
  223. teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +102 -102
  224. teradataml/data/docs/sqle/docs_17_10/QQNorm.py +104 -104
  225. teradataml/data/docs/sqle/docs_17_10/RoundColumns.py +109 -109
  226. teradataml/data/docs/sqle/docs_17_10/RowNormalizeFit.py +117 -117
  227. teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +99 -98
  228. teradataml/data/docs/sqle/docs_17_10/SVMSparsePredict.py +152 -152
  229. teradataml/data/docs/sqle/docs_17_10/ScaleFit.py +197 -197
  230. teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +99 -98
  231. teradataml/data/docs/sqle/docs_17_10/Sessionize.py +113 -113
  232. teradataml/data/docs/sqle/docs_17_10/SimpleImputeFit.py +116 -116
  233. teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +98 -98
  234. teradataml/data/docs/sqle/docs_17_10/StrApply.py +187 -187
  235. teradataml/data/docs/sqle/docs_17_10/StringSimilarity.py +145 -145
  236. teradataml/data/docs/sqle/docs_17_10/Transform.py +105 -104
  237. teradataml/data/docs/sqle/docs_17_10/UnivariateStatistics.py +141 -141
  238. teradataml/data/docs/sqle/docs_17_10/Unpack.py +214 -214
  239. teradataml/data/docs/sqle/docs_17_10/WhichMax.py +83 -83
  240. teradataml/data/docs/sqle/docs_17_10/WhichMin.py +83 -83
  241. teradataml/data/docs/sqle/docs_17_10/ZTest.py +155 -155
  242. teradataml/data/docs/sqle/docs_17_20/ANOVA.py +186 -126
  243. teradataml/data/docs/sqle/docs_17_20/Antiselect.py +82 -82
  244. teradataml/data/docs/sqle/docs_17_20/Attribution.py +200 -200
  245. teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +171 -171
  246. teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +139 -138
  247. teradataml/data/docs/sqle/docs_17_20/CategoricalSummary.py +86 -86
  248. teradataml/data/docs/sqle/docs_17_20/ChiSq.py +90 -90
  249. teradataml/data/docs/sqle/docs_17_20/ClassificationEvaluator.py +166 -166
  250. teradataml/data/docs/sqle/docs_17_20/ColumnSummary.py +85 -85
  251. teradataml/data/docs/sqle/docs_17_20/ColumnTransformer.py +245 -243
  252. teradataml/data/docs/sqle/docs_17_20/ConvertTo.py +113 -113
  253. teradataml/data/docs/sqle/docs_17_20/DecisionForest.py +279 -279
  254. teradataml/data/docs/sqle/docs_17_20/DecisionForestPredict.py +144 -144
  255. teradataml/data/docs/sqle/docs_17_20/DecisionTreePredict.py +135 -135
  256. teradataml/data/docs/sqle/docs_17_20/FTest.py +239 -160
  257. teradataml/data/docs/sqle/docs_17_20/FillRowId.py +82 -82
  258. teradataml/data/docs/sqle/docs_17_20/Fit.py +87 -87
  259. teradataml/data/docs/sqle/docs_17_20/GLM.py +541 -380
  260. teradataml/data/docs/sqle/docs_17_20/GLMPerSegment.py +414 -414
  261. teradataml/data/docs/sqle/docs_17_20/GLMPredict.py +144 -144
  262. teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +233 -234
  263. teradataml/data/docs/sqle/docs_17_20/GetFutileColumns.py +125 -123
  264. teradataml/data/docs/sqle/docs_17_20/GetRowsWithMissingValues.py +108 -108
  265. teradataml/data/docs/sqle/docs_17_20/GetRowsWithoutMissingValues.py +105 -105
  266. teradataml/data/docs/sqle/docs_17_20/Histogram.py +223 -223
  267. teradataml/data/docs/sqle/docs_17_20/KMeans.py +251 -204
  268. teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +144 -143
  269. teradataml/data/docs/sqle/docs_17_20/KNN.py +214 -214
  270. teradataml/data/docs/sqle/docs_17_20/MovingAverage.py +134 -134
  271. teradataml/data/docs/sqle/docs_17_20/NGramSplitter.py +208 -208
  272. teradataml/data/docs/sqle/docs_17_20/NPath.py +265 -265
  273. teradataml/data/docs/sqle/docs_17_20/NaiveBayesPredict.py +116 -116
  274. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +177 -176
  275. teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +126 -126
  276. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +118 -117
  277. teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +112 -112
  278. teradataml/data/docs/sqle/docs_17_20/NumApply.py +147 -147
  279. teradataml/data/docs/sqle/docs_17_20/OneClassSVM.py +307 -307
  280. teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +185 -184
  281. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingFit.py +230 -225
  282. teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +121 -115
  283. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingFit.py +219 -219
  284. teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingTransform.py +127 -127
  285. teradataml/data/docs/sqle/docs_17_20/OutlierFilterFit.py +189 -189
  286. teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +117 -112
  287. teradataml/data/docs/sqle/docs_17_20/Pack.py +128 -128
  288. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesFit.py +111 -111
  289. teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +112 -111
  290. teradataml/data/docs/sqle/docs_17_20/QQNorm.py +104 -104
  291. teradataml/data/docs/sqle/docs_17_20/ROC.py +164 -163
  292. teradataml/data/docs/sqle/docs_17_20/RandomProjectionFit.py +154 -154
  293. teradataml/data/docs/sqle/docs_17_20/RandomProjectionMinComponents.py +106 -106
  294. teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +120 -120
  295. teradataml/data/docs/sqle/docs_17_20/RegressionEvaluator.py +211 -211
  296. teradataml/data/docs/sqle/docs_17_20/RoundColumns.py +108 -108
  297. teradataml/data/docs/sqle/docs_17_20/RowNormalizeFit.py +117 -117
  298. teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +111 -110
  299. teradataml/data/docs/sqle/docs_17_20/SVM.py +413 -413
  300. teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +213 -202
  301. teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
  302. teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +315 -197
  303. teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +202 -109
  304. teradataml/data/docs/sqle/docs_17_20/SentimentExtractor.py +206 -206
  305. teradataml/data/docs/sqle/docs_17_20/Sessionize.py +113 -113
  306. teradataml/data/docs/sqle/docs_17_20/Silhouette.py +152 -152
  307. teradataml/data/docs/sqle/docs_17_20/SimpleImputeFit.py +116 -116
  308. teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +109 -108
  309. teradataml/data/docs/sqle/docs_17_20/StrApply.py +187 -187
  310. teradataml/data/docs/sqle/docs_17_20/StringSimilarity.py +145 -145
  311. teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +207 -207
  312. teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +333 -171
  313. teradataml/data/docs/sqle/docs_17_20/TargetEncodingFit.py +266 -266
  314. teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +141 -140
  315. teradataml/data/docs/sqle/docs_17_20/TextParser.py +172 -172
  316. teradataml/data/docs/sqle/docs_17_20/TrainTestSplit.py +159 -159
  317. teradataml/data/docs/sqle/docs_17_20/Transform.py +123 -123
  318. teradataml/data/docs/sqle/docs_17_20/UnivariateStatistics.py +141 -141
  319. teradataml/data/docs/sqle/docs_17_20/Unpack.py +214 -214
  320. teradataml/data/docs/sqle/docs_17_20/VectorDistance.py +168 -168
  321. teradataml/data/docs/sqle/docs_17_20/WhichMax.py +83 -83
  322. teradataml/data/docs/sqle/docs_17_20/WhichMin.py +83 -83
  323. teradataml/data/docs/sqle/docs_17_20/WordEmbeddings.py +236 -236
  324. teradataml/data/docs/sqle/docs_17_20/XGBoost.py +361 -353
  325. teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +281 -275
  326. teradataml/data/docs/sqle/docs_17_20/ZTest.py +220 -155
  327. teradataml/data/docs/tableoperator/docs_17_00/ReadNOS.py +429 -429
  328. teradataml/data/docs/tableoperator/docs_17_05/ReadNOS.py +429 -429
  329. teradataml/data/docs/tableoperator/docs_17_05/WriteNOS.py +347 -347
  330. teradataml/data/docs/tableoperator/docs_17_10/ReadNOS.py +428 -428
  331. teradataml/data/docs/tableoperator/docs_17_10/WriteNOS.py +347 -347
  332. teradataml/data/docs/tableoperator/docs_17_20/ReadNOS.py +439 -439
  333. teradataml/data/docs/tableoperator/docs_17_20/WriteNOS.py +386 -386
  334. teradataml/data/docs/uaf/docs_17_20/ACF.py +195 -195
  335. teradataml/data/docs/uaf/docs_17_20/ArimaEstimate.py +369 -369
  336. teradataml/data/docs/uaf/docs_17_20/ArimaForecast.py +142 -142
  337. teradataml/data/docs/uaf/docs_17_20/ArimaValidate.py +159 -159
  338. teradataml/data/docs/uaf/docs_17_20/BinaryMatrixOp.py +247 -247
  339. teradataml/data/docs/uaf/docs_17_20/BinarySeriesOp.py +252 -252
  340. teradataml/data/docs/uaf/docs_17_20/BreuschGodfrey.py +177 -177
  341. teradataml/data/docs/uaf/docs_17_20/BreuschPaganGodfrey.py +174 -174
  342. teradataml/data/docs/uaf/docs_17_20/Convolve.py +226 -226
  343. teradataml/data/docs/uaf/docs_17_20/Convolve2.py +214 -214
  344. teradataml/data/docs/uaf/docs_17_20/CumulPeriodogram.py +183 -183
  345. teradataml/data/docs/uaf/docs_17_20/DFFT.py +203 -203
  346. teradataml/data/docs/uaf/docs_17_20/DFFT2.py +216 -216
  347. teradataml/data/docs/uaf/docs_17_20/DFFT2Conv.py +215 -215
  348. teradataml/data/docs/uaf/docs_17_20/DFFTConv.py +191 -191
  349. teradataml/data/docs/uaf/docs_17_20/DTW.py +179 -179
  350. teradataml/data/docs/uaf/docs_17_20/DickeyFuller.py +144 -144
  351. teradataml/data/docs/uaf/docs_17_20/DurbinWatson.py +183 -183
  352. teradataml/data/docs/uaf/docs_17_20/ExtractResults.py +184 -184
  353. teradataml/data/docs/uaf/docs_17_20/FitMetrics.py +172 -172
  354. teradataml/data/docs/uaf/docs_17_20/GenseriesFormula.py +205 -205
  355. teradataml/data/docs/uaf/docs_17_20/GenseriesSinusoids.py +142 -142
  356. teradataml/data/docs/uaf/docs_17_20/HoltWintersForecaster.py +258 -258
  357. teradataml/data/docs/uaf/docs_17_20/IDFFT.py +164 -164
  358. teradataml/data/docs/uaf/docs_17_20/IDFFT2.py +198 -198
  359. teradataml/data/docs/uaf/docs_17_20/InputValidator.py +120 -120
  360. teradataml/data/docs/uaf/docs_17_20/LineSpec.py +155 -155
  361. teradataml/data/docs/uaf/docs_17_20/LinearRegr.py +214 -214
  362. teradataml/data/docs/uaf/docs_17_20/MAMean.py +173 -173
  363. teradataml/data/docs/uaf/docs_17_20/MInfo.py +133 -133
  364. teradataml/data/docs/uaf/docs_17_20/MatrixMultiply.py +135 -135
  365. teradataml/data/docs/uaf/docs_17_20/MultivarRegr.py +190 -190
  366. teradataml/data/docs/uaf/docs_17_20/PACF.py +158 -158
  367. teradataml/data/docs/uaf/docs_17_20/Portman.py +216 -216
  368. teradataml/data/docs/uaf/docs_17_20/PowerTransform.py +154 -154
  369. teradataml/data/docs/uaf/docs_17_20/Resample.py +228 -228
  370. teradataml/data/docs/uaf/docs_17_20/SInfo.py +122 -122
  371. teradataml/data/docs/uaf/docs_17_20/SeasonalNormalize.py +165 -165
  372. teradataml/data/docs/uaf/docs_17_20/SelectionCriteria.py +173 -173
  373. teradataml/data/docs/uaf/docs_17_20/SignifPeriodicities.py +170 -170
  374. teradataml/data/docs/uaf/docs_17_20/SignifResidmean.py +163 -163
  375. teradataml/data/docs/uaf/docs_17_20/SimpleExp.py +179 -179
  376. teradataml/data/docs/uaf/docs_17_20/Smoothma.py +207 -207
  377. teradataml/data/docs/uaf/docs_17_20/TrackingOp.py +150 -150
  378. teradataml/data/docs/uaf/docs_17_20/UNDIFF.py +171 -171
  379. teradataml/data/docs/uaf/docs_17_20/Unnormalize.py +201 -201
  380. teradataml/data/docs/uaf/docs_17_20/WhitesGeneral.py +169 -169
  381. teradataml/data/dtw_example.json +17 -17
  382. teradataml/data/dtw_t1.csv +11 -11
  383. teradataml/data/dtw_t2.csv +4 -4
  384. teradataml/data/dwt2d_example.json +15 -15
  385. teradataml/data/dwt_example.json +14 -14
  386. teradataml/data/dwt_filter_dim.csv +5 -5
  387. teradataml/data/emission.csv +9 -9
  388. teradataml/data/emp_table_by_dept.csv +19 -19
  389. teradataml/data/employee_info.csv +4 -4
  390. teradataml/data/employee_table.csv +6 -6
  391. teradataml/data/excluding_event_table.csv +2 -2
  392. teradataml/data/finance_data.csv +6 -6
  393. teradataml/data/finance_data2.csv +61 -61
  394. teradataml/data/finance_data3.csv +93 -93
  395. teradataml/data/fish.csv +160 -0
  396. teradataml/data/fm_blood2ageandweight.csv +26 -26
  397. teradataml/data/fmeasure_example.json +11 -11
  398. teradataml/data/followers_leaders.csv +10 -10
  399. teradataml/data/fpgrowth_example.json +12 -12
  400. teradataml/data/frequentpaths_example.json +29 -29
  401. teradataml/data/friends.csv +9 -9
  402. teradataml/data/fs_input.csv +33 -33
  403. teradataml/data/fs_input1.csv +33 -33
  404. teradataml/data/genData.csv +513 -513
  405. teradataml/data/geodataframe_example.json +39 -39
  406. teradataml/data/glass_types.csv +215 -0
  407. teradataml/data/glm_admissions_model.csv +12 -12
  408. teradataml/data/glm_example.json +56 -29
  409. teradataml/data/glml1l2_example.json +28 -28
  410. teradataml/data/glml1l2predict_example.json +54 -54
  411. teradataml/data/glmpredict_example.json +54 -54
  412. teradataml/data/gq_t1.csv +21 -21
  413. teradataml/data/hconvolve_complex_right.csv +5 -5
  414. teradataml/data/hconvolve_complex_rightmulti.csv +5 -5
  415. teradataml/data/histogram_example.json +11 -11
  416. teradataml/data/hmmdecoder_example.json +78 -78
  417. teradataml/data/hmmevaluator_example.json +24 -24
  418. teradataml/data/hmmsupervised_example.json +10 -10
  419. teradataml/data/hmmunsupervised_example.json +7 -7
  420. teradataml/data/house_values.csv +12 -12
  421. teradataml/data/house_values2.csv +13 -13
  422. teradataml/data/housing_cat.csv +7 -7
  423. teradataml/data/housing_data.csv +9 -9
  424. teradataml/data/housing_test.csv +47 -47
  425. teradataml/data/housing_test_binary.csv +47 -47
  426. teradataml/data/housing_train.csv +493 -493
  427. teradataml/data/housing_train_attribute.csv +4 -4
  428. teradataml/data/housing_train_binary.csv +437 -437
  429. teradataml/data/housing_train_parameter.csv +2 -2
  430. teradataml/data/housing_train_response.csv +493 -493
  431. teradataml/data/housing_train_segment.csv +201 -0
  432. teradataml/data/ibm_stock.csv +370 -370
  433. teradataml/data/ibm_stock1.csv +370 -370
  434. teradataml/data/identitymatch_example.json +21 -21
  435. teradataml/data/idf_table.csv +4 -4
  436. teradataml/data/impressions.csv +101 -101
  437. teradataml/data/inflation.csv +21 -21
  438. teradataml/data/initial.csv +3 -3
  439. teradataml/data/insect2Cols.csv +61 -0
  440. teradataml/data/insect_sprays.csv +12 -12
  441. teradataml/data/insurance.csv +1339 -1339
  442. teradataml/data/interpolator_example.json +12 -12
  443. teradataml/data/iris_altinput.csv +481 -481
  444. teradataml/data/iris_attribute_output.csv +8 -8
  445. teradataml/data/iris_attribute_test.csv +121 -121
  446. teradataml/data/iris_attribute_train.csv +481 -481
  447. teradataml/data/iris_category_expect_predict.csv +31 -31
  448. teradataml/data/iris_data.csv +151 -0
  449. teradataml/data/iris_input.csv +151 -151
  450. teradataml/data/iris_response_train.csv +121 -121
  451. teradataml/data/iris_test.csv +31 -31
  452. teradataml/data/iris_train.csv +121 -121
  453. teradataml/data/join_table1.csv +4 -4
  454. teradataml/data/join_table2.csv +4 -4
  455. teradataml/data/jsons/anly_function_name.json +6 -6
  456. teradataml/data/jsons/byom/dataikupredict.json +147 -147
  457. teradataml/data/jsons/byom/datarobotpredict.json +146 -146
  458. teradataml/data/jsons/byom/h2opredict.json +194 -194
  459. teradataml/data/jsons/byom/onnxpredict.json +186 -186
  460. teradataml/data/jsons/byom/pmmlpredict.json +146 -146
  461. teradataml/data/jsons/paired_functions.json +435 -435
  462. teradataml/data/jsons/sqle/16.20/Antiselect.json +56 -56
  463. teradataml/data/jsons/sqle/16.20/Attribution.json +249 -249
  464. teradataml/data/jsons/sqle/16.20/DecisionForestPredict.json +156 -156
  465. teradataml/data/jsons/sqle/16.20/DecisionTreePredict.json +170 -170
  466. teradataml/data/jsons/sqle/16.20/GLMPredict.json +122 -122
  467. teradataml/data/jsons/sqle/16.20/MovingAverage.json +367 -367
  468. teradataml/data/jsons/sqle/16.20/NGramSplitter.json +239 -239
  469. teradataml/data/jsons/sqle/16.20/NaiveBayesPredict.json +136 -136
  470. teradataml/data/jsons/sqle/16.20/NaiveBayesTextClassifierPredict.json +235 -235
  471. teradataml/data/jsons/sqle/16.20/Pack.json +98 -98
  472. teradataml/data/jsons/sqle/16.20/SVMSparsePredict.json +162 -162
  473. teradataml/data/jsons/sqle/16.20/Sessionize.json +105 -105
  474. teradataml/data/jsons/sqle/16.20/StringSimilarity.json +86 -86
  475. teradataml/data/jsons/sqle/16.20/Unpack.json +166 -166
  476. teradataml/data/jsons/sqle/16.20/nPath.json +269 -269
  477. teradataml/data/jsons/sqle/17.00/Antiselect.json +56 -56
  478. teradataml/data/jsons/sqle/17.00/Attribution.json +249 -249
  479. teradataml/data/jsons/sqle/17.00/DecisionForestPredict.json +156 -156
  480. teradataml/data/jsons/sqle/17.00/DecisionTreePredict.json +170 -170
  481. teradataml/data/jsons/sqle/17.00/GLMPredict.json +122 -122
  482. teradataml/data/jsons/sqle/17.00/MovingAverage.json +367 -367
  483. teradataml/data/jsons/sqle/17.00/NGramSplitter.json +239 -239
  484. teradataml/data/jsons/sqle/17.00/NaiveBayesPredict.json +136 -136
  485. teradataml/data/jsons/sqle/17.00/NaiveBayesTextClassifierPredict.json +235 -235
  486. teradataml/data/jsons/sqle/17.00/Pack.json +98 -98
  487. teradataml/data/jsons/sqle/17.00/SVMSparsePredict.json +162 -162
  488. teradataml/data/jsons/sqle/17.00/Sessionize.json +105 -105
  489. teradataml/data/jsons/sqle/17.00/StringSimilarity.json +86 -86
  490. teradataml/data/jsons/sqle/17.00/Unpack.json +166 -166
  491. teradataml/data/jsons/sqle/17.00/nPath.json +269 -269
  492. teradataml/data/jsons/sqle/17.05/Antiselect.json +56 -56
  493. teradataml/data/jsons/sqle/17.05/Attribution.json +249 -249
  494. teradataml/data/jsons/sqle/17.05/DecisionForestPredict.json +156 -156
  495. teradataml/data/jsons/sqle/17.05/DecisionTreePredict.json +170 -170
  496. teradataml/data/jsons/sqle/17.05/GLMPredict.json +122 -122
  497. teradataml/data/jsons/sqle/17.05/MovingAverage.json +367 -367
  498. teradataml/data/jsons/sqle/17.05/NGramSplitter.json +239 -239
  499. teradataml/data/jsons/sqle/17.05/NaiveBayesPredict.json +136 -136
  500. teradataml/data/jsons/sqle/17.05/NaiveBayesTextClassifierPredict.json +235 -235
  501. teradataml/data/jsons/sqle/17.05/Pack.json +98 -98
  502. teradataml/data/jsons/sqle/17.05/SVMSparsePredict.json +162 -162
  503. teradataml/data/jsons/sqle/17.05/Sessionize.json +105 -105
  504. teradataml/data/jsons/sqle/17.05/StringSimilarity.json +86 -86
  505. teradataml/data/jsons/sqle/17.05/Unpack.json +166 -166
  506. teradataml/data/jsons/sqle/17.05/nPath.json +269 -269
  507. teradataml/data/jsons/sqle/17.10/Antiselect.json +56 -56
  508. teradataml/data/jsons/sqle/17.10/Attribution.json +249 -249
  509. teradataml/data/jsons/sqle/17.10/DecisionForestPredict.json +185 -185
  510. teradataml/data/jsons/sqle/17.10/DecisionTreePredict.json +171 -171
  511. teradataml/data/jsons/sqle/17.10/GLMPredict.json +151 -151
  512. teradataml/data/jsons/sqle/17.10/MovingAverage.json +368 -368
  513. teradataml/data/jsons/sqle/17.10/NGramSplitter.json +239 -239
  514. teradataml/data/jsons/sqle/17.10/NaiveBayesPredict.json +149 -149
  515. teradataml/data/jsons/sqle/17.10/NaiveBayesTextClassifierPredict.json +288 -288
  516. teradataml/data/jsons/sqle/17.10/Pack.json +133 -133
  517. teradataml/data/jsons/sqle/17.10/SVMSparsePredict.json +193 -193
  518. teradataml/data/jsons/sqle/17.10/Sessionize.json +105 -105
  519. teradataml/data/jsons/sqle/17.10/StringSimilarity.json +86 -86
  520. teradataml/data/jsons/sqle/17.10/TD_BinCodeFit.json +239 -239
  521. teradataml/data/jsons/sqle/17.10/TD_BinCodeTransform.json +70 -70
  522. teradataml/data/jsons/sqle/17.10/TD_CategoricalSummary.json +53 -53
  523. teradataml/data/jsons/sqle/17.10/TD_Chisq.json +67 -67
  524. teradataml/data/jsons/sqle/17.10/TD_ColumnSummary.json +53 -53
  525. teradataml/data/jsons/sqle/17.10/TD_ConvertTo.json +68 -68
  526. teradataml/data/jsons/sqle/17.10/TD_FTest.json +187 -187
  527. teradataml/data/jsons/sqle/17.10/TD_FillRowID.json +51 -51
  528. teradataml/data/jsons/sqle/17.10/TD_FunctionFit.json +46 -46
  529. teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +72 -71
  530. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithMissingValues.json +52 -52
  531. teradataml/data/jsons/sqle/17.10/TD_GetRowsWithoutMissingValues.json +52 -52
  532. teradataml/data/jsons/sqle/17.10/TD_Histogram.json +132 -132
  533. teradataml/data/jsons/sqle/17.10/TD_NumApply.json +147 -147
  534. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingFit.json +182 -182
  535. teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +65 -64
  536. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterFit.json +196 -196
  537. teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +48 -47
  538. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesFit.json +114 -114
  539. teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +72 -71
  540. teradataml/data/jsons/sqle/17.10/TD_QQNorm.json +111 -111
  541. teradataml/data/jsons/sqle/17.10/TD_RoundColumns.json +93 -93
  542. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeFit.json +127 -127
  543. teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +70 -69
  544. teradataml/data/jsons/sqle/17.10/TD_ScaleFit.json +156 -156
  545. teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +70 -69
  546. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeFit.json +147 -147
  547. teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +48 -47
  548. teradataml/data/jsons/sqle/17.10/TD_StrApply.json +240 -240
  549. teradataml/data/jsons/sqle/17.10/TD_UnivariateStatistics.json +118 -118
  550. teradataml/data/jsons/sqle/17.10/TD_WhichMax.json +52 -52
  551. teradataml/data/jsons/sqle/17.10/TD_WhichMin.json +52 -52
  552. teradataml/data/jsons/sqle/17.10/TD_ZTest.json +171 -171
  553. teradataml/data/jsons/sqle/17.10/Unpack.json +188 -188
  554. teradataml/data/jsons/sqle/17.10/nPath.json +269 -269
  555. teradataml/data/jsons/sqle/17.20/Antiselect.json +56 -56
  556. teradataml/data/jsons/sqle/17.20/Attribution.json +249 -249
  557. teradataml/data/jsons/sqle/17.20/DecisionForestPredict.json +185 -185
  558. teradataml/data/jsons/sqle/17.20/DecisionTreePredict.json +172 -172
  559. teradataml/data/jsons/sqle/17.20/GLMPredict.json +151 -151
  560. teradataml/data/jsons/sqle/17.20/MovingAverage.json +367 -367
  561. teradataml/data/jsons/sqle/17.20/NGramSplitter.json +239 -239
  562. teradataml/data/jsons/sqle/17.20/NaiveBayesPredict.json +149 -149
  563. teradataml/data/jsons/sqle/17.20/NaiveBayesTextClassifierPredict.json +287 -287
  564. teradataml/data/jsons/sqle/17.20/Pack.json +133 -133
  565. teradataml/data/jsons/sqle/17.20/SVMSparsePredict.json +192 -192
  566. teradataml/data/jsons/sqle/17.20/Sessionize.json +105 -105
  567. teradataml/data/jsons/sqle/17.20/StringSimilarity.json +86 -86
  568. teradataml/data/jsons/sqle/17.20/TD_ANOVA.json +148 -76
  569. teradataml/data/jsons/sqle/17.20/TD_BinCodeFit.json +239 -239
  570. teradataml/data/jsons/sqle/17.20/TD_BinCodeTransform.json +71 -71
  571. teradataml/data/jsons/sqle/17.20/TD_CategoricalSummary.json +53 -53
  572. teradataml/data/jsons/sqle/17.20/TD_Chisq.json +67 -67
  573. teradataml/data/jsons/sqle/17.20/TD_ClassificationEvaluator.json +145 -145
  574. teradataml/data/jsons/sqle/17.20/TD_ColumnSummary.json +53 -53
  575. teradataml/data/jsons/sqle/17.20/TD_ColumnTransformer.json +218 -218
  576. teradataml/data/jsons/sqle/17.20/TD_ConvertTo.json +92 -92
  577. teradataml/data/jsons/sqle/17.20/TD_DecisionForest.json +259 -259
  578. teradataml/data/jsons/sqle/17.20/TD_DecisionForestPredict.json +139 -139
  579. teradataml/data/jsons/sqle/17.20/TD_FTest.json +269 -186
  580. teradataml/data/jsons/sqle/17.20/TD_FillRowID.json +52 -52
  581. teradataml/data/jsons/sqle/17.20/TD_FunctionFit.json +46 -46
  582. teradataml/data/jsons/sqle/17.20/TD_FunctionTransform.json +72 -72
  583. teradataml/data/jsons/sqle/17.20/TD_GLM.json +507 -431
  584. teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +168 -125
  585. teradataml/data/jsons/sqle/17.20/TD_GLMPerSegment.json +411 -411
  586. teradataml/data/jsons/sqle/17.20/TD_GLMPredictPerSegment.json +146 -146
  587. teradataml/data/jsons/sqle/17.20/TD_GetFutileColumns.json +93 -91
  588. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithMissingValues.json +76 -76
  589. teradataml/data/jsons/sqle/17.20/TD_GetRowsWithoutMissingValues.json +76 -76
  590. teradataml/data/jsons/sqle/17.20/TD_Histogram.json +152 -152
  591. teradataml/data/jsons/sqle/17.20/TD_KMeans.json +231 -211
  592. teradataml/data/jsons/sqle/17.20/TD_KMeansPredict.json +86 -86
  593. teradataml/data/jsons/sqle/17.20/TD_KNN.json +262 -262
  594. teradataml/data/jsons/sqle/17.20/TD_NaiveBayesTextClassifierTrainer.json +137 -137
  595. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineFit.json +102 -101
  596. teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineTransform.json +71 -71
  597. teradataml/data/jsons/sqle/17.20/TD_NumApply.json +147 -147
  598. teradataml/data/jsons/sqle/17.20/TD_OneClassSVM.json +315 -315
  599. teradataml/data/jsons/sqle/17.20/TD_OneClassSVMPredict.json +123 -123
  600. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingFit.json +271 -271
  601. teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingTransform.json +65 -65
  602. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingFit.json +229 -229
  603. teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingTransform.json +75 -75
  604. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterFit.json +217 -217
  605. teradataml/data/jsons/sqle/17.20/TD_OutlierFilterTransform.json +48 -48
  606. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesFit.json +114 -114
  607. teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesTransform.json +72 -72
  608. teradataml/data/jsons/sqle/17.20/TD_QQNorm.json +111 -111
  609. teradataml/data/jsons/sqle/17.20/TD_ROC.json +178 -177
  610. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionFit.json +178 -178
  611. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionMinComponents.json +73 -73
  612. teradataml/data/jsons/sqle/17.20/TD_RandomProjectionTransform.json +74 -74
  613. teradataml/data/jsons/sqle/17.20/TD_RegressionEvaluator.json +137 -137
  614. teradataml/data/jsons/sqle/17.20/TD_RoundColumns.json +93 -93
  615. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeFit.json +127 -127
  616. teradataml/data/jsons/sqle/17.20/TD_RowNormalizeTransform.json +70 -70
  617. teradataml/data/jsons/sqle/17.20/TD_SVM.json +389 -389
  618. teradataml/data/jsons/sqle/17.20/TD_SVMPredict.json +142 -124
  619. teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +309 -156
  620. teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +119 -70
  621. teradataml/data/jsons/sqle/17.20/TD_SentimentExtractor.json +193 -193
  622. teradataml/data/jsons/sqle/17.20/TD_Silhouette.json +142 -142
  623. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeFit.json +147 -147
  624. teradataml/data/jsons/sqle/17.20/TD_SimpleImputeTransform.json +48 -48
  625. teradataml/data/jsons/sqle/17.20/TD_StrApply.json +240 -240
  626. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingFit.json +248 -248
  627. teradataml/data/jsons/sqle/17.20/TD_TargetEncodingTransform.json +75 -75
  628. teradataml/data/jsons/sqle/17.20/TD_TextParser.json +192 -192
  629. teradataml/data/jsons/sqle/17.20/TD_TrainTestSplit.json +142 -142
  630. teradataml/data/jsons/sqle/17.20/TD_UnivariateStatistics.json +117 -117
  631. teradataml/data/jsons/sqle/17.20/TD_VectorDistance.json +182 -182
  632. teradataml/data/jsons/sqle/17.20/TD_WhichMax.json +52 -52
  633. teradataml/data/jsons/sqle/17.20/TD_WhichMin.json +52 -52
  634. teradataml/data/jsons/sqle/17.20/TD_WordEmbeddings.json +241 -241
  635. teradataml/data/jsons/sqle/17.20/TD_XGBoost.json +330 -312
  636. teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +195 -182
  637. teradataml/data/jsons/sqle/17.20/TD_ZTest.json +247 -170
  638. teradataml/data/jsons/sqle/17.20/Unpack.json +188 -188
  639. teradataml/data/jsons/sqle/17.20/nPath.json +269 -269
  640. teradataml/data/jsons/tableoperator/17.00/read_nos.json +197 -197
  641. teradataml/data/jsons/tableoperator/17.05/read_nos.json +197 -197
  642. teradataml/data/jsons/tableoperator/17.05/write_nos.json +194 -194
  643. teradataml/data/jsons/tableoperator/17.10/read_nos.json +183 -183
  644. teradataml/data/jsons/tableoperator/17.10/write_nos.json +194 -194
  645. teradataml/data/jsons/tableoperator/17.20/read_nos.json +182 -182
  646. teradataml/data/jsons/tableoperator/17.20/write_nos.json +223 -223
  647. teradataml/data/jsons/uaf/17.20/TD_ACF.json +149 -149
  648. teradataml/data/jsons/uaf/17.20/TD_ARIMAESTIMATE.json +409 -409
  649. teradataml/data/jsons/uaf/17.20/TD_ARIMAFORECAST.json +79 -79
  650. teradataml/data/jsons/uaf/17.20/TD_ARIMAVALIDATE.json +151 -151
  651. teradataml/data/jsons/uaf/17.20/TD_BINARYMATRIXOP.json +109 -109
  652. teradataml/data/jsons/uaf/17.20/TD_BINARYSERIESOP.json +107 -107
  653. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_GODFREY.json +87 -87
  654. teradataml/data/jsons/uaf/17.20/TD_BREUSCH_PAGAN_GODFREY.json +106 -106
  655. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE.json +80 -80
  656. teradataml/data/jsons/uaf/17.20/TD_CONVOLVE2.json +67 -67
  657. teradataml/data/jsons/uaf/17.20/TD_CUMUL_PERIODOGRAM.json +91 -91
  658. teradataml/data/jsons/uaf/17.20/TD_DFFT.json +136 -136
  659. teradataml/data/jsons/uaf/17.20/TD_DFFT2.json +148 -148
  660. teradataml/data/jsons/uaf/17.20/TD_DFFT2CONV.json +108 -108
  661. teradataml/data/jsons/uaf/17.20/TD_DFFTCONV.json +109 -109
  662. teradataml/data/jsons/uaf/17.20/TD_DICKEY_FULLER.json +86 -86
  663. teradataml/data/jsons/uaf/17.20/TD_DIFF.json +91 -91
  664. teradataml/data/jsons/uaf/17.20/TD_DTW.json +116 -116
  665. teradataml/data/jsons/uaf/17.20/TD_DURBIN_WATSON.json +100 -100
  666. teradataml/data/jsons/uaf/17.20/TD_EXTRACT_RESULTS.json +38 -38
  667. teradataml/data/jsons/uaf/17.20/TD_FITMETRICS.json +100 -100
  668. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4FORMULA.json +84 -84
  669. teradataml/data/jsons/uaf/17.20/TD_GENSERIES4SINUSOIDS.json +70 -70
  670. teradataml/data/jsons/uaf/17.20/TD_GOLDFELD_QUANDT.json +152 -152
  671. teradataml/data/jsons/uaf/17.20/TD_HOLT_WINTERS_FORECAST.json +313 -313
  672. teradataml/data/jsons/uaf/17.20/TD_IDFFT.json +57 -57
  673. teradataml/data/jsons/uaf/17.20/TD_IDFFT2.json +94 -94
  674. teradataml/data/jsons/uaf/17.20/TD_INPUTVALIDATOR.json +63 -63
  675. teradataml/data/jsons/uaf/17.20/TD_LINEAR_REGR.json +181 -181
  676. teradataml/data/jsons/uaf/17.20/TD_LINESPEC.json +102 -102
  677. teradataml/data/jsons/uaf/17.20/TD_MAMEAN.json +182 -182
  678. teradataml/data/jsons/uaf/17.20/TD_MATRIXMULTIPLY.json +67 -67
  679. teradataml/data/jsons/uaf/17.20/TD_MINFO.json +66 -66
  680. teradataml/data/jsons/uaf/17.20/TD_MULTIVAR_REGR.json +178 -178
  681. teradataml/data/jsons/uaf/17.20/TD_PACF.json +114 -114
  682. teradataml/data/jsons/uaf/17.20/TD_PORTMAN.json +118 -118
  683. teradataml/data/jsons/uaf/17.20/TD_POWERSPEC.json +175 -175
  684. teradataml/data/jsons/uaf/17.20/TD_POWERTRANSFORM.json +97 -97
  685. teradataml/data/jsons/uaf/17.20/TD_RESAMPLE.json +173 -173
  686. teradataml/data/jsons/uaf/17.20/TD_SEASONALNORMALIZE.json +136 -136
  687. teradataml/data/jsons/uaf/17.20/TD_SELECTION_CRITERIA.json +89 -89
  688. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_PERIODICITIES.json +79 -79
  689. teradataml/data/jsons/uaf/17.20/TD_SIGNIF_RESIDMEAN.json +67 -67
  690. teradataml/data/jsons/uaf/17.20/TD_SIMPLEEXP.json +184 -184
  691. teradataml/data/jsons/uaf/17.20/TD_SINFO.json +57 -57
  692. teradataml/data/jsons/uaf/17.20/TD_SMOOTHMA.json +162 -162
  693. teradataml/data/jsons/uaf/17.20/TD_TRACKINGOP.json +100 -100
  694. teradataml/data/jsons/uaf/17.20/TD_UNDIFF.json +111 -111
  695. teradataml/data/jsons/uaf/17.20/TD_UNNORMALIZE.json +95 -95
  696. teradataml/data/jsons/uaf/17.20/TD_WHITES_GENERAL.json +77 -77
  697. teradataml/data/kmeans_example.json +22 -17
  698. teradataml/data/kmeans_table.csv +10 -0
  699. teradataml/data/kmeans_us_arrests_data.csv +0 -0
  700. teradataml/data/knn_example.json +18 -18
  701. teradataml/data/knnrecommender_example.json +6 -6
  702. teradataml/data/knnrecommenderpredict_example.json +12 -12
  703. teradataml/data/lar_example.json +17 -17
  704. teradataml/data/larpredict_example.json +30 -30
  705. teradataml/data/lc_new_predictors.csv +5 -5
  706. teradataml/data/lc_new_reference.csv +9 -9
  707. teradataml/data/lda_example.json +8 -8
  708. teradataml/data/ldainference_example.json +14 -14
  709. teradataml/data/ldatopicsummary_example.json +8 -8
  710. teradataml/data/levendist_input.csv +13 -13
  711. teradataml/data/levenshteindistance_example.json +10 -10
  712. teradataml/data/linreg_example.json +9 -9
  713. teradataml/data/load_example_data.py +326 -323
  714. teradataml/data/loan_prediction.csv +295 -295
  715. teradataml/data/lungcancer.csv +138 -138
  716. teradataml/data/mappingdata.csv +12 -12
  717. teradataml/data/milk_timeseries.csv +157 -157
  718. teradataml/data/min_max_titanic.csv +4 -4
  719. teradataml/data/minhash_example.json +6 -6
  720. teradataml/data/ml_ratings.csv +7547 -7547
  721. teradataml/data/ml_ratings_10.csv +2445 -2445
  722. teradataml/data/model1_table.csv +5 -5
  723. teradataml/data/model2_table.csv +5 -5
  724. teradataml/data/models/iris_db_glm_model.pmml +56 -56
  725. teradataml/data/models/iris_db_xgb_model.pmml +4471 -4471
  726. teradataml/data/modularity_example.json +12 -12
  727. teradataml/data/movavg_example.json +7 -7
  728. teradataml/data/mtx1.csv +7 -7
  729. teradataml/data/mtx2.csv +13 -13
  730. teradataml/data/multi_model_classification.csv +401 -0
  731. teradataml/data/multi_model_regression.csv +401 -0
  732. teradataml/data/mvdfft8.csv +9 -9
  733. teradataml/data/naivebayes_example.json +9 -9
  734. teradataml/data/naivebayespredict_example.json +19 -19
  735. teradataml/data/naivebayestextclassifier2_example.json +6 -6
  736. teradataml/data/naivebayestextclassifier_example.json +8 -8
  737. teradataml/data/naivebayestextclassifierpredict_example.json +20 -20
  738. teradataml/data/name_Find_configure.csv +10 -10
  739. teradataml/data/namedentityfinder_example.json +14 -14
  740. teradataml/data/namedentityfinderevaluator_example.json +10 -10
  741. teradataml/data/namedentityfindertrainer_example.json +6 -6
  742. teradataml/data/nb_iris_input_test.csv +31 -31
  743. teradataml/data/nb_iris_input_train.csv +121 -121
  744. teradataml/data/nbp_iris_model.csv +13 -13
  745. teradataml/data/ner_extractor_text.csv +2 -2
  746. teradataml/data/ner_sports_test2.csv +29 -29
  747. teradataml/data/ner_sports_train.csv +501 -501
  748. teradataml/data/nerevaluator_example.json +5 -5
  749. teradataml/data/nerextractor_example.json +18 -18
  750. teradataml/data/nermem_sports_test.csv +17 -17
  751. teradataml/data/nermem_sports_train.csv +50 -50
  752. teradataml/data/nertrainer_example.json +6 -6
  753. teradataml/data/ngrams_example.json +6 -6
  754. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Aggregate Functions using SQLAlchemy.ipynb +1455 -1455
  755. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Arithmetic Functions Using SQLAlchemy.ipynb +1993 -1993
  756. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Bit-Byte Manipulation Functions using SQLAlchemy.ipynb +1492 -1492
  757. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Built-in functions using SQLAlchemy.ipynb +536 -536
  758. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Regular Expressions Using SQLAlchemy.ipynb +570 -570
  759. teradataml/data/notebooks/sqlalchemy/Teradata Vantage String Functions Using SQLAlchemy.ipynb +2559 -2559
  760. teradataml/data/notebooks/sqlalchemy/Teradata Vantage Window Aggregate Functions using SQLAlchemy.ipynb +2911 -2911
  761. teradataml/data/notebooks/sqlalchemy/Using Generic SQLAlchemy ClauseElements teradataml DataFrame assign method.ipynb +698 -698
  762. teradataml/data/notebooks/sqlalchemy/teradataml filtering using SQLAlchemy ClauseElements.ipynb +784 -784
  763. teradataml/data/npath_example.json +23 -23
  764. teradataml/data/ntree_example.json +14 -14
  765. teradataml/data/numeric_strings.csv +4 -4
  766. teradataml/data/numerics.csv +4 -4
  767. teradataml/data/ocean_buoy.csv +17 -17
  768. teradataml/data/ocean_buoy2.csv +17 -17
  769. teradataml/data/ocean_buoys.csv +27 -27
  770. teradataml/data/ocean_buoys2.csv +10 -10
  771. teradataml/data/ocean_buoys_nonpti.csv +28 -28
  772. teradataml/data/ocean_buoys_seq.csv +29 -29
  773. teradataml/data/onehot_encoder_train.csv +4 -0
  774. teradataml/data/openml_example.json +92 -0
  775. teradataml/data/optional_event_table.csv +4 -4
  776. teradataml/data/orders1.csv +11 -11
  777. teradataml/data/orders1_12.csv +12 -12
  778. teradataml/data/orders_ex.csv +4 -4
  779. teradataml/data/pack_example.json +8 -8
  780. teradataml/data/package_tracking.csv +19 -19
  781. teradataml/data/package_tracking_pti.csv +18 -18
  782. teradataml/data/pagerank_example.json +13 -13
  783. teradataml/data/paragraphs_input.csv +6 -6
  784. teradataml/data/pathanalyzer_example.json +7 -7
  785. teradataml/data/pathgenerator_example.json +7 -7
  786. teradataml/data/phrases.csv +7 -7
  787. teradataml/data/pivot_example.json +8 -8
  788. teradataml/data/pivot_input.csv +22 -22
  789. teradataml/data/playerRating.csv +31 -31
  790. teradataml/data/postagger_example.json +6 -6
  791. teradataml/data/posttagger_output.csv +44 -44
  792. teradataml/data/production_data.csv +16 -16
  793. teradataml/data/production_data2.csv +7 -7
  794. teradataml/data/randomsample_example.json +31 -31
  795. teradataml/data/randomwalksample_example.json +8 -8
  796. teradataml/data/rank_table.csv +6 -6
  797. teradataml/data/ref_mobile_data.csv +4 -4
  798. teradataml/data/ref_mobile_data_dense.csv +2 -2
  799. teradataml/data/ref_url.csv +17 -17
  800. teradataml/data/restaurant_reviews.csv +7 -7
  801. teradataml/data/river_data.csv +145 -145
  802. teradataml/data/roc_example.json +7 -7
  803. teradataml/data/roc_input.csv +101 -101
  804. teradataml/data/rule_inputs.csv +6 -6
  805. teradataml/data/rule_table.csv +2 -2
  806. teradataml/data/sales.csv +7 -7
  807. teradataml/data/sales_transaction.csv +501 -501
  808. teradataml/data/salesdata.csv +342 -342
  809. teradataml/data/sample_cities.csv +2 -2
  810. teradataml/data/sample_shapes.csv +10 -10
  811. teradataml/data/sample_streets.csv +2 -2
  812. teradataml/data/sampling_example.json +15 -15
  813. teradataml/data/sax_example.json +8 -8
  814. teradataml/data/scale_attributes.csv +3 -0
  815. teradataml/data/scale_example.json +74 -23
  816. teradataml/data/scale_housing.csv +11 -11
  817. teradataml/data/scale_housing_test.csv +6 -6
  818. teradataml/data/scale_input_part_sparse.csv +31 -0
  819. teradataml/data/scale_input_partitioned.csv +16 -0
  820. teradataml/data/scale_input_sparse.csv +11 -0
  821. teradataml/data/scale_parameters.csv +3 -0
  822. teradataml/data/scale_stat.csv +11 -11
  823. teradataml/data/scalebypartition_example.json +13 -13
  824. teradataml/data/scalemap_example.json +13 -13
  825. teradataml/data/scalesummary_example.json +12 -12
  826. teradataml/data/score_category.csv +101 -101
  827. teradataml/data/score_summary.csv +4 -4
  828. teradataml/data/script_example.json +9 -9
  829. teradataml/data/scripts/deploy_script.py +84 -0
  830. teradataml/data/scripts/mapper.R +20 -0
  831. teradataml/data/scripts/mapper.py +15 -15
  832. teradataml/data/scripts/mapper_replace.py +15 -15
  833. teradataml/data/scripts/sklearn/__init__.py +0 -0
  834. teradataml/data/scripts/sklearn/sklearn_fit.py +171 -0
  835. teradataml/data/scripts/sklearn/sklearn_fit_predict.py +127 -0
  836. teradataml/data/scripts/sklearn/sklearn_function.template +108 -0
  837. teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +148 -0
  838. teradataml/data/scripts/sklearn/sklearn_neighbors.py +143 -0
  839. teradataml/data/scripts/sklearn/sklearn_score.py +119 -0
  840. teradataml/data/scripts/sklearn/sklearn_transform.py +171 -0
  841. teradataml/data/seeds.csv +10 -10
  842. teradataml/data/sentenceextractor_example.json +6 -6
  843. teradataml/data/sentiment_extract_input.csv +11 -11
  844. teradataml/data/sentiment_train.csv +16 -16
  845. teradataml/data/sentiment_word.csv +20 -20
  846. teradataml/data/sentiment_word_input.csv +19 -19
  847. teradataml/data/sentimentextractor_example.json +24 -24
  848. teradataml/data/sentimenttrainer_example.json +8 -8
  849. teradataml/data/sequence_table.csv +10 -10
  850. teradataml/data/seriessplitter_example.json +7 -7
  851. teradataml/data/sessionize_example.json +17 -17
  852. teradataml/data/sessionize_table.csv +116 -116
  853. teradataml/data/setop_test1.csv +24 -24
  854. teradataml/data/setop_test2.csv +22 -22
  855. teradataml/data/soc_nw_edges.csv +10 -10
  856. teradataml/data/soc_nw_vertices.csv +7 -7
  857. teradataml/data/souvenir_timeseries.csv +167 -167
  858. teradataml/data/sparse_iris_attribute.csv +5 -5
  859. teradataml/data/sparse_iris_test.csv +121 -121
  860. teradataml/data/sparse_iris_train.csv +601 -601
  861. teradataml/data/star1.csv +6 -6
  862. teradataml/data/state_transition.csv +5 -5
  863. teradataml/data/stock_data.csv +53 -53
  864. teradataml/data/stock_movement.csv +11 -11
  865. teradataml/data/stock_vol.csv +76 -76
  866. teradataml/data/stop_words.csv +8 -8
  867. teradataml/data/store_sales.csv +37 -37
  868. teradataml/data/stringsimilarity_example.json +7 -7
  869. teradataml/data/strsimilarity_input.csv +13 -13
  870. teradataml/data/students.csv +101 -101
  871. teradataml/data/svm_iris_input_test.csv +121 -121
  872. teradataml/data/svm_iris_input_train.csv +481 -481
  873. teradataml/data/svm_iris_model.csv +7 -7
  874. teradataml/data/svmdense_example.json +9 -9
  875. teradataml/data/svmdensepredict_example.json +18 -18
  876. teradataml/data/svmsparse_example.json +7 -7
  877. teradataml/data/svmsparsepredict_example.json +13 -13
  878. teradataml/data/svmsparsesummary_example.json +7 -7
  879. teradataml/data/target_mobile_data.csv +13 -13
  880. teradataml/data/target_mobile_data_dense.csv +5 -5
  881. teradataml/data/templatedata.csv +1201 -1201
  882. teradataml/data/templates/open_source_ml.json +9 -0
  883. teradataml/data/teradataml_example.json +150 -1
  884. teradataml/data/test_classification.csv +101 -0
  885. teradataml/data/test_loan_prediction.csv +53 -53
  886. teradataml/data/test_pacf_12.csv +37 -37
  887. teradataml/data/test_prediction.csv +101 -0
  888. teradataml/data/test_regression.csv +101 -0
  889. teradataml/data/test_river2.csv +109 -109
  890. teradataml/data/text_inputs.csv +6 -6
  891. teradataml/data/textchunker_example.json +7 -7
  892. teradataml/data/textclassifier_example.json +6 -6
  893. teradataml/data/textclassifier_input.csv +7 -7
  894. teradataml/data/textclassifiertrainer_example.json +6 -6
  895. teradataml/data/textmorph_example.json +5 -5
  896. teradataml/data/textparser_example.json +15 -15
  897. teradataml/data/texttagger_example.json +11 -11
  898. teradataml/data/texttokenizer_example.json +6 -6
  899. teradataml/data/texttrainer_input.csv +11 -11
  900. teradataml/data/tf_example.json +6 -6
  901. teradataml/data/tfidf_example.json +13 -13
  902. teradataml/data/tfidf_input1.csv +201 -201
  903. teradataml/data/tfidf_train.csv +6 -6
  904. teradataml/data/time_table1.csv +535 -535
  905. teradataml/data/time_table2.csv +14 -14
  906. teradataml/data/timeseriesdata.csv +1601 -1601
  907. teradataml/data/timeseriesdatasetsd4.csv +105 -105
  908. teradataml/data/titanic.csv +892 -892
  909. teradataml/data/token_table.csv +696 -696
  910. teradataml/data/train_multiclass.csv +101 -0
  911. teradataml/data/train_regression.csv +101 -0
  912. teradataml/data/train_regression_multiple_labels.csv +101 -0
  913. teradataml/data/train_tracking.csv +27 -27
  914. teradataml/data/transformation_table.csv +5 -5
  915. teradataml/data/transformation_table_new.csv +1 -1
  916. teradataml/data/tv_spots.csv +16 -16
  917. teradataml/data/twod_climate_data.csv +117 -117
  918. teradataml/data/uaf_example.json +475 -475
  919. teradataml/data/univariatestatistics_example.json +8 -8
  920. teradataml/data/unpack_example.json +9 -9
  921. teradataml/data/unpivot_example.json +9 -9
  922. teradataml/data/unpivot_input.csv +8 -8
  923. teradataml/data/us_air_pass.csv +36 -36
  924. teradataml/data/us_population.csv +624 -624
  925. teradataml/data/us_states_shapes.csv +52 -52
  926. teradataml/data/varmax_example.json +17 -17
  927. teradataml/data/vectordistance_example.json +25 -25
  928. teradataml/data/ville_climatedata.csv +121 -121
  929. teradataml/data/ville_tempdata.csv +12 -12
  930. teradataml/data/ville_tempdata1.csv +12 -12
  931. teradataml/data/ville_temperature.csv +11 -11
  932. teradataml/data/waveletTable.csv +1605 -1605
  933. teradataml/data/waveletTable2.csv +1605 -1605
  934. teradataml/data/weightedmovavg_example.json +8 -8
  935. teradataml/data/wft_testing.csv +5 -5
  936. teradataml/data/wine_data.csv +1600 -0
  937. teradataml/data/word_embed_input_table1.csv +5 -5
  938. teradataml/data/word_embed_input_table2.csv +4 -4
  939. teradataml/data/word_embed_model.csv +22 -22
  940. teradataml/data/words_input.csv +13 -13
  941. teradataml/data/xconvolve_complex_left.csv +6 -6
  942. teradataml/data/xconvolve_complex_leftmulti.csv +6 -6
  943. teradataml/data/xgboost_example.json +35 -35
  944. teradataml/data/xgboostpredict_example.json +31 -31
  945. teradataml/data/ztest_example.json +16 -0
  946. teradataml/dataframe/copy_to.py +1769 -1698
  947. teradataml/dataframe/data_transfer.py +2812 -2745
  948. teradataml/dataframe/dataframe.py +17630 -16946
  949. teradataml/dataframe/dataframe_utils.py +1875 -1740
  950. teradataml/dataframe/fastload.py +794 -603
  951. teradataml/dataframe/indexer.py +424 -424
  952. teradataml/dataframe/setop.py +1179 -1166
  953. teradataml/dataframe/sql.py +10174 -6432
  954. teradataml/dataframe/sql_function_parameters.py +439 -388
  955. teradataml/dataframe/sql_functions.py +652 -652
  956. teradataml/dataframe/sql_interfaces.py +220 -220
  957. teradataml/dataframe/vantage_function_types.py +674 -630
  958. teradataml/dataframe/window.py +693 -692
  959. teradataml/dbutils/__init__.py +3 -3
  960. teradataml/dbutils/dbutils.py +1167 -1150
  961. teradataml/dbutils/filemgr.py +267 -267
  962. teradataml/gen_ai/__init__.py +2 -2
  963. teradataml/gen_ai/convAI.py +472 -472
  964. teradataml/geospatial/__init__.py +3 -3
  965. teradataml/geospatial/geodataframe.py +1105 -1094
  966. teradataml/geospatial/geodataframecolumn.py +392 -387
  967. teradataml/geospatial/geometry_types.py +925 -925
  968. teradataml/hyperparameter_tuner/__init__.py +1 -1
  969. teradataml/hyperparameter_tuner/optimizer.py +3783 -2993
  970. teradataml/hyperparameter_tuner/utils.py +281 -187
  971. teradataml/lib/aed_0_1.dll +0 -0
  972. teradataml/lib/libaed_0_1.dylib +0 -0
  973. teradataml/lib/libaed_0_1.so +0 -0
  974. teradataml/libaed_0_1.dylib +0 -0
  975. teradataml/libaed_0_1.so +0 -0
  976. teradataml/opensource/__init__.py +1 -0
  977. teradataml/opensource/sklearn/__init__.py +1 -0
  978. teradataml/opensource/sklearn/_class.py +255 -0
  979. teradataml/opensource/sklearn/_sklearn_wrapper.py +1715 -0
  980. teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
  981. teradataml/opensource/sklearn/constants.py +54 -0
  982. teradataml/options/__init__.py +130 -124
  983. teradataml/options/configure.py +358 -336
  984. teradataml/options/display.py +176 -176
  985. teradataml/plot/__init__.py +2 -2
  986. teradataml/plot/axis.py +1388 -1388
  987. teradataml/plot/constants.py +15 -15
  988. teradataml/plot/figure.py +398 -398
  989. teradataml/plot/plot.py +760 -760
  990. teradataml/plot/query_generator.py +83 -83
  991. teradataml/plot/subplot.py +216 -216
  992. teradataml/scriptmgmt/UserEnv.py +3791 -3761
  993. teradataml/scriptmgmt/__init__.py +3 -3
  994. teradataml/scriptmgmt/lls_utils.py +1719 -1604
  995. teradataml/series/series.py +532 -532
  996. teradataml/series/series_utils.py +71 -71
  997. teradataml/table_operators/Apply.py +949 -917
  998. teradataml/table_operators/Script.py +1718 -1982
  999. teradataml/table_operators/TableOperator.py +1255 -1616
  1000. teradataml/table_operators/__init__.py +2 -3
  1001. teradataml/table_operators/apply_query_generator.py +262 -262
  1002. teradataml/table_operators/query_generator.py +507 -507
  1003. teradataml/table_operators/table_operator_query_generator.py +460 -460
  1004. teradataml/table_operators/table_operator_util.py +631 -639
  1005. teradataml/table_operators/templates/dataframe_apply.template +184 -184
  1006. teradataml/table_operators/templates/dataframe_map.template +176 -176
  1007. teradataml/table_operators/templates/script_executor.template +170 -170
  1008. teradataml/utils/dtypes.py +684 -684
  1009. teradataml/utils/internal_buffer.py +84 -84
  1010. teradataml/utils/print_versions.py +205 -205
  1011. teradataml/utils/utils.py +410 -410
  1012. teradataml/utils/validators.py +2277 -2115
  1013. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/METADATA +346 -45
  1014. teradataml-20.0.0.1.dist-info/RECORD +1056 -0
  1015. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/WHEEL +1 -1
  1016. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/zip-safe +1 -1
  1017. teradataml/analytics/mle/AdaBoost.py +0 -651
  1018. teradataml/analytics/mle/AdaBoostPredict.py +0 -564
  1019. teradataml/analytics/mle/Antiselect.py +0 -342
  1020. teradataml/analytics/mle/Arima.py +0 -641
  1021. teradataml/analytics/mle/ArimaPredict.py +0 -477
  1022. teradataml/analytics/mle/Attribution.py +0 -1070
  1023. teradataml/analytics/mle/Betweenness.py +0 -658
  1024. teradataml/analytics/mle/Burst.py +0 -711
  1025. teradataml/analytics/mle/CCM.py +0 -600
  1026. teradataml/analytics/mle/CCMPrepare.py +0 -324
  1027. teradataml/analytics/mle/CFilter.py +0 -460
  1028. teradataml/analytics/mle/ChangePointDetection.py +0 -572
  1029. teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
  1030. teradataml/analytics/mle/Closeness.py +0 -737
  1031. teradataml/analytics/mle/ConfusionMatrix.py +0 -420
  1032. teradataml/analytics/mle/Correlation.py +0 -477
  1033. teradataml/analytics/mle/Correlation2.py +0 -573
  1034. teradataml/analytics/mle/CoxHazardRatio.py +0 -679
  1035. teradataml/analytics/mle/CoxPH.py +0 -556
  1036. teradataml/analytics/mle/CoxSurvival.py +0 -478
  1037. teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
  1038. teradataml/analytics/mle/DTW.py +0 -623
  1039. teradataml/analytics/mle/DWT.py +0 -564
  1040. teradataml/analytics/mle/DWT2D.py +0 -599
  1041. teradataml/analytics/mle/DecisionForest.py +0 -716
  1042. teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
  1043. teradataml/analytics/mle/DecisionForestPredict.py +0 -561
  1044. teradataml/analytics/mle/DecisionTree.py +0 -830
  1045. teradataml/analytics/mle/DecisionTreePredict.py +0 -528
  1046. teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
  1047. teradataml/analytics/mle/FMeasure.py +0 -402
  1048. teradataml/analytics/mle/FPGrowth.py +0 -734
  1049. teradataml/analytics/mle/FrequentPaths.py +0 -695
  1050. teradataml/analytics/mle/GLM.py +0 -558
  1051. teradataml/analytics/mle/GLML1L2.py +0 -547
  1052. teradataml/analytics/mle/GLML1L2Predict.py +0 -519
  1053. teradataml/analytics/mle/GLMPredict.py +0 -529
  1054. teradataml/analytics/mle/HMMDecoder.py +0 -945
  1055. teradataml/analytics/mle/HMMEvaluator.py +0 -901
  1056. teradataml/analytics/mle/HMMSupervised.py +0 -521
  1057. teradataml/analytics/mle/HMMUnsupervised.py +0 -572
  1058. teradataml/analytics/mle/Histogram.py +0 -561
  1059. teradataml/analytics/mle/IDWT.py +0 -476
  1060. teradataml/analytics/mle/IDWT2D.py +0 -493
  1061. teradataml/analytics/mle/IdentityMatch.py +0 -763
  1062. teradataml/analytics/mle/Interpolator.py +0 -918
  1063. teradataml/analytics/mle/KMeans.py +0 -485
  1064. teradataml/analytics/mle/KNN.py +0 -627
  1065. teradataml/analytics/mle/KNNRecommender.py +0 -488
  1066. teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
  1067. teradataml/analytics/mle/LAR.py +0 -439
  1068. teradataml/analytics/mle/LARPredict.py +0 -478
  1069. teradataml/analytics/mle/LDA.py +0 -548
  1070. teradataml/analytics/mle/LDAInference.py +0 -492
  1071. teradataml/analytics/mle/LDATopicSummary.py +0 -464
  1072. teradataml/analytics/mle/LevenshteinDistance.py +0 -450
  1073. teradataml/analytics/mle/LinReg.py +0 -433
  1074. teradataml/analytics/mle/LinRegPredict.py +0 -438
  1075. teradataml/analytics/mle/MinHash.py +0 -544
  1076. teradataml/analytics/mle/Modularity.py +0 -587
  1077. teradataml/analytics/mle/NEREvaluator.py +0 -410
  1078. teradataml/analytics/mle/NERExtractor.py +0 -595
  1079. teradataml/analytics/mle/NERTrainer.py +0 -458
  1080. teradataml/analytics/mle/NGrams.py +0 -570
  1081. teradataml/analytics/mle/NPath.py +0 -634
  1082. teradataml/analytics/mle/NTree.py +0 -549
  1083. teradataml/analytics/mle/NaiveBayes.py +0 -462
  1084. teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
  1085. teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
  1086. teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
  1087. teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
  1088. teradataml/analytics/mle/NamedEntityFinder.py +0 -529
  1089. teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
  1090. teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
  1091. teradataml/analytics/mle/POSTagger.py +0 -417
  1092. teradataml/analytics/mle/Pack.py +0 -411
  1093. teradataml/analytics/mle/PageRank.py +0 -535
  1094. teradataml/analytics/mle/PathAnalyzer.py +0 -426
  1095. teradataml/analytics/mle/PathGenerator.py +0 -367
  1096. teradataml/analytics/mle/PathStart.py +0 -464
  1097. teradataml/analytics/mle/PathSummarizer.py +0 -470
  1098. teradataml/analytics/mle/Pivot.py +0 -471
  1099. teradataml/analytics/mle/ROC.py +0 -425
  1100. teradataml/analytics/mle/RandomSample.py +0 -637
  1101. teradataml/analytics/mle/RandomWalkSample.py +0 -490
  1102. teradataml/analytics/mle/SAX.py +0 -779
  1103. teradataml/analytics/mle/SVMDense.py +0 -677
  1104. teradataml/analytics/mle/SVMDensePredict.py +0 -536
  1105. teradataml/analytics/mle/SVMDenseSummary.py +0 -437
  1106. teradataml/analytics/mle/SVMSparse.py +0 -557
  1107. teradataml/analytics/mle/SVMSparsePredict.py +0 -553
  1108. teradataml/analytics/mle/SVMSparseSummary.py +0 -435
  1109. teradataml/analytics/mle/Sampling.py +0 -549
  1110. teradataml/analytics/mle/Scale.py +0 -565
  1111. teradataml/analytics/mle/ScaleByPartition.py +0 -496
  1112. teradataml/analytics/mle/ScaleMap.py +0 -378
  1113. teradataml/analytics/mle/ScaleSummary.py +0 -320
  1114. teradataml/analytics/mle/SentenceExtractor.py +0 -363
  1115. teradataml/analytics/mle/SentimentEvaluator.py +0 -432
  1116. teradataml/analytics/mle/SentimentExtractor.py +0 -578
  1117. teradataml/analytics/mle/SentimentTrainer.py +0 -405
  1118. teradataml/analytics/mle/SeriesSplitter.py +0 -641
  1119. teradataml/analytics/mle/Sessionize.py +0 -475
  1120. teradataml/analytics/mle/SimpleMovAvg.py +0 -397
  1121. teradataml/analytics/mle/StringSimilarity.py +0 -425
  1122. teradataml/analytics/mle/TF.py +0 -389
  1123. teradataml/analytics/mle/TFIDF.py +0 -504
  1124. teradataml/analytics/mle/TextChunker.py +0 -414
  1125. teradataml/analytics/mle/TextClassifier.py +0 -399
  1126. teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
  1127. teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
  1128. teradataml/analytics/mle/TextMorph.py +0 -494
  1129. teradataml/analytics/mle/TextParser.py +0 -623
  1130. teradataml/analytics/mle/TextTagger.py +0 -530
  1131. teradataml/analytics/mle/TextTokenizer.py +0 -502
  1132. teradataml/analytics/mle/UnivariateStatistics.py +0 -488
  1133. teradataml/analytics/mle/Unpack.py +0 -526
  1134. teradataml/analytics/mle/Unpivot.py +0 -438
  1135. teradataml/analytics/mle/VarMax.py +0 -776
  1136. teradataml/analytics/mle/VectorDistance.py +0 -762
  1137. teradataml/analytics/mle/WeightedMovAvg.py +0 -400
  1138. teradataml/analytics/mle/XGBoost.py +0 -842
  1139. teradataml/analytics/mle/XGBoostPredict.py +0 -627
  1140. teradataml/analytics/mle/__init__.py +0 -123
  1141. teradataml/analytics/mle/json/adaboost_mle.json +0 -135
  1142. teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
  1143. teradataml/analytics/mle/json/antiselect_mle.json +0 -34
  1144. teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
  1145. teradataml/analytics/mle/json/arima_mle.json +0 -172
  1146. teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
  1147. teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
  1148. teradataml/analytics/mle/json/betweenness_mle.json +0 -97
  1149. teradataml/analytics/mle/json/burst_mle.json +0 -140
  1150. teradataml/analytics/mle/json/ccm_mle.json +0 -124
  1151. teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
  1152. teradataml/analytics/mle/json/cfilter_mle.json +0 -93
  1153. teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
  1154. teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
  1155. teradataml/analytics/mle/json/closeness_mle.json +0 -104
  1156. teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
  1157. teradataml/analytics/mle/json/correlation_mle.json +0 -86
  1158. teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
  1159. teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
  1160. teradataml/analytics/mle/json/coxph_mle.json +0 -98
  1161. teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
  1162. teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
  1163. teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
  1164. teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
  1165. teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
  1166. teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
  1167. teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
  1168. teradataml/analytics/mle/json/dtw_mle.json +0 -97
  1169. teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
  1170. teradataml/analytics/mle/json/dwt_mle.json +0 -101
  1171. teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
  1172. teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
  1173. teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
  1174. teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
  1175. teradataml/analytics/mle/json/glm_mle.json +0 -111
  1176. teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
  1177. teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
  1178. teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
  1179. teradataml/analytics/mle/json/histogram_mle.json +0 -100
  1180. teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
  1181. teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
  1182. teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
  1183. teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
  1184. teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
  1185. teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
  1186. teradataml/analytics/mle/json/idwt_mle.json +0 -66
  1187. teradataml/analytics/mle/json/interpolator_mle.json +0 -151
  1188. teradataml/analytics/mle/json/kmeans_mle.json +0 -97
  1189. teradataml/analytics/mle/json/knn_mle.json +0 -141
  1190. teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
  1191. teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
  1192. teradataml/analytics/mle/json/lar_mle.json +0 -78
  1193. teradataml/analytics/mle/json/larpredict_mle.json +0 -69
  1194. teradataml/analytics/mle/json/lda_mle.json +0 -130
  1195. teradataml/analytics/mle/json/ldainference_mle.json +0 -78
  1196. teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
  1197. teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
  1198. teradataml/analytics/mle/json/linreg_mle.json +0 -42
  1199. teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
  1200. teradataml/analytics/mle/json/minhash_mle.json +0 -113
  1201. teradataml/analytics/mle/json/modularity_mle.json +0 -91
  1202. teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
  1203. teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
  1204. teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
  1205. teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
  1206. teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
  1207. teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
  1208. teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
  1209. teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
  1210. teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
  1211. teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
  1212. teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
  1213. teradataml/analytics/mle/json/ngrams_mle.json +0 -137
  1214. teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
  1215. teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
  1216. teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
  1217. teradataml/analytics/mle/json/pack_mle.json +0 -58
  1218. teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
  1219. teradataml/analytics/mle/json/pagerank_mle.json +0 -81
  1220. teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
  1221. teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
  1222. teradataml/analytics/mle/json/pathstart_mle.json +0 -62
  1223. teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
  1224. teradataml/analytics/mle/json/pivoting_mle.json +0 -71
  1225. teradataml/analytics/mle/json/postagger_mle.json +0 -51
  1226. teradataml/analytics/mle/json/randomsample_mle.json +0 -131
  1227. teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
  1228. teradataml/analytics/mle/json/roc_mle.json +0 -73
  1229. teradataml/analytics/mle/json/sampling_mle.json +0 -75
  1230. teradataml/analytics/mle/json/sax_mle.json +0 -154
  1231. teradataml/analytics/mle/json/scale_mle.json +0 -93
  1232. teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
  1233. teradataml/analytics/mle/json/scalemap_mle.json +0 -44
  1234. teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
  1235. teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
  1236. teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
  1237. teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
  1238. teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
  1239. teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
  1240. teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
  1241. teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
  1242. teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
  1243. teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
  1244. teradataml/analytics/mle/json/svmdense_mle.json +0 -165
  1245. teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
  1246. teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
  1247. teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
  1248. teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
  1249. teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
  1250. teradataml/analytics/mle/json/textchunker_mle.json +0 -40
  1251. teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
  1252. teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
  1253. teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
  1254. teradataml/analytics/mle/json/textmorph_mle.json +0 -63
  1255. teradataml/analytics/mle/json/textparser_mle.json +0 -166
  1256. teradataml/analytics/mle/json/texttagger_mle.json +0 -81
  1257. teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
  1258. teradataml/analytics/mle/json/tf_mle.json +0 -33
  1259. teradataml/analytics/mle/json/tfidf_mle.json +0 -34
  1260. teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
  1261. teradataml/analytics/mle/json/unpack_mle.json +0 -91
  1262. teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
  1263. teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
  1264. teradataml/analytics/mle/json/varmax_mle.json +0 -176
  1265. teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
  1266. teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
  1267. teradataml/analytics/mle/json/xgboost_mle.json +0 -178
  1268. teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
  1269. teradataml/analytics/sqle/Antiselect.py +0 -321
  1270. teradataml/analytics/sqle/Attribution.py +0 -603
  1271. teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
  1272. teradataml/analytics/sqle/GLMPredict.py +0 -430
  1273. teradataml/analytics/sqle/MovingAverage.py +0 -543
  1274. teradataml/analytics/sqle/NGramSplitter.py +0 -548
  1275. teradataml/analytics/sqle/NPath.py +0 -632
  1276. teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
  1277. teradataml/analytics/sqle/Pack.py +0 -388
  1278. teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
  1279. teradataml/analytics/sqle/Sessionize.py +0 -390
  1280. teradataml/analytics/sqle/StringSimilarity.py +0 -400
  1281. teradataml/analytics/sqle/Unpack.py +0 -503
  1282. teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
  1283. teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
  1284. teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
  1285. teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
  1286. teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
  1287. teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
  1288. teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
  1289. teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
  1290. teradataml/analytics/sqle/json/npath_sqle.json +0 -67
  1291. teradataml/analytics/sqle/json/pack_sqle.json +0 -47
  1292. teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
  1293. teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
  1294. teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
  1295. teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
  1296. teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
  1297. teradataml/catalog/model_cataloging.py +0 -980
  1298. teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
  1299. teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
  1300. teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
  1301. teradataml/table_operators/sandbox_container_util.py +0 -643
  1302. teradataml-17.20.0.7.dist-info/RECORD +0 -1280
  1303. {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/top_level.txt +0 -0
@@ -1,1150 +1,1167 @@
1
- """
2
- Copyright (c) 2018 by Teradata Corporation. All rights reserved.
3
- TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
-
5
- Primary Owner: rameshchandra.d@teradata.com
6
- Secondary Owner: sanath.vobilisetty@teradata.com
7
-
8
- teradataml db utilities
9
- ----------
10
- A teradataml database utility functions provide interface to Teradata Vantage common tasks such as drop_table, drop_view, create_table etc.
11
- """
12
- import concurrent.futures, json, os, tempfile, shutil
13
- from datetime import datetime
14
- import pandas as pd
15
- from sqlalchemy.sql.functions import Function
16
- from teradataml.context import context as tdmlctx
17
- from teradataml.common.utils import UtilFuncs
18
- from teradataml.common.messages import Messages
19
- from teradataml.common.messagecodes import MessageCodes
20
- from teradataml.common.exceptions import TeradataMlException
21
- from teradataml.common.constants import TeradataTableKindConstants
22
- from teradataml.common.sqlbundle import SQLBundle
23
- from teradataml.common.constants import SQLConstants
24
- from teradataml.common.constants import TableOperatorConstants
25
- import teradataml.dataframe as tdmldf
26
- from teradataml.options.configure import configure
27
- from teradataml.utils.utils import execute_sql
28
- from teradataml.utils.validators import _Validators
29
- from teradatasql import OperationalError
30
- from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
31
- from teradatasqlalchemy.dialect import TDCreateTablePost as post
32
- from sqlalchemy import Table, Column, MetaData, CheckConstraint, \
33
- PrimaryKeyConstraint, ForeignKeyConstraint, UniqueConstraint
34
-
35
-
36
- def db_drop_table(table_name, schema_name=None):
37
- """
38
- DESCRIPTION:
39
- Drops the table from the given schema.
40
-
41
- PARAMETERS:
42
- table_name:
43
- Required Argument
44
- Specifies the table name to be dropped.
45
- Types: str
46
-
47
- schema_name:
48
- Optional Argument
49
- Specifies schema of the table to be dropped. If schema is not specified, function drops table from the
50
- current database.
51
- Default Value: None
52
- Types: str
53
-
54
- RETURNS:
55
- True - if the operation is successful.
56
-
57
- RAISES:
58
- TeradataMlException - If the table doesn't exist.
59
-
60
- EXAMPLES:
61
- >>> load_example_data("dataframe", "admissions_train")
62
-
63
- # Drop table in current database
64
- >>> db_drop_table(table_name = 'admissions_train')
65
-
66
- # Drop table from the given schema
67
- >>> db_drop_table(table_name = 'admissions_train', schema_name = 'alice')
68
- """
69
- # Argument validations
70
- awu_matrix = []
71
- awu_matrix.append(["schema_name", schema_name, True, (str), True])
72
- awu_matrix.append(["table_name", table_name, False, (str), True])
73
-
74
- # Validate argument types
75
- _Validators._validate_function_arguments(awu_matrix)
76
-
77
- # Joining view and schema names in the format "schema_name"."view_name"
78
- table_name = _get_quoted_object_name(schema_name, table_name)
79
-
80
- try:
81
- return UtilFuncs._drop_table(table_name)
82
- except TeradataMlException:
83
- raise
84
- except OperationalError:
85
- raise
86
- except Exception as err:
87
- raise TeradataMlException(Messages.get_message(MessageCodes.DROP_FAILED, "table",
88
- table_name),
89
- MessageCodes.DROP_FAILED) from err
90
-
91
- def db_drop_view(view_name, schema_name=None):
92
- """
93
- DESCRIPTION:
94
- Drops the view from the given schema.
95
-
96
- PARAMETERS:
97
- view_name:
98
- Required Argument
99
- Specifies view name to be dropped.
100
- Types: str
101
-
102
- schema_name:
103
- Optional Argument
104
- Specifies schema of the view to be dropped. If schema is not specified, function drops view from the current
105
- database.
106
- Default Value: None
107
- Types: str
108
-
109
- RETURNS:
110
- True - if the operation is successful.
111
-
112
- RAISES:
113
- TeradataMlException - If the view doesn't exist.
114
-
115
- EXAMPLES:
116
- # Create a view
117
- >>> execute_sql("create view temporary_view as (select 1 as dummy_col1, 2 as dummy_col2);")
118
-
119
- # Drop view in current schema
120
- >>> db_drop_view(view_name = 'temporary_view')
121
-
122
- # Drop view from the given schema
123
- >>> db_drop_view(view_name = 'temporary_view', schema_name = 'alice')
124
- """
125
- # Argument validations
126
- awu_matrix = []
127
- awu_matrix.append(["schema_name", schema_name, True, (str), True])
128
- awu_matrix.append(["view_name", view_name, False, (str), True])
129
-
130
- # Validate argument types
131
- _Validators._validate_function_arguments(awu_matrix)
132
-
133
- # Joining view and schema names in the format "schema_name"."view_name"
134
- view_name = _get_quoted_object_name(schema_name, view_name)
135
-
136
- try:
137
- return UtilFuncs._drop_view(view_name)
138
- except TeradataMlException:
139
- raise
140
- except OperationalError:
141
- raise
142
- except Exception as err:
143
- raise TeradataMlException(Messages.get_message(MessageCodes.DROP_FAILED, "view",
144
- view_name),
145
- MessageCodes.DROP_FAILED) from err
146
-
147
- def db_list_tables(schema_name=None, object_name=None, object_type='all'):
148
- """
149
- DESCRIPTION:
150
- Lists the Vantage objects(table/view) names for the specified schema name.
151
-
152
- PARAMETERS:
153
- schema_name:
154
- Optional Argument.
155
- Specifies the name of schema in the database. If schema is not specified, function lists tables/views from
156
- the current database.
157
- Default Value: None
158
- Types: str
159
-
160
- object_name:
161
- Optional Argument.
162
- Specifies a table/view name or pattern to be used for filtering them from the database.
163
- Pattern may contain '%' or '_' as pattern matching characters.
164
- A '%' represents any string of zero or more arbitrary characters. Any string of characters is acceptable as
165
- a replacement for the percent.
166
- A '_' represents exactly one arbitrary character. Any single character is acceptable in the position in
167
- which the underscore character appears.
168
- Default Value: None
169
- Types: str
170
- Example:
171
- 1. '%abc' will return all table/view object names starting with any character and ending with abc.
172
- 2. 'a_c' will return all table/view object names starting with 'a', ending with 'c' and has length of 3.
173
-
174
- object_type:
175
- Optional Argument.
176
- Specifies object type to apply the filter. Valid values for this argument are 'all','table','view',
177
- 'volatile','temp'.
178
- * all - List all the object types.
179
- * table - List only tables.
180
- * view - List only views.
181
- * volatile - List only volatile tables.
182
- * temp - List all teradataml temporary objects created in the specified database.
183
- Default Value: 'all'
184
- Types: str
185
-
186
- RETURNS:
187
- Pandas DataFrame
188
-
189
- RAISES:
190
- TeradataMlException - If the object_type argument is provided with invalid values.
191
- OperationalError - If any errors are raised from Vantage.
192
-
193
- EXAMPLES:
194
- # Example 1 - List all object types in the default schema
195
- >>> load_example_data("dataframe", "admissions_train")
196
- >>> db_list_tables()
197
-
198
- # Example 2 - List all the views in the default schema
199
- >>> execute_sql("create view temporary_view as (select 1 as dummy_col1, 2 as dummy_col2);")
200
- >>> db_list_tables(None , None, 'view')
201
-
202
- # Example 3 - List all the object types in the default schema whose names begin with 'abc' followed by one
203
- # arbitrary character and any number of characters in the end.
204
- >>> execute_sql("create view abcd123 as (select 1 as dummy_col1, 2 as dummy_col2);")
205
- >>> db_list_tables(None, 'abc_%', None)
206
-
207
- # Example 4 - List all the tables in the default schema whose names begin with 'adm_%' followed by one
208
- # arbitrary character and any number of characters in the end.
209
- >>> load_example_data("dataframe", "admissions_train")
210
- >>> db_list_tables(None, 'adm_%', 'table')
211
-
212
- # Example 5 - List all the views in the default schema whose names begin with any character but ends with 'abc'
213
- >>> execute_sql("create view view_abc as (select 1 as dummy_col1, 2 as dummy_col2);")
214
- >>> db_list_tables(None, '%abc', 'view')
215
-
216
- # Example 6 - List all the volatile tables in the default schema whose names begin with 'abc' and ends with any
217
- # arbitrary character and has a length of 4
218
- >>> execute_sql("CREATE volatile TABLE abcd(col0 int, col1 float) NO PRIMARY INDEX;")
219
- >>> db_list_tables(None, 'abc_', 'volatile')
220
-
221
- # Example 7 - List all the temporary objects created by teradataml in the default schema whose names begins and
222
- # ends with any number of arbitrary characters but contains 'filter' in between.
223
- >>> db_list_tables(None, '%filter%', 'temp')
224
- """
225
-
226
- if tdmlctx.get_connection() is None:
227
- raise TeradataMlException(Messages.get_message(MessageCodes.INVALID_CONTEXT_CONNECTION),
228
- MessageCodes.INVALID_CONTEXT_CONNECTION)
229
-
230
- # Argument validations
231
- awu_matrix = []
232
- awu_matrix.append(["schema_name", schema_name, True, (str), True])
233
- awu_matrix.append(["object_name", object_name, True, (str), True])
234
- permitted_object_types = [TeradataTableKindConstants.ALL.value,
235
- TeradataTableKindConstants.TABLE.value,
236
- TeradataTableKindConstants.VIEW.value,
237
- TeradataTableKindConstants.VOLATILE.value,
238
- TeradataTableKindConstants.TEMP.value]
239
- awu_matrix.append(["object_type", object_type, True, (str), True, permitted_object_types])
240
-
241
- # Validate argument types
242
- _Validators._validate_function_arguments(awu_matrix)
243
-
244
- try:
245
- return _get_select_table_kind(schema_name, object_name, object_type)
246
- except TeradataMlException:
247
- raise
248
- except OperationalError:
249
- raise
250
- except Exception as err:
251
- raise TeradataMlException(Messages.get_message(MessageCodes.LIST_DB_TABLES_FAILED),
252
- MessageCodes.LIST_DB_TABLES_FAILED) from err
253
-
254
- def _get_select_table_kind(schema_name, table_name, table_kind):
255
- """
256
- Get the list of the table names from the specified schema name.
257
-
258
- PARAMETERS:
259
- schema_name - The Name of schema in the database. The default value is the current database name.
260
- table_name - The pattern to be used to filtering the table names from the database.
261
- The table name argument can contain '%' as pattern matching charecter.For example '%abc'
262
- will return all table names starting with any charecters and ending with abc.
263
- table_kind - The table kind to apply the filter. The valid values are 'all','table','view','volatile','temp'.
264
- all - list the all the table kinds.
265
- table - list only tables.
266
- view - list only views.
267
- volatile - list only volatile temp.
268
- temp - list all teradata ml temporary objects created in the specified database.
269
- RETURNS:
270
- Panda's DataFrame - if the operation is successful.
271
-
272
- RAISES:
273
- Database error if an error occurred while executing query.
274
-
275
- EXAMPLES:
276
- _get_select_table_kind("schema_name", "table_name", "all")
277
- """
278
- object_name_str = None
279
- if table_name is not None:
280
- object_name_str = "'{0}'".format(table_name)
281
- object_table_kind = None
282
-
283
- # Check the schema name.
284
- if schema_name is None:
285
- schema_name = tdmlctx._get_current_databasename()
286
-
287
- # Check the table kind.
288
- if (table_kind == TeradataTableKindConstants.VOLATILE.value):
289
- query = SQLBundle._build_help_volatile_table()
290
- else:
291
- # Tablekind:
292
- # 'O' - stands for Table with no primary index and no partitioning
293
- # 'Q' - stands for Queue table
294
- # 'T' - stands for a Table with a primary index or primary AMP index, partitioning, or both.
295
- # Or a partitioned table with NoPI
296
- # 'V' - stands for View
297
- if (table_kind == TeradataTableKindConstants.TABLE.value):
298
- object_table_kind = "'{0}','{1}','{2}'".format('O', 'Q', 'T')
299
- elif (table_kind == TeradataTableKindConstants.VIEW.value):
300
- object_table_kind = "'{0}'".format('V')
301
- elif (table_kind == TeradataTableKindConstants.TEMP.value):
302
- if table_name is None:
303
- object_name_str = "'{0}'".format(TeradataTableKindConstants.ML_PATTERN.value)
304
- else:
305
- object_name_str = "'{0}','{1}'".format(table_name,
306
- TeradataTableKindConstants.ML_PATTERN.value)
307
- else:
308
- object_table_kind = "'{0}','{1}','{2}','{3}'".format('O', 'Q', 'T', 'V')
309
- query = SQLBundle._build_select_table_kind(schema_name, object_name_str, object_table_kind)
310
-
311
- try:
312
- pddf = pd.read_sql(query, tdmlctx.td_connection.connection)
313
- # Check if all table kind is requested and add also volatile tables to the pdf.
314
- if (table_kind == TeradataTableKindConstants.ALL.value):
315
- try:
316
- # Add volatile tables to all dataframe.
317
- vtquery = SQLBundle._build_help_volatile_table()
318
- vtdf = pd.read_sql(vtquery, tdmlctx.td_connection.connection)
319
- if not vtdf.empty:
320
- columns_dict = {TeradataTableKindConstants.VOLATILE_TABLE_NAME.value:
321
- TeradataTableKindConstants.REGULAR_TABLE_NAME.value}
322
- vtdf.rename(columns=columns_dict, inplace=True)
323
- frames = [pddf, vtdf[[TeradataTableKindConstants.REGULAR_TABLE_NAME.value]]]
324
- pddf = pd.concat(frames)
325
- pddf.reset_index(drop=True, inplace=True)
326
- except Exception as err:
327
- # No volatle tables exist.
328
- pass
329
- if (table_kind == TeradataTableKindConstants.VOLATILE.value):
330
- columns_dict = {TeradataTableKindConstants.VOLATILE_TABLE_NAME.value:
331
- TeradataTableKindConstants.REGULAR_TABLE_NAME.value}
332
- pddf.rename(columns=columns_dict, inplace=True)
333
- return pddf[[TeradataTableKindConstants.REGULAR_TABLE_NAME.value]]
334
- else:
335
- return pddf
336
- except Exception as err:
337
- return pd.DataFrame()
338
-
339
- def _execute_transaction(queries):
340
- """
341
- Internal function to execute the query or list of queries passed, as one transaction.
342
-
343
- PARAMETERS:
344
- queries:
345
- Required argument.
346
- Specifies a query or a list of queries to be executed as a single transaction.
347
- Types: str or list of str
348
-
349
- RAISES:
350
- Exception
351
-
352
- RETURNS:
353
- None.
354
-
355
- EXAMPLES:
356
- >>> _execute_transaction([query1, query2])
357
- """
358
- auto_commit_off = "{fn teradata_nativesql}{fn teradata_autocommit_off}"
359
- auto_commit_on = "{fn teradata_nativesql}{fn teradata_autocommit_on}"
360
- con = None
361
- cur = None
362
-
363
- if queries is not None:
364
- if isinstance(queries, str):
365
- queries = [queries]
366
-
367
- # Check if we have any queries to execute
368
- if len(queries) == 0:
369
- return
370
-
371
- try:
372
- con = tdmlctx.td_connection
373
- if con is None:
374
- raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
375
- MessageCodes.CONNECTION_FAILURE)
376
- con = con.connection
377
- cur = con.cursor()
378
- # Set auto_commit to OFF
379
- cur.execute(auto_commit_off)
380
- for query in queries:
381
- cur.execute(query)
382
-
383
- # Try committing the the transaction
384
- con.commit()
385
- except Exception:
386
- # Let's first rollback
387
- con.rollback()
388
- # Now, let's raise the error as is
389
- raise
390
- finally:
391
- # Finally, we must set auto_commit to ON
392
- cur.execute(auto_commit_on)
393
-
394
- def _execute_stored_procedure(function_call, fetchWarnings=True, expect_none_result=False):
395
- """
396
- DESCRIPTION:
397
- Executes the specified function call of the stored procedure which contains
398
- function name and parameters used by the function.
399
-
400
- PARAMETERS:
401
- function_call:
402
- Required argument.
403
- Specifies Function object for the stored procedure to be executed.
404
- This function object contains stored procedure name along with its arguments.
405
- Types: sqlalchemy.sql.functions.Function
406
-
407
- fetchWarnings:
408
- Optional Argument.
409
- Specifies a flag that decides whether to raise warnings thrown from Vantage or not.
410
- This will be the ideal behaviour for most of the stored procedures to fetch the warnings.
411
- Default Values: True
412
- Types: bool
413
-
414
- expect_none_result:
415
- Optional Argument.
416
- When set to True, warnings will be ignored, and only result set is returned.
417
- Returns None if query does not produce a result set.
418
- This option is ignored when fetchWarnings is set to True.
419
- Default Values: False
420
- Types: bool
421
-
422
- RETURNS:
423
- Results received from Vantage after the execution.
424
-
425
- RAISES:
426
- Exception thrown by the Vantage.
427
-
428
- EXAMPLES:
429
- # No parameter needed by stored procedure.
430
- functioncall = func.SYSUIF.list_base_environments()
431
- _execute_stored_procedure(functioncall)
432
-
433
- # Parameters are passed to the stored procedure in a list.
434
- functioncall = func.SYSUIF.install_file('myfile','mapper.py','cz!/documents/mapper.py')
435
- _execute_stored_procedure("SYSUIF.install_file(functioncall)", fetchWarnings=True)
436
- """
437
- __arg_info_matrix = []
438
- __arg_info_matrix.append(["function_call", function_call, False, (Function)])
439
- __arg_info_matrix.append(["fetchWarnings", fetchWarnings, True, (bool)])
440
- __arg_info_matrix.append(["expect_none_result", expect_none_result, True, (bool)])
441
-
442
- # Validate arguments
443
- _Validators._validate_function_arguments(__arg_info_matrix)
444
-
445
- sqlbundle = SQLBundle()
446
-
447
- # Get the query for running stored procedure.
448
- exec_sp_stmt = sqlbundle._get_sql_query(SQLConstants.SQL_EXEC_STORED_PROCEDURE)
449
- exec_sp_stmt = exec_sp_stmt.format(_get_function_call_as_string(function_call))
450
-
451
- return UtilFuncs._execute_query(exec_sp_stmt, fetchWarnings, expect_none_result)
452
-
453
- def _get_function_call_as_string(sqlcFuncObj):
454
- """
455
- DESCRIPTION:
456
- This function returns string representation for the sqlalchemy.sql.functions.Function object
457
- which will be used to create a query to be used to execute the function.
458
-
459
- PARAMETERS:
460
- sqlcFuncObj:
461
- Required Argument.
462
- Specifies function object representing the SQL function call to be executed.
463
-
464
- RAISES:
465
- None
466
-
467
- RETURNS:
468
- String representation of the input Function.
469
-
470
- EXAMPLES:
471
- functioncall = func.SYSUIF.install_file("tdml_testfile", "test_script", "/root/test_script.py")
472
- _get_function_call_as_string(functioncall)
473
-
474
- Output:
475
- "SYSUIF.install_file('tdml_testfile', 'test_script', '/root/test_script.py')"
476
- """
477
- # This is done by _exec_stored_procedure
478
- from teradatasqlalchemy.dialect import dialect as td_dialect
479
- kw = dict({'dialect': td_dialect(),
480
- 'compile_kwargs':
481
- {
482
- 'include_table': False,
483
- 'literal_binds': True
484
- }
485
- })
486
-
487
- return str(sqlcFuncObj.compile(**kw))
488
-
489
- def _get_quoted_object_name(schema_name, object_name):
490
- """
491
- DESCRIPTION:
492
- This function quotes and joins schema name to the object name which can either be table or a view.
493
-
494
- PARAMETERS:
495
- schema_name
496
- Required Argument.
497
- Specifies the schema name.
498
- Types: str
499
-
500
- object_name
501
- Required Argument.
502
- Specifies the object name either table or view.
503
- Types: str
504
-
505
- RAISES:
506
- None
507
-
508
- RETURNS:
509
- Quoted and joined string of schema and object name.
510
-
511
- EXAMPLES:
512
- _get_quoted_object_name(schema_name = "alice", object_name = "admissions_train")
513
-
514
- OUTPUT:
515
- '"alice"."admissions_train"'
516
- """
517
- tdp = preparer(td_dialect)
518
-
519
- if schema_name is not None:
520
- schema_name = tdp.quote(schema_name)
521
- else:
522
- schema_name = tdp.quote(tdmlctx._get_current_databasename())
523
-
524
- quoted_object_name = "{0}.{1}".format(schema_name, tdp.quote(object_name))
525
- return quoted_object_name
526
-
527
- def view_log(log_type="script", num_lines=1000, query_id=None, log_dir=None):
528
- """
529
- DESCRIPTION:
530
- Function for viewing script, apply or byom log on Vantage.
531
- Logs are pulled from 'script_log' or 'byom.log' file on database node.
532
- When log_type is "script", logs are pulled from 'scriptlog' file on database node.
533
- This is useful when Script.execute() is executed to run user scripts in Vantage.
534
- When log_type is set to "apply", function downloads the log files to a folder.
535
- Notes:
536
- * Logs files will be downloaded based on "log_dir".
537
- * teradataml creates a sub directory with the name as "query_id"
538
- and downloads the logs to the sub directory.
539
- * files generated from "query_id" requires few seconds to generate,
540
- provide "query_id" to function view_log() after few seconds else
541
- it will return empty sub directory.
542
-
543
- PARAMETERS:
544
- log_type:
545
- Optional Argument.
546
- Specifies which logs to view.
547
- If set to 'script', script log is pulled from database node.
548
- If set to 'byom', byom log is pulled from database node.
549
- If set to 'apply' logs are pulled from kubernetes container.
550
- Permitted Values: 'script', 'apply', 'byom'
551
- Default Value: 'script'
552
- Types: str
553
-
554
- num_lines:
555
- Optional Argument.
556
- Specifies the number of lines to be read and displayed from log.
557
- Note:
558
- This argument is applicable when log_type is 'script' otherwise ignored.
559
- Default Value: 1000
560
- Types: int
561
-
562
- query_id:
563
- Required Argument when log_type is 'apply', otherwise ignored.
564
- Specifies the id of the query for which logs are to be retrieved.
565
- This query id is part of the error message received when Apply class
566
- or Dataframe apply method calls fail to execute the Apply table operator
567
- query.
568
- Types: str
569
-
570
- log_dir:
571
- Optional Argument.
572
- Specifies the directory path to store all the log files for "query_id".
573
- Notes:
574
- * This argument is applicable when log_type is 'apply' otherwise ignored.
575
- * when "log_dir" is not provided, function creates temporary folder
576
- and store the log files in the temp folder.
577
- Types: str
578
-
579
- RETURNS:
580
- when log_type="apply" returns log files, otherwise teradataml dataframe.
581
-
582
- RAISES:
583
- TeradataMLException.
584
-
585
- EXAMPLES:
586
- # Example 1: View script log.
587
- >>> view_log(log_type="script", num_lines=200)
588
- >>> view_log(log_type="byom", num_lines=200)
589
-
590
- # Example 2: Download the Apply query logs to a default temp folder.
591
- # Use query id from the error messages returned by Apply class.
592
- >>> view_log(log_type="apply", query_id='307161028465226056')
593
- Logs for query_id "307191028465562578" is stored at "C:\\local_repo\\AppData\\Local\\Temp\\tmp00kuxlgu\\307161028465226056"
594
-
595
- # Example 3: Download the Apply query logs to a specific folder.
596
- # Use query id from the error messages returned by Apply class.
597
- >>> view_log(log_type="apply", query_id='307161028465226056',log_dir='C:\\local_repo\\workspace')
598
- Logs for query_id "307191028465562578" is stored at "C:\\local_repo\\workspace\\307161028465226056"
599
- """
600
- awu_matrix_test = []
601
- awu_matrix_test.append((["num_lines", num_lines, True, (int), True]))
602
- awu_matrix_test.append(("log_type", log_type, True, (str), True,
603
- [TableOperatorConstants.SCRIPT_LOG.value,
604
- TableOperatorConstants.APPLY_LOG.value,
605
- TableOperatorConstants.BYOM_LOG.value]))
606
- # Validate argument type.
607
- _Validators._validate_function_arguments(awu_matrix_test)
608
-
609
- # Validate num_lines is a positive integer.
610
- _Validators._validate_positive_int(num_lines, "num_lines")
611
-
612
- awu_matrix_test.append(["query_id", query_id, True, (str), True])
613
- awu_matrix_test.append(["log_dir", log_dir, True, (str), True])
614
-
615
- # Validate argument type.
616
- _Validators._validate_function_arguments(awu_matrix_test)
617
-
618
- # log_type is script.
619
- if log_type.upper() in [TableOperatorConstants.SCRIPT_LOG.value, TableOperatorConstants.BYOM_LOG.value]:
620
- # Validate num_lines is a positive integer.
621
- _Validators._validate_positive_int(num_lines, "num_lines")
622
-
623
-
624
- # Query for viewing last n lines of script log.
625
- view_log_query = TableOperatorConstants.SCRIPT_LOG_QUERY.value \
626
- .format(num_lines, configure.default_varchar_size)
627
-
628
- # log_type is apply.
629
- else:
630
- if query_id is None:
631
- raise TeradataMlException(Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
632
- "query_id",
633
- "log_type=\"apply\""),
634
- MessageCodes.DEPENDENT_ARG_MISSING)
635
- if log_dir is not None:
636
- if not os.path.exists(log_dir):
637
- err_msg = 'The path \'{}\' does not exist.'.format(
638
- log_dir)
639
- raise TeradataMlException(err_msg, MessageCodes.INPUT_FILE_NOT_FOUND)
640
- if not os.path.isdir(log_dir):
641
- err_msg = 'Please provide directory path instead of file path.'.format(
642
- log_dir)
643
- raise TeradataMlException(err_msg, MessageCodes.INPUT_FILE_NOT_FOUND)
644
- from teradataml.scriptmgmt.UserEnv import _get_auth_token, _get_ues_url, \
645
- _process_ues_response
646
- ues_url = _get_ues_url(logs=True, query_id=query_id)
647
- response = UtilFuncs._http_request(ues_url, headers=_get_auth_token())
648
- resp = _process_ues_response(api_name="view_log", response=response)
649
- resp = resp.content.decode('utf-8')
650
- jsons = json.loads(resp)
651
- if log_dir is None:
652
- log_dir = tempfile.mkdtemp()
653
- log_dir = os.path.join(log_dir, query_id)
654
- if os.path.exists(log_dir):
655
- shutil.rmtree(log_dir)
656
- os.mkdir(log_dir)
657
- urls_and_files = [(log['url'], os.path.join(log_dir, log['name'])) for log in jsons['logs']]
658
- failed_files = []
659
- with concurrent.futures.ThreadPoolExecutor() as executor:
660
- results = {executor.submit(_fetch_url_and_save, url, file_path):
661
- (os.path.basename(file_path)) for url, file_path in urls_and_files}
662
- for future in concurrent.futures.as_completed(results):
663
- try:
664
- file_name = results[future]
665
- future.result()
666
- except (TeradataMlException, RuntimeError, Exception) as emsg:
667
- failed_files.append((file_name, emsg))
668
- if len(failed_files) > 0:
669
- emsg = ""
670
- for msg in failed_files:
671
- emsg += "\nUnable to download the file - {}. Reason: {}" \
672
- .format(msg[0], msg[1].args[0])
673
- msg_code = MessageCodes.FUNC_EXECUTION_FAILED
674
- error_msg = Messages.get_message(msg_code, "view_log()", emsg)
675
- raise TeradataMlException(error_msg, msg_code)
676
- else:
677
- print("Logs for query_id \"{}\" is stored at \"{}\"".format(query_id, log_dir))
678
- # Return a teradataml dataframe from query.
679
- if log_type != 'apply':
680
- return tdmldf.dataframe.DataFrame.from_query(view_log_query)
681
-
682
-
683
- def _fetch_url_and_save(url, file_path):
684
- """
685
- DESCRIPTION:
686
- Download file from specifed url and update files at specified path.
687
-
688
- PARAMETERS:
689
- url:
690
- Specifies the url from where file needs to be downloaded.
691
-
692
- file_path:
693
- Specifies the path of file where downloaded file needs to be updated.
694
-
695
- Returns:
696
- None
697
-
698
- """
699
- from teradataml.scriptmgmt.UserEnv import _process_ues_response
700
- response = UtilFuncs._http_request(url)
701
- resp = _process_ues_response(api_name="view_log", response=response)
702
- with open(file_path, 'w') as file:
703
- file.write(resp.content.decode('utf-8'))
704
-
705
-
706
-
707
- def _check_if_python_packages_installed():
708
- """
709
- DESCRIPTION:
710
- Function to set global variable 'python_packages_installed' to True
711
- or False based on whether the Vantage node has Python and add-on
712
- packages including pip3 installed.
713
-
714
- PARAMETERS:
715
- None.
716
-
717
- RETURNS:
718
- None.
719
-
720
- RAISES:
721
- Exception.
722
-
723
- EXAMPLES:
724
- _check_if_python_packages_installed()
725
- """
726
- # Check if Python interpreter and add-ons packages are installed or not.
727
- try:
728
- query = TableOperatorConstants.CHECK_PYTHON_INSTALLED.value
729
- UtilFuncs._execute_query(query=query)
730
-
731
- # If query execution is successful, then Python and add-on packages are
732
- # present.
733
- tdmlctx.python_packages_installed = True
734
- except Exception as err:
735
- # Raise Exception if the error message does not contain
736
- # "bash: pip3: command not found".
737
- # Default value of the global variable "python_packages_installed" remains
738
- # same which was set during create_context/set_context.
739
- if "bash: pip3: command not found" not in str(err):
740
- raise
741
-
742
- def db_python_package_details(names=None):
743
- """
744
- DESCRIPTION:
745
- Function to get the Python packages, installed on Vantage, and their corresponding
746
- versions.
747
- Note:
748
- Using this function is valid only when Python interpreter and add-on packages
749
- are installed on the Vantage node.
750
-
751
- PARAMETERS:
752
- names:
753
- Optional Argument.
754
- Specifies the name(s)/pattern(s) of the Python package(s) for which version
755
- information is to be fetched from Vantage. If this argument is not specified
756
- or None, versions of all installed Python packages are returned.
757
- Default Value: None
758
- Types: str
759
-
760
- RETURNS:
761
- teradataml DataFrame, if package(s) is/are present in the Vantage.
762
-
763
- RAISES:
764
- TeradataMlException.
765
-
766
- EXAMPLES:
767
- # Note:
768
- # These examples will work only when the Python packages are installed on Vantage.
769
-
770
- # Example 1: Get the details of a Python package 'dill' from Vantage.
771
- >>> db_python_package_details("dill")
772
- package version
773
- 0 dill 0.2.8.2
774
-
775
- # Example 2: Get the details of Python packages, having string 'mpy', installed on Vantage.
776
- >>> db_python_package_details(names = "mpy")
777
- package version
778
- 0 simpy 3.0.11
779
- 1 numpy 1.16.1
780
- 2 gmpy2 2.0.8
781
- 3 msgpack-numpy 0.4.3.2
782
- 4 sympy 1.3
783
-
784
- # Example 3: Get the details of Python packages, having string 'numpy' and 'learn',
785
- # installed on Vantage.
786
- >>> db_python_package_details(["numpy", "learn"])
787
- package version
788
- 0 scikit-learn 0.20.3
789
- 1 numpy 1.16.1
790
- 2 msgpack-numpy 0.4.3.2
791
-
792
- # Example 4: Get the details of all Python packages installed on Vantage.
793
- >>> db_python_package_details()
794
- package version
795
- 0 packaging 18.0
796
- 1 cycler 0.10.0
797
- 2 simpy 3.0.11
798
- 3 more-itertools 4.3.0
799
- 4 mpmath 1.0.0
800
- 5 toolz 0.9.0
801
- 6 wordcloud 1.5.0
802
- 7 mistune 0.8.4
803
- 8 singledispatch 3.4.0.3
804
- 9 attrs 18.2.0
805
-
806
- """
807
- # Validate arguments.
808
- __arg_info_matrix = []
809
- __arg_info_matrix.append(["names", names, True, (str, list), True])
810
-
811
- _Validators._validate_function_arguments(arg_list=__arg_info_matrix)
812
-
813
- # Check if Python interpretor and add-on packages are installed or not.
814
- _check_if_python_packages_installed()
815
-
816
- # Raise error if Python and add-on packages are not installed.
817
- if not tdmlctx.python_packages_installed:
818
- raise TeradataMlException(Messages.get_message(MessageCodes.PYTHON_NOT_INSTALLED),
819
- MessageCodes.PYTHON_NOT_INSTALLED)
820
-
821
- package_str = ""
822
- # Adding "grep ..." only when the argument "name" is mentioned.
823
- # Otherwise, all the package details are fetched.
824
- if names is not None:
825
- names = UtilFuncs._as_list(names)
826
- package_str = "|".join(names)
827
- package_str = "grep -E \"{0}\" | ".format(package_str)
828
-
829
- query = TableOperatorConstants.PACKAGE_VERSION_QUERY.value. \
830
- format(package_str, configure.default_varchar_size)
831
-
832
- ret_val = tdmldf.dataframe.DataFrame.from_query(query)
833
-
834
- if ret_val.shape[0] == 0:
835
- msg_str = "No Python package(s) found based on given search criteria : names = {}"
836
- print(msg_str.format(names))
837
- ret_val = None
838
-
839
- return ret_val
840
-
841
-
842
- def _create_table(table_name,
843
- columns,
844
- primary_index=None,
845
- unique=True,
846
- temporary=False,
847
- schema_name=None,
848
- set_table=True,
849
- **kwargs):
850
- """
851
- DESCRIPTION:
852
- This is an internal function used to construct a SQLAlchemy Table Object.
853
- This function checks appropriate flags and supports creation of Teradata
854
- specific Table constructs such as Volatile/Primary Index tables and constraints.
855
-
856
- PARAMETERS:
857
- table_name:
858
- Required Argument.
859
- Specifies the name of SQL table.
860
- Types: str
861
-
862
- columns:
863
- Required Argument.
864
- Specifies a python dictionary with column-name(key) to column-type(value) mapping
865
- to create table.
866
- Types: dict
867
-
868
- primary_index:
869
- Optional Argument.
870
- Specifies the column name(s) on which primary index needs to be created.
871
- Default Value: None
872
- Types: str OR list of Strings (str)
873
-
874
- unique:
875
- Optional Argument.
876
- Specifies whether index is unique primary index or not i.e.,
877
- if True, index column(s) does not accepts duplicate values,
878
- if False, index column(s) accepts duplicate values.
879
- Default Value: True
880
- Types: bool
881
-
882
- temporary:
883
- Optional Argument.
884
- Specifies whether SQL table to be created is Volatile or not.
885
- Default Value: False
886
- Types: bool
887
-
888
- schema_name:
889
- Optional Argument.
890
- Specifies the name of the SQL schema in the database to write to.
891
- If not specified, table is created in default schema.
892
- Default Value: None
893
- Types: str
894
-
895
- set_table:
896
- Optional Argument.
897
- A flag specifying whether to create a SET table or a MULTISET table.
898
- When True, an attempt to create a SET table is made.
899
- When False, an attempt to create a MULTISET table is made.
900
- Default Value: True
901
- Types: bool
902
-
903
- **kwargs:
904
- Optional Argument.
905
- Specifies table_level constraints as keyword arguments.
906
- Each constraint argument can accept a string or a list of strings.
907
- Notes:
908
- * If the same constraint is to be applied multiple times,
909
- conditions or columns should be mentioned as individual
910
- elements in the list.
911
- * If the constraint is to be applied on multiple columns,
912
- it should be mentioned in a tuple inside the list.
913
- * For foreign_key_constraint, value should be a list
914
- containing 3 elements, constrained columns,
915
- referenced columns and referenced table name.
916
- * If multiple foreign_key_constraint constraints are
917
- to be specified, then a list of tuples containing
918
- the 3 elements should be specified.
919
- Permitted values:check_constraint, primary_key_constraint,
920
- foreign_key_constraint, unique_key_constraint.
921
-
922
- RETURNS:
923
- None
924
-
925
- RAISES:
926
- None
927
-
928
- EXAMPLES:
929
- # Example 1: Create a table with primary key constraint.
930
- >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
931
- primary_key_constraint='column_name', set_table=False)
932
-
933
- # Example 2: Create a table with multiple check constraints.
934
- >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
935
- check_constraint=['column_name > value', 'column_name > value2'], set_table=False)
936
-
937
- # Example 3: Create a table with multiple columns as primary key in primary constraint.
938
- >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
939
- primary_key_constraint=[('column_name','column_name')], set_table=False)
940
-
941
- # Example 4: Create a table with no constraint and no primary key.
942
- >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
943
- set_table=False)
944
-
945
- """
946
- try:
947
- prefix = []
948
- pti = post(opts={})
949
-
950
- if temporary is True:
951
- pti = pti.on_commit(option='preserve')
952
- prefix.append('VOLATILE')
953
-
954
- if set_table:
955
- prefix.append('set')
956
- else:
957
- prefix.append('multiset')
958
-
959
- meta = MetaData()
960
- meta.bind = tdmlctx.get_context()
961
-
962
- if primary_index is not None:
963
- if isinstance(primary_index, list):
964
- pti = pti.primary_index(unique=unique, cols=primary_index)
965
- elif isinstance(primary_index, str):
966
- pti = pti.primary_index(unique=unique, cols=[primary_index])
967
- else:
968
- pti = pti.no_primary_index()
969
-
970
- con_form=[]
971
- for c_name, parameters in kwargs.items():
972
- _Validators._validate_function_arguments([["constraint_type", c_name, True, str,
973
- True, SQLConstants.CONSTRAINT.value]])
974
- if c_name in 'check_constraint':
975
- parameters = UtilFuncs._as_list(parameters)
976
- [con_form.append("{}('{}')".format("CheckConstraint", col)) for col in parameters]
977
- if c_name in 'foreign_key_constraint':
978
- parameters = parameters if isinstance(parameters[0], tuple) else [tuple(parameters)]
979
- for col in parameters:
980
- meta.reflect(bind=tdmlctx.get_context(), only=[col[2]])
981
- con_form.append("{}({},{})".format("ForeignKeyConstraint", col[0], col[1]))
982
- if c_name in ['primary_key_constraint', 'unique_key_constraint']:
983
- c_name = "UniqueConstraint" if c_name in 'unique_key_constraint' else 'PrimaryKeyConstraint'
984
- parameters = UtilFuncs._as_list(parameters)
985
- [con_form.append("{}('{}')".format(c_name, "','".join(col))) if type(col) == tuple else con_form.append(
986
- "{}('{}')".format(c_name, col)) for col in parameters]
987
- con_form.append("")
988
-
989
- # Create default Table construct with parameter dictionary
990
- table_str = "Table(table_name, meta,*(Column(c_name, c_type) for c_name,c_type in" \
991
- " columns.items()),{} teradatasql_post_create=pti,prefixes=prefix," \
992
- "schema=schema_name)".format("" if con_form is None else ",".join(con_form))
993
-
994
- table=eval(table_str)
995
- table.create(bind=tdmlctx.get_context())
996
-
997
- except Exception as err:
998
- msg_code = MessageCodes.EXECUTION_FAILED
999
- raise TeradataMlException(Messages.get_message(msg_code, "create table", str(err)), msg_code)
1000
-
1001
-
1002
- def list_td_reserved_keywords(key=None, raise_error=False):
1003
- """
1004
- DESCRIPTION:
1005
- Function validates if the specified string is Teradata reserved keyword or not.
1006
- If key is not specified, list all the Teradata reserved keywords.
1007
-
1008
- PARAMETERS:
1009
- key:
1010
- Optional Argument.
1011
- Specifies a string to validate for Teradata reserved keyword.
1012
- Types: string
1013
-
1014
- raise_error:
1015
- Optional Argument.
1016
- Specifies whether to raise exception or not.
1017
- When set to True, an exception is raised,
1018
- if specified "key" is a Teradata reserved keyword, otherwise not.
1019
- Default Value: False
1020
- Types: bool
1021
-
1022
- RETURNS:
1023
- teradataml DataFrame, if "key" is None.
1024
- True, if "key" is Teradata reserved keyword, False otherwise.
1025
-
1026
- RAISES:
1027
- TeradataMlException.
1028
-
1029
- EXAMPLES:
1030
- >>> from teradataml import list_td_reserved_keywords
1031
- >>> # Example 1: List all available Teradata reserved keywords.
1032
- >>> list_td_reserved_keywords()
1033
- restricted_word
1034
- 0 ABS
1035
- 1 ACCOUNT
1036
- 2 ACOS
1037
- 3 ACOSH
1038
- 4 ADD_MONTHS
1039
- 5 ADMIN
1040
- 6 ADD
1041
- 7 ACCESS_LOCK
1042
- 8 ABORTSESSION
1043
- 9 ABORT
1044
- >>>
1045
-
1046
- >>> # Example 2: Validate if keyword "account" is a Teradata reserved keyword or not.
1047
- >>> list_td_reserved_keywords("account")
1048
- True
1049
- >>>
1050
-
1051
- >>> # Example 3: Validate and raise exception if keyword "account" is a Teradata reserved keyword.
1052
- >>> list_td_reserved_keywords("account", raise_error=True)
1053
- TeradataMlException: [Teradata][teradataml](TDML_2121) 'account' is a Teradata reserved keyword.
1054
- """
1055
- from teradataml.dataframe.dataframe import DataFrame, in_schema
1056
- # Get the reserved keywords from the table
1057
- reserved_keys = DataFrame(in_schema("SYSLIB", "SQLRestrictedWords"))
1058
-
1059
- # If key is not passed, return the list of Teradata reserved keywords.
1060
- if key is None:
1061
- return reserved_keys.select(['restricted_word'])
1062
-
1063
- # Check if key is a Teradata reserved keyword or not.
1064
- num_rows = reserved_keys[reserved_keys.restricted_word == key.upper()].shape[0]
1065
- if num_rows > 0:
1066
- if raise_error:
1067
- raise TeradataMlException(Messages.get_message(MessageCodes.RESERVED_KEYWORD, key),
1068
- MessageCodes.RESERVED_KEYWORD)
1069
- return True
1070
- return False
1071
-
1072
-
1073
- def _rename_table(old_table_name, new_table_name):
1074
- """
1075
- This function renames the existing table present in the database.
1076
-
1077
- PARAMETERS:
1078
- old_table_name:
1079
- Required Argument.
1080
- Specifies the name of the existing table in vantage.
1081
- Types : String
1082
-
1083
- new_table_name:
1084
- Required Argument.
1085
- Specifies the the new name for the existing table.
1086
- Types : String
1087
-
1088
- RETURNS:
1089
- None
1090
-
1091
- RAISES:
1092
- None
1093
-
1094
- EXAMPLES:
1095
- >>> load_example_data("dataframe", "sales")
1096
- >>> _rename_table("sales", "new_sales")
1097
- """
1098
- # Query to rename existing table.
1099
- query = "RENAME TABLE {} TO {};".format(old_table_name, new_table_name)
1100
- # Execute rename query.
1101
- UtilFuncs._execute_ddl_statement(query)
1102
-
1103
-
1104
- def _execute_query_and_generate_pandas_df(query, index=None, **kwargs):
1105
- """
1106
- DESCRIPTION:
1107
- Function executes the provided query and returns a pandas DataFrame.
1108
-
1109
- PARAMETERS:
1110
- query:
1111
- Required Argument.
1112
- Specifies the query that needs to be executed to form Pandas
1113
- DataFrame.
1114
- Type: str
1115
-
1116
- index
1117
- Optional Argument.
1118
- Specifies column(s) to be used as Pandas index.
1119
- Types: str OR list of Strings (str)
1120
-
1121
- RETURNS:
1122
- Pandas DataFrame.
1123
-
1124
- RAISES:
1125
- TeradataMlException.
1126
-
1127
- EXAMPLES:
1128
- pdf = _execute_query_and_generate_pandas_df("SELECT * from t1", "col1")
1129
- """
1130
- cur = execute_sql(query)
1131
- columns = kwargs.pop('columns', [col[0] for col in cur.description])
1132
- rows = cur.fetchall()
1133
- if cur is not None:
1134
- cur.close()
1135
-
1136
- try:
1137
- pandas_df = pd.DataFrame.from_records(data=list(tuple(row) for row in rows),
1138
- columns=columns,
1139
- index=index,
1140
- **kwargs)
1141
- except KeyError:
1142
- raise TeradataMlException(
1143
- Messages.get_message(MessageCodes.INVALID_PRIMARY_INDEX),
1144
- MessageCodes.INVALID_PRIMARY_INDEX)
1145
- except:
1146
- raise TeradataMlException(
1147
- Messages.get_message(MessageCodes.TDMLDF_SELECT_DF_FAIL),
1148
- MessageCodes.TDMLDF_SELECT_DF_FAIL)
1149
-
1150
- return pandas_df
1
+ """
2
+ Copyright (c) 2018 by Teradata Corporation. All rights reserved.
3
+ TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
4
+
5
+ Primary Owner: rameshchandra.d@teradata.com
6
+ Secondary Owner: sanath.vobilisetty@teradata.com
7
+
8
+ teradataml db utilities
9
+ ----------
10
+ A teradataml database utility functions provide interface to Teradata Vantage common tasks such as drop_table, drop_view, create_table etc.
11
+ """
12
+ import concurrent.futures, json, os, tempfile, shutil
13
+ from datetime import datetime
14
+ import pandas as pd
15
+ from sqlalchemy.sql.functions import Function
16
+ from teradataml.context import context as tdmlctx
17
+ from teradataml.common.utils import UtilFuncs
18
+ from teradataml.common.messages import Messages
19
+ from teradataml.common.messagecodes import MessageCodes
20
+ from teradataml.common.exceptions import TeradataMlException
21
+ from teradataml.common.constants import TeradataTableKindConstants
22
+ from teradataml.common.sqlbundle import SQLBundle
23
+ from teradataml.common.constants import SQLConstants
24
+ from teradataml.common.constants import TableOperatorConstants
25
+ import teradataml.dataframe as tdmldf
26
+ from teradataml.options.configure import configure
27
+ from teradataml.utils.utils import execute_sql
28
+ from teradataml.utils.validators import _Validators
29
+ from teradatasql import OperationalError
30
+ from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
31
+ from teradatasqlalchemy.dialect import TDCreateTablePost as post
32
+ from teradatasqlalchemy.telemetry.queryband import collect_queryband
33
+ from sqlalchemy import Table, Column, MetaData, CheckConstraint, \
34
+ PrimaryKeyConstraint, ForeignKeyConstraint, UniqueConstraint
35
+
36
+
37
+ @collect_queryband(queryband='DrpTbl')
38
+ def db_drop_table(table_name, schema_name=None):
39
+ """
40
+ DESCRIPTION:
41
+ Drops the table from the given schema.
42
+
43
+ PARAMETERS:
44
+ table_name:
45
+ Required Argument
46
+ Specifies the table name to be dropped.
47
+ Types: str
48
+
49
+ schema_name:
50
+ Optional Argument
51
+ Specifies schema of the table to be dropped. If schema is not specified, function drops table from the
52
+ current database.
53
+ Default Value: None
54
+ Types: str
55
+
56
+ RETURNS:
57
+ True - if the operation is successful.
58
+
59
+ RAISES:
60
+ TeradataMlException - If the table doesn't exist.
61
+
62
+ EXAMPLES:
63
+ >>> load_example_data("dataframe", "admissions_train")
64
+
65
+ # Drop table in current database
66
+ >>> db_drop_table(table_name = 'admissions_train')
67
+
68
+ # Drop table from the given schema
69
+ >>> db_drop_table(table_name = 'admissions_train', schema_name = 'alice')
70
+ """
71
+ # Argument validations
72
+ awu_matrix = []
73
+ awu_matrix.append(["schema_name", schema_name, True, (str), True])
74
+ awu_matrix.append(["table_name", table_name, False, (str), True])
75
+
76
+ # Validate argument types
77
+ _Validators._validate_function_arguments(awu_matrix)
78
+
79
+ # Joining view and schema names in the format "schema_name"."view_name"
80
+ table_name = _get_quoted_object_name(schema_name, table_name)
81
+
82
+ try:
83
+ return UtilFuncs._drop_table(table_name)
84
+ except TeradataMlException:
85
+ raise
86
+ except OperationalError:
87
+ raise
88
+ except Exception as err:
89
+ raise TeradataMlException(Messages.get_message(MessageCodes.DROP_FAILED, "table",
90
+ table_name),
91
+ MessageCodes.DROP_FAILED) from err
92
+
93
+
94
+ @collect_queryband(queryband='DrpVw')
95
+ def db_drop_view(view_name, schema_name=None):
96
+ """
97
+ DESCRIPTION:
98
+ Drops the view from the given schema.
99
+
100
+ PARAMETERS:
101
+ view_name:
102
+ Required Argument
103
+ Specifies view name to be dropped.
104
+ Types: str
105
+
106
+ schema_name:
107
+ Optional Argument
108
+ Specifies schema of the view to be dropped. If schema is not specified, function drops view from the current
109
+ database.
110
+ Default Value: None
111
+ Types: str
112
+
113
+ RETURNS:
114
+ True - if the operation is successful.
115
+
116
+ RAISES:
117
+ TeradataMlException - If the view doesn't exist.
118
+
119
+ EXAMPLES:
120
+ # Create a view
121
+ >>> execute_sql("create view temporary_view as (select 1 as dummy_col1, 2 as dummy_col2);")
122
+
123
+ # Drop view in current schema
124
+ >>> db_drop_view(view_name = 'temporary_view')
125
+
126
+ # Drop view from the given schema
127
+ >>> db_drop_view(view_name = 'temporary_view', schema_name = 'alice')
128
+ """
129
+ # Argument validations
130
+ awu_matrix = []
131
+ awu_matrix.append(["schema_name", schema_name, True, (str), True])
132
+ awu_matrix.append(["view_name", view_name, False, (str), True])
133
+
134
+ # Validate argument types
135
+ _Validators._validate_function_arguments(awu_matrix)
136
+
137
+ # Joining view and schema names in the format "schema_name"."view_name"
138
+ view_name = _get_quoted_object_name(schema_name, view_name)
139
+
140
+ try:
141
+ return UtilFuncs._drop_view(view_name)
142
+ except TeradataMlException:
143
+ raise
144
+ except OperationalError:
145
+ raise
146
+ except Exception as err:
147
+ raise TeradataMlException(Messages.get_message(MessageCodes.DROP_FAILED, "view",
148
+ view_name),
149
+ MessageCodes.DROP_FAILED) from err
150
+
151
+
152
+ @collect_queryband(queryband='LstTbls')
153
+ def db_list_tables(schema_name=None, object_name=None, object_type='all'):
154
+ """
155
+ DESCRIPTION:
156
+ Lists the Vantage objects(table/view) names for the specified schema name.
157
+
158
+ PARAMETERS:
159
+ schema_name:
160
+ Optional Argument.
161
+ Specifies the name of schema in the database. If schema is not specified, function lists tables/views from
162
+ the current database.
163
+ Default Value: None
164
+ Types: str
165
+
166
+ object_name:
167
+ Optional Argument.
168
+ Specifies a table/view name or pattern to be used for filtering them from the database.
169
+ Pattern may contain '%' or '_' as pattern matching characters.
170
+ A '%' represents any string of zero or more arbitrary characters. Any string of characters is acceptable as
171
+ a replacement for the percent.
172
+ A '_' represents exactly one arbitrary character. Any single character is acceptable in the position in
173
+ which the underscore character appears.
174
+ Default Value: None
175
+ Types: str
176
+ Example:
177
+ 1. '%abc' will return all table/view object names starting with any character and ending with abc.
178
+ 2. 'a_c' will return all table/view object names starting with 'a', ending with 'c' and has length of 3.
179
+
180
+ object_type:
181
+ Optional Argument.
182
+ Specifies object type to apply the filter. Valid values for this argument are 'all','table','view',
183
+ 'volatile','temp'.
184
+ * all - List all the object types.
185
+ * table - List only tables.
186
+ * view - List only views.
187
+ * volatile - List only volatile tables.
188
+ * temp - List all teradataml temporary objects created in the specified database.
189
+ Default Value: 'all'
190
+ Types: str
191
+
192
+ RETURNS:
193
+ Pandas DataFrame
194
+
195
+ RAISES:
196
+ TeradataMlException - If the object_type argument is provided with invalid values.
197
+ OperationalError - If any errors are raised from Vantage.
198
+
199
+ EXAMPLES:
200
+ # Example 1 - List all object types in the default schema
201
+ >>> load_example_data("dataframe", "admissions_train")
202
+ >>> db_list_tables()
203
+
204
+ # Example 2 - List all the views in the default schema
205
+ >>> execute_sql("create view temporary_view as (select 1 as dummy_col1, 2 as dummy_col2);")
206
+ >>> db_list_tables(None , None, 'view')
207
+
208
+ # Example 3 - List all the object types in the default schema whose names begin with 'abc' followed by one
209
+ # arbitrary character and any number of characters in the end.
210
+ >>> execute_sql("create view abcd123 as (select 1 as dummy_col1, 2 as dummy_col2);")
211
+ >>> db_list_tables(None, 'abc_%', None)
212
+
213
+ # Example 4 - List all the tables in the default schema whose names begin with 'adm_%' followed by one
214
+ # arbitrary character and any number of characters in the end.
215
+ >>> load_example_data("dataframe", "admissions_train")
216
+ >>> db_list_tables(None, 'adm_%', 'table')
217
+
218
+ # Example 5 - List all the views in the default schema whose names begin with any character but ends with 'abc'
219
+ >>> execute_sql("create view view_abc as (select 1 as dummy_col1, 2 as dummy_col2);")
220
+ >>> db_list_tables(None, '%abc', 'view')
221
+
222
+ # Example 6 - List all the volatile tables in the default schema whose names begin with 'abc' and ends with any
223
+ # arbitrary character and has a length of 4
224
+ >>> execute_sql("CREATE volatile TABLE abcd(col0 int, col1 float) NO PRIMARY INDEX;")
225
+ >>> db_list_tables(None, 'abc_', 'volatile')
226
+
227
+ # Example 7 - List all the temporary objects created by teradataml in the default schema whose names begins and
228
+ # ends with any number of arbitrary characters but contains 'filter' in between.
229
+ >>> db_list_tables(None, '%filter%', 'temp')
230
+ """
231
+
232
+ if tdmlctx.get_connection() is None:
233
+ raise TeradataMlException(Messages.get_message(MessageCodes.INVALID_CONTEXT_CONNECTION),
234
+ MessageCodes.INVALID_CONTEXT_CONNECTION)
235
+
236
+ # Argument validations
237
+ awu_matrix = []
238
+ awu_matrix.append(["schema_name", schema_name, True, (str), True])
239
+ awu_matrix.append(["object_name", object_name, True, (str), True])
240
+ permitted_object_types = [TeradataTableKindConstants.ALL.value,
241
+ TeradataTableKindConstants.TABLE.value,
242
+ TeradataTableKindConstants.VIEW.value,
243
+ TeradataTableKindConstants.VOLATILE.value,
244
+ TeradataTableKindConstants.TEMP.value]
245
+ awu_matrix.append(["object_type", object_type, True, (str), True, permitted_object_types])
246
+
247
+ # Validate argument types
248
+ _Validators._validate_function_arguments(awu_matrix)
249
+
250
+ try:
251
+ return _get_select_table_kind(schema_name, object_name, object_type)
252
+ except TeradataMlException:
253
+ raise
254
+ except OperationalError:
255
+ raise
256
+ except Exception as err:
257
+ raise TeradataMlException(Messages.get_message(MessageCodes.LIST_DB_TABLES_FAILED),
258
+ MessageCodes.LIST_DB_TABLES_FAILED) from err
259
+
260
+
261
+ def _get_select_table_kind(schema_name, table_name, table_kind):
262
+ """
263
+ Get the list of the table names from the specified schema name.
264
+
265
+ PARAMETERS:
266
+ schema_name - The Name of schema in the database. The default value is the current database name.
267
+ table_name - The pattern to be used to filtering the table names from the database.
268
+ The table name argument can contain '%' as pattern matching charecter.For example '%abc'
269
+ will return all table names starting with any charecters and ending with abc.
270
+ table_kind - The table kind to apply the filter. The valid values are 'all','table','view','volatile','temp'.
271
+ all - list the all the table kinds.
272
+ table - list only tables.
273
+ view - list only views.
274
+ volatile - list only volatile temp.
275
+ temp - list all teradata ml temporary objects created in the specified database.
276
+ RETURNS:
277
+ Panda's DataFrame - if the operation is successful.
278
+
279
+ RAISES:
280
+ Database error if an error occurred while executing query.
281
+
282
+ EXAMPLES:
283
+ _get_select_table_kind("schema_name", "table_name", "all")
284
+ """
285
+ object_name_str = None
286
+ if table_name is not None:
287
+ object_name_str = "'{0}'".format(table_name)
288
+ object_table_kind = None
289
+
290
+ # Check the schema name.
291
+ if schema_name is None:
292
+ schema_name = tdmlctx._get_current_databasename()
293
+
294
+ # Check the table kind.
295
+ if (table_kind == TeradataTableKindConstants.VOLATILE.value):
296
+ query = SQLBundle._build_help_volatile_table()
297
+ else:
298
+ # Tablekind:
299
+ # 'O' - stands for Table with no primary index and no partitioning
300
+ # 'Q' - stands for Queue table
301
+ # 'T' - stands for a Table with a primary index or primary AMP index, partitioning, or both.
302
+ # Or a partitioned table with NoPI
303
+ # 'V' - stands for View
304
+ if (table_kind == TeradataTableKindConstants.TABLE.value):
305
+ object_table_kind = "'{0}','{1}','{2}'".format('O', 'Q', 'T')
306
+ elif (table_kind == TeradataTableKindConstants.VIEW.value):
307
+ object_table_kind = "'{0}'".format('V')
308
+ elif (table_kind == TeradataTableKindConstants.TEMP.value):
309
+ if table_name is None:
310
+ object_name_str = "'{0}'".format(TeradataTableKindConstants.ML_PATTERN.value)
311
+ else:
312
+ object_name_str = "'{0}','{1}'".format(table_name,
313
+ TeradataTableKindConstants.ML_PATTERN.value)
314
+ else:
315
+ object_table_kind = "'{0}','{1}','{2}','{3}'".format('O', 'Q', 'T', 'V')
316
+ query = SQLBundle._build_select_table_kind(schema_name, object_name_str, object_table_kind)
317
+
318
+ try:
319
+ pddf = pd.read_sql(query, tdmlctx.td_connection.connection)
320
+ # Check if all table kind is requested and add also volatile tables to the pdf.
321
+ if (table_kind == TeradataTableKindConstants.ALL.value):
322
+ try:
323
+ # Add volatile tables to all dataframe.
324
+ vtquery = SQLBundle._build_help_volatile_table()
325
+ vtdf = pd.read_sql(vtquery, tdmlctx.td_connection.connection)
326
+ if not vtdf.empty:
327
+ columns_dict = {TeradataTableKindConstants.VOLATILE_TABLE_NAME.value:
328
+ TeradataTableKindConstants.REGULAR_TABLE_NAME.value}
329
+ vtdf.rename(columns=columns_dict, inplace=True)
330
+ frames = [pddf, vtdf[[TeradataTableKindConstants.REGULAR_TABLE_NAME.value]]]
331
+ pddf = pd.concat(frames)
332
+ pddf.reset_index(drop=True, inplace=True)
333
+ except Exception as err:
334
+ # No volatle tables exist.
335
+ pass
336
+ if (table_kind == TeradataTableKindConstants.VOLATILE.value):
337
+ columns_dict = {TeradataTableKindConstants.VOLATILE_TABLE_NAME.value:
338
+ TeradataTableKindConstants.REGULAR_TABLE_NAME.value}
339
+ pddf.rename(columns=columns_dict, inplace=True)
340
+ return pddf[[TeradataTableKindConstants.REGULAR_TABLE_NAME.value]]
341
+ else:
342
+ return pddf
343
+ except Exception as err:
344
+ return pd.DataFrame()
345
+
346
+
347
+ def _execute_transaction(queries):
348
+ """
349
+ Internal function to execute the query or list of queries passed, as one transaction.
350
+
351
+ PARAMETERS:
352
+ queries:
353
+ Required argument.
354
+ Specifies a query or a list of queries to be executed as a single transaction.
355
+ Types: str or list of str
356
+
357
+ RAISES:
358
+ Exception
359
+
360
+ RETURNS:
361
+ None.
362
+
363
+ EXAMPLES:
364
+ >>> _execute_transaction([query1, query2])
365
+ """
366
+ auto_commit_off = "{fn teradata_nativesql}{fn teradata_autocommit_off}"
367
+ auto_commit_on = "{fn teradata_nativesql}{fn teradata_autocommit_on}"
368
+ con = None
369
+ cur = None
370
+
371
+ if queries is not None:
372
+ if isinstance(queries, str):
373
+ queries = [queries]
374
+
375
+ # Check if we have any queries to execute
376
+ if len(queries) == 0:
377
+ return
378
+
379
+ try:
380
+ con = tdmlctx.td_connection
381
+ if con is None:
382
+ raise TeradataMlException(Messages.get_message(MessageCodes.CONNECTION_FAILURE),
383
+ MessageCodes.CONNECTION_FAILURE)
384
+ con = con.connection
385
+ cur = con.cursor()
386
+ # Set auto_commit to OFF
387
+ cur.execute(auto_commit_off)
388
+ for query in queries:
389
+ cur.execute(query)
390
+
391
+ # Try committing the the transaction
392
+ con.commit()
393
+ except Exception:
394
+ # Let's first rollback
395
+ con.rollback()
396
+ # Now, let's raise the error as is
397
+ raise
398
+ finally:
399
+ # Finally, we must set auto_commit to ON
400
+ cur.execute(auto_commit_on)
401
+
402
+
403
+ def _execute_stored_procedure(function_call, fetchWarnings=True, expect_none_result=False):
404
+ """
405
+ DESCRIPTION:
406
+ Executes the specified function call of the stored procedure which contains
407
+ function name and parameters used by the function.
408
+
409
+ PARAMETERS:
410
+ function_call:
411
+ Required argument.
412
+ Specifies Function object for the stored procedure to be executed.
413
+ This function object contains stored procedure name along with its arguments.
414
+ Types: sqlalchemy.sql.functions.Function
415
+
416
+ fetchWarnings:
417
+ Optional Argument.
418
+ Specifies a flag that decides whether to raise warnings thrown from Vantage or not.
419
+ This will be the ideal behaviour for most of the stored procedures to fetch the warnings.
420
+ Default Values: True
421
+ Types: bool
422
+
423
+ expect_none_result:
424
+ Optional Argument.
425
+ When set to True, warnings will be ignored, and only result set is returned.
426
+ Returns None if query does not produce a result set.
427
+ This option is ignored when fetchWarnings is set to True.
428
+ Default Values: False
429
+ Types: bool
430
+
431
+ RETURNS:
432
+ Results received from Vantage after the execution.
433
+
434
+ RAISES:
435
+ Exception thrown by the Vantage.
436
+
437
+ EXAMPLES:
438
+ # No parameter needed by stored procedure.
439
+ functioncall = func.SYSUIF.list_base_environments()
440
+ _execute_stored_procedure(functioncall)
441
+
442
+ # Parameters are passed to the stored procedure in a list.
443
+ functioncall = func.SYSUIF.install_file('myfile','mapper.py','cz!/documents/mapper.py')
444
+ _execute_stored_procedure("SYSUIF.install_file(functioncall)", fetchWarnings=True)
445
+ """
446
+ __arg_info_matrix = []
447
+ __arg_info_matrix.append(["function_call", function_call, False, (Function)])
448
+ __arg_info_matrix.append(["fetchWarnings", fetchWarnings, True, (bool)])
449
+ __arg_info_matrix.append(["expect_none_result", expect_none_result, True, (bool)])
450
+
451
+ # Validate arguments
452
+ _Validators._validate_function_arguments(__arg_info_matrix)
453
+
454
+ sqlbundle = SQLBundle()
455
+
456
+ # Get the query for running stored procedure.
457
+ exec_sp_stmt = sqlbundle._get_sql_query(SQLConstants.SQL_EXEC_STORED_PROCEDURE)
458
+ exec_sp_stmt = exec_sp_stmt.format(_get_function_call_as_string(function_call))
459
+
460
+ return UtilFuncs._execute_query(exec_sp_stmt, fetchWarnings, expect_none_result)
461
+
462
+
463
+ def _get_function_call_as_string(sqlcFuncObj):
464
+ """
465
+ DESCRIPTION:
466
+ This function returns string representation for the sqlalchemy.sql.functions.Function object
467
+ which will be used to create a query to be used to execute the function.
468
+
469
+ PARAMETERS:
470
+ sqlcFuncObj:
471
+ Required Argument.
472
+ Specifies function object representing the SQL function call to be executed.
473
+
474
+ RAISES:
475
+ None
476
+
477
+ RETURNS:
478
+ String representation of the input Function.
479
+
480
+ EXAMPLES:
481
+ functioncall = func.SYSUIF.install_file("tdml_testfile", "test_script", "/root/test_script.py")
482
+ _get_function_call_as_string(functioncall)
483
+
484
+ Output:
485
+ "SYSUIF.install_file('tdml_testfile', 'test_script', '/root/test_script.py')"
486
+ """
487
+ # This is done by _exec_stored_procedure
488
+ from teradatasqlalchemy.dialect import dialect as td_dialect
489
+ kw = dict({'dialect': td_dialect(),
490
+ 'compile_kwargs':
491
+ {
492
+ 'include_table': False,
493
+ 'literal_binds': True
494
+ }
495
+ })
496
+
497
+ return str(sqlcFuncObj.compile(**kw))
498
+
499
+
500
+ def _get_quoted_object_name(schema_name, object_name):
501
+ """
502
+ DESCRIPTION:
503
+ This function quotes and joins schema name to the object name which can either be table or a view.
504
+
505
+ PARAMETERS:
506
+ schema_name
507
+ Required Argument.
508
+ Specifies the schema name.
509
+ Types: str
510
+
511
+ object_name
512
+ Required Argument.
513
+ Specifies the object name either table or view.
514
+ Types: str
515
+
516
+ RAISES:
517
+ None
518
+
519
+ RETURNS:
520
+ Quoted and joined string of schema and object name.
521
+
522
+ EXAMPLES:
523
+ _get_quoted_object_name(schema_name = "alice", object_name = "admissions_train")
524
+
525
+ OUTPUT:
526
+ '"alice"."admissions_train"'
527
+ """
528
+ tdp = preparer(td_dialect)
529
+
530
+ if schema_name is not None:
531
+ schema_name = tdp.quote(schema_name)
532
+ else:
533
+ schema_name = tdp.quote(tdmlctx._get_current_databasename())
534
+
535
+ quoted_object_name = "{0}.{1}".format(schema_name, tdp.quote(object_name))
536
+ return quoted_object_name
537
+
538
+
539
+ @collect_queryband(queryband='VwLg')
540
+ def view_log(log_type="script", num_lines=1000, query_id=None, log_dir=None):
541
+ """
542
+ DESCRIPTION:
543
+ Function for viewing script, apply or byom log on Vantage.
544
+ Logs are pulled from 'script_log' or 'byom.log' file on database node.
545
+ When log_type is "script", logs are pulled from 'scriptlog' file on database node.
546
+ This is useful when Script.execute() is executed to run user scripts in Vantage.
547
+ When log_type is set to "apply", function downloads the log files to a folder.
548
+ Notes:
549
+ * Logs files will be downloaded based on "log_dir".
550
+ * teradataml creates a sub directory with the name as "query_id"
551
+ and downloads the logs to the sub directory.
552
+ * files generated from "query_id" requires few seconds to generate,
553
+ provide "query_id" to function view_log() after few seconds else
554
+ it will return empty sub directory.
555
+
556
+ PARAMETERS:
557
+ log_type:
558
+ Optional Argument.
559
+ Specifies which logs to view.
560
+ If set to 'script', script log is pulled from database node.
561
+ If set to 'byom', byom log is pulled from database node.
562
+ If set to 'apply' logs are pulled from kubernetes container.
563
+ Permitted Values: 'script', 'apply', 'byom'
564
+ Default Value: 'script'
565
+ Types: str
566
+
567
+ num_lines:
568
+ Optional Argument.
569
+ Specifies the number of lines to be read and displayed from log.
570
+ Note:
571
+ This argument is applicable when log_type is 'script' otherwise ignored.
572
+ Default Value: 1000
573
+ Types: int
574
+
575
+ query_id:
576
+ Required Argument when log_type is 'apply', otherwise ignored.
577
+ Specifies the id of the query for which logs are to be retrieved.
578
+ This query id is part of the error message received when Apply class
579
+ or Dataframe apply method calls fail to execute the Apply table operator
580
+ query.
581
+ Types: str
582
+
583
+ log_dir:
584
+ Optional Argument.
585
+ Specifies the directory path to store all the log files for "query_id".
586
+ Notes:
587
+ * This argument is applicable when log_type is 'apply' otherwise ignored.
588
+ * when "log_dir" is not provided, function creates temporary folder
589
+ and store the log files in the temp folder.
590
+ Types: str
591
+
592
+ RETURNS:
593
+ when log_type="apply" returns log files, otherwise teradataml dataframe.
594
+
595
+ RAISES:
596
+ TeradataMLException.
597
+
598
+ EXAMPLES:
599
+ # Example 1: View script log.
600
+ >>> view_log(log_type="script", num_lines=200)
601
+ >>> view_log(log_type="byom", num_lines=200)
602
+
603
+ # Example 2: Download the Apply query logs to a default temp folder.
604
+ # Use query id from the error messages returned by Apply class.
605
+ >>> view_log(log_type="apply", query_id='307161028465226056')
606
+ Logs for query_id "307191028465562578" is stored at "C:\\local_repo\\AppData\\Local\\Temp\\tmp00kuxlgu\\307161028465226056"
607
+
608
+ # Example 3: Download the Apply query logs to a specific folder.
609
+ # Use query id from the error messages returned by Apply class.
610
+ >>> view_log(log_type="apply", query_id='307161028465226056',log_dir='C:\\local_repo\\workspace')
611
+ Logs for query_id "307191028465562578" is stored at "C:\\local_repo\\workspace\\307161028465226056"
612
+ """
613
+ awu_matrix_test = []
614
+ awu_matrix_test.append((["num_lines", num_lines, True, (int), True]))
615
+ awu_matrix_test.append(("log_type", log_type, True, (str), True,
616
+ [TableOperatorConstants.SCRIPT_LOG.value,
617
+ TableOperatorConstants.APPLY_LOG.value,
618
+ TableOperatorConstants.BYOM_LOG.value]))
619
+ # Validate argument type.
620
+ _Validators._validate_function_arguments(awu_matrix_test)
621
+
622
+ # Validate num_lines is a positive integer.
623
+ _Validators._validate_positive_int(num_lines, "num_lines")
624
+
625
+ awu_matrix_test.append(["query_id", query_id, True, (str), True])
626
+ awu_matrix_test.append(["log_dir", log_dir, True, (str), True])
627
+
628
+ # Validate argument type.
629
+ _Validators._validate_function_arguments(awu_matrix_test)
630
+
631
+ # log_type is script.
632
+ if log_type.upper() in [TableOperatorConstants.SCRIPT_LOG.value, TableOperatorConstants.BYOM_LOG.value]:
633
+ # Validate num_lines is a positive integer.
634
+ _Validators._validate_positive_int(num_lines, "num_lines")
635
+
636
+
637
+ # Query for viewing last n lines of script log.
638
+ view_log_query = TableOperatorConstants.SCRIPT_LOG_QUERY.value \
639
+ .format(num_lines, configure.default_varchar_size)
640
+
641
+ # log_type is apply.
642
+ else:
643
+ if query_id is None:
644
+ raise TeradataMlException(Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
645
+ "query_id",
646
+ "log_type=\"apply\""),
647
+ MessageCodes.DEPENDENT_ARG_MISSING)
648
+ if log_dir is not None:
649
+ if not os.path.exists(log_dir):
650
+ err_msg = 'The path \'{}\' does not exist.'.format(
651
+ log_dir)
652
+ raise TeradataMlException(err_msg, MessageCodes.INPUT_FILE_NOT_FOUND)
653
+ if not os.path.isdir(log_dir):
654
+ err_msg = 'Please provide directory path instead of file path.'.format(
655
+ log_dir)
656
+ raise TeradataMlException(err_msg, MessageCodes.INPUT_FILE_NOT_FOUND)
657
+ from teradataml.scriptmgmt.UserEnv import _get_auth_token, _get_ues_url, \
658
+ _process_ues_response
659
+ ues_url = _get_ues_url(logs=True, query_id=query_id)
660
+ response = UtilFuncs._http_request(ues_url, headers=_get_auth_token())
661
+ resp = _process_ues_response(api_name="view_log", response=response)
662
+ resp = resp.content.decode('utf-8')
663
+ jsons = json.loads(resp)
664
+ if log_dir is None:
665
+ log_dir = tempfile.mkdtemp()
666
+ log_dir = os.path.join(log_dir, query_id)
667
+ if os.path.exists(log_dir):
668
+ shutil.rmtree(log_dir)
669
+ os.mkdir(log_dir)
670
+ urls_and_files = [(log['url'], os.path.join(log_dir, log['name'])) for log in jsons['logs']]
671
+ failed_files = []
672
+ with concurrent.futures.ThreadPoolExecutor() as executor:
673
+ results = {executor.submit(_fetch_url_and_save, url, file_path):
674
+ (os.path.basename(file_path)) for url, file_path in urls_and_files}
675
+ for future in concurrent.futures.as_completed(results):
676
+ try:
677
+ file_name = results[future]
678
+ future.result()
679
+ except (TeradataMlException, RuntimeError, Exception) as emsg:
680
+ failed_files.append((file_name, emsg))
681
+ if len(failed_files) > 0:
682
+ emsg = ""
683
+ for msg in failed_files:
684
+ emsg += "\nUnable to download the file - {}. Reason: {}" \
685
+ .format(msg[0], msg[1].args[0])
686
+ msg_code = MessageCodes.FUNC_EXECUTION_FAILED
687
+ error_msg = Messages.get_message(msg_code, "view_log()", emsg)
688
+ raise TeradataMlException(error_msg, msg_code)
689
+ else:
690
+ print("Logs for query_id \"{}\" is stored at \"{}\"".format(query_id, log_dir))
691
+ # Return a teradataml dataframe from query.
692
+ if log_type != 'apply':
693
+ return tdmldf.dataframe.DataFrame.from_query(view_log_query)
694
+
695
+
696
+ def _fetch_url_and_save(url, file_path):
697
+ """
698
+ DESCRIPTION:
699
+ Download file from specifed url and update files at specified path.
700
+
701
+ PARAMETERS:
702
+ url:
703
+ Specifies the url from where file needs to be downloaded.
704
+
705
+ file_path:
706
+ Specifies the path of file where downloaded file needs to be updated.
707
+
708
+ Returns:
709
+ None
710
+
711
+ """
712
+ from teradataml.scriptmgmt.UserEnv import _process_ues_response
713
+ response = UtilFuncs._http_request(url)
714
+ resp = _process_ues_response(api_name="view_log", response=response)
715
+ with open(file_path, 'w') as file:
716
+ file.write(resp.content.decode('utf-8'))
717
+
718
+
719
+ def _check_if_python_packages_installed():
720
+ """
721
+ DESCRIPTION:
722
+ Function to set global variable 'python_packages_installed' to True
723
+ or False based on whether the Vantage node has Python and add-on
724
+ packages including pip3 installed.
725
+
726
+ PARAMETERS:
727
+ None.
728
+
729
+ RETURNS:
730
+ None.
731
+
732
+ RAISES:
733
+ Exception.
734
+
735
+ EXAMPLES:
736
+ _check_if_python_packages_installed()
737
+ """
738
+ # Check if Python interpreter and add-ons packages are installed or not.
739
+ try:
740
+ query = TableOperatorConstants.CHECK_PYTHON_INSTALLED.value.format(configure.indb_install_location)
741
+ UtilFuncs._execute_query(query=query)
742
+
743
+ # If query execution is successful, then Python and add-on packages are
744
+ # present.
745
+ tdmlctx.python_packages_installed = True
746
+ except Exception as err:
747
+ # Raise Exception if the error message does not contain
748
+ # "bash: pip3: command not found".
749
+ # Default value of the global variable "python_packages_installed" remains
750
+ # same which was set during create_context/set_context.
751
+ if "bash: pip3: command not found" not in str(err):
752
+ raise
753
+
754
+
755
+ @collect_queryband(queryband='PkgDtls')
756
+ def db_python_package_details(names=None):
757
+ """
758
+ DESCRIPTION:
759
+ Function to get the Python packages, installed on Vantage, and their corresponding
760
+ versions.
761
+ Note:
762
+ Using this function is valid only when Python interpreter and add-on packages
763
+ are installed on the Vantage node.
764
+
765
+ PARAMETERS:
766
+ names:
767
+ Optional Argument.
768
+ Specifies the name(s)/pattern(s) of the Python package(s) for which version
769
+ information is to be fetched from Vantage. If this argument is not specified
770
+ or None, versions of all installed Python packages are returned.
771
+ Default Value: None
772
+ Types: str
773
+
774
+ RETURNS:
775
+ teradataml DataFrame, if package(s) is/are present in the Vantage.
776
+
777
+ RAISES:
778
+ TeradataMlException.
779
+
780
+ EXAMPLES:
781
+ # Note:
782
+ # These examples will work only when the Python packages are installed on Vantage.
783
+
784
+ # Example 1: Get the details of a Python package 'dill' from Vantage.
785
+ >>> db_python_package_details("dill")
786
+ package version
787
+ 0 dill 0.2.8.2
788
+
789
+ # Example 2: Get the details of Python packages, having string 'mpy', installed on Vantage.
790
+ >>> db_python_package_details(names = "mpy")
791
+ package version
792
+ 0 simpy 3.0.11
793
+ 1 numpy 1.16.1
794
+ 2 gmpy2 2.0.8
795
+ 3 msgpack-numpy 0.4.3.2
796
+ 4 sympy 1.3
797
+
798
+ # Example 3: Get the details of Python packages, having string 'numpy' and 'learn',
799
+ # installed on Vantage.
800
+ >>> db_python_package_details(["numpy", "learn"])
801
+ package version
802
+ 0 scikit-learn 0.20.3
803
+ 1 numpy 1.16.1
804
+ 2 msgpack-numpy 0.4.3.2
805
+
806
+ # Example 4: Get the details of all Python packages installed on Vantage.
807
+ >>> db_python_package_details()
808
+ package version
809
+ 0 packaging 18.0
810
+ 1 cycler 0.10.0
811
+ 2 simpy 3.0.11
812
+ 3 more-itertools 4.3.0
813
+ 4 mpmath 1.0.0
814
+ 5 toolz 0.9.0
815
+ 6 wordcloud 1.5.0
816
+ 7 mistune 0.8.4
817
+ 8 singledispatch 3.4.0.3
818
+ 9 attrs 18.2.0
819
+
820
+ """
821
+ # Validate arguments.
822
+ __arg_info_matrix = []
823
+ __arg_info_matrix.append(["names", names, True, (str, list), True])
824
+
825
+ _Validators._validate_function_arguments(arg_list=__arg_info_matrix)
826
+
827
+ # Check if Python interpretor and add-on packages are installed or not.
828
+ _check_if_python_packages_installed()
829
+
830
+ # Raise error if Python and add-on packages are not installed.
831
+ if not tdmlctx.python_packages_installed:
832
+ raise TeradataMlException(Messages.get_message(MessageCodes.PYTHON_NOT_INSTALLED),
833
+ MessageCodes.PYTHON_NOT_INSTALLED)
834
+
835
+ package_str = ""
836
+ # Adding "grep ..." only when the argument "name" is mentioned.
837
+ # Otherwise, all the package details are fetched.
838
+ if names is not None:
839
+ names = UtilFuncs._as_list(names)
840
+ package_str = "|".join(names)
841
+ package_str = "grep -E \"{0}\" | ".format(package_str)
842
+
843
+ query = TableOperatorConstants.PACKAGE_VERSION_QUERY.value. \
844
+ format(configure.indb_install_location, package_str, configure.default_varchar_size)
845
+
846
+ ret_val = tdmldf.dataframe.DataFrame.from_query(query)
847
+
848
+ if ret_val.shape[0] == 0:
849
+ msg_str = "No Python package(s) found based on given search criteria : names = {}"
850
+ print(msg_str.format(names))
851
+ ret_val = None
852
+
853
+ return ret_val
854
+
855
+
856
+ def _create_table(table_name,
857
+ columns,
858
+ primary_index=None,
859
+ unique=True,
860
+ temporary=False,
861
+ schema_name=None,
862
+ set_table=True,
863
+ **kwargs):
864
+ """
865
+ DESCRIPTION:
866
+ This is an internal function used to construct a SQLAlchemy Table Object.
867
+ This function checks appropriate flags and supports creation of Teradata
868
+ specific Table constructs such as Volatile/Primary Index tables and constraints.
869
+
870
+ PARAMETERS:
871
+ table_name:
872
+ Required Argument.
873
+ Specifies the name of SQL table.
874
+ Types: str
875
+
876
+ columns:
877
+ Required Argument.
878
+ Specifies a python dictionary with column-name(key) to column-type(value) mapping
879
+ to create table.
880
+ Types: dict
881
+
882
+ primary_index:
883
+ Optional Argument.
884
+ Specifies the column name(s) on which primary index needs to be created.
885
+ Default Value: None
886
+ Types: str OR list of Strings (str)
887
+
888
+ unique:
889
+ Optional Argument.
890
+ Specifies whether index is unique primary index or not i.e.,
891
+ if True, index column(s) does not accepts duplicate values,
892
+ if False, index column(s) accepts duplicate values.
893
+ Default Value: True
894
+ Types: bool
895
+
896
+ temporary:
897
+ Optional Argument.
898
+ Specifies whether SQL table to be created is Volatile or not.
899
+ Default Value: False
900
+ Types: bool
901
+
902
+ schema_name:
903
+ Optional Argument.
904
+ Specifies the name of the SQL schema in the database to write to.
905
+ If not specified, table is created in default schema.
906
+ Default Value: None
907
+ Types: str
908
+
909
+ set_table:
910
+ Optional Argument.
911
+ A flag specifying whether to create a SET table or a MULTISET table.
912
+ When True, an attempt to create a SET table is made.
913
+ When False, an attempt to create a MULTISET table is made.
914
+ Default Value: True
915
+ Types: bool
916
+
917
+ **kwargs:
918
+ Optional Argument.
919
+ Specifies table_level constraints as keyword arguments.
920
+ Each constraint argument can accept a string or a list of strings.
921
+ Notes:
922
+ * If the same constraint is to be applied multiple times,
923
+ conditions or columns should be mentioned as individual
924
+ elements in the list.
925
+ * If the constraint is to be applied on multiple columns,
926
+ it should be mentioned in a tuple inside the list.
927
+ * For foreign_key_constraint, value should be a list
928
+ containing 3 elements, constrained columns,
929
+ referenced columns and referenced table name.
930
+ * If multiple foreign_key_constraint constraints are
931
+ to be specified, then a list of tuples containing
932
+ the 3 elements should be specified.
933
+ Permitted values:check_constraint, primary_key_constraint,
934
+ foreign_key_constraint, unique_key_constraint.
935
+
936
+ RETURNS:
937
+ None
938
+
939
+ RAISES:
940
+ None
941
+
942
+ EXAMPLES:
943
+ # Example 1: Create a table with primary key constraint.
944
+ >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
945
+ primary_key_constraint='column_name', set_table=False)
946
+
947
+ # Example 2: Create a table with multiple check constraints.
948
+ >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
949
+ check_constraint=['column_name > value', 'column_name > value2'], set_table=False)
950
+
951
+ # Example 3: Create a table with multiple columns as primary key in primary constraint.
952
+ >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
953
+ primary_key_constraint=[('column_name','column_name')], set_table=False)
954
+
955
+ # Example 4: Create a table with no constraint and no primary key.
956
+ >>> _create_table(table_name=table_name, columns=columns_to_create, schema_name = schema_name,
957
+ set_table=False)
958
+
959
+ """
960
+ try:
961
+ prefix = []
962
+ pti = post(opts={})
963
+
964
+ if temporary is True:
965
+ pti = pti.on_commit(option='preserve')
966
+ prefix.append('VOLATILE')
967
+
968
+ if set_table:
969
+ prefix.append('set')
970
+ else:
971
+ prefix.append('multiset')
972
+
973
+ meta = MetaData()
974
+ meta.bind = tdmlctx.get_context()
975
+
976
+ if primary_index is not None:
977
+ if isinstance(primary_index, list):
978
+ pti = pti.primary_index(unique=unique, cols=primary_index)
979
+ elif isinstance(primary_index, str):
980
+ pti = pti.primary_index(unique=unique, cols=[primary_index])
981
+ else:
982
+ pti = pti.no_primary_index()
983
+
984
+ con_form=[]
985
+ for c_name, parameters in kwargs.items():
986
+ _Validators._validate_function_arguments([["constraint_type", c_name, True, str,
987
+ True, SQLConstants.CONSTRAINT.value]])
988
+ if c_name in 'check_constraint':
989
+ parameters = UtilFuncs._as_list(parameters)
990
+ [con_form.append("{}('{}')".format("CheckConstraint", col)) for col in parameters]
991
+ if c_name in 'foreign_key_constraint':
992
+ parameters = parameters if isinstance(parameters[0], tuple) else [tuple(parameters)]
993
+ for col in parameters:
994
+ meta.reflect(bind=tdmlctx.get_context(), only=[col[2]])
995
+ con_form.append("{}({},{})".format("ForeignKeyConstraint", col[0], col[1]))
996
+ if c_name in ['primary_key_constraint', 'unique_key_constraint']:
997
+ c_name = "UniqueConstraint" if c_name in 'unique_key_constraint' else 'PrimaryKeyConstraint'
998
+ parameters = UtilFuncs._as_list(parameters)
999
+ [con_form.append("{}('{}')".format(c_name, "','".join(col))) if type(col) == tuple else con_form.append(
1000
+ "{}('{}')".format(c_name, col)) for col in parameters]
1001
+ con_form.append("")
1002
+
1003
+ # Create default Table construct with parameter dictionary
1004
+ table_str = "Table(table_name, meta,*(Column(c_name, c_type) for c_name,c_type in" \
1005
+ " columns.items()),{} teradatasql_post_create=pti,prefixes=prefix," \
1006
+ "schema=schema_name)".format("" if con_form is None else ",".join(con_form))
1007
+
1008
+ table=eval(table_str)
1009
+ table.create(bind=tdmlctx.get_context())
1010
+
1011
+ except Exception as err:
1012
+ msg_code = MessageCodes.EXECUTION_FAILED
1013
+ raise TeradataMlException(Messages.get_message(msg_code, "create table", str(err)), msg_code)
1014
+
1015
+
1016
+ @collect_queryband(queryband='LstKwrds')
1017
+ def list_td_reserved_keywords(key=None, raise_error=False):
1018
+ """
1019
+ DESCRIPTION:
1020
+ Function validates if the specified string is Teradata reserved keyword or not.
1021
+ If key is not specified, list all the Teradata reserved keywords.
1022
+
1023
+ PARAMETERS:
1024
+ key:
1025
+ Optional Argument.
1026
+ Specifies a string to validate for Teradata reserved keyword.
1027
+ Types: string
1028
+
1029
+ raise_error:
1030
+ Optional Argument.
1031
+ Specifies whether to raise exception or not.
1032
+ When set to True, an exception is raised,
1033
+ if specified "key" is a Teradata reserved keyword, otherwise not.
1034
+ Default Value: False
1035
+ Types: bool
1036
+
1037
+ RETURNS:
1038
+ teradataml DataFrame, if "key" is None.
1039
+ True, if "key" is Teradata reserved keyword, False otherwise.
1040
+
1041
+ RAISES:
1042
+ TeradataMlException.
1043
+
1044
+ EXAMPLES:
1045
+ >>> from teradataml import list_td_reserved_keywords
1046
+ >>> # Example 1: List all available Teradata reserved keywords.
1047
+ >>> list_td_reserved_keywords()
1048
+ restricted_word
1049
+ 0 ABS
1050
+ 1 ACCOUNT
1051
+ 2 ACOS
1052
+ 3 ACOSH
1053
+ 4 ADD_MONTHS
1054
+ 5 ADMIN
1055
+ 6 ADD
1056
+ 7 ACCESS_LOCK
1057
+ 8 ABORTSESSION
1058
+ 9 ABORT
1059
+ >>>
1060
+
1061
+ >>> # Example 2: Validate if keyword "account" is a Teradata reserved keyword or not.
1062
+ >>> list_td_reserved_keywords("account")
1063
+ True
1064
+ >>>
1065
+
1066
+ >>> # Example 3: Validate and raise exception if keyword "account" is a Teradata reserved keyword.
1067
+ >>> list_td_reserved_keywords("account", raise_error=True)
1068
+ TeradataMlException: [Teradata][teradataml](TDML_2121) 'account' is a Teradata reserved keyword.
1069
+ """
1070
+ from teradataml.dataframe.dataframe import DataFrame, in_schema
1071
+ # Get the reserved keywords from the table
1072
+ reserved_keys = DataFrame(in_schema("SYSLIB", "SQLRestrictedWords"))
1073
+
1074
+ # If key is not passed, return the list of Teradata reserved keywords.
1075
+ if key is None:
1076
+ return reserved_keys.select(['restricted_word'])
1077
+
1078
+ # Check if key is a Teradata reserved keyword or not.
1079
+ num_rows = reserved_keys[reserved_keys.restricted_word == key.upper()].shape[0]
1080
+ if num_rows > 0:
1081
+ if raise_error:
1082
+ raise TeradataMlException(Messages.get_message(MessageCodes.RESERVED_KEYWORD, key),
1083
+ MessageCodes.RESERVED_KEYWORD)
1084
+ return True
1085
+ return False
1086
+
1087
+
1088
+ def _rename_table(old_table_name, new_table_name):
1089
+ """
1090
+ This function renames the existing table present in the database.
1091
+
1092
+ PARAMETERS:
1093
+ old_table_name:
1094
+ Required Argument.
1095
+ Specifies the name of the existing table in vantage.
1096
+ Types : String
1097
+
1098
+ new_table_name:
1099
+ Required Argument.
1100
+ Specifies the the new name for the existing table.
1101
+ Types : String
1102
+
1103
+ RETURNS:
1104
+ None
1105
+
1106
+ RAISES:
1107
+ None
1108
+
1109
+ EXAMPLES:
1110
+ >>> load_example_data("dataframe", "sales")
1111
+ >>> _rename_table("sales", "new_sales")
1112
+ """
1113
+ # Query to rename existing table.
1114
+ query = "RENAME TABLE {} TO {};".format(old_table_name, new_table_name)
1115
+ # Execute rename query.
1116
+ UtilFuncs._execute_ddl_statement(query)
1117
+
1118
+
1119
+ def _execute_query_and_generate_pandas_df(query, index=None, **kwargs):
1120
+ """
1121
+ DESCRIPTION:
1122
+ Function executes the provided query and returns a pandas DataFrame.
1123
+
1124
+ PARAMETERS:
1125
+ query:
1126
+ Required Argument.
1127
+ Specifies the query that needs to be executed to form Pandas
1128
+ DataFrame.
1129
+ Type: str
1130
+
1131
+ index
1132
+ Optional Argument.
1133
+ Specifies column(s) to be used as Pandas index.
1134
+ Types: str OR list of Strings (str)
1135
+
1136
+ RETURNS:
1137
+ Pandas DataFrame.
1138
+
1139
+ RAISES:
1140
+ TeradataMlException.
1141
+
1142
+ EXAMPLES:
1143
+ pdf = _execute_query_and_generate_pandas_df("SELECT * from t1", "col1")
1144
+ """
1145
+ # Empty queryband buffer before SQL call.
1146
+ UtilFuncs._set_queryband()
1147
+ cur = execute_sql(query)
1148
+ columns = kwargs.pop('columns', [col[0] for col in cur.description])
1149
+ rows = cur.fetchall()
1150
+ if cur is not None:
1151
+ cur.close()
1152
+
1153
+ try:
1154
+ pandas_df = pd.DataFrame.from_records(data=list(tuple(row) for row in rows),
1155
+ columns=columns,
1156
+ index=index,
1157
+ **kwargs)
1158
+ except KeyError:
1159
+ raise TeradataMlException(
1160
+ Messages.get_message(MessageCodes.INVALID_PRIMARY_INDEX),
1161
+ MessageCodes.INVALID_PRIMARY_INDEX)
1162
+ except:
1163
+ raise TeradataMlException(
1164
+ Messages.get_message(MessageCodes.TDMLDF_SELECT_DF_FAIL),
1165
+ MessageCodes.TDMLDF_SELECT_DF_FAIL)
1166
+
1167
+ return pandas_df