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.
- teradataml/LICENSE-3RD-PARTY.pdf +0 -0
- teradataml/LICENSE.pdf +0 -0
- teradataml/README.md +1935 -1640
- teradataml/__init__.py +70 -60
- teradataml/_version.py +11 -11
- teradataml/analytics/Transformations.py +2995 -2995
- teradataml/analytics/__init__.py +81 -83
- teradataml/analytics/analytic_function_executor.py +2040 -2010
- teradataml/analytics/analytic_query_generator.py +958 -958
- teradataml/analytics/byom/H2OPredict.py +514 -514
- teradataml/analytics/byom/PMMLPredict.py +437 -437
- teradataml/analytics/byom/__init__.py +14 -14
- teradataml/analytics/json_parser/__init__.py +130 -130
- teradataml/analytics/json_parser/analytic_functions_argument.py +1707 -1707
- teradataml/analytics/json_parser/json_store.py +191 -191
- teradataml/analytics/json_parser/metadata.py +1637 -1637
- teradataml/analytics/json_parser/utils.py +798 -803
- teradataml/analytics/meta_class.py +196 -196
- teradataml/analytics/sqle/DecisionTreePredict.py +455 -470
- teradataml/analytics/sqle/NaiveBayesPredict.py +419 -428
- teradataml/analytics/sqle/__init__.py +97 -110
- teradataml/analytics/sqle/json/decisiontreepredict_sqle.json +78 -78
- teradataml/analytics/sqle/json/naivebayespredict_sqle.json +62 -62
- teradataml/analytics/table_operator/__init__.py +10 -10
- teradataml/analytics/uaf/__init__.py +63 -63
- teradataml/analytics/utils.py +693 -692
- teradataml/analytics/valib.py +1603 -1600
- teradataml/automl/__init__.py +1683 -0
- teradataml/automl/custom_json_utils.py +1270 -0
- teradataml/automl/data_preparation.py +1011 -0
- teradataml/automl/data_transformation.py +789 -0
- teradataml/automl/feature_engineering.py +1580 -0
- teradataml/automl/feature_exploration.py +554 -0
- teradataml/automl/model_evaluation.py +151 -0
- teradataml/automl/model_training.py +1026 -0
- teradataml/catalog/__init__.py +1 -3
- teradataml/catalog/byom.py +1759 -1716
- teradataml/catalog/function_argument_mapper.py +859 -861
- teradataml/catalog/model_cataloging_utils.py +491 -1510
- teradataml/clients/auth_client.py +133 -0
- teradataml/clients/pkce_client.py +481 -481
- teradataml/common/aed_utils.py +7 -2
- teradataml/common/bulk_exposed_utils.py +111 -111
- teradataml/common/constants.py +1438 -1441
- teradataml/common/deprecations.py +160 -0
- teradataml/common/exceptions.py +73 -73
- teradataml/common/formula.py +742 -742
- teradataml/common/garbagecollector.py +597 -635
- teradataml/common/messagecodes.py +424 -431
- teradataml/common/messages.py +228 -231
- teradataml/common/sqlbundle.py +693 -693
- teradataml/common/td_coltype_code_to_tdtype.py +48 -48
- teradataml/common/utils.py +2424 -2500
- teradataml/common/warnings.py +25 -25
- teradataml/common/wrapper_utils.py +1 -110
- teradataml/config/dummy_file1.cfg +4 -4
- teradataml/config/dummy_file2.cfg +2 -2
- teradataml/config/sqlengine_alias_definitions_v1.0 +13 -13
- teradataml/config/sqlengine_alias_definitions_v1.1 +19 -19
- teradataml/config/sqlengine_alias_definitions_v1.3 +18 -18
- teradataml/context/aed_context.py +217 -217
- teradataml/context/context.py +1091 -999
- teradataml/data/A_loan.csv +19 -19
- teradataml/data/BINARY_REALS_LEFT.csv +11 -11
- teradataml/data/BINARY_REALS_RIGHT.csv +11 -11
- teradataml/data/B_loan.csv +49 -49
- teradataml/data/BuoyData2.csv +17 -17
- teradataml/data/CONVOLVE2_COMPLEX_LEFT.csv +5 -5
- teradataml/data/CONVOLVE2_COMPLEX_RIGHT.csv +5 -5
- teradataml/data/Convolve2RealsLeft.csv +5 -5
- teradataml/data/Convolve2RealsRight.csv +5 -5
- teradataml/data/Convolve2ValidLeft.csv +11 -11
- teradataml/data/Convolve2ValidRight.csv +11 -11
- teradataml/data/DFFTConv_Real_8_8.csv +65 -65
- teradataml/data/Orders1_12mf.csv +24 -24
- teradataml/data/Pi_loan.csv +7 -7
- teradataml/data/SMOOTHED_DATA.csv +7 -7
- teradataml/data/TestDFFT8.csv +9 -9
- teradataml/data/TestRiver.csv +109 -109
- teradataml/data/Traindata.csv +28 -28
- teradataml/data/acf.csv +17 -17
- teradataml/data/adaboost_example.json +34 -34
- teradataml/data/adaboostpredict_example.json +24 -24
- teradataml/data/additional_table.csv +10 -10
- teradataml/data/admissions_test.csv +21 -21
- teradataml/data/admissions_train.csv +41 -41
- teradataml/data/admissions_train_nulls.csv +41 -41
- teradataml/data/advertising.csv +201 -0
- teradataml/data/ageandheight.csv +13 -13
- teradataml/data/ageandpressure.csv +31 -31
- teradataml/data/antiselect_example.json +36 -36
- teradataml/data/antiselect_input.csv +8 -8
- teradataml/data/antiselect_input_mixed_case.csv +8 -8
- teradataml/data/applicant_external.csv +6 -6
- teradataml/data/applicant_reference.csv +6 -6
- teradataml/data/arima_example.json +9 -9
- teradataml/data/assortedtext_input.csv +8 -8
- teradataml/data/attribution_example.json +33 -33
- teradataml/data/attribution_sample_table.csv +27 -27
- teradataml/data/attribution_sample_table1.csv +6 -6
- teradataml/data/attribution_sample_table2.csv +11 -11
- teradataml/data/bank_churn.csv +10001 -0
- teradataml/data/bank_marketing.csv +11163 -0
- teradataml/data/bank_web_clicks1.csv +42 -42
- teradataml/data/bank_web_clicks2.csv +91 -91
- teradataml/data/bank_web_url.csv +85 -85
- teradataml/data/barrier.csv +2 -2
- teradataml/data/barrier_new.csv +3 -3
- teradataml/data/betweenness_example.json +13 -13
- teradataml/data/bike_sharing.csv +732 -0
- teradataml/data/bin_breaks.csv +8 -8
- teradataml/data/bin_fit_ip.csv +3 -3
- teradataml/data/binary_complex_left.csv +11 -11
- teradataml/data/binary_complex_right.csv +11 -11
- teradataml/data/binary_matrix_complex_left.csv +21 -21
- teradataml/data/binary_matrix_complex_right.csv +21 -21
- teradataml/data/binary_matrix_real_left.csv +21 -21
- teradataml/data/binary_matrix_real_right.csv +21 -21
- teradataml/data/blood2ageandweight.csv +26 -26
- teradataml/data/bmi.csv +501 -0
- teradataml/data/boston.csv +507 -507
- teradataml/data/boston2cols.csv +721 -0
- teradataml/data/breast_cancer.csv +570 -0
- teradataml/data/buoydata_mix.csv +11 -11
- teradataml/data/burst_data.csv +5 -5
- teradataml/data/burst_example.json +20 -20
- teradataml/data/byom_example.json +17 -17
- teradataml/data/bytes_table.csv +3 -3
- teradataml/data/cal_housing_ex_raw.csv +70 -70
- teradataml/data/callers.csv +7 -7
- teradataml/data/calls.csv +10 -10
- teradataml/data/cars_hist.csv +33 -33
- teradataml/data/cat_table.csv +24 -24
- teradataml/data/ccm_example.json +31 -31
- teradataml/data/ccm_input.csv +91 -91
- teradataml/data/ccm_input2.csv +13 -13
- teradataml/data/ccmexample.csv +101 -101
- teradataml/data/ccmprepare_example.json +8 -8
- teradataml/data/ccmprepare_input.csv +91 -91
- teradataml/data/cfilter_example.json +12 -12
- teradataml/data/changepointdetection_example.json +18 -18
- teradataml/data/changepointdetectionrt_example.json +8 -8
- teradataml/data/chi_sq.csv +2 -2
- teradataml/data/churn_data.csv +14 -14
- teradataml/data/churn_emission.csv +35 -35
- teradataml/data/churn_initial.csv +3 -3
- teradataml/data/churn_state_transition.csv +5 -5
- teradataml/data/citedges_2.csv +745 -745
- teradataml/data/citvertices_2.csv +1210 -1210
- teradataml/data/clicks2.csv +16 -16
- teradataml/data/clickstream.csv +12 -12
- teradataml/data/clickstream1.csv +11 -11
- teradataml/data/closeness_example.json +15 -15
- teradataml/data/complaints.csv +21 -21
- teradataml/data/complaints_mini.csv +3 -3
- teradataml/data/complaints_testtoken.csv +224 -224
- teradataml/data/complaints_tokens_test.csv +353 -353
- teradataml/data/complaints_traintoken.csv +472 -472
- teradataml/data/computers_category.csv +1001 -1001
- teradataml/data/computers_test1.csv +1252 -1252
- teradataml/data/computers_train1.csv +5009 -5009
- teradataml/data/computers_train1_clustered.csv +5009 -5009
- teradataml/data/confusionmatrix_example.json +9 -9
- teradataml/data/conversion_event_table.csv +3 -3
- teradataml/data/corr_input.csv +17 -17
- teradataml/data/correlation_example.json +11 -11
- teradataml/data/coxhazardratio_example.json +39 -39
- teradataml/data/coxph_example.json +15 -15
- teradataml/data/coxsurvival_example.json +28 -28
- teradataml/data/cpt.csv +41 -41
- teradataml/data/credit_ex_merged.csv +45 -45
- teradataml/data/customer_loyalty.csv +301 -301
- teradataml/data/customer_loyalty_newseq.csv +31 -31
- teradataml/data/customer_segmentation_test.csv +2628 -0
- teradataml/data/customer_segmentation_train.csv +8069 -0
- teradataml/data/dataframe_example.json +146 -146
- teradataml/data/decisionforest_example.json +37 -37
- teradataml/data/decisionforestpredict_example.json +38 -38
- teradataml/data/decisiontree_example.json +21 -21
- teradataml/data/decisiontreepredict_example.json +45 -45
- teradataml/data/dfft2_size4_real.csv +17 -17
- teradataml/data/dfft2_test_matrix16.csv +17 -17
- teradataml/data/dfft2conv_real_4_4.csv +65 -65
- teradataml/data/diabetes.csv +443 -443
- teradataml/data/diabetes_test.csv +89 -89
- teradataml/data/dict_table.csv +5 -5
- teradataml/data/docperterm_table.csv +4 -4
- teradataml/data/docs/__init__.py +1 -1
- teradataml/data/docs/byom/docs/DataRobotPredict.py +180 -180
- teradataml/data/docs/byom/docs/DataikuPredict.py +177 -177
- teradataml/data/docs/byom/docs/H2OPredict.py +324 -324
- teradataml/data/docs/byom/docs/ONNXPredict.py +283 -283
- teradataml/data/docs/byom/docs/PMMLPredict.py +277 -277
- teradataml/data/docs/sqle/docs_17_10/Antiselect.py +82 -82
- teradataml/data/docs/sqle/docs_17_10/Attribution.py +199 -199
- teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +171 -171
- teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +131 -130
- teradataml/data/docs/sqle/docs_17_10/CategoricalSummary.py +86 -86
- teradataml/data/docs/sqle/docs_17_10/ChiSq.py +90 -90
- teradataml/data/docs/sqle/docs_17_10/ColumnSummary.py +85 -85
- teradataml/data/docs/sqle/docs_17_10/ConvertTo.py +95 -95
- teradataml/data/docs/sqle/docs_17_10/DecisionForestPredict.py +139 -139
- teradataml/data/docs/sqle/docs_17_10/DecisionTreePredict.py +151 -151
- teradataml/data/docs/sqle/docs_17_10/FTest.py +160 -160
- teradataml/data/docs/sqle/docs_17_10/FillRowId.py +82 -82
- teradataml/data/docs/sqle/docs_17_10/Fit.py +87 -87
- teradataml/data/docs/sqle/docs_17_10/GLMPredict.py +144 -144
- teradataml/data/docs/sqle/docs_17_10/GetRowsWithMissingValues.py +84 -84
- teradataml/data/docs/sqle/docs_17_10/GetRowsWithoutMissingValues.py +81 -81
- teradataml/data/docs/sqle/docs_17_10/Histogram.py +164 -164
- teradataml/data/docs/sqle/docs_17_10/MovingAverage.py +134 -134
- teradataml/data/docs/sqle/docs_17_10/NGramSplitter.py +208 -208
- teradataml/data/docs/sqle/docs_17_10/NPath.py +265 -265
- teradataml/data/docs/sqle/docs_17_10/NaiveBayesPredict.py +116 -116
- teradataml/data/docs/sqle/docs_17_10/NaiveBayesTextClassifierPredict.py +176 -176
- teradataml/data/docs/sqle/docs_17_10/NumApply.py +147 -147
- teradataml/data/docs/sqle/docs_17_10/OneHotEncodingFit.py +134 -132
- teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +109 -103
- teradataml/data/docs/sqle/docs_17_10/OutlierFilterFit.py +165 -165
- teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +105 -101
- teradataml/data/docs/sqle/docs_17_10/Pack.py +128 -128
- teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesFit.py +111 -111
- teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +102 -102
- teradataml/data/docs/sqle/docs_17_10/QQNorm.py +104 -104
- teradataml/data/docs/sqle/docs_17_10/RoundColumns.py +109 -109
- teradataml/data/docs/sqle/docs_17_10/RowNormalizeFit.py +117 -117
- teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +99 -98
- teradataml/data/docs/sqle/docs_17_10/SVMSparsePredict.py +152 -152
- teradataml/data/docs/sqle/docs_17_10/ScaleFit.py +197 -197
- teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +99 -98
- teradataml/data/docs/sqle/docs_17_10/Sessionize.py +113 -113
- teradataml/data/docs/sqle/docs_17_10/SimpleImputeFit.py +116 -116
- teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +98 -98
- teradataml/data/docs/sqle/docs_17_10/StrApply.py +187 -187
- teradataml/data/docs/sqle/docs_17_10/StringSimilarity.py +145 -145
- teradataml/data/docs/sqle/docs_17_10/Transform.py +105 -104
- teradataml/data/docs/sqle/docs_17_10/UnivariateStatistics.py +141 -141
- teradataml/data/docs/sqle/docs_17_10/Unpack.py +214 -214
- teradataml/data/docs/sqle/docs_17_10/WhichMax.py +83 -83
- teradataml/data/docs/sqle/docs_17_10/WhichMin.py +83 -83
- teradataml/data/docs/sqle/docs_17_10/ZTest.py +155 -155
- teradataml/data/docs/sqle/docs_17_20/ANOVA.py +186 -126
- teradataml/data/docs/sqle/docs_17_20/Antiselect.py +82 -82
- teradataml/data/docs/sqle/docs_17_20/Attribution.py +200 -200
- teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +171 -171
- teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +139 -138
- teradataml/data/docs/sqle/docs_17_20/CategoricalSummary.py +86 -86
- teradataml/data/docs/sqle/docs_17_20/ChiSq.py +90 -90
- teradataml/data/docs/sqle/docs_17_20/ClassificationEvaluator.py +166 -166
- teradataml/data/docs/sqle/docs_17_20/ColumnSummary.py +85 -85
- teradataml/data/docs/sqle/docs_17_20/ColumnTransformer.py +245 -243
- teradataml/data/docs/sqle/docs_17_20/ConvertTo.py +113 -113
- teradataml/data/docs/sqle/docs_17_20/DecisionForest.py +279 -279
- teradataml/data/docs/sqle/docs_17_20/DecisionForestPredict.py +144 -144
- teradataml/data/docs/sqle/docs_17_20/DecisionTreePredict.py +135 -135
- teradataml/data/docs/sqle/docs_17_20/FTest.py +239 -160
- teradataml/data/docs/sqle/docs_17_20/FillRowId.py +82 -82
- teradataml/data/docs/sqle/docs_17_20/Fit.py +87 -87
- teradataml/data/docs/sqle/docs_17_20/GLM.py +541 -380
- teradataml/data/docs/sqle/docs_17_20/GLMPerSegment.py +414 -414
- teradataml/data/docs/sqle/docs_17_20/GLMPredict.py +144 -144
- teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +233 -234
- teradataml/data/docs/sqle/docs_17_20/GetFutileColumns.py +125 -123
- teradataml/data/docs/sqle/docs_17_20/GetRowsWithMissingValues.py +108 -108
- teradataml/data/docs/sqle/docs_17_20/GetRowsWithoutMissingValues.py +105 -105
- teradataml/data/docs/sqle/docs_17_20/Histogram.py +223 -223
- teradataml/data/docs/sqle/docs_17_20/KMeans.py +251 -204
- teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +144 -143
- teradataml/data/docs/sqle/docs_17_20/KNN.py +214 -214
- teradataml/data/docs/sqle/docs_17_20/MovingAverage.py +134 -134
- teradataml/data/docs/sqle/docs_17_20/NGramSplitter.py +208 -208
- teradataml/data/docs/sqle/docs_17_20/NPath.py +265 -265
- teradataml/data/docs/sqle/docs_17_20/NaiveBayesPredict.py +116 -116
- teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +177 -176
- teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +126 -126
- teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +118 -117
- teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +112 -112
- teradataml/data/docs/sqle/docs_17_20/NumApply.py +147 -147
- teradataml/data/docs/sqle/docs_17_20/OneClassSVM.py +307 -307
- teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +185 -184
- teradataml/data/docs/sqle/docs_17_20/OneHotEncodingFit.py +230 -225
- teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +121 -115
- teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingFit.py +219 -219
- teradataml/data/docs/sqle/docs_17_20/OrdinalEncodingTransform.py +127 -127
- teradataml/data/docs/sqle/docs_17_20/OutlierFilterFit.py +189 -189
- teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +117 -112
- teradataml/data/docs/sqle/docs_17_20/Pack.py +128 -128
- teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesFit.py +111 -111
- teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +112 -111
- teradataml/data/docs/sqle/docs_17_20/QQNorm.py +104 -104
- teradataml/data/docs/sqle/docs_17_20/ROC.py +164 -163
- teradataml/data/docs/sqle/docs_17_20/RandomProjectionFit.py +154 -154
- teradataml/data/docs/sqle/docs_17_20/RandomProjectionMinComponents.py +106 -106
- teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +120 -120
- teradataml/data/docs/sqle/docs_17_20/RegressionEvaluator.py +211 -211
- teradataml/data/docs/sqle/docs_17_20/RoundColumns.py +108 -108
- teradataml/data/docs/sqle/docs_17_20/RowNormalizeFit.py +117 -117
- teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +111 -110
- teradataml/data/docs/sqle/docs_17_20/SVM.py +413 -413
- teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +213 -202
- teradataml/data/docs/sqle/docs_17_20/SVMSparsePredict.py +152 -152
- teradataml/data/docs/sqle/docs_17_20/ScaleFit.py +315 -197
- teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +202 -109
- teradataml/data/docs/sqle/docs_17_20/SentimentExtractor.py +206 -206
- teradataml/data/docs/sqle/docs_17_20/Sessionize.py +113 -113
- teradataml/data/docs/sqle/docs_17_20/Silhouette.py +152 -152
- teradataml/data/docs/sqle/docs_17_20/SimpleImputeFit.py +116 -116
- teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +109 -108
- teradataml/data/docs/sqle/docs_17_20/StrApply.py +187 -187
- teradataml/data/docs/sqle/docs_17_20/StringSimilarity.py +145 -145
- teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +207 -207
- teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +333 -171
- teradataml/data/docs/sqle/docs_17_20/TargetEncodingFit.py +266 -266
- teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +141 -140
- teradataml/data/docs/sqle/docs_17_20/TextParser.py +172 -172
- teradataml/data/docs/sqle/docs_17_20/TrainTestSplit.py +159 -159
- teradataml/data/docs/sqle/docs_17_20/Transform.py +123 -123
- teradataml/data/docs/sqle/docs_17_20/UnivariateStatistics.py +141 -141
- teradataml/data/docs/sqle/docs_17_20/Unpack.py +214 -214
- teradataml/data/docs/sqle/docs_17_20/VectorDistance.py +168 -168
- teradataml/data/docs/sqle/docs_17_20/WhichMax.py +83 -83
- teradataml/data/docs/sqle/docs_17_20/WhichMin.py +83 -83
- teradataml/data/docs/sqle/docs_17_20/WordEmbeddings.py +236 -236
- teradataml/data/docs/sqle/docs_17_20/XGBoost.py +361 -353
- teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +281 -275
- teradataml/data/docs/sqle/docs_17_20/ZTest.py +220 -155
- teradataml/data/docs/tableoperator/docs_17_00/ReadNOS.py +429 -429
- teradataml/data/docs/tableoperator/docs_17_05/ReadNOS.py +429 -429
- teradataml/data/docs/tableoperator/docs_17_05/WriteNOS.py +347 -347
- teradataml/data/docs/tableoperator/docs_17_10/ReadNOS.py +428 -428
- teradataml/data/docs/tableoperator/docs_17_10/WriteNOS.py +347 -347
- teradataml/data/docs/tableoperator/docs_17_20/ReadNOS.py +439 -439
- teradataml/data/docs/tableoperator/docs_17_20/WriteNOS.py +386 -386
- teradataml/data/docs/uaf/docs_17_20/ACF.py +195 -195
- teradataml/data/docs/uaf/docs_17_20/ArimaEstimate.py +369 -369
- teradataml/data/docs/uaf/docs_17_20/ArimaForecast.py +142 -142
- teradataml/data/docs/uaf/docs_17_20/ArimaValidate.py +159 -159
- teradataml/data/docs/uaf/docs_17_20/BinaryMatrixOp.py +247 -247
- teradataml/data/docs/uaf/docs_17_20/BinarySeriesOp.py +252 -252
- teradataml/data/docs/uaf/docs_17_20/BreuschGodfrey.py +177 -177
- teradataml/data/docs/uaf/docs_17_20/BreuschPaganGodfrey.py +174 -174
- teradataml/data/docs/uaf/docs_17_20/Convolve.py +226 -226
- teradataml/data/docs/uaf/docs_17_20/Convolve2.py +214 -214
- teradataml/data/docs/uaf/docs_17_20/CumulPeriodogram.py +183 -183
- teradataml/data/docs/uaf/docs_17_20/DFFT.py +203 -203
- teradataml/data/docs/uaf/docs_17_20/DFFT2.py +216 -216
- teradataml/data/docs/uaf/docs_17_20/DFFT2Conv.py +215 -215
- teradataml/data/docs/uaf/docs_17_20/DFFTConv.py +191 -191
- teradataml/data/docs/uaf/docs_17_20/DTW.py +179 -179
- teradataml/data/docs/uaf/docs_17_20/DickeyFuller.py +144 -144
- teradataml/data/docs/uaf/docs_17_20/DurbinWatson.py +183 -183
- teradataml/data/docs/uaf/docs_17_20/ExtractResults.py +184 -184
- teradataml/data/docs/uaf/docs_17_20/FitMetrics.py +172 -172
- teradataml/data/docs/uaf/docs_17_20/GenseriesFormula.py +205 -205
- teradataml/data/docs/uaf/docs_17_20/GenseriesSinusoids.py +142 -142
- teradataml/data/docs/uaf/docs_17_20/HoltWintersForecaster.py +258 -258
- teradataml/data/docs/uaf/docs_17_20/IDFFT.py +164 -164
- teradataml/data/docs/uaf/docs_17_20/IDFFT2.py +198 -198
- teradataml/data/docs/uaf/docs_17_20/InputValidator.py +120 -120
- teradataml/data/docs/uaf/docs_17_20/LineSpec.py +155 -155
- teradataml/data/docs/uaf/docs_17_20/LinearRegr.py +214 -214
- teradataml/data/docs/uaf/docs_17_20/MAMean.py +173 -173
- teradataml/data/docs/uaf/docs_17_20/MInfo.py +133 -133
- teradataml/data/docs/uaf/docs_17_20/MatrixMultiply.py +135 -135
- teradataml/data/docs/uaf/docs_17_20/MultivarRegr.py +190 -190
- teradataml/data/docs/uaf/docs_17_20/PACF.py +158 -158
- teradataml/data/docs/uaf/docs_17_20/Portman.py +216 -216
- teradataml/data/docs/uaf/docs_17_20/PowerTransform.py +154 -154
- teradataml/data/docs/uaf/docs_17_20/Resample.py +228 -228
- teradataml/data/docs/uaf/docs_17_20/SInfo.py +122 -122
- teradataml/data/docs/uaf/docs_17_20/SeasonalNormalize.py +165 -165
- teradataml/data/docs/uaf/docs_17_20/SelectionCriteria.py +173 -173
- teradataml/data/docs/uaf/docs_17_20/SignifPeriodicities.py +170 -170
- teradataml/data/docs/uaf/docs_17_20/SignifResidmean.py +163 -163
- teradataml/data/docs/uaf/docs_17_20/SimpleExp.py +179 -179
- teradataml/data/docs/uaf/docs_17_20/Smoothma.py +207 -207
- teradataml/data/docs/uaf/docs_17_20/TrackingOp.py +150 -150
- teradataml/data/docs/uaf/docs_17_20/UNDIFF.py +171 -171
- teradataml/data/docs/uaf/docs_17_20/Unnormalize.py +201 -201
- teradataml/data/docs/uaf/docs_17_20/WhitesGeneral.py +169 -169
- teradataml/data/dtw_example.json +17 -17
- teradataml/data/dtw_t1.csv +11 -11
- teradataml/data/dtw_t2.csv +4 -4
- teradataml/data/dwt2d_example.json +15 -15
- teradataml/data/dwt_example.json +14 -14
- teradataml/data/dwt_filter_dim.csv +5 -5
- teradataml/data/emission.csv +9 -9
- teradataml/data/emp_table_by_dept.csv +19 -19
- teradataml/data/employee_info.csv +4 -4
- teradataml/data/employee_table.csv +6 -6
- teradataml/data/excluding_event_table.csv +2 -2
- teradataml/data/finance_data.csv +6 -6
- teradataml/data/finance_data2.csv +61 -61
- teradataml/data/finance_data3.csv +93 -93
- teradataml/data/fish.csv +160 -0
- teradataml/data/fm_blood2ageandweight.csv +26 -26
- teradataml/data/fmeasure_example.json +11 -11
- teradataml/data/followers_leaders.csv +10 -10
- teradataml/data/fpgrowth_example.json +12 -12
- teradataml/data/frequentpaths_example.json +29 -29
- teradataml/data/friends.csv +9 -9
- teradataml/data/fs_input.csv +33 -33
- teradataml/data/fs_input1.csv +33 -33
- teradataml/data/genData.csv +513 -513
- teradataml/data/geodataframe_example.json +39 -39
- teradataml/data/glass_types.csv +215 -0
- teradataml/data/glm_admissions_model.csv +12 -12
- teradataml/data/glm_example.json +56 -29
- teradataml/data/glml1l2_example.json +28 -28
- teradataml/data/glml1l2predict_example.json +54 -54
- teradataml/data/glmpredict_example.json +54 -54
- teradataml/data/gq_t1.csv +21 -21
- teradataml/data/hconvolve_complex_right.csv +5 -5
- teradataml/data/hconvolve_complex_rightmulti.csv +5 -5
- teradataml/data/histogram_example.json +11 -11
- teradataml/data/hmmdecoder_example.json +78 -78
- teradataml/data/hmmevaluator_example.json +24 -24
- teradataml/data/hmmsupervised_example.json +10 -10
- teradataml/data/hmmunsupervised_example.json +7 -7
- teradataml/data/house_values.csv +12 -12
- teradataml/data/house_values2.csv +13 -13
- teradataml/data/housing_cat.csv +7 -7
- teradataml/data/housing_data.csv +9 -9
- teradataml/data/housing_test.csv +47 -47
- teradataml/data/housing_test_binary.csv +47 -47
- teradataml/data/housing_train.csv +493 -493
- teradataml/data/housing_train_attribute.csv +4 -4
- teradataml/data/housing_train_binary.csv +437 -437
- teradataml/data/housing_train_parameter.csv +2 -2
- teradataml/data/housing_train_response.csv +493 -493
- teradataml/data/housing_train_segment.csv +201 -0
- teradataml/data/ibm_stock.csv +370 -370
- teradataml/data/ibm_stock1.csv +370 -370
- teradataml/data/identitymatch_example.json +21 -21
- teradataml/data/idf_table.csv +4 -4
- teradataml/data/impressions.csv +101 -101
- teradataml/data/inflation.csv +21 -21
- teradataml/data/initial.csv +3 -3
- teradataml/data/insect2Cols.csv +61 -0
- teradataml/data/insect_sprays.csv +12 -12
- teradataml/data/insurance.csv +1339 -1339
- teradataml/data/interpolator_example.json +12 -12
- teradataml/data/iris_altinput.csv +481 -481
- teradataml/data/iris_attribute_output.csv +8 -8
- teradataml/data/iris_attribute_test.csv +121 -121
- teradataml/data/iris_attribute_train.csv +481 -481
- teradataml/data/iris_category_expect_predict.csv +31 -31
- teradataml/data/iris_data.csv +151 -0
- teradataml/data/iris_input.csv +151 -151
- teradataml/data/iris_response_train.csv +121 -121
- teradataml/data/iris_test.csv +31 -31
- teradataml/data/iris_train.csv +121 -121
- teradataml/data/join_table1.csv +4 -4
- teradataml/data/join_table2.csv +4 -4
- teradataml/data/jsons/anly_function_name.json +6 -6
- teradataml/data/jsons/byom/dataikupredict.json +147 -147
- teradataml/data/jsons/byom/datarobotpredict.json +146 -146
- teradataml/data/jsons/byom/h2opredict.json +194 -194
- teradataml/data/jsons/byom/onnxpredict.json +186 -186
- teradataml/data/jsons/byom/pmmlpredict.json +146 -146
- teradataml/data/jsons/paired_functions.json +435 -435
- teradataml/data/jsons/sqle/16.20/Antiselect.json +56 -56
- teradataml/data/jsons/sqle/16.20/Attribution.json +249 -249
- teradataml/data/jsons/sqle/16.20/DecisionForestPredict.json +156 -156
- teradataml/data/jsons/sqle/16.20/DecisionTreePredict.json +170 -170
- teradataml/data/jsons/sqle/16.20/GLMPredict.json +122 -122
- teradataml/data/jsons/sqle/16.20/MovingAverage.json +367 -367
- teradataml/data/jsons/sqle/16.20/NGramSplitter.json +239 -239
- teradataml/data/jsons/sqle/16.20/NaiveBayesPredict.json +136 -136
- teradataml/data/jsons/sqle/16.20/NaiveBayesTextClassifierPredict.json +235 -235
- teradataml/data/jsons/sqle/16.20/Pack.json +98 -98
- teradataml/data/jsons/sqle/16.20/SVMSparsePredict.json +162 -162
- teradataml/data/jsons/sqle/16.20/Sessionize.json +105 -105
- teradataml/data/jsons/sqle/16.20/StringSimilarity.json +86 -86
- teradataml/data/jsons/sqle/16.20/Unpack.json +166 -166
- teradataml/data/jsons/sqle/16.20/nPath.json +269 -269
- teradataml/data/jsons/sqle/17.00/Antiselect.json +56 -56
- teradataml/data/jsons/sqle/17.00/Attribution.json +249 -249
- teradataml/data/jsons/sqle/17.00/DecisionForestPredict.json +156 -156
- teradataml/data/jsons/sqle/17.00/DecisionTreePredict.json +170 -170
- teradataml/data/jsons/sqle/17.00/GLMPredict.json +122 -122
- teradataml/data/jsons/sqle/17.00/MovingAverage.json +367 -367
- teradataml/data/jsons/sqle/17.00/NGramSplitter.json +239 -239
- teradataml/data/jsons/sqle/17.00/NaiveBayesPredict.json +136 -136
- teradataml/data/jsons/sqle/17.00/NaiveBayesTextClassifierPredict.json +235 -235
- teradataml/data/jsons/sqle/17.00/Pack.json +98 -98
- teradataml/data/jsons/sqle/17.00/SVMSparsePredict.json +162 -162
- teradataml/data/jsons/sqle/17.00/Sessionize.json +105 -105
- teradataml/data/jsons/sqle/17.00/StringSimilarity.json +86 -86
- teradataml/data/jsons/sqle/17.00/Unpack.json +166 -166
- teradataml/data/jsons/sqle/17.00/nPath.json +269 -269
- teradataml/data/jsons/sqle/17.05/Antiselect.json +56 -56
- teradataml/data/jsons/sqle/17.05/Attribution.json +249 -249
- teradataml/data/jsons/sqle/17.05/DecisionForestPredict.json +156 -156
- teradataml/data/jsons/sqle/17.05/DecisionTreePredict.json +170 -170
- teradataml/data/jsons/sqle/17.05/GLMPredict.json +122 -122
- teradataml/data/jsons/sqle/17.05/MovingAverage.json +367 -367
- teradataml/data/jsons/sqle/17.05/NGramSplitter.json +239 -239
- teradataml/data/jsons/sqle/17.05/NaiveBayesPredict.json +136 -136
- teradataml/data/jsons/sqle/17.05/NaiveBayesTextClassifierPredict.json +235 -235
- teradataml/data/jsons/sqle/17.05/Pack.json +98 -98
- teradataml/data/jsons/sqle/17.05/SVMSparsePredict.json +162 -162
- teradataml/data/jsons/sqle/17.05/Sessionize.json +105 -105
- teradataml/data/jsons/sqle/17.05/StringSimilarity.json +86 -86
- teradataml/data/jsons/sqle/17.05/Unpack.json +166 -166
- teradataml/data/jsons/sqle/17.05/nPath.json +269 -269
- teradataml/data/jsons/sqle/17.10/Antiselect.json +56 -56
- teradataml/data/jsons/sqle/17.10/Attribution.json +249 -249
- teradataml/data/jsons/sqle/17.10/DecisionForestPredict.json +185 -185
- teradataml/data/jsons/sqle/17.10/DecisionTreePredict.json +171 -171
- teradataml/data/jsons/sqle/17.10/GLMPredict.json +151 -151
- teradataml/data/jsons/sqle/17.10/MovingAverage.json +368 -368
- teradataml/data/jsons/sqle/17.10/NGramSplitter.json +239 -239
- teradataml/data/jsons/sqle/17.10/NaiveBayesPredict.json +149 -149
- teradataml/data/jsons/sqle/17.10/NaiveBayesTextClassifierPredict.json +288 -288
- teradataml/data/jsons/sqle/17.10/Pack.json +133 -133
- teradataml/data/jsons/sqle/17.10/SVMSparsePredict.json +193 -193
- teradataml/data/jsons/sqle/17.10/Sessionize.json +105 -105
- teradataml/data/jsons/sqle/17.10/StringSimilarity.json +86 -86
- teradataml/data/jsons/sqle/17.10/TD_BinCodeFit.json +239 -239
- teradataml/data/jsons/sqle/17.10/TD_BinCodeTransform.json +70 -70
- teradataml/data/jsons/sqle/17.10/TD_CategoricalSummary.json +53 -53
- teradataml/data/jsons/sqle/17.10/TD_Chisq.json +67 -67
- teradataml/data/jsons/sqle/17.10/TD_ColumnSummary.json +53 -53
- teradataml/data/jsons/sqle/17.10/TD_ConvertTo.json +68 -68
- teradataml/data/jsons/sqle/17.10/TD_FTest.json +187 -187
- teradataml/data/jsons/sqle/17.10/TD_FillRowID.json +51 -51
- teradataml/data/jsons/sqle/17.10/TD_FunctionFit.json +46 -46
- teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +72 -71
- teradataml/data/jsons/sqle/17.10/TD_GetRowsWithMissingValues.json +52 -52
- teradataml/data/jsons/sqle/17.10/TD_GetRowsWithoutMissingValues.json +52 -52
- teradataml/data/jsons/sqle/17.10/TD_Histogram.json +132 -132
- teradataml/data/jsons/sqle/17.10/TD_NumApply.json +147 -147
- teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingFit.json +182 -182
- teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +65 -64
- teradataml/data/jsons/sqle/17.10/TD_OutlierFilterFit.json +196 -196
- teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +48 -47
- teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesFit.json +114 -114
- teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +72 -71
- teradataml/data/jsons/sqle/17.10/TD_QQNorm.json +111 -111
- teradataml/data/jsons/sqle/17.10/TD_RoundColumns.json +93 -93
- teradataml/data/jsons/sqle/17.10/TD_RowNormalizeFit.json +127 -127
- teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +70 -69
- teradataml/data/jsons/sqle/17.10/TD_ScaleFit.json +156 -156
- teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +70 -69
- teradataml/data/jsons/sqle/17.10/TD_SimpleImputeFit.json +147 -147
- teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +48 -47
- teradataml/data/jsons/sqle/17.10/TD_StrApply.json +240 -240
- teradataml/data/jsons/sqle/17.10/TD_UnivariateStatistics.json +118 -118
- teradataml/data/jsons/sqle/17.10/TD_WhichMax.json +52 -52
- teradataml/data/jsons/sqle/17.10/TD_WhichMin.json +52 -52
- teradataml/data/jsons/sqle/17.10/TD_ZTest.json +171 -171
- teradataml/data/jsons/sqle/17.10/Unpack.json +188 -188
- teradataml/data/jsons/sqle/17.10/nPath.json +269 -269
- teradataml/data/jsons/sqle/17.20/Antiselect.json +56 -56
- teradataml/data/jsons/sqle/17.20/Attribution.json +249 -249
- teradataml/data/jsons/sqle/17.20/DecisionForestPredict.json +185 -185
- teradataml/data/jsons/sqle/17.20/DecisionTreePredict.json +172 -172
- teradataml/data/jsons/sqle/17.20/GLMPredict.json +151 -151
- teradataml/data/jsons/sqle/17.20/MovingAverage.json +367 -367
- teradataml/data/jsons/sqle/17.20/NGramSplitter.json +239 -239
- teradataml/data/jsons/sqle/17.20/NaiveBayesPredict.json +149 -149
- teradataml/data/jsons/sqle/17.20/NaiveBayesTextClassifierPredict.json +287 -287
- teradataml/data/jsons/sqle/17.20/Pack.json +133 -133
- teradataml/data/jsons/sqle/17.20/SVMSparsePredict.json +192 -192
- teradataml/data/jsons/sqle/17.20/Sessionize.json +105 -105
- teradataml/data/jsons/sqle/17.20/StringSimilarity.json +86 -86
- teradataml/data/jsons/sqle/17.20/TD_ANOVA.json +148 -76
- teradataml/data/jsons/sqle/17.20/TD_BinCodeFit.json +239 -239
- teradataml/data/jsons/sqle/17.20/TD_BinCodeTransform.json +71 -71
- teradataml/data/jsons/sqle/17.20/TD_CategoricalSummary.json +53 -53
- teradataml/data/jsons/sqle/17.20/TD_Chisq.json +67 -67
- teradataml/data/jsons/sqle/17.20/TD_ClassificationEvaluator.json +145 -145
- teradataml/data/jsons/sqle/17.20/TD_ColumnSummary.json +53 -53
- teradataml/data/jsons/sqle/17.20/TD_ColumnTransformer.json +218 -218
- teradataml/data/jsons/sqle/17.20/TD_ConvertTo.json +92 -92
- teradataml/data/jsons/sqle/17.20/TD_DecisionForest.json +259 -259
- teradataml/data/jsons/sqle/17.20/TD_DecisionForestPredict.json +139 -139
- teradataml/data/jsons/sqle/17.20/TD_FTest.json +269 -186
- teradataml/data/jsons/sqle/17.20/TD_FillRowID.json +52 -52
- teradataml/data/jsons/sqle/17.20/TD_FunctionFit.json +46 -46
- teradataml/data/jsons/sqle/17.20/TD_FunctionTransform.json +72 -72
- teradataml/data/jsons/sqle/17.20/TD_GLM.json +507 -431
- teradataml/data/jsons/sqle/17.20/TD_GLMPREDICT.json +168 -125
- teradataml/data/jsons/sqle/17.20/TD_GLMPerSegment.json +411 -411
- teradataml/data/jsons/sqle/17.20/TD_GLMPredictPerSegment.json +146 -146
- teradataml/data/jsons/sqle/17.20/TD_GetFutileColumns.json +93 -91
- teradataml/data/jsons/sqle/17.20/TD_GetRowsWithMissingValues.json +76 -76
- teradataml/data/jsons/sqle/17.20/TD_GetRowsWithoutMissingValues.json +76 -76
- teradataml/data/jsons/sqle/17.20/TD_Histogram.json +152 -152
- teradataml/data/jsons/sqle/17.20/TD_KMeans.json +231 -211
- teradataml/data/jsons/sqle/17.20/TD_KMeansPredict.json +86 -86
- teradataml/data/jsons/sqle/17.20/TD_KNN.json +262 -262
- teradataml/data/jsons/sqle/17.20/TD_NaiveBayesTextClassifierTrainer.json +137 -137
- teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineFit.json +102 -101
- teradataml/data/jsons/sqle/17.20/TD_NonLinearCombineTransform.json +71 -71
- teradataml/data/jsons/sqle/17.20/TD_NumApply.json +147 -147
- teradataml/data/jsons/sqle/17.20/TD_OneClassSVM.json +315 -315
- teradataml/data/jsons/sqle/17.20/TD_OneClassSVMPredict.json +123 -123
- teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingFit.json +271 -271
- teradataml/data/jsons/sqle/17.20/TD_OneHotEncodingTransform.json +65 -65
- teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingFit.json +229 -229
- teradataml/data/jsons/sqle/17.20/TD_OrdinalEncodingTransform.json +75 -75
- teradataml/data/jsons/sqle/17.20/TD_OutlierFilterFit.json +217 -217
- teradataml/data/jsons/sqle/17.20/TD_OutlierFilterTransform.json +48 -48
- teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesFit.json +114 -114
- teradataml/data/jsons/sqle/17.20/TD_PolynomialFeaturesTransform.json +72 -72
- teradataml/data/jsons/sqle/17.20/TD_QQNorm.json +111 -111
- teradataml/data/jsons/sqle/17.20/TD_ROC.json +178 -177
- teradataml/data/jsons/sqle/17.20/TD_RandomProjectionFit.json +178 -178
- teradataml/data/jsons/sqle/17.20/TD_RandomProjectionMinComponents.json +73 -73
- teradataml/data/jsons/sqle/17.20/TD_RandomProjectionTransform.json +74 -74
- teradataml/data/jsons/sqle/17.20/TD_RegressionEvaluator.json +137 -137
- teradataml/data/jsons/sqle/17.20/TD_RoundColumns.json +93 -93
- teradataml/data/jsons/sqle/17.20/TD_RowNormalizeFit.json +127 -127
- teradataml/data/jsons/sqle/17.20/TD_RowNormalizeTransform.json +70 -70
- teradataml/data/jsons/sqle/17.20/TD_SVM.json +389 -389
- teradataml/data/jsons/sqle/17.20/TD_SVMPredict.json +142 -124
- teradataml/data/jsons/sqle/17.20/TD_ScaleFit.json +309 -156
- teradataml/data/jsons/sqle/17.20/TD_ScaleTransform.json +119 -70
- teradataml/data/jsons/sqle/17.20/TD_SentimentExtractor.json +193 -193
- teradataml/data/jsons/sqle/17.20/TD_Silhouette.json +142 -142
- teradataml/data/jsons/sqle/17.20/TD_SimpleImputeFit.json +147 -147
- teradataml/data/jsons/sqle/17.20/TD_SimpleImputeTransform.json +48 -48
- teradataml/data/jsons/sqle/17.20/TD_StrApply.json +240 -240
- teradataml/data/jsons/sqle/17.20/TD_TargetEncodingFit.json +248 -248
- teradataml/data/jsons/sqle/17.20/TD_TargetEncodingTransform.json +75 -75
- teradataml/data/jsons/sqle/17.20/TD_TextParser.json +192 -192
- teradataml/data/jsons/sqle/17.20/TD_TrainTestSplit.json +142 -142
- teradataml/data/jsons/sqle/17.20/TD_UnivariateStatistics.json +117 -117
- teradataml/data/jsons/sqle/17.20/TD_VectorDistance.json +182 -182
- teradataml/data/jsons/sqle/17.20/TD_WhichMax.json +52 -52
- teradataml/data/jsons/sqle/17.20/TD_WhichMin.json +52 -52
- teradataml/data/jsons/sqle/17.20/TD_WordEmbeddings.json +241 -241
- teradataml/data/jsons/sqle/17.20/TD_XGBoost.json +330 -312
- teradataml/data/jsons/sqle/17.20/TD_XGBoostPredict.json +195 -182
- teradataml/data/jsons/sqle/17.20/TD_ZTest.json +247 -170
- teradataml/data/jsons/sqle/17.20/Unpack.json +188 -188
- teradataml/data/jsons/sqle/17.20/nPath.json +269 -269
- teradataml/data/jsons/tableoperator/17.00/read_nos.json +197 -197
- teradataml/data/jsons/tableoperator/17.05/read_nos.json +197 -197
- teradataml/data/jsons/tableoperator/17.05/write_nos.json +194 -194
- teradataml/data/jsons/tableoperator/17.10/read_nos.json +183 -183
- teradataml/data/jsons/tableoperator/17.10/write_nos.json +194 -194
- teradataml/data/jsons/tableoperator/17.20/read_nos.json +182 -182
- teradataml/data/jsons/tableoperator/17.20/write_nos.json +223 -223
- teradataml/data/jsons/uaf/17.20/TD_ACF.json +149 -149
- teradataml/data/jsons/uaf/17.20/TD_ARIMAESTIMATE.json +409 -409
- teradataml/data/jsons/uaf/17.20/TD_ARIMAFORECAST.json +79 -79
- teradataml/data/jsons/uaf/17.20/TD_ARIMAVALIDATE.json +151 -151
- teradataml/data/jsons/uaf/17.20/TD_BINARYMATRIXOP.json +109 -109
- teradataml/data/jsons/uaf/17.20/TD_BINARYSERIESOP.json +107 -107
- teradataml/data/jsons/uaf/17.20/TD_BREUSCH_GODFREY.json +87 -87
- teradataml/data/jsons/uaf/17.20/TD_BREUSCH_PAGAN_GODFREY.json +106 -106
- teradataml/data/jsons/uaf/17.20/TD_CONVOLVE.json +80 -80
- teradataml/data/jsons/uaf/17.20/TD_CONVOLVE2.json +67 -67
- teradataml/data/jsons/uaf/17.20/TD_CUMUL_PERIODOGRAM.json +91 -91
- teradataml/data/jsons/uaf/17.20/TD_DFFT.json +136 -136
- teradataml/data/jsons/uaf/17.20/TD_DFFT2.json +148 -148
- teradataml/data/jsons/uaf/17.20/TD_DFFT2CONV.json +108 -108
- teradataml/data/jsons/uaf/17.20/TD_DFFTCONV.json +109 -109
- teradataml/data/jsons/uaf/17.20/TD_DICKEY_FULLER.json +86 -86
- teradataml/data/jsons/uaf/17.20/TD_DIFF.json +91 -91
- teradataml/data/jsons/uaf/17.20/TD_DTW.json +116 -116
- teradataml/data/jsons/uaf/17.20/TD_DURBIN_WATSON.json +100 -100
- teradataml/data/jsons/uaf/17.20/TD_EXTRACT_RESULTS.json +38 -38
- teradataml/data/jsons/uaf/17.20/TD_FITMETRICS.json +100 -100
- teradataml/data/jsons/uaf/17.20/TD_GENSERIES4FORMULA.json +84 -84
- teradataml/data/jsons/uaf/17.20/TD_GENSERIES4SINUSOIDS.json +70 -70
- teradataml/data/jsons/uaf/17.20/TD_GOLDFELD_QUANDT.json +152 -152
- teradataml/data/jsons/uaf/17.20/TD_HOLT_WINTERS_FORECAST.json +313 -313
- teradataml/data/jsons/uaf/17.20/TD_IDFFT.json +57 -57
- teradataml/data/jsons/uaf/17.20/TD_IDFFT2.json +94 -94
- teradataml/data/jsons/uaf/17.20/TD_INPUTVALIDATOR.json +63 -63
- teradataml/data/jsons/uaf/17.20/TD_LINEAR_REGR.json +181 -181
- teradataml/data/jsons/uaf/17.20/TD_LINESPEC.json +102 -102
- teradataml/data/jsons/uaf/17.20/TD_MAMEAN.json +182 -182
- teradataml/data/jsons/uaf/17.20/TD_MATRIXMULTIPLY.json +67 -67
- teradataml/data/jsons/uaf/17.20/TD_MINFO.json +66 -66
- teradataml/data/jsons/uaf/17.20/TD_MULTIVAR_REGR.json +178 -178
- teradataml/data/jsons/uaf/17.20/TD_PACF.json +114 -114
- teradataml/data/jsons/uaf/17.20/TD_PORTMAN.json +118 -118
- teradataml/data/jsons/uaf/17.20/TD_POWERSPEC.json +175 -175
- teradataml/data/jsons/uaf/17.20/TD_POWERTRANSFORM.json +97 -97
- teradataml/data/jsons/uaf/17.20/TD_RESAMPLE.json +173 -173
- teradataml/data/jsons/uaf/17.20/TD_SEASONALNORMALIZE.json +136 -136
- teradataml/data/jsons/uaf/17.20/TD_SELECTION_CRITERIA.json +89 -89
- teradataml/data/jsons/uaf/17.20/TD_SIGNIF_PERIODICITIES.json +79 -79
- teradataml/data/jsons/uaf/17.20/TD_SIGNIF_RESIDMEAN.json +67 -67
- teradataml/data/jsons/uaf/17.20/TD_SIMPLEEXP.json +184 -184
- teradataml/data/jsons/uaf/17.20/TD_SINFO.json +57 -57
- teradataml/data/jsons/uaf/17.20/TD_SMOOTHMA.json +162 -162
- teradataml/data/jsons/uaf/17.20/TD_TRACKINGOP.json +100 -100
- teradataml/data/jsons/uaf/17.20/TD_UNDIFF.json +111 -111
- teradataml/data/jsons/uaf/17.20/TD_UNNORMALIZE.json +95 -95
- teradataml/data/jsons/uaf/17.20/TD_WHITES_GENERAL.json +77 -77
- teradataml/data/kmeans_example.json +22 -17
- teradataml/data/kmeans_table.csv +10 -0
- teradataml/data/kmeans_us_arrests_data.csv +0 -0
- teradataml/data/knn_example.json +18 -18
- teradataml/data/knnrecommender_example.json +6 -6
- teradataml/data/knnrecommenderpredict_example.json +12 -12
- teradataml/data/lar_example.json +17 -17
- teradataml/data/larpredict_example.json +30 -30
- teradataml/data/lc_new_predictors.csv +5 -5
- teradataml/data/lc_new_reference.csv +9 -9
- teradataml/data/lda_example.json +8 -8
- teradataml/data/ldainference_example.json +14 -14
- teradataml/data/ldatopicsummary_example.json +8 -8
- teradataml/data/levendist_input.csv +13 -13
- teradataml/data/levenshteindistance_example.json +10 -10
- teradataml/data/linreg_example.json +9 -9
- teradataml/data/load_example_data.py +326 -323
- teradataml/data/loan_prediction.csv +295 -295
- teradataml/data/lungcancer.csv +138 -138
- teradataml/data/mappingdata.csv +12 -12
- teradataml/data/milk_timeseries.csv +157 -157
- teradataml/data/min_max_titanic.csv +4 -4
- teradataml/data/minhash_example.json +6 -6
- teradataml/data/ml_ratings.csv +7547 -7547
- teradataml/data/ml_ratings_10.csv +2445 -2445
- teradataml/data/model1_table.csv +5 -5
- teradataml/data/model2_table.csv +5 -5
- teradataml/data/models/iris_db_glm_model.pmml +56 -56
- teradataml/data/models/iris_db_xgb_model.pmml +4471 -4471
- teradataml/data/modularity_example.json +12 -12
- teradataml/data/movavg_example.json +7 -7
- teradataml/data/mtx1.csv +7 -7
- teradataml/data/mtx2.csv +13 -13
- teradataml/data/multi_model_classification.csv +401 -0
- teradataml/data/multi_model_regression.csv +401 -0
- teradataml/data/mvdfft8.csv +9 -9
- teradataml/data/naivebayes_example.json +9 -9
- teradataml/data/naivebayespredict_example.json +19 -19
- teradataml/data/naivebayestextclassifier2_example.json +6 -6
- teradataml/data/naivebayestextclassifier_example.json +8 -8
- teradataml/data/naivebayestextclassifierpredict_example.json +20 -20
- teradataml/data/name_Find_configure.csv +10 -10
- teradataml/data/namedentityfinder_example.json +14 -14
- teradataml/data/namedentityfinderevaluator_example.json +10 -10
- teradataml/data/namedentityfindertrainer_example.json +6 -6
- teradataml/data/nb_iris_input_test.csv +31 -31
- teradataml/data/nb_iris_input_train.csv +121 -121
- teradataml/data/nbp_iris_model.csv +13 -13
- teradataml/data/ner_extractor_text.csv +2 -2
- teradataml/data/ner_sports_test2.csv +29 -29
- teradataml/data/ner_sports_train.csv +501 -501
- teradataml/data/nerevaluator_example.json +5 -5
- teradataml/data/nerextractor_example.json +18 -18
- teradataml/data/nermem_sports_test.csv +17 -17
- teradataml/data/nermem_sports_train.csv +50 -50
- teradataml/data/nertrainer_example.json +6 -6
- teradataml/data/ngrams_example.json +6 -6
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Aggregate Functions using SQLAlchemy.ipynb +1455 -1455
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Arithmetic Functions Using SQLAlchemy.ipynb +1993 -1993
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Bit-Byte Manipulation Functions using SQLAlchemy.ipynb +1492 -1492
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Built-in functions using SQLAlchemy.ipynb +536 -536
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Regular Expressions Using SQLAlchemy.ipynb +570 -570
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage String Functions Using SQLAlchemy.ipynb +2559 -2559
- teradataml/data/notebooks/sqlalchemy/Teradata Vantage Window Aggregate Functions using SQLAlchemy.ipynb +2911 -2911
- teradataml/data/notebooks/sqlalchemy/Using Generic SQLAlchemy ClauseElements teradataml DataFrame assign method.ipynb +698 -698
- teradataml/data/notebooks/sqlalchemy/teradataml filtering using SQLAlchemy ClauseElements.ipynb +784 -784
- teradataml/data/npath_example.json +23 -23
- teradataml/data/ntree_example.json +14 -14
- teradataml/data/numeric_strings.csv +4 -4
- teradataml/data/numerics.csv +4 -4
- teradataml/data/ocean_buoy.csv +17 -17
- teradataml/data/ocean_buoy2.csv +17 -17
- teradataml/data/ocean_buoys.csv +27 -27
- teradataml/data/ocean_buoys2.csv +10 -10
- teradataml/data/ocean_buoys_nonpti.csv +28 -28
- teradataml/data/ocean_buoys_seq.csv +29 -29
- teradataml/data/onehot_encoder_train.csv +4 -0
- teradataml/data/openml_example.json +92 -0
- teradataml/data/optional_event_table.csv +4 -4
- teradataml/data/orders1.csv +11 -11
- teradataml/data/orders1_12.csv +12 -12
- teradataml/data/orders_ex.csv +4 -4
- teradataml/data/pack_example.json +8 -8
- teradataml/data/package_tracking.csv +19 -19
- teradataml/data/package_tracking_pti.csv +18 -18
- teradataml/data/pagerank_example.json +13 -13
- teradataml/data/paragraphs_input.csv +6 -6
- teradataml/data/pathanalyzer_example.json +7 -7
- teradataml/data/pathgenerator_example.json +7 -7
- teradataml/data/phrases.csv +7 -7
- teradataml/data/pivot_example.json +8 -8
- teradataml/data/pivot_input.csv +22 -22
- teradataml/data/playerRating.csv +31 -31
- teradataml/data/postagger_example.json +6 -6
- teradataml/data/posttagger_output.csv +44 -44
- teradataml/data/production_data.csv +16 -16
- teradataml/data/production_data2.csv +7 -7
- teradataml/data/randomsample_example.json +31 -31
- teradataml/data/randomwalksample_example.json +8 -8
- teradataml/data/rank_table.csv +6 -6
- teradataml/data/ref_mobile_data.csv +4 -4
- teradataml/data/ref_mobile_data_dense.csv +2 -2
- teradataml/data/ref_url.csv +17 -17
- teradataml/data/restaurant_reviews.csv +7 -7
- teradataml/data/river_data.csv +145 -145
- teradataml/data/roc_example.json +7 -7
- teradataml/data/roc_input.csv +101 -101
- teradataml/data/rule_inputs.csv +6 -6
- teradataml/data/rule_table.csv +2 -2
- teradataml/data/sales.csv +7 -7
- teradataml/data/sales_transaction.csv +501 -501
- teradataml/data/salesdata.csv +342 -342
- teradataml/data/sample_cities.csv +2 -2
- teradataml/data/sample_shapes.csv +10 -10
- teradataml/data/sample_streets.csv +2 -2
- teradataml/data/sampling_example.json +15 -15
- teradataml/data/sax_example.json +8 -8
- teradataml/data/scale_attributes.csv +3 -0
- teradataml/data/scale_example.json +74 -23
- teradataml/data/scale_housing.csv +11 -11
- teradataml/data/scale_housing_test.csv +6 -6
- teradataml/data/scale_input_part_sparse.csv +31 -0
- teradataml/data/scale_input_partitioned.csv +16 -0
- teradataml/data/scale_input_sparse.csv +11 -0
- teradataml/data/scale_parameters.csv +3 -0
- teradataml/data/scale_stat.csv +11 -11
- teradataml/data/scalebypartition_example.json +13 -13
- teradataml/data/scalemap_example.json +13 -13
- teradataml/data/scalesummary_example.json +12 -12
- teradataml/data/score_category.csv +101 -101
- teradataml/data/score_summary.csv +4 -4
- teradataml/data/script_example.json +9 -9
- teradataml/data/scripts/deploy_script.py +84 -0
- teradataml/data/scripts/mapper.R +20 -0
- teradataml/data/scripts/mapper.py +15 -15
- teradataml/data/scripts/mapper_replace.py +15 -15
- teradataml/data/scripts/sklearn/__init__.py +0 -0
- teradataml/data/scripts/sklearn/sklearn_fit.py +171 -0
- teradataml/data/scripts/sklearn/sklearn_fit_predict.py +127 -0
- teradataml/data/scripts/sklearn/sklearn_function.template +108 -0
- teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +148 -0
- teradataml/data/scripts/sklearn/sklearn_neighbors.py +143 -0
- teradataml/data/scripts/sklearn/sklearn_score.py +119 -0
- teradataml/data/scripts/sklearn/sklearn_transform.py +171 -0
- teradataml/data/seeds.csv +10 -10
- teradataml/data/sentenceextractor_example.json +6 -6
- teradataml/data/sentiment_extract_input.csv +11 -11
- teradataml/data/sentiment_train.csv +16 -16
- teradataml/data/sentiment_word.csv +20 -20
- teradataml/data/sentiment_word_input.csv +19 -19
- teradataml/data/sentimentextractor_example.json +24 -24
- teradataml/data/sentimenttrainer_example.json +8 -8
- teradataml/data/sequence_table.csv +10 -10
- teradataml/data/seriessplitter_example.json +7 -7
- teradataml/data/sessionize_example.json +17 -17
- teradataml/data/sessionize_table.csv +116 -116
- teradataml/data/setop_test1.csv +24 -24
- teradataml/data/setop_test2.csv +22 -22
- teradataml/data/soc_nw_edges.csv +10 -10
- teradataml/data/soc_nw_vertices.csv +7 -7
- teradataml/data/souvenir_timeseries.csv +167 -167
- teradataml/data/sparse_iris_attribute.csv +5 -5
- teradataml/data/sparse_iris_test.csv +121 -121
- teradataml/data/sparse_iris_train.csv +601 -601
- teradataml/data/star1.csv +6 -6
- teradataml/data/state_transition.csv +5 -5
- teradataml/data/stock_data.csv +53 -53
- teradataml/data/stock_movement.csv +11 -11
- teradataml/data/stock_vol.csv +76 -76
- teradataml/data/stop_words.csv +8 -8
- teradataml/data/store_sales.csv +37 -37
- teradataml/data/stringsimilarity_example.json +7 -7
- teradataml/data/strsimilarity_input.csv +13 -13
- teradataml/data/students.csv +101 -101
- teradataml/data/svm_iris_input_test.csv +121 -121
- teradataml/data/svm_iris_input_train.csv +481 -481
- teradataml/data/svm_iris_model.csv +7 -7
- teradataml/data/svmdense_example.json +9 -9
- teradataml/data/svmdensepredict_example.json +18 -18
- teradataml/data/svmsparse_example.json +7 -7
- teradataml/data/svmsparsepredict_example.json +13 -13
- teradataml/data/svmsparsesummary_example.json +7 -7
- teradataml/data/target_mobile_data.csv +13 -13
- teradataml/data/target_mobile_data_dense.csv +5 -5
- teradataml/data/templatedata.csv +1201 -1201
- teradataml/data/templates/open_source_ml.json +9 -0
- teradataml/data/teradataml_example.json +150 -1
- teradataml/data/test_classification.csv +101 -0
- teradataml/data/test_loan_prediction.csv +53 -53
- teradataml/data/test_pacf_12.csv +37 -37
- teradataml/data/test_prediction.csv +101 -0
- teradataml/data/test_regression.csv +101 -0
- teradataml/data/test_river2.csv +109 -109
- teradataml/data/text_inputs.csv +6 -6
- teradataml/data/textchunker_example.json +7 -7
- teradataml/data/textclassifier_example.json +6 -6
- teradataml/data/textclassifier_input.csv +7 -7
- teradataml/data/textclassifiertrainer_example.json +6 -6
- teradataml/data/textmorph_example.json +5 -5
- teradataml/data/textparser_example.json +15 -15
- teradataml/data/texttagger_example.json +11 -11
- teradataml/data/texttokenizer_example.json +6 -6
- teradataml/data/texttrainer_input.csv +11 -11
- teradataml/data/tf_example.json +6 -6
- teradataml/data/tfidf_example.json +13 -13
- teradataml/data/tfidf_input1.csv +201 -201
- teradataml/data/tfidf_train.csv +6 -6
- teradataml/data/time_table1.csv +535 -535
- teradataml/data/time_table2.csv +14 -14
- teradataml/data/timeseriesdata.csv +1601 -1601
- teradataml/data/timeseriesdatasetsd4.csv +105 -105
- teradataml/data/titanic.csv +892 -892
- teradataml/data/token_table.csv +696 -696
- teradataml/data/train_multiclass.csv +101 -0
- teradataml/data/train_regression.csv +101 -0
- teradataml/data/train_regression_multiple_labels.csv +101 -0
- teradataml/data/train_tracking.csv +27 -27
- teradataml/data/transformation_table.csv +5 -5
- teradataml/data/transformation_table_new.csv +1 -1
- teradataml/data/tv_spots.csv +16 -16
- teradataml/data/twod_climate_data.csv +117 -117
- teradataml/data/uaf_example.json +475 -475
- teradataml/data/univariatestatistics_example.json +8 -8
- teradataml/data/unpack_example.json +9 -9
- teradataml/data/unpivot_example.json +9 -9
- teradataml/data/unpivot_input.csv +8 -8
- teradataml/data/us_air_pass.csv +36 -36
- teradataml/data/us_population.csv +624 -624
- teradataml/data/us_states_shapes.csv +52 -52
- teradataml/data/varmax_example.json +17 -17
- teradataml/data/vectordistance_example.json +25 -25
- teradataml/data/ville_climatedata.csv +121 -121
- teradataml/data/ville_tempdata.csv +12 -12
- teradataml/data/ville_tempdata1.csv +12 -12
- teradataml/data/ville_temperature.csv +11 -11
- teradataml/data/waveletTable.csv +1605 -1605
- teradataml/data/waveletTable2.csv +1605 -1605
- teradataml/data/weightedmovavg_example.json +8 -8
- teradataml/data/wft_testing.csv +5 -5
- teradataml/data/wine_data.csv +1600 -0
- teradataml/data/word_embed_input_table1.csv +5 -5
- teradataml/data/word_embed_input_table2.csv +4 -4
- teradataml/data/word_embed_model.csv +22 -22
- teradataml/data/words_input.csv +13 -13
- teradataml/data/xconvolve_complex_left.csv +6 -6
- teradataml/data/xconvolve_complex_leftmulti.csv +6 -6
- teradataml/data/xgboost_example.json +35 -35
- teradataml/data/xgboostpredict_example.json +31 -31
- teradataml/data/ztest_example.json +16 -0
- teradataml/dataframe/copy_to.py +1769 -1698
- teradataml/dataframe/data_transfer.py +2812 -2745
- teradataml/dataframe/dataframe.py +17630 -16946
- teradataml/dataframe/dataframe_utils.py +1875 -1740
- teradataml/dataframe/fastload.py +794 -603
- teradataml/dataframe/indexer.py +424 -424
- teradataml/dataframe/setop.py +1179 -1166
- teradataml/dataframe/sql.py +10174 -6432
- teradataml/dataframe/sql_function_parameters.py +439 -388
- teradataml/dataframe/sql_functions.py +652 -652
- teradataml/dataframe/sql_interfaces.py +220 -220
- teradataml/dataframe/vantage_function_types.py +674 -630
- teradataml/dataframe/window.py +693 -692
- teradataml/dbutils/__init__.py +3 -3
- teradataml/dbutils/dbutils.py +1167 -1150
- teradataml/dbutils/filemgr.py +267 -267
- teradataml/gen_ai/__init__.py +2 -2
- teradataml/gen_ai/convAI.py +472 -472
- teradataml/geospatial/__init__.py +3 -3
- teradataml/geospatial/geodataframe.py +1105 -1094
- teradataml/geospatial/geodataframecolumn.py +392 -387
- teradataml/geospatial/geometry_types.py +925 -925
- teradataml/hyperparameter_tuner/__init__.py +1 -1
- teradataml/hyperparameter_tuner/optimizer.py +3783 -2993
- teradataml/hyperparameter_tuner/utils.py +281 -187
- teradataml/lib/aed_0_1.dll +0 -0
- teradataml/lib/libaed_0_1.dylib +0 -0
- teradataml/lib/libaed_0_1.so +0 -0
- teradataml/libaed_0_1.dylib +0 -0
- teradataml/libaed_0_1.so +0 -0
- teradataml/opensource/__init__.py +1 -0
- teradataml/opensource/sklearn/__init__.py +1 -0
- teradataml/opensource/sklearn/_class.py +255 -0
- teradataml/opensource/sklearn/_sklearn_wrapper.py +1715 -0
- teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
- teradataml/opensource/sklearn/constants.py +54 -0
- teradataml/options/__init__.py +130 -124
- teradataml/options/configure.py +358 -336
- teradataml/options/display.py +176 -176
- teradataml/plot/__init__.py +2 -2
- teradataml/plot/axis.py +1388 -1388
- teradataml/plot/constants.py +15 -15
- teradataml/plot/figure.py +398 -398
- teradataml/plot/plot.py +760 -760
- teradataml/plot/query_generator.py +83 -83
- teradataml/plot/subplot.py +216 -216
- teradataml/scriptmgmt/UserEnv.py +3791 -3761
- teradataml/scriptmgmt/__init__.py +3 -3
- teradataml/scriptmgmt/lls_utils.py +1719 -1604
- teradataml/series/series.py +532 -532
- teradataml/series/series_utils.py +71 -71
- teradataml/table_operators/Apply.py +949 -917
- teradataml/table_operators/Script.py +1718 -1982
- teradataml/table_operators/TableOperator.py +1255 -1616
- teradataml/table_operators/__init__.py +2 -3
- teradataml/table_operators/apply_query_generator.py +262 -262
- teradataml/table_operators/query_generator.py +507 -507
- teradataml/table_operators/table_operator_query_generator.py +460 -460
- teradataml/table_operators/table_operator_util.py +631 -639
- teradataml/table_operators/templates/dataframe_apply.template +184 -184
- teradataml/table_operators/templates/dataframe_map.template +176 -176
- teradataml/table_operators/templates/script_executor.template +170 -170
- teradataml/utils/dtypes.py +684 -684
- teradataml/utils/internal_buffer.py +84 -84
- teradataml/utils/print_versions.py +205 -205
- teradataml/utils/utils.py +410 -410
- teradataml/utils/validators.py +2277 -2115
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/METADATA +346 -45
- teradataml-20.0.0.1.dist-info/RECORD +1056 -0
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/WHEEL +1 -1
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/zip-safe +1 -1
- teradataml/analytics/mle/AdaBoost.py +0 -651
- teradataml/analytics/mle/AdaBoostPredict.py +0 -564
- teradataml/analytics/mle/Antiselect.py +0 -342
- teradataml/analytics/mle/Arima.py +0 -641
- teradataml/analytics/mle/ArimaPredict.py +0 -477
- teradataml/analytics/mle/Attribution.py +0 -1070
- teradataml/analytics/mle/Betweenness.py +0 -658
- teradataml/analytics/mle/Burst.py +0 -711
- teradataml/analytics/mle/CCM.py +0 -600
- teradataml/analytics/mle/CCMPrepare.py +0 -324
- teradataml/analytics/mle/CFilter.py +0 -460
- teradataml/analytics/mle/ChangePointDetection.py +0 -572
- teradataml/analytics/mle/ChangePointDetectionRT.py +0 -477
- teradataml/analytics/mle/Closeness.py +0 -737
- teradataml/analytics/mle/ConfusionMatrix.py +0 -420
- teradataml/analytics/mle/Correlation.py +0 -477
- teradataml/analytics/mle/Correlation2.py +0 -573
- teradataml/analytics/mle/CoxHazardRatio.py +0 -679
- teradataml/analytics/mle/CoxPH.py +0 -556
- teradataml/analytics/mle/CoxSurvival.py +0 -478
- teradataml/analytics/mle/CumulativeMovAvg.py +0 -363
- teradataml/analytics/mle/DTW.py +0 -623
- teradataml/analytics/mle/DWT.py +0 -564
- teradataml/analytics/mle/DWT2D.py +0 -599
- teradataml/analytics/mle/DecisionForest.py +0 -716
- teradataml/analytics/mle/DecisionForestEvaluator.py +0 -363
- teradataml/analytics/mle/DecisionForestPredict.py +0 -561
- teradataml/analytics/mle/DecisionTree.py +0 -830
- teradataml/analytics/mle/DecisionTreePredict.py +0 -528
- teradataml/analytics/mle/ExponentialMovAvg.py +0 -418
- teradataml/analytics/mle/FMeasure.py +0 -402
- teradataml/analytics/mle/FPGrowth.py +0 -734
- teradataml/analytics/mle/FrequentPaths.py +0 -695
- teradataml/analytics/mle/GLM.py +0 -558
- teradataml/analytics/mle/GLML1L2.py +0 -547
- teradataml/analytics/mle/GLML1L2Predict.py +0 -519
- teradataml/analytics/mle/GLMPredict.py +0 -529
- teradataml/analytics/mle/HMMDecoder.py +0 -945
- teradataml/analytics/mle/HMMEvaluator.py +0 -901
- teradataml/analytics/mle/HMMSupervised.py +0 -521
- teradataml/analytics/mle/HMMUnsupervised.py +0 -572
- teradataml/analytics/mle/Histogram.py +0 -561
- teradataml/analytics/mle/IDWT.py +0 -476
- teradataml/analytics/mle/IDWT2D.py +0 -493
- teradataml/analytics/mle/IdentityMatch.py +0 -763
- teradataml/analytics/mle/Interpolator.py +0 -918
- teradataml/analytics/mle/KMeans.py +0 -485
- teradataml/analytics/mle/KNN.py +0 -627
- teradataml/analytics/mle/KNNRecommender.py +0 -488
- teradataml/analytics/mle/KNNRecommenderPredict.py +0 -581
- teradataml/analytics/mle/LAR.py +0 -439
- teradataml/analytics/mle/LARPredict.py +0 -478
- teradataml/analytics/mle/LDA.py +0 -548
- teradataml/analytics/mle/LDAInference.py +0 -492
- teradataml/analytics/mle/LDATopicSummary.py +0 -464
- teradataml/analytics/mle/LevenshteinDistance.py +0 -450
- teradataml/analytics/mle/LinReg.py +0 -433
- teradataml/analytics/mle/LinRegPredict.py +0 -438
- teradataml/analytics/mle/MinHash.py +0 -544
- teradataml/analytics/mle/Modularity.py +0 -587
- teradataml/analytics/mle/NEREvaluator.py +0 -410
- teradataml/analytics/mle/NERExtractor.py +0 -595
- teradataml/analytics/mle/NERTrainer.py +0 -458
- teradataml/analytics/mle/NGrams.py +0 -570
- teradataml/analytics/mle/NPath.py +0 -634
- teradataml/analytics/mle/NTree.py +0 -549
- teradataml/analytics/mle/NaiveBayes.py +0 -462
- teradataml/analytics/mle/NaiveBayesPredict.py +0 -513
- teradataml/analytics/mle/NaiveBayesTextClassifier.py +0 -607
- teradataml/analytics/mle/NaiveBayesTextClassifier2.py +0 -531
- teradataml/analytics/mle/NaiveBayesTextClassifierPredict.py +0 -799
- teradataml/analytics/mle/NamedEntityFinder.py +0 -529
- teradataml/analytics/mle/NamedEntityFinderEvaluator.py +0 -414
- teradataml/analytics/mle/NamedEntityFinderTrainer.py +0 -396
- teradataml/analytics/mle/POSTagger.py +0 -417
- teradataml/analytics/mle/Pack.py +0 -411
- teradataml/analytics/mle/PageRank.py +0 -535
- teradataml/analytics/mle/PathAnalyzer.py +0 -426
- teradataml/analytics/mle/PathGenerator.py +0 -367
- teradataml/analytics/mle/PathStart.py +0 -464
- teradataml/analytics/mle/PathSummarizer.py +0 -470
- teradataml/analytics/mle/Pivot.py +0 -471
- teradataml/analytics/mle/ROC.py +0 -425
- teradataml/analytics/mle/RandomSample.py +0 -637
- teradataml/analytics/mle/RandomWalkSample.py +0 -490
- teradataml/analytics/mle/SAX.py +0 -779
- teradataml/analytics/mle/SVMDense.py +0 -677
- teradataml/analytics/mle/SVMDensePredict.py +0 -536
- teradataml/analytics/mle/SVMDenseSummary.py +0 -437
- teradataml/analytics/mle/SVMSparse.py +0 -557
- teradataml/analytics/mle/SVMSparsePredict.py +0 -553
- teradataml/analytics/mle/SVMSparseSummary.py +0 -435
- teradataml/analytics/mle/Sampling.py +0 -549
- teradataml/analytics/mle/Scale.py +0 -565
- teradataml/analytics/mle/ScaleByPartition.py +0 -496
- teradataml/analytics/mle/ScaleMap.py +0 -378
- teradataml/analytics/mle/ScaleSummary.py +0 -320
- teradataml/analytics/mle/SentenceExtractor.py +0 -363
- teradataml/analytics/mle/SentimentEvaluator.py +0 -432
- teradataml/analytics/mle/SentimentExtractor.py +0 -578
- teradataml/analytics/mle/SentimentTrainer.py +0 -405
- teradataml/analytics/mle/SeriesSplitter.py +0 -641
- teradataml/analytics/mle/Sessionize.py +0 -475
- teradataml/analytics/mle/SimpleMovAvg.py +0 -397
- teradataml/analytics/mle/StringSimilarity.py +0 -425
- teradataml/analytics/mle/TF.py +0 -389
- teradataml/analytics/mle/TFIDF.py +0 -504
- teradataml/analytics/mle/TextChunker.py +0 -414
- teradataml/analytics/mle/TextClassifier.py +0 -399
- teradataml/analytics/mle/TextClassifierEvaluator.py +0 -413
- teradataml/analytics/mle/TextClassifierTrainer.py +0 -565
- teradataml/analytics/mle/TextMorph.py +0 -494
- teradataml/analytics/mle/TextParser.py +0 -623
- teradataml/analytics/mle/TextTagger.py +0 -530
- teradataml/analytics/mle/TextTokenizer.py +0 -502
- teradataml/analytics/mle/UnivariateStatistics.py +0 -488
- teradataml/analytics/mle/Unpack.py +0 -526
- teradataml/analytics/mle/Unpivot.py +0 -438
- teradataml/analytics/mle/VarMax.py +0 -776
- teradataml/analytics/mle/VectorDistance.py +0 -762
- teradataml/analytics/mle/WeightedMovAvg.py +0 -400
- teradataml/analytics/mle/XGBoost.py +0 -842
- teradataml/analytics/mle/XGBoostPredict.py +0 -627
- teradataml/analytics/mle/__init__.py +0 -123
- teradataml/analytics/mle/json/adaboost_mle.json +0 -135
- teradataml/analytics/mle/json/adaboostpredict_mle.json +0 -85
- teradataml/analytics/mle/json/antiselect_mle.json +0 -34
- teradataml/analytics/mle/json/antiselect_mle_mle.json +0 -34
- teradataml/analytics/mle/json/arima_mle.json +0 -172
- teradataml/analytics/mle/json/arimapredict_mle.json +0 -52
- teradataml/analytics/mle/json/attribution_mle_mle.json +0 -143
- teradataml/analytics/mle/json/betweenness_mle.json +0 -97
- teradataml/analytics/mle/json/burst_mle.json +0 -140
- teradataml/analytics/mle/json/ccm_mle.json +0 -124
- teradataml/analytics/mle/json/ccmprepare_mle.json +0 -14
- teradataml/analytics/mle/json/cfilter_mle.json +0 -93
- teradataml/analytics/mle/json/changepointdetection_mle.json +0 -92
- teradataml/analytics/mle/json/changepointdetectionrt_mle.json +0 -78
- teradataml/analytics/mle/json/closeness_mle.json +0 -104
- teradataml/analytics/mle/json/confusionmatrix_mle.json +0 -79
- teradataml/analytics/mle/json/correlation_mle.json +0 -86
- teradataml/analytics/mle/json/correlationreduce_mle.json +0 -49
- teradataml/analytics/mle/json/coxhazardratio_mle.json +0 -89
- teradataml/analytics/mle/json/coxph_mle.json +0 -98
- teradataml/analytics/mle/json/coxsurvival_mle.json +0 -79
- teradataml/analytics/mle/json/cumulativemovavg_mle.json +0 -34
- teradataml/analytics/mle/json/decisionforest_mle.json +0 -167
- teradataml/analytics/mle/json/decisionforestevaluator_mle.json +0 -33
- teradataml/analytics/mle/json/decisionforestpredict_mle_mle.json +0 -74
- teradataml/analytics/mle/json/decisiontree_mle.json +0 -194
- teradataml/analytics/mle/json/decisiontreepredict_mle_mle.json +0 -86
- teradataml/analytics/mle/json/dtw_mle.json +0 -97
- teradataml/analytics/mle/json/dwt2d_mle.json +0 -116
- teradataml/analytics/mle/json/dwt_mle.json +0 -101
- teradataml/analytics/mle/json/exponentialmovavg_mle.json +0 -55
- teradataml/analytics/mle/json/fmeasure_mle.json +0 -58
- teradataml/analytics/mle/json/fpgrowth_mle.json +0 -159
- teradataml/analytics/mle/json/frequentpaths_mle.json +0 -129
- teradataml/analytics/mle/json/glm_mle.json +0 -111
- teradataml/analytics/mle/json/glml1l2_mle.json +0 -106
- teradataml/analytics/mle/json/glml1l2predict_mle.json +0 -57
- teradataml/analytics/mle/json/glmpredict_mle_mle.json +0 -74
- teradataml/analytics/mle/json/histogram_mle.json +0 -100
- teradataml/analytics/mle/json/hmmdecoder_mle.json +0 -192
- teradataml/analytics/mle/json/hmmevaluator_mle.json +0 -206
- teradataml/analytics/mle/json/hmmsupervised_mle.json +0 -91
- teradataml/analytics/mle/json/hmmunsupervised_mle.json +0 -114
- teradataml/analytics/mle/json/identitymatch_mle.json +0 -88
- teradataml/analytics/mle/json/idwt2d_mle.json +0 -73
- teradataml/analytics/mle/json/idwt_mle.json +0 -66
- teradataml/analytics/mle/json/interpolator_mle.json +0 -151
- teradataml/analytics/mle/json/kmeans_mle.json +0 -97
- teradataml/analytics/mle/json/knn_mle.json +0 -141
- teradataml/analytics/mle/json/knnrecommender_mle.json +0 -111
- teradataml/analytics/mle/json/knnrecommenderpredict_mle.json +0 -75
- teradataml/analytics/mle/json/lar_mle.json +0 -78
- teradataml/analytics/mle/json/larpredict_mle.json +0 -69
- teradataml/analytics/mle/json/lda_mle.json +0 -130
- teradataml/analytics/mle/json/ldainference_mle.json +0 -78
- teradataml/analytics/mle/json/ldatopicsummary_mle.json +0 -64
- teradataml/analytics/mle/json/levenshteindistance_mle.json +0 -92
- teradataml/analytics/mle/json/linreg_mle.json +0 -42
- teradataml/analytics/mle/json/linregpredict_mle.json +0 -56
- teradataml/analytics/mle/json/minhash_mle.json +0 -113
- teradataml/analytics/mle/json/modularity_mle.json +0 -91
- teradataml/analytics/mle/json/naivebayespredict_mle_mle.json +0 -85
- teradataml/analytics/mle/json/naivebayesreduce_mle.json +0 -52
- teradataml/analytics/mle/json/naivebayestextclassifierpredict_mle_mle.json +0 -147
- teradataml/analytics/mle/json/naivebayestextclassifiertrainer2_mle.json +0 -108
- teradataml/analytics/mle/json/naivebayestextclassifiertrainer_mle.json +0 -102
- teradataml/analytics/mle/json/namedentityfinder_mle.json +0 -84
- teradataml/analytics/mle/json/namedentityfinderevaluatorreduce_mle.json +0 -43
- teradataml/analytics/mle/json/namedentityfindertrainer_mle.json +0 -64
- teradataml/analytics/mle/json/nerevaluator_mle.json +0 -54
- teradataml/analytics/mle/json/nerextractor_mle.json +0 -87
- teradataml/analytics/mle/json/nertrainer_mle.json +0 -89
- teradataml/analytics/mle/json/ngrams_mle.json +0 -137
- teradataml/analytics/mle/json/ngramsplitter_mle_mle.json +0 -137
- teradataml/analytics/mle/json/npath@coprocessor_mle.json +0 -73
- teradataml/analytics/mle/json/ntree@coprocessor_mle.json +0 -123
- teradataml/analytics/mle/json/pack_mle.json +0 -58
- teradataml/analytics/mle/json/pack_mle_mle.json +0 -58
- teradataml/analytics/mle/json/pagerank_mle.json +0 -81
- teradataml/analytics/mle/json/pathanalyzer_mle.json +0 -63
- teradataml/analytics/mle/json/pathgenerator_mle.json +0 -40
- teradataml/analytics/mle/json/pathstart_mle.json +0 -62
- teradataml/analytics/mle/json/pathsummarizer_mle.json +0 -72
- teradataml/analytics/mle/json/pivoting_mle.json +0 -71
- teradataml/analytics/mle/json/postagger_mle.json +0 -51
- teradataml/analytics/mle/json/randomsample_mle.json +0 -131
- teradataml/analytics/mle/json/randomwalksample_mle.json +0 -85
- teradataml/analytics/mle/json/roc_mle.json +0 -73
- teradataml/analytics/mle/json/sampling_mle.json +0 -75
- teradataml/analytics/mle/json/sax_mle.json +0 -154
- teradataml/analytics/mle/json/scale_mle.json +0 -93
- teradataml/analytics/mle/json/scalebypartition_mle.json +0 -89
- teradataml/analytics/mle/json/scalemap_mle.json +0 -44
- teradataml/analytics/mle/json/scalesummary_mle.json +0 -14
- teradataml/analytics/mle/json/sentenceextractor_mle.json +0 -41
- teradataml/analytics/mle/json/sentimentevaluator_mle.json +0 -43
- teradataml/analytics/mle/json/sentimentextractor_mle.json +0 -100
- teradataml/analytics/mle/json/sentimenttrainer_mle.json +0 -68
- teradataml/analytics/mle/json/seriessplitter_mle.json +0 -133
- teradataml/analytics/mle/json/sessionize_mle_mle.json +0 -62
- teradataml/analytics/mle/json/simplemovavg_mle.json +0 -48
- teradataml/analytics/mle/json/stringsimilarity_mle.json +0 -50
- teradataml/analytics/mle/json/stringsimilarity_mle_mle.json +0 -50
- teradataml/analytics/mle/json/svmdense_mle.json +0 -165
- teradataml/analytics/mle/json/svmdensepredict_mle.json +0 -95
- teradataml/analytics/mle/json/svmdensesummary_mle.json +0 -58
- teradataml/analytics/mle/json/svmsparse_mle.json +0 -148
- teradataml/analytics/mle/json/svmsparsepredict_mle_mle.json +0 -103
- teradataml/analytics/mle/json/svmsparsesummary_mle.json +0 -57
- teradataml/analytics/mle/json/textchunker_mle.json +0 -40
- teradataml/analytics/mle/json/textclassifier_mle.json +0 -51
- teradataml/analytics/mle/json/textclassifierevaluator_mle.json +0 -43
- teradataml/analytics/mle/json/textclassifiertrainer_mle.json +0 -103
- teradataml/analytics/mle/json/textmorph_mle.json +0 -63
- teradataml/analytics/mle/json/textparser_mle.json +0 -166
- teradataml/analytics/mle/json/texttagger_mle.json +0 -81
- teradataml/analytics/mle/json/texttokenizer_mle.json +0 -91
- teradataml/analytics/mle/json/tf_mle.json +0 -33
- teradataml/analytics/mle/json/tfidf_mle.json +0 -34
- teradataml/analytics/mle/json/univariatestatistics_mle.json +0 -81
- teradataml/analytics/mle/json/unpack_mle.json +0 -91
- teradataml/analytics/mle/json/unpack_mle_mle.json +0 -91
- teradataml/analytics/mle/json/unpivoting_mle.json +0 -63
- teradataml/analytics/mle/json/varmax_mle.json +0 -176
- teradataml/analytics/mle/json/vectordistance_mle.json +0 -179
- teradataml/analytics/mle/json/weightedmovavg_mle.json +0 -48
- teradataml/analytics/mle/json/xgboost_mle.json +0 -178
- teradataml/analytics/mle/json/xgboostpredict_mle.json +0 -104
- teradataml/analytics/sqle/Antiselect.py +0 -321
- teradataml/analytics/sqle/Attribution.py +0 -603
- teradataml/analytics/sqle/DecisionForestPredict.py +0 -408
- teradataml/analytics/sqle/GLMPredict.py +0 -430
- teradataml/analytics/sqle/MovingAverage.py +0 -543
- teradataml/analytics/sqle/NGramSplitter.py +0 -548
- teradataml/analytics/sqle/NPath.py +0 -632
- teradataml/analytics/sqle/NaiveBayesTextClassifierPredict.py +0 -515
- teradataml/analytics/sqle/Pack.py +0 -388
- teradataml/analytics/sqle/SVMSparsePredict.py +0 -464
- teradataml/analytics/sqle/Sessionize.py +0 -390
- teradataml/analytics/sqle/StringSimilarity.py +0 -400
- teradataml/analytics/sqle/Unpack.py +0 -503
- teradataml/analytics/sqle/json/antiselect_sqle.json +0 -21
- teradataml/analytics/sqle/json/attribution_sqle.json +0 -92
- teradataml/analytics/sqle/json/decisionforestpredict_sqle.json +0 -48
- teradataml/analytics/sqle/json/glmpredict_sqle.json +0 -48
- teradataml/analytics/sqle/json/h2opredict_sqle.json +0 -63
- teradataml/analytics/sqle/json/movingaverage_sqle.json +0 -58
- teradataml/analytics/sqle/json/naivebayestextclassifierpredict_sqle.json +0 -76
- teradataml/analytics/sqle/json/ngramsplitter_sqle.json +0 -126
- teradataml/analytics/sqle/json/npath_sqle.json +0 -67
- teradataml/analytics/sqle/json/pack_sqle.json +0 -47
- teradataml/analytics/sqle/json/pmmlpredict_sqle.json +0 -55
- teradataml/analytics/sqle/json/sessionize_sqle.json +0 -43
- teradataml/analytics/sqle/json/stringsimilarity_sqle.json +0 -39
- teradataml/analytics/sqle/json/svmsparsepredict_sqle.json +0 -74
- teradataml/analytics/sqle/json/unpack_sqle.json +0 -80
- teradataml/catalog/model_cataloging.py +0 -980
- teradataml/config/mlengine_alias_definitions_v1.0 +0 -118
- teradataml/config/mlengine_alias_definitions_v1.1 +0 -127
- teradataml/config/mlengine_alias_definitions_v1.3 +0 -129
- teradataml/table_operators/sandbox_container_util.py +0 -643
- teradataml-17.20.0.7.dist-info/RECORD +0 -1280
- {teradataml-17.20.0.7.dist-info → teradataml-20.0.0.1.dist-info}/top_level.txt +0 -0
|
@@ -1,1982 +1,1718 @@
|
|
|
1
|
-
#!/usr/bin/python
|
|
2
|
-
# ##################################################################
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2020 Teradata. All rights reserved. #
|
|
5
|
-
# TERADATA CONFIDENTIAL AND TRADE SECRET #
|
|
6
|
-
#
|
|
7
|
-
# Primary Owner: Gouri Patwardhan (gouri.patwardhan@teradata.com) #
|
|
8
|
-
# Secondary Owner: Trupti Purohit (trupti.purohit@teradata.com) #
|
|
9
|
-
#
|
|
10
|
-
# Function Version: 1.0 #
|
|
11
|
-
#
|
|
12
|
-
# Description: Script is a TeradataML wrapper around Teradata's #
|
|
13
|
-
# Script Table Operator #
|
|
14
|
-
# ##################################################################
|
|
15
|
-
|
|
16
|
-
import os
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
24
|
-
from teradataml.common.constants import
|
|
25
|
-
from teradataml.
|
|
26
|
-
from teradataml.
|
|
27
|
-
from teradataml.
|
|
28
|
-
from teradataml.
|
|
29
|
-
from teradataml.
|
|
30
|
-
from teradataml.
|
|
31
|
-
|
|
32
|
-
from teradataml.
|
|
33
|
-
from teradataml.
|
|
34
|
-
from teradataml.
|
|
35
|
-
|
|
36
|
-
from teradataml.
|
|
37
|
-
from teradataml.
|
|
38
|
-
from teradataml.
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
|
|
42
|
-
from
|
|
43
|
-
from
|
|
44
|
-
from teradatasqlalchemy
|
|
45
|
-
from teradatasqlalchemy import (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Types: str
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
Required Argument.
|
|
90
|
-
Specifies the
|
|
91
|
-
|
|
92
|
-
Types: str
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
Required Argument.
|
|
96
|
-
Specifies
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
Types: str
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
Optional Argument.
|
|
203
|
-
Specifies
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
#
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
# Create
|
|
237
|
-
>>>
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
>>>
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
...
|
|
248
|
-
...
|
|
249
|
-
...
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
>>> sto.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
self.
|
|
303
|
-
self.
|
|
304
|
-
self.
|
|
305
|
-
self.
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
self.
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
#
|
|
321
|
-
#
|
|
322
|
-
#
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
#
|
|
326
|
-
#
|
|
327
|
-
#
|
|
328
|
-
#
|
|
329
|
-
#
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
self.awu_matrix
|
|
345
|
-
self.awu_matrix.append(["
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
self.awu_matrix.append(["
|
|
349
|
-
|
|
350
|
-
self.awu_matrix.append(["
|
|
351
|
-
|
|
352
|
-
self.awu_matrix.append(["
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
self.
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
"""
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
for
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
#
|
|
643
|
-
#
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
#
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
2
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
1
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
#
|
|
710
|
-
#
|
|
711
|
-
#
|
|
712
|
-
#
|
|
713
|
-
>>>
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
>>>
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
#
|
|
734
|
-
>>>
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
2 had
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
#
|
|
770
|
-
#
|
|
771
|
-
#
|
|
772
|
-
#
|
|
773
|
-
#
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
...
|
|
777
|
-
...
|
|
778
|
-
|
|
779
|
-
>>> sto.execute_script()
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
self.
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
""
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
File mapper.py installed in Vantage
|
|
1720
|
-
|
|
1721
|
-
# Replace file on Vantage.
|
|
1722
|
-
>>> sto.install_file(file_identifier='mapper',
|
|
1723
|
-
... file_name='mapper.py',
|
|
1724
|
-
... is_binary=False,
|
|
1725
|
-
... replace=True,
|
|
1726
|
-
... force_replace=True)
|
|
1727
|
-
File mapper.py replaced in Vantage
|
|
1728
|
-
"""
|
|
1729
|
-
# Install/Replace file on Vantage.
|
|
1730
|
-
try:
|
|
1731
|
-
file_path = os.path.join(self.files_local_path, file_name)
|
|
1732
|
-
# Install file on Vantage.
|
|
1733
|
-
install_file(file_identifier=file_identifier, file_path=file_path,
|
|
1734
|
-
is_binary=is_binary,
|
|
1735
|
-
replace=replace, force_replace=force_replace)
|
|
1736
|
-
except:
|
|
1737
|
-
raise
|
|
1738
|
-
|
|
1739
|
-
def remove_file(self, file_identifier, force_remove=False):
|
|
1740
|
-
"""
|
|
1741
|
-
DESCRIPTION:
|
|
1742
|
-
Function to remove user installed files/scripts from Vantage.
|
|
1743
|
-
|
|
1744
|
-
PARAMETERS:
|
|
1745
|
-
file_identifier:
|
|
1746
|
-
Required Argument.
|
|
1747
|
-
Specifies the name associated with the user-installed file.
|
|
1748
|
-
It cannot have a database name associated with it,
|
|
1749
|
-
as the file is always installed in the current database.
|
|
1750
|
-
Types: str
|
|
1751
|
-
|
|
1752
|
-
force_remove:
|
|
1753
|
-
Required Argument.
|
|
1754
|
-
Specifies if system should check for the file being used before
|
|
1755
|
-
removing it.
|
|
1756
|
-
If set to True, then the file is removed even if it is being executed.
|
|
1757
|
-
If set to False, then an error is thrown if it is being executed.
|
|
1758
|
-
Default value: False
|
|
1759
|
-
Types: bool
|
|
1760
|
-
|
|
1761
|
-
RETURNS:
|
|
1762
|
-
True, if success.
|
|
1763
|
-
|
|
1764
|
-
RAISES:
|
|
1765
|
-
TeradataMLException.
|
|
1766
|
-
|
|
1767
|
-
EXAMPLES:
|
|
1768
|
-
# Note - Refer to User Guide for setting search path and required permissions.
|
|
1769
|
-
# Run install_file example before removing file.
|
|
1770
|
-
|
|
1771
|
-
# Set SEARCHUIFDBPATH.
|
|
1772
|
-
>>> execute_sql("SET SESSION SEARCHUIFDBPATH = alice;")
|
|
1773
|
-
|
|
1774
|
-
# Create a Script object that allows us to execute script on Vantage.
|
|
1775
|
-
>>> sto = Script(data=barrierdf,
|
|
1776
|
-
... script_name='mapper.py',
|
|
1777
|
-
... files_local_path= os.path.join(td_path, 'data', "scripts"),
|
|
1778
|
-
... script_command='tdpython3 ./alice/mapper.py',
|
|
1779
|
-
... data_order_column="Id",
|
|
1780
|
-
... is_local_order=False,
|
|
1781
|
-
... nulls_first=False,
|
|
1782
|
-
... sort_ascending=False,
|
|
1783
|
-
... charset='latin',
|
|
1784
|
-
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
1785
|
-
>>>
|
|
1786
|
-
|
|
1787
|
-
# Install file on Vantage.
|
|
1788
|
-
>>> sto.install_file(file_identifier='mapper',
|
|
1789
|
-
... file_name='mapper.py',
|
|
1790
|
-
... is_binary=False,
|
|
1791
|
-
... replace=True,
|
|
1792
|
-
... force_replace=True)
|
|
1793
|
-
File mapper.py replaced in Vantage
|
|
1794
|
-
|
|
1795
|
-
# Remove the installed file.
|
|
1796
|
-
>>> sto.remove_file(file_identifier='mapper', force_remove=True)
|
|
1797
|
-
File mapper removed from Vantage
|
|
1798
|
-
|
|
1799
|
-
"""
|
|
1800
|
-
# Remove file from Vantage
|
|
1801
|
-
try:
|
|
1802
|
-
remove_file(file_identifier, force_remove)
|
|
1803
|
-
except:
|
|
1804
|
-
raise
|
|
1805
|
-
|
|
1806
|
-
def __form_table_operator_query(self):
|
|
1807
|
-
"""
|
|
1808
|
-
Function to generate the Table Operator queries. The function defines
|
|
1809
|
-
variables and list of arguments required to form the query.
|
|
1810
|
-
"""
|
|
1811
|
-
# Output table arguments list.
|
|
1812
|
-
self.__func_output_args_sql_names = []
|
|
1813
|
-
self.__func_output_args = []
|
|
1814
|
-
|
|
1815
|
-
# Generate lists for rest of the function arguments.
|
|
1816
|
-
self.__func_other_arg_sql_names = []
|
|
1817
|
-
self.__func_other_args = []
|
|
1818
|
-
self.__func_other_arg_json_datatypes = []
|
|
1819
|
-
|
|
1820
|
-
self.__func_other_arg_sql_names.append("SCRIPT_COMMAND")
|
|
1821
|
-
self.__func_other_args.append(
|
|
1822
|
-
UtilFuncs._teradata_collapse_arglist(self.script_command, "'"))
|
|
1823
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1824
|
-
|
|
1825
|
-
if self.delimiter is not None:
|
|
1826
|
-
self.__func_other_arg_sql_names.append("delimiter")
|
|
1827
|
-
self.__func_other_args.append(
|
|
1828
|
-
UtilFuncs._teradata_collapse_arglist(self.delimiter, "'"))
|
|
1829
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1830
|
-
|
|
1831
|
-
# Generate returns clause.
|
|
1832
|
-
ret_vals = []
|
|
1833
|
-
returns_clause = ''
|
|
1834
|
-
for key in self.returns.keys():
|
|
1835
|
-
ret_vals.append('{} {}'.format(key, self.returns[key].compile(td_dialect())))
|
|
1836
|
-
returns_clause = ', '.join(ret_vals)
|
|
1837
|
-
|
|
1838
|
-
self.__func_other_arg_sql_names.append("returns")
|
|
1839
|
-
self.__func_other_args.append(
|
|
1840
|
-
UtilFuncs._teradata_collapse_arglist(returns_clause, "'"))
|
|
1841
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1842
|
-
|
|
1843
|
-
if self.auth is not None:
|
|
1844
|
-
self.__func_other_arg_sql_names.append("auth")
|
|
1845
|
-
self.__func_other_args.append(
|
|
1846
|
-
UtilFuncs._teradata_collapse_arglist(self.auth, "'"))
|
|
1847
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1848
|
-
|
|
1849
|
-
if self.charset is not None:
|
|
1850
|
-
self.__func_other_arg_sql_names.append("charset")
|
|
1851
|
-
self.__func_other_args.append(
|
|
1852
|
-
UtilFuncs._teradata_collapse_arglist(self.charset, "'"))
|
|
1853
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1854
|
-
|
|
1855
|
-
if self.quotechar is not None:
|
|
1856
|
-
self.__func_other_arg_sql_names.append("quotechar")
|
|
1857
|
-
self.__func_other_args.append(
|
|
1858
|
-
UtilFuncs._teradata_collapse_arglist(self.quotechar, "'"))
|
|
1859
|
-
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1860
|
-
|
|
1861
|
-
# Declare empty lists to hold input table information.
|
|
1862
|
-
self.__func_input_arg_sql_names = []
|
|
1863
|
-
self.__func_input_table_view_query = []
|
|
1864
|
-
self.__func_input_dataframe_type = []
|
|
1865
|
-
self.__func_input_distribution = []
|
|
1866
|
-
self.__func_input_partition_by_cols = []
|
|
1867
|
-
self.__func_input_order_by_cols = []
|
|
1868
|
-
self.__func_input_order_by_type = []
|
|
1869
|
-
self.__func_input_sort_ascending = self.sort_ascending
|
|
1870
|
-
self.__func_input_nulls_first = None
|
|
1871
|
-
|
|
1872
|
-
# Process data.
|
|
1873
|
-
if self.data is not None:
|
|
1874
|
-
data_distribution = "FACT"
|
|
1875
|
-
if self.data_hash_column is not None:
|
|
1876
|
-
data_distribution = "HASH"
|
|
1877
|
-
data_partition_column = UtilFuncs._teradata_collapse_arglist(
|
|
1878
|
-
self.data_hash_column, "\"")
|
|
1879
|
-
else:
|
|
1880
|
-
if self.__awu._is_default_or_not(self.data_partition_column, "ANY"):
|
|
1881
|
-
data_partition_column = UtilFuncs._teradata_collapse_arglist(
|
|
1882
|
-
self.data_partition_column, "\"")
|
|
1883
|
-
else:
|
|
1884
|
-
data_partition_column = None
|
|
1885
|
-
if self.data_order_column is not None:
|
|
1886
|
-
if self.is_local_order:
|
|
1887
|
-
self.__func_input_order_by_type.append("LOCAL")
|
|
1888
|
-
if not self.data_hash_column:
|
|
1889
|
-
data_distribution = None
|
|
1890
|
-
else:
|
|
1891
|
-
self.__func_input_order_by_type.append(None)
|
|
1892
|
-
self.__func_input_order_by_cols.append(
|
|
1893
|
-
UtilFuncs._teradata_collapse_arglist(self.data_order_column, "\""))
|
|
1894
|
-
else:
|
|
1895
|
-
self.__func_input_order_by_type.append(None)
|
|
1896
|
-
self.__func_input_order_by_cols.append("NA_character_")
|
|
1897
|
-
|
|
1898
|
-
self.__table_ref = self.__awu._teradata_on_clause_from_dataframe(self.data,
|
|
1899
|
-
False)
|
|
1900
|
-
self.__func_input_distribution.append(data_distribution)
|
|
1901
|
-
self.__func_input_arg_sql_names.append("input")
|
|
1902
|
-
self.__func_input_table_view_query.append(self.__table_ref["ref"])
|
|
1903
|
-
self.__func_input_dataframe_type.append(self.__table_ref["ref_type"])
|
|
1904
|
-
self.__func_input_partition_by_cols.append(data_partition_column)
|
|
1905
|
-
self.__func_input_nulls_first = self.nulls_first
|
|
1906
|
-
|
|
1907
|
-
function_name = "Script"
|
|
1908
|
-
# Create instance to generate Table Operator Query.
|
|
1909
|
-
aqg_obj = TableOperatorQueryGenerator(function_name,
|
|
1910
|
-
self.__func_input_arg_sql_names,
|
|
1911
|
-
self.__func_input_table_view_query,
|
|
1912
|
-
self.__func_input_dataframe_type,
|
|
1913
|
-
self.__func_input_distribution,
|
|
1914
|
-
self.__func_input_partition_by_cols,
|
|
1915
|
-
self.__func_input_order_by_cols,
|
|
1916
|
-
self.__func_other_arg_sql_names,
|
|
1917
|
-
self.__func_other_args,
|
|
1918
|
-
self.__func_other_arg_json_datatypes,
|
|
1919
|
-
self.__func_output_args_sql_names,
|
|
1920
|
-
self.__func_output_args,
|
|
1921
|
-
self.__func_input_order_by_type,
|
|
1922
|
-
self.__func_input_sort_ascending,
|
|
1923
|
-
self.__func_input_nulls_first,
|
|
1924
|
-
engine="ENGINE_SQL"
|
|
1925
|
-
)
|
|
1926
|
-
|
|
1927
|
-
# Invoke call to Table operator query generation.
|
|
1928
|
-
self._tblop_query = aqg_obj._gen_table_operator_select_stmt_sql()
|
|
1929
|
-
|
|
1930
|
-
# Print Table Operator query if requested to do so.
|
|
1931
|
-
if display.print_sqlmr_query:
|
|
1932
|
-
print(self._tblop_query)
|
|
1933
|
-
|
|
1934
|
-
def __execute(self, output_style='VIEW'):
|
|
1935
|
-
"""
|
|
1936
|
-
DESCRIPTION:
|
|
1937
|
-
Function to execute Table Operator queries.
|
|
1938
|
-
Create DataFrames for the required Table Operator output.
|
|
1939
|
-
|
|
1940
|
-
PARAMETERS:
|
|
1941
|
-
output_style:
|
|
1942
|
-
Specifies the type of output object to create - a table of a view.
|
|
1943
|
-
Permitted Values: 'VIEW', 'TABLE'.
|
|
1944
|
-
Default value: 'VIEW'
|
|
1945
|
-
Types: str
|
|
1946
|
-
|
|
1947
|
-
RAISES:
|
|
1948
|
-
None.
|
|
1949
|
-
|
|
1950
|
-
RETURNS:
|
|
1951
|
-
None.
|
|
1952
|
-
|
|
1953
|
-
EXAMPLES:
|
|
1954
|
-
>>> return self.__execute(output_style)
|
|
1955
|
-
"""
|
|
1956
|
-
# Generate STDOUT table name and add it to the output table list.
|
|
1957
|
-
if output_style == OutputStyle.OUTPUT_TABLE.value:
|
|
1958
|
-
table_type = TeradataConstants.TERADATA_TABLE
|
|
1959
|
-
else:
|
|
1960
|
-
table_type = TeradataConstants.TERADATA_VIEW
|
|
1961
|
-
|
|
1962
|
-
tblop_stdout_temp_tablename = \
|
|
1963
|
-
UtilFuncs._generate_temp_table_name(prefix="td_tblop_out_",
|
|
1964
|
-
use_default_database=True,
|
|
1965
|
-
gc_on_quit=True, quote=False,
|
|
1966
|
-
table_type=table_type)
|
|
1967
|
-
try:
|
|
1968
|
-
if output_style == OutputStyle.OUTPUT_TABLE.value:
|
|
1969
|
-
UtilFuncs._create_table(tblop_stdout_temp_tablename, self._tblop_query)
|
|
1970
|
-
else:
|
|
1971
|
-
UtilFuncs._create_view(tblop_stdout_temp_tablename, self._tblop_query)
|
|
1972
|
-
except Exception as emsg:
|
|
1973
|
-
raise TeradataMlException(
|
|
1974
|
-
Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, str(emsg)),
|
|
1975
|
-
MessageCodes.TDMLDF_EXEC_SQL_FAILED)
|
|
1976
|
-
|
|
1977
|
-
self.result = self.__awu._create_data_set_object(
|
|
1978
|
-
df_input=UtilFuncs._extract_table_name(tblop_stdout_temp_tablename),
|
|
1979
|
-
source_type="table",
|
|
1980
|
-
database_name=UtilFuncs._extract_db_name(tblop_stdout_temp_tablename))
|
|
1981
|
-
|
|
1982
|
-
return self.result
|
|
1
|
+
#!/usr/bin/python
|
|
2
|
+
# ##################################################################
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2020 Teradata. All rights reserved. #
|
|
5
|
+
# TERADATA CONFIDENTIAL AND TRADE SECRET #
|
|
6
|
+
#
|
|
7
|
+
# Primary Owner: Gouri Patwardhan (gouri.patwardhan@teradata.com) #
|
|
8
|
+
# Secondary Owner: Trupti Purohit (trupti.purohit@teradata.com) #
|
|
9
|
+
#
|
|
10
|
+
# Function Version: 1.0 #
|
|
11
|
+
#
|
|
12
|
+
# Description: Script is a TeradataML wrapper around Teradata's #
|
|
13
|
+
# Script Table Operator #
|
|
14
|
+
# ##################################################################
|
|
15
|
+
|
|
16
|
+
import os
|
|
17
|
+
import teradataml.dataframe as tdmldf
|
|
18
|
+
import subprocess
|
|
19
|
+
import sys
|
|
20
|
+
from io import StringIO
|
|
21
|
+
from teradataml.common.constants import TableOperatorConstants
|
|
22
|
+
from teradataml.common.wrapper_utils import AnalyticsWrapperUtils
|
|
23
|
+
from teradataml.common.utils import UtilFuncs
|
|
24
|
+
from teradataml.common.constants import OutputStyle, TeradataConstants
|
|
25
|
+
from teradataml.context.context import _get_current_databasename
|
|
26
|
+
from teradataml.context.context import get_context, get_connection
|
|
27
|
+
from teradataml.dataframe.dataframe_utils import DataFrameUtils as df_utils
|
|
28
|
+
from teradataml.dbutils.filemgr import install_file
|
|
29
|
+
from teradataml.dbutils.filemgr import remove_file
|
|
30
|
+
from teradataml.table_operators.table_operator_query_generator import \
|
|
31
|
+
TableOperatorQueryGenerator
|
|
32
|
+
from teradataml.common.exceptions import TeradataMlException
|
|
33
|
+
from teradataml.common.messages import Messages
|
|
34
|
+
from teradataml.common.messagecodes import MessageCodes
|
|
35
|
+
from teradataml.utils.validators import _Validators
|
|
36
|
+
from teradataml.options.display import display
|
|
37
|
+
from teradataml.options.configure import configure
|
|
38
|
+
from teradataml.utils.utils import execute_sql
|
|
39
|
+
from teradatasqlalchemy.dialect import dialect as td_dialect
|
|
40
|
+
from teradatasqlalchemy import (BYTEINT, SMALLINT, INTEGER, BIGINT, DECIMAL, FLOAT,
|
|
41
|
+
NUMBER)
|
|
42
|
+
from teradatasqlalchemy import (TIMESTAMP, DATE, TIME)
|
|
43
|
+
from teradatasqlalchemy import (CHAR, VARCHAR, CLOB)
|
|
44
|
+
from teradatasqlalchemy import (BYTE, VARBYTE, BLOB)
|
|
45
|
+
from teradatasqlalchemy import (PERIOD_DATE, PERIOD_TIME, PERIOD_TIMESTAMP)
|
|
46
|
+
from teradatasqlalchemy import (INTERVAL_YEAR, INTERVAL_YEAR_TO_MONTH, INTERVAL_MONTH,
|
|
47
|
+
INTERVAL_DAY,INTERVAL_DAY_TO_HOUR, INTERVAL_DAY_TO_MINUTE,
|
|
48
|
+
INTERVAL_DAY_TO_SECOND, INTERVAL_HOUR,
|
|
49
|
+
INTERVAL_HOUR_TO_MINUTE, INTERVAL_HOUR_TO_SECOND,
|
|
50
|
+
INTERVAL_MINUTE, INTERVAL_MINUTE_TO_SECOND,
|
|
51
|
+
INTERVAL_SECOND)
|
|
52
|
+
from teradataml.table_operators.TableOperator import TableOperator
|
|
53
|
+
|
|
54
|
+
class Script(TableOperator):
|
|
55
|
+
def __init__(self,
|
|
56
|
+
data=None,
|
|
57
|
+
script_name=None,
|
|
58
|
+
files_local_path=None,
|
|
59
|
+
script_command=None,
|
|
60
|
+
delimiter="\t",
|
|
61
|
+
returns=None,
|
|
62
|
+
auth=None,
|
|
63
|
+
charset=None,
|
|
64
|
+
quotechar=None,
|
|
65
|
+
data_partition_column=None,
|
|
66
|
+
data_hash_column=None,
|
|
67
|
+
data_order_column=None,
|
|
68
|
+
is_local_order=False,
|
|
69
|
+
sort_ascending=True,
|
|
70
|
+
nulls_first=True):
|
|
71
|
+
"""
|
|
72
|
+
DESCRIPTION:
|
|
73
|
+
The Script table operator function executes a user-installed script or
|
|
74
|
+
any LINUX command inside database on Teradata Vantage.
|
|
75
|
+
|
|
76
|
+
PARAMETERS:
|
|
77
|
+
script_command:
|
|
78
|
+
Required Argument.
|
|
79
|
+
Specifies the command/script to run.
|
|
80
|
+
Types: str
|
|
81
|
+
|
|
82
|
+
script_name:
|
|
83
|
+
Required Argument.
|
|
84
|
+
Specifies the name of user script.
|
|
85
|
+
User script should have at least permissions of mode 644.
|
|
86
|
+
Types: str
|
|
87
|
+
|
|
88
|
+
files_local_path:
|
|
89
|
+
Required Argument.
|
|
90
|
+
Specifies the absolute local path where user script and all supporting
|
|
91
|
+
files like model files, input data file reside.
|
|
92
|
+
Types: str
|
|
93
|
+
|
|
94
|
+
returns:
|
|
95
|
+
Required Argument.
|
|
96
|
+
Specifies output column definition.
|
|
97
|
+
Types: Dictionary specifying column name to teradatasqlalchemy type mapping.
|
|
98
|
+
Default: None
|
|
99
|
+
Note:
|
|
100
|
+
User can pass a dictionary (dict or OrderedDict) to the "returns" argument,
|
|
101
|
+
with the keys ordered to represent the order of the output columns.
|
|
102
|
+
Preferred type is OrderedDict.
|
|
103
|
+
|
|
104
|
+
data:
|
|
105
|
+
Optional Argument.
|
|
106
|
+
Specifies a teradataml DataFrame containing the input data for the
|
|
107
|
+
script.
|
|
108
|
+
|
|
109
|
+
data_hash_column:
|
|
110
|
+
Optional Argument.
|
|
111
|
+
Specifies the column to be used for hashing.
|
|
112
|
+
The rows in the data are redistributed to AMPs based on the hash value of
|
|
113
|
+
the column specified.
|
|
114
|
+
The user-installed script file then runs once on each AMP.
|
|
115
|
+
If there is no "data_partition_column", then the entire result set,
|
|
116
|
+
delivered by the function, constitutes a single group or partition.
|
|
117
|
+
Types: str
|
|
118
|
+
Note:
|
|
119
|
+
"data_hash_column" can not be specified along with
|
|
120
|
+
"data_partition_column", "is_local_order" and "data_order_column".
|
|
121
|
+
|
|
122
|
+
data_partition_column:
|
|
123
|
+
Optional Argument.
|
|
124
|
+
Specifies Partition By columns for "data".
|
|
125
|
+
Values to this argument can be provided as a list, if multiple
|
|
126
|
+
columns are used for partition.
|
|
127
|
+
Default Value: ANY
|
|
128
|
+
Types: str OR list of Strings (str)
|
|
129
|
+
Note:
|
|
130
|
+
1) "data_partition_column" can not be specified along with
|
|
131
|
+
"data_hash_column".
|
|
132
|
+
2) "data_partition_column" can not be specified along with
|
|
133
|
+
"is_local_order = True".
|
|
134
|
+
|
|
135
|
+
is_local_order:
|
|
136
|
+
Optional Argument.
|
|
137
|
+
Specifies a boolean value to determine whether the input data is to be
|
|
138
|
+
ordered locally or not. Order by specifies the order in which the
|
|
139
|
+
values in a group, or partition, are sorted. Local Order By specifies
|
|
140
|
+
orders qualified rows on each AMP in preparation to be input to a table
|
|
141
|
+
function. This argument is ignored, if "data_order_column" is None. When
|
|
142
|
+
set to True, data is ordered locally.
|
|
143
|
+
Default Value: False
|
|
144
|
+
Types: bool
|
|
145
|
+
Note:
|
|
146
|
+
1) "is_local_order" can not be specified along with "data_hash_column".
|
|
147
|
+
2) When "is_local_order" is set to True, "data_order_column" should be
|
|
148
|
+
specified, and the columns specified in "data_order_column" are
|
|
149
|
+
used for local ordering.
|
|
150
|
+
|
|
151
|
+
data_order_column:
|
|
152
|
+
Optional Argument.
|
|
153
|
+
Specifies Order By columns for "data".
|
|
154
|
+
Values to this argument can be provided as a list, if multiple
|
|
155
|
+
columns are used for ordering. This argument is used with in both cases:
|
|
156
|
+
"is_local_order = True" and "is_local_order = False".
|
|
157
|
+
Types: str OR list of Strings (str)
|
|
158
|
+
Note:
|
|
159
|
+
"data_order_column" can not be specified along with "data_hash_column".
|
|
160
|
+
|
|
161
|
+
sort_ascending:
|
|
162
|
+
Optional Argument.
|
|
163
|
+
Specifies a boolean value to determine if the result set is to be sorted
|
|
164
|
+
on the "data_order_column" column in ascending or descending order.
|
|
165
|
+
The sorting is ascending when this argument is set to True, and descending
|
|
166
|
+
when set to False. This argument is ignored, if "data_order_column" is
|
|
167
|
+
None.
|
|
168
|
+
Default Value: True
|
|
169
|
+
Types: bool
|
|
170
|
+
|
|
171
|
+
nulls_first:
|
|
172
|
+
Optional Argument.
|
|
173
|
+
Specifies a boolean value to determine whether NULLS are listed first or
|
|
174
|
+
last during ordering. This argument is ignored, if "data_order_column" is
|
|
175
|
+
None. NULLS are listed first when this argument is set to True, and last
|
|
176
|
+
when set to False.
|
|
177
|
+
Default Value: True
|
|
178
|
+
Types: bool
|
|
179
|
+
|
|
180
|
+
delimiter:
|
|
181
|
+
Optional Argument.
|
|
182
|
+
Specifies a delimiter to use when reading columns from a row and
|
|
183
|
+
writing result columns.
|
|
184
|
+
Default Value: "\t" (tab)
|
|
185
|
+
Types: str of length 1 character
|
|
186
|
+
Notes:
|
|
187
|
+
1) This argument cannot be same as "quotechar" argument.
|
|
188
|
+
2) This argument cannot be a newline character i.e., '\\n'.
|
|
189
|
+
|
|
190
|
+
auth:
|
|
191
|
+
Optional Argument.
|
|
192
|
+
Specifies an authorization to use when running the script.
|
|
193
|
+
Types: str
|
|
194
|
+
|
|
195
|
+
charset:
|
|
196
|
+
Optional Argument.
|
|
197
|
+
Specifies the character encoding for data.
|
|
198
|
+
Permitted Values: utf-16, latin
|
|
199
|
+
Types: str
|
|
200
|
+
|
|
201
|
+
quotechar:
|
|
202
|
+
Optional Argument.
|
|
203
|
+
Specifies a character that forces all input and output of the script
|
|
204
|
+
to be quoted using this specified character.
|
|
205
|
+
Using this argument enables the Advanced SQL Engine to distinguish
|
|
206
|
+
between NULL fields and empty strings. A string with length zero is
|
|
207
|
+
quoted, while NULL fields are not.
|
|
208
|
+
If this character is found in the data, it will be escaped by a second
|
|
209
|
+
quote character.
|
|
210
|
+
Types: character of length 1
|
|
211
|
+
Notes:
|
|
212
|
+
1) This argument cannot be same as "delimiter" argument.
|
|
213
|
+
2) This argument cannot be a newline character i.e., '\\n'.
|
|
214
|
+
|
|
215
|
+
RETURNS:
|
|
216
|
+
Script Object
|
|
217
|
+
|
|
218
|
+
RAISES:
|
|
219
|
+
TeradataMlException
|
|
220
|
+
|
|
221
|
+
EXAMPLES:
|
|
222
|
+
# Note - Refer to User Guide for setting search path and required permissions.
|
|
223
|
+
# Load example data.
|
|
224
|
+
load_example_data("Script", ["barrier"])
|
|
225
|
+
|
|
226
|
+
# Example - The script mapper.py reads in a line of text input
|
|
227
|
+
# ("Old Macdonald Had A Farm") from csv and splits the line into individual
|
|
228
|
+
# words, emitting a new row for each word.
|
|
229
|
+
|
|
230
|
+
# Create teradataml DataFrame objects.
|
|
231
|
+
>>> barrierdf = DataFrame.from_table("barrier")
|
|
232
|
+
|
|
233
|
+
# Set SEARCHUIFDBPATH.
|
|
234
|
+
>>> execute_sql("SET SESSION SEARCHUIFDBPATH = alice;")
|
|
235
|
+
|
|
236
|
+
# Create a Script object that allows us to execute script on Vantage.
|
|
237
|
+
>>> import teradataml, os
|
|
238
|
+
>>> from teradatasqlalchemy import VARCHAR
|
|
239
|
+
>>> td_path = os.path.dirname(teradataml.__file__)
|
|
240
|
+
>>> sto = Script(data=barrierdf,
|
|
241
|
+
... script_name='mapper.py',
|
|
242
|
+
... files_local_path= os.path.join(td_path, 'data', 'scripts'),
|
|
243
|
+
... script_command='tdpython3 ./alice/mapper.py',
|
|
244
|
+
... data_order_column="Id",
|
|
245
|
+
... is_local_order=False,
|
|
246
|
+
... nulls_first=False,
|
|
247
|
+
... sort_ascending=False,
|
|
248
|
+
... charset='latin',
|
|
249
|
+
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
250
|
+
|
|
251
|
+
# Run user script locally and using data from csv.
|
|
252
|
+
|
|
253
|
+
>>> sto.test_script(input_data_file='../barrier.csv', data_file_delimiter=',')
|
|
254
|
+
|
|
255
|
+
############ STDOUT Output ############
|
|
256
|
+
|
|
257
|
+
word count_input
|
|
258
|
+
0 1 1
|
|
259
|
+
1 Old 1
|
|
260
|
+
2 Macdonald 1
|
|
261
|
+
3 Had 1
|
|
262
|
+
4 A 1
|
|
263
|
+
5 Farm 1
|
|
264
|
+
>>>
|
|
265
|
+
|
|
266
|
+
# Script results look good. Now install file on Vantage.
|
|
267
|
+
>>> sto.install_file(file_identifier='mapper',
|
|
268
|
+
... file_name='mapper.py',
|
|
269
|
+
... is_binary=False)
|
|
270
|
+
File mapper.py installed in Vantage
|
|
271
|
+
|
|
272
|
+
# Execute the user script on Vantage.
|
|
273
|
+
>>> sto.execute_script()
|
|
274
|
+
############ STDOUT Output ############
|
|
275
|
+
|
|
276
|
+
word count_input
|
|
277
|
+
0 Macdonald 1
|
|
278
|
+
1 A 1
|
|
279
|
+
2 Farm 1
|
|
280
|
+
3 Had 1
|
|
281
|
+
4 Old 1
|
|
282
|
+
5 1 1
|
|
283
|
+
|
|
284
|
+
# Remove the installed file from Vantage.
|
|
285
|
+
>>> sto.remove_file(file_identifier='mapper', force_remove=True)
|
|
286
|
+
File mapper removed from Vantage
|
|
287
|
+
"""
|
|
288
|
+
self.result = None
|
|
289
|
+
self.data = data
|
|
290
|
+
self.script_name = script_name
|
|
291
|
+
self.files_local_path = files_local_path
|
|
292
|
+
self.script_command = script_command
|
|
293
|
+
self.delimiter = delimiter
|
|
294
|
+
self.returns = returns
|
|
295
|
+
self.auth = auth
|
|
296
|
+
self.charset = charset
|
|
297
|
+
self.quotechar = quotechar
|
|
298
|
+
self.data_partition_column = data_partition_column
|
|
299
|
+
self.data_hash_column = data_hash_column
|
|
300
|
+
self.data_order_column = data_order_column
|
|
301
|
+
self.is_local_order = is_local_order
|
|
302
|
+
self.sort_ascending = sort_ascending
|
|
303
|
+
self.nulls_first = nulls_first
|
|
304
|
+
self._check_reserved_keyword = True
|
|
305
|
+
self._skip_argument_validation = False
|
|
306
|
+
|
|
307
|
+
# Create AnalyticsWrapperUtils instance which contains validation functions.
|
|
308
|
+
# This is required for is_default_or_not check.
|
|
309
|
+
# Rest all validation is done using _Validators
|
|
310
|
+
self.__awu = AnalyticsWrapperUtils()
|
|
311
|
+
|
|
312
|
+
# Below matrix is a list of lists, where in each row contains following elements:
|
|
313
|
+
# Let's take an example of following, just to get an idea:
|
|
314
|
+
# [element1, element2, element3, element4, element5, element6]
|
|
315
|
+
# e.g.
|
|
316
|
+
# ["join", join, True, (str), True, concat_join_permitted_values]
|
|
317
|
+
|
|
318
|
+
# 1. element1 --> Argument Name, a string. ["join" in above example.]
|
|
319
|
+
# 2. element2 --> Argument itself. [join]
|
|
320
|
+
# 3. element3 --> Specifies a flag that mentions argument is optional or not.
|
|
321
|
+
# False, means required and True means optional.
|
|
322
|
+
# 4. element4 --> Tuple of accepted types. (str) in above example.
|
|
323
|
+
# 5. element5 --> True, means validate for empty value. Error will be raised,
|
|
324
|
+
# if empty value is passed.
|
|
325
|
+
# If not specified, means same as specifying False.
|
|
326
|
+
# 6. element6 --> A list of permitted values, an argument can accept.
|
|
327
|
+
# If not specified, it is as good as passing None.
|
|
328
|
+
# If a list is passed, validation will be
|
|
329
|
+
# performed for permitted values.
|
|
330
|
+
|
|
331
|
+
self.awu_matrix = []
|
|
332
|
+
self.awu_matrix.append(["data", self.data, True, (tdmldf.dataframe.DataFrame)])
|
|
333
|
+
self.awu_matrix.append(["data_partition_column", self.data_partition_column, True,
|
|
334
|
+
(str, list), True])
|
|
335
|
+
self.awu_matrix.append(["data_hash_column", self.data_hash_column, True,
|
|
336
|
+
(str, list), True])
|
|
337
|
+
self.awu_matrix.append(["data_order_column", self.data_order_column, True,
|
|
338
|
+
(str, list), True])
|
|
339
|
+
self.awu_matrix.append(["is_local_order", self.is_local_order, True, (bool)])
|
|
340
|
+
self.awu_matrix.append(["sort_ascending", self.sort_ascending, True, (bool)])
|
|
341
|
+
self.awu_matrix.append(["nulls_first", self.nulls_first, True, (bool)])
|
|
342
|
+
self.awu_matrix.append(["script_command", self.script_command, False, (str),
|
|
343
|
+
True])
|
|
344
|
+
self.awu_matrix.append(["script_name", self.script_name, True, (str), True])
|
|
345
|
+
self.awu_matrix.append(["files_local_path", self.files_local_path, True, (str),
|
|
346
|
+
True])
|
|
347
|
+
self.awu_matrix.append(["delimiter", self.delimiter, True, (str), False])
|
|
348
|
+
self.awu_matrix.append(["returns", self.returns, False, (dict), True])
|
|
349
|
+
self.awu_matrix.append(["auth", self.auth, True, (str), True])
|
|
350
|
+
self.awu_matrix.append(["charset", self.charset, True, (str), True,
|
|
351
|
+
["utf-16", "latin"]])
|
|
352
|
+
self.awu_matrix.append(["quotechar", self.quotechar, True, (str), False])
|
|
353
|
+
|
|
354
|
+
# Perform the function validations
|
|
355
|
+
self.__validate()
|
|
356
|
+
|
|
357
|
+
@property
|
|
358
|
+
def skip_argument_validation(self):
|
|
359
|
+
"""
|
|
360
|
+
DESCRIPTION:
|
|
361
|
+
Getter for self._skip_argument_validation.
|
|
362
|
+
|
|
363
|
+
RETURNS:
|
|
364
|
+
bool
|
|
365
|
+
|
|
366
|
+
RAISES:
|
|
367
|
+
None
|
|
368
|
+
"""
|
|
369
|
+
return self._skip_argument_validation
|
|
370
|
+
|
|
371
|
+
@skip_argument_validation.setter
|
|
372
|
+
def skip_argument_validation(self, flag):
|
|
373
|
+
"""
|
|
374
|
+
DESCRIPTION:
|
|
375
|
+
Setter for self._skip_argument_validation
|
|
376
|
+
|
|
377
|
+
PARAMETERS:
|
|
378
|
+
flag Required Argument.
|
|
379
|
+
Specifies whether the arguments should be skipped or not.
|
|
380
|
+
Types: bool
|
|
381
|
+
RETURNS:
|
|
382
|
+
None
|
|
383
|
+
|
|
384
|
+
RAISES:
|
|
385
|
+
None
|
|
386
|
+
"""
|
|
387
|
+
self._skip_argument_validation = flag
|
|
388
|
+
|
|
389
|
+
@property
|
|
390
|
+
def check_reserved_keyword(self):
|
|
391
|
+
"""
|
|
392
|
+
DESCRIPTION:
|
|
393
|
+
Getter for self._check_reserved_keyword.
|
|
394
|
+
|
|
395
|
+
RETURNS:
|
|
396
|
+
bool
|
|
397
|
+
|
|
398
|
+
RAISES:
|
|
399
|
+
None
|
|
400
|
+
"""
|
|
401
|
+
return self._check_reserved_keyword
|
|
402
|
+
|
|
403
|
+
@check_reserved_keyword.setter
|
|
404
|
+
def check_reserved_keyword(self, flag):
|
|
405
|
+
"""
|
|
406
|
+
DESCRIPTION:
|
|
407
|
+
Setter for self._check_reserved_keyword
|
|
408
|
+
|
|
409
|
+
RETURNS:
|
|
410
|
+
None
|
|
411
|
+
|
|
412
|
+
RAISES:
|
|
413
|
+
None
|
|
414
|
+
"""
|
|
415
|
+
self._check_reserved_keyword = flag
|
|
416
|
+
|
|
417
|
+
def __validate_for_reserved_keyword(self):
|
|
418
|
+
"""
|
|
419
|
+
DESCRIPTION:
|
|
420
|
+
Function to validate if the returns clause has teradata reserved keyword or not.
|
|
421
|
+
If it contains reserved keyword, then raise an error.
|
|
422
|
+
|
|
423
|
+
RETURNS:
|
|
424
|
+
None
|
|
425
|
+
|
|
426
|
+
RAISES:
|
|
427
|
+
TeradataMlException
|
|
428
|
+
|
|
429
|
+
"""
|
|
430
|
+
if self.check_reserved_keyword:
|
|
431
|
+
from teradataml import list_td_reserved_keywords
|
|
432
|
+
if get_connection():
|
|
433
|
+
# Checking for reserved keywords and raising error if present.
|
|
434
|
+
for column_name in self.returns:
|
|
435
|
+
list_td_reserved_keywords(key=column_name, raise_error=True)
|
|
436
|
+
|
|
437
|
+
def __validate(self):
|
|
438
|
+
"""
|
|
439
|
+
Function to validate Table Operator Function arguments, which verifies missing
|
|
440
|
+
arguments, input argument and table types. Also processes the argument values.
|
|
441
|
+
"""
|
|
442
|
+
if self.skip_argument_validation:
|
|
443
|
+
return
|
|
444
|
+
# Make sure that a non-NULL value has been supplied for all mandatory arguments
|
|
445
|
+
_Validators._validate_missing_required_arguments(self.awu_matrix)
|
|
446
|
+
|
|
447
|
+
# Validate argument types.
|
|
448
|
+
_Validators._validate_function_arguments(self.awu_matrix,
|
|
449
|
+
skip_empty_check={"quotechar" : ["\n", "\t"],
|
|
450
|
+
"delimiter" : ["\n"]})
|
|
451
|
+
|
|
452
|
+
# permissible_datatypes in returns
|
|
453
|
+
allowed_datatypes = (BYTEINT, SMALLINT, INTEGER, BIGINT, DECIMAL, FLOAT, NUMBER,
|
|
454
|
+
TIMESTAMP, DATE, TIME, CHAR, VARCHAR, CLOB, BYTE, VARBYTE,
|
|
455
|
+
BLOB, PERIOD_DATE, PERIOD_TIME, PERIOD_TIMESTAMP,
|
|
456
|
+
INTERVAL_YEAR, INTERVAL_YEAR_TO_MONTH, INTERVAL_MONTH,
|
|
457
|
+
INTERVAL_DAY, INTERVAL_DAY_TO_HOUR, INTERVAL_DAY_TO_MINUTE,
|
|
458
|
+
INTERVAL_DAY_TO_SECOND, INTERVAL_HOUR,
|
|
459
|
+
INTERVAL_HOUR_TO_MINUTE, INTERVAL_HOUR_TO_SECOND,
|
|
460
|
+
INTERVAL_MINUTE, INTERVAL_MINUTE_TO_SECOND, INTERVAL_SECOND
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
# Validate keys and datatypes in returns.
|
|
464
|
+
self.awu_matrix_returns = []
|
|
465
|
+
for key in self.returns.keys():
|
|
466
|
+
self.awu_matrix_returns.append(["keys in returns", key, False, (str), True])
|
|
467
|
+
self.awu_matrix_returns.append(["value in returns", self.returns[key], False,
|
|
468
|
+
allowed_datatypes])
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
_Validators._validate_function_arguments(self.awu_matrix_returns)
|
|
472
|
+
|
|
473
|
+
if self.data is not None:
|
|
474
|
+
# Hash and order by can be used together as long as is_local_order = True.
|
|
475
|
+
if all([self.data_hash_column,
|
|
476
|
+
self.data_order_column]) and not self.is_local_order:
|
|
477
|
+
raise TeradataMlException(
|
|
478
|
+
Messages.get_message(MessageCodes.CANNOT_USE_TOGETHER_WITH,
|
|
479
|
+
"data_hash_column' and 'data_order_column",
|
|
480
|
+
"is_local_order=False"),
|
|
481
|
+
MessageCodes.CANNOT_USE_TOGETHER_WITH)
|
|
482
|
+
|
|
483
|
+
# Either hash or partition can be used.
|
|
484
|
+
_Validators._validate_mutually_exclusive_arguments(self.data_hash_column,
|
|
485
|
+
"data_hash_column",
|
|
486
|
+
self.data_partition_column,
|
|
487
|
+
"data_partition_column",
|
|
488
|
+
skip_all_none_check=True)
|
|
489
|
+
|
|
490
|
+
# Either local order by or partition by can be used.
|
|
491
|
+
_Validators._validate_mutually_exclusive_arguments(self.is_local_order,
|
|
492
|
+
"is_local_order=True",
|
|
493
|
+
self.data_partition_column,
|
|
494
|
+
"data_partition_column",
|
|
495
|
+
skip_all_none_check=True)
|
|
496
|
+
|
|
497
|
+
# local order by requires column name.
|
|
498
|
+
if self.is_local_order and self.data_order_column is None:
|
|
499
|
+
message = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
|
|
500
|
+
"data_order_column", "is_local_order=True")
|
|
501
|
+
raise TeradataMlException(message, MessageCodes.DEPENDENT_ARG_MISSING)
|
|
502
|
+
|
|
503
|
+
if self.__awu._is_default_or_not(self.data_partition_column, "ANY"):
|
|
504
|
+
self.__awu._validate_dataframe_has_argument_columns(
|
|
505
|
+
self.data_partition_column, "data_partition_column", self.data, "data", True)
|
|
506
|
+
|
|
507
|
+
if self.data_order_column is not None:
|
|
508
|
+
self.__awu._validate_dataframe_has_argument_columns(
|
|
509
|
+
self.data_order_column, "data_order_column",self.data, "data", False)
|
|
510
|
+
|
|
511
|
+
if self.data_hash_column is not None:
|
|
512
|
+
self.__awu._validate_dataframe_has_argument_columns(
|
|
513
|
+
self.data_hash_column, "data_hash_column", self.data, "data", False)
|
|
514
|
+
|
|
515
|
+
if self.data_partition_column is not None:
|
|
516
|
+
self.__awu._validate_dataframe_has_argument_columns(
|
|
517
|
+
self.data_partition_column, "data_partition_column", self.data, "data", False)
|
|
518
|
+
|
|
519
|
+
# Check for length of the arguments "delimiter" and "quotechar".
|
|
520
|
+
if self.delimiter is not None:
|
|
521
|
+
_Validators._validate_str_arg_length('delimiter', self.delimiter, 'EQ', 1)
|
|
522
|
+
|
|
523
|
+
if self.quotechar is not None:
|
|
524
|
+
_Validators._validate_str_arg_length('quotechar', self.quotechar, 'EQ', 1)
|
|
525
|
+
|
|
526
|
+
# The arguments 'quotechar' and 'delimiter' cannot take newline character.
|
|
527
|
+
if self.delimiter == '\n':
|
|
528
|
+
message = Messages.get_message(MessageCodes.NOT_ALLOWED_VALUES, "\n", "delimiter")
|
|
529
|
+
raise TeradataMlException(message, MessageCodes.NOT_ALLOWED_VALUES)
|
|
530
|
+
if self.quotechar == '\n':
|
|
531
|
+
message = Messages.get_message(MessageCodes.NOT_ALLOWED_VALUES, "\n", "quotechar")
|
|
532
|
+
raise TeradataMlException(message, MessageCodes.NOT_ALLOWED_VALUES)
|
|
533
|
+
|
|
534
|
+
# The arguments 'quotechar' and 'delimiter' cannot have the same value.
|
|
535
|
+
if self.delimiter == self.quotechar:
|
|
536
|
+
message = Messages.get_message(MessageCodes.ARGUMENT_VALUE_SAME, "delimiter",
|
|
537
|
+
"quotechar")
|
|
538
|
+
raise TeradataMlException(message, MessageCodes.ARGUMENT_VALUE_SAME)
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
def set_data(self,
|
|
542
|
+
data,
|
|
543
|
+
data_partition_column=None,
|
|
544
|
+
data_hash_column=None,
|
|
545
|
+
data_order_column=None,
|
|
546
|
+
is_local_order=False,
|
|
547
|
+
sort_ascending=True,
|
|
548
|
+
nulls_first=True):
|
|
549
|
+
"""
|
|
550
|
+
DESCRIPTION:
|
|
551
|
+
Function enables user to set data and data related arguments without having to
|
|
552
|
+
re-create Script object.
|
|
553
|
+
|
|
554
|
+
PARAMETERS:
|
|
555
|
+
data:
|
|
556
|
+
Required Argument.
|
|
557
|
+
Specifies a teradataml DataFrame containing the input data for the script.
|
|
558
|
+
|
|
559
|
+
data_hash_column:
|
|
560
|
+
Optional Argument.
|
|
561
|
+
Specifies the column to be used for hashing.
|
|
562
|
+
The rows in the data are redistributed to AMPs based on the
|
|
563
|
+
hash value of the column specified.
|
|
564
|
+
The user installed script then runs once on each AMP.
|
|
565
|
+
If there is no data_partition_column, then the entire result set delivered
|
|
566
|
+
by the function, constitutes a single group or partition.
|
|
567
|
+
Types: str
|
|
568
|
+
Note:
|
|
569
|
+
"data_hash_column" can not be specified along with
|
|
570
|
+
"data_partition_column", "is_local_order" and "data_order_column".
|
|
571
|
+
|
|
572
|
+
data_partition_column:
|
|
573
|
+
Optional Argument.
|
|
574
|
+
Specifies Partition By columns for data.
|
|
575
|
+
Values to this argument can be provided as a list, if multiple
|
|
576
|
+
columns are used for partition.
|
|
577
|
+
Default Value: ANY
|
|
578
|
+
Types: str OR list of Strings (str)
|
|
579
|
+
Note:
|
|
580
|
+
1) "data_partition_column" can not be specified along with
|
|
581
|
+
"data_hash_column".
|
|
582
|
+
2) "data_partition_column" can not be specified along with
|
|
583
|
+
"is_local_order = True".
|
|
584
|
+
|
|
585
|
+
is_local_order:
|
|
586
|
+
Optional Argument.
|
|
587
|
+
Specifies a boolean value to determine whether the input data is to be
|
|
588
|
+
ordered locally or not. Order by specifies the order in which the
|
|
589
|
+
values in a group or partition are sorted. Local Order By specifies
|
|
590
|
+
orders qualified rows on each AMP in preparation to be input to a table
|
|
591
|
+
function. This argument is ignored, if "data_order_column" is None. When
|
|
592
|
+
set to True, data is ordered locally.
|
|
593
|
+
Default Value: False
|
|
594
|
+
Types: bool
|
|
595
|
+
Note:
|
|
596
|
+
1) "is_local_order" can not be specified along with
|
|
597
|
+
"data_hash_column".
|
|
598
|
+
2) When "is_local_order" is set to True, "data_order_column" should be
|
|
599
|
+
specified, and the columns specified in "data_order_column" are
|
|
600
|
+
used for local ordering.
|
|
601
|
+
|
|
602
|
+
data_order_column:
|
|
603
|
+
Optional Argument.
|
|
604
|
+
Specifies Order By columns for data.
|
|
605
|
+
Values to this argument can be provided as a list, if multiple
|
|
606
|
+
columns are used for ordering.
|
|
607
|
+
This argument is used in both cases:
|
|
608
|
+
"is_local_order = True" and "is_local_order = False".
|
|
609
|
+
Types: str OR list of Strings (str)
|
|
610
|
+
Note:
|
|
611
|
+
"data_order_column" can not be specified along with
|
|
612
|
+
"data_hash_column".
|
|
613
|
+
|
|
614
|
+
sort_ascending:
|
|
615
|
+
Optional Argument.
|
|
616
|
+
Specifies a boolean value to determine if the result set is to be sorted
|
|
617
|
+
on the column specified in "data_order_column", in ascending or descending
|
|
618
|
+
order.
|
|
619
|
+
The sorting is ascending when this argument is set to True, and descending
|
|
620
|
+
when set to False.
|
|
621
|
+
This argument is ignored, if "data_order_column" is None.
|
|
622
|
+
Default Value: True
|
|
623
|
+
Types: bool
|
|
624
|
+
|
|
625
|
+
nulls_first:
|
|
626
|
+
Optional Argument.
|
|
627
|
+
Specifies a boolean value to determine whether NULLS are listed first or
|
|
628
|
+
last during ordering.
|
|
629
|
+
This argument is ignored, if "data_order_column" is None.
|
|
630
|
+
NULLS are listed first when this argument is set to True, and
|
|
631
|
+
last when set to False.
|
|
632
|
+
Default Value: True
|
|
633
|
+
Types: bool
|
|
634
|
+
|
|
635
|
+
RETURNS:
|
|
636
|
+
None.
|
|
637
|
+
|
|
638
|
+
RAISES:
|
|
639
|
+
TeradataMlException
|
|
640
|
+
|
|
641
|
+
EXAMPLES:
|
|
642
|
+
# Note - Refer to User Guide for setting search path and required permissions.
|
|
643
|
+
# Load example data.
|
|
644
|
+
load_example_data("Script", ["barrier"])
|
|
645
|
+
|
|
646
|
+
# Example 1
|
|
647
|
+
# Create teradataml DataFrame objects.
|
|
648
|
+
>>> barrierdf = DataFrame.from_table("barrier")
|
|
649
|
+
>>> barrierdf
|
|
650
|
+
Name
|
|
651
|
+
Id
|
|
652
|
+
1 Old Macdonald Had A Farm
|
|
653
|
+
>>>
|
|
654
|
+
|
|
655
|
+
# Set SEARCHUIFDBPATH
|
|
656
|
+
>>> execute_sql("SET SESSION SEARCHUIFDBPATH = alice;")
|
|
657
|
+
>>> import teradataml
|
|
658
|
+
>>> from teradatasqlalchemy import VARCHAR
|
|
659
|
+
>>> td_path = os.path.dirname(teradataml.__file__)
|
|
660
|
+
|
|
661
|
+
# The script mapper.py reads in a line of text input
|
|
662
|
+
# ("Old Macdonald Had A Farm") from csv and
|
|
663
|
+
# splits the line into individual words, emitting a new row for each word.
|
|
664
|
+
# Create a Script object without data and its arguments.
|
|
665
|
+
>>> sto = Script(data = barrierdf,
|
|
666
|
+
... script_name='mapper.py',
|
|
667
|
+
... files_local_path= os.path.join(td_path,'data', 'scripts'),
|
|
668
|
+
... script_command='tdpython3 ./alice/mapper.py',
|
|
669
|
+
... charset='latin',
|
|
670
|
+
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
671
|
+
|
|
672
|
+
# Test script using data from file
|
|
673
|
+
>>> sto.test_script(input_data_file='../barrier.csv', data_file_delimiter=',')
|
|
674
|
+
############ STDOUT Output ############
|
|
675
|
+
word count_input
|
|
676
|
+
0 1 1
|
|
677
|
+
1 Old 1
|
|
678
|
+
2 Macdonald 1
|
|
679
|
+
3 Had 1
|
|
680
|
+
4 A 1
|
|
681
|
+
5 Farm 1
|
|
682
|
+
>>>
|
|
683
|
+
|
|
684
|
+
# Test script using data from DB.
|
|
685
|
+
>>> sto.test_script(password='alice')
|
|
686
|
+
############ STDOUT Output ############
|
|
687
|
+
|
|
688
|
+
word count_input
|
|
689
|
+
0 1 1
|
|
690
|
+
1 Old 1
|
|
691
|
+
2 Macdonald 1
|
|
692
|
+
3 Had 1
|
|
693
|
+
4 A 1
|
|
694
|
+
5 Farm 1
|
|
695
|
+
|
|
696
|
+
# Test script using data from DB and with data_row_limit.
|
|
697
|
+
>>> sto.test_script(password='alice', data_row_limit=5)
|
|
698
|
+
############ STDOUT Output ############
|
|
699
|
+
|
|
700
|
+
word count_input
|
|
701
|
+
0 1 1
|
|
702
|
+
1 Old 1
|
|
703
|
+
2 Macdonald 1
|
|
704
|
+
3 Had 1
|
|
705
|
+
4 A 1
|
|
706
|
+
5 Farm 1
|
|
707
|
+
|
|
708
|
+
# Now in order to test / run script on actual data on Vantage user must
|
|
709
|
+
# set data and related arguments.
|
|
710
|
+
# Note:
|
|
711
|
+
# All data related arguments that are not specified in set_data() are
|
|
712
|
+
# reset to default values.
|
|
713
|
+
>>> sto.set_data(data=barrierdf,
|
|
714
|
+
... data_order_column="Id",
|
|
715
|
+
... is_local_order=False,
|
|
716
|
+
... nulls_first=False,
|
|
717
|
+
... sort_ascending=False)
|
|
718
|
+
|
|
719
|
+
# Execute the user script on Vantage.
|
|
720
|
+
>>> sto.execute_script()
|
|
721
|
+
############ STDOUT Output ############
|
|
722
|
+
word count_input
|
|
723
|
+
0 Macdonald 1
|
|
724
|
+
1 A 1
|
|
725
|
+
2 Farm 1
|
|
726
|
+
3 Had 1
|
|
727
|
+
4 Old 1
|
|
728
|
+
5 1 1
|
|
729
|
+
|
|
730
|
+
# Example 2 -
|
|
731
|
+
# Input data is barrier_new and script is executed on Vantage.
|
|
732
|
+
# use set_data() to reset arguments.
|
|
733
|
+
# Create teradataml DataFrame objects.
|
|
734
|
+
>>> load_example_data("Script", ["barrier_new"])
|
|
735
|
+
>>> barrierdf_new = DataFrame.from_table("barrier_new")
|
|
736
|
+
>>> barrierdf_new
|
|
737
|
+
Name
|
|
738
|
+
Id
|
|
739
|
+
2 On his farm he had a cow
|
|
740
|
+
1 Old Macdonald Had A Farm
|
|
741
|
+
>>>
|
|
742
|
+
|
|
743
|
+
# Create a Script object that allows us to execute script on Vantage.
|
|
744
|
+
>>> sto = Script(data=barrierdf_new,
|
|
745
|
+
... script_name='mapper.py',
|
|
746
|
+
... files_local_path= os.path.join(td_path, 'data', 'scripts'),
|
|
747
|
+
... script_command='tdpython3 ./alice/mapper.py',
|
|
748
|
+
... data_order_column="Id",
|
|
749
|
+
... is_local_order=False,
|
|
750
|
+
... nulls_first=False,
|
|
751
|
+
... sort_ascending=False,
|
|
752
|
+
... charset='latin',
|
|
753
|
+
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
754
|
+
# Script is executed on Vantage.
|
|
755
|
+
>>> sto.execute_script()
|
|
756
|
+
############ STDOUT Output ############
|
|
757
|
+
word count_input
|
|
758
|
+
0 his 1
|
|
759
|
+
1 he 1
|
|
760
|
+
2 had 1
|
|
761
|
+
3 a 1
|
|
762
|
+
4 1 1
|
|
763
|
+
5 Old 1
|
|
764
|
+
6 cow 1
|
|
765
|
+
7 farm 1
|
|
766
|
+
8 On 1
|
|
767
|
+
9 2 1
|
|
768
|
+
|
|
769
|
+
# Now in order to run the script with a different dataset,
|
|
770
|
+
# user can use set_data().
|
|
771
|
+
# Re-set data and some data related parameters.
|
|
772
|
+
# Note:
|
|
773
|
+
# All data related arguments that are not specified in set_data() are
|
|
774
|
+
# reset to default values.
|
|
775
|
+
>>> sto.set_data(data=barrierdf,
|
|
776
|
+
... data_order_column='Id',
|
|
777
|
+
... is_local_order=True,
|
|
778
|
+
... nulls_first=True)
|
|
779
|
+
>>> sto.execute_script()
|
|
780
|
+
word count_input
|
|
781
|
+
0 Macdonald 1
|
|
782
|
+
1 A 1
|
|
783
|
+
2 Farm 1
|
|
784
|
+
3 Had 1
|
|
785
|
+
4 Old 1
|
|
786
|
+
5 1 1
|
|
787
|
+
|
|
788
|
+
# Example 3
|
|
789
|
+
# In order to run the script with same dataset but different data related
|
|
790
|
+
# arguments, use set_data() to reset arguments.
|
|
791
|
+
# Note:
|
|
792
|
+
# All data related arguments that are not specified in set_data() are
|
|
793
|
+
# reset to default values.
|
|
794
|
+
>>> sto.set_data(data=barrierdf_new,
|
|
795
|
+
... data_order_column='Id',
|
|
796
|
+
... is_local_order = True,
|
|
797
|
+
... nulls_first = True)
|
|
798
|
+
|
|
799
|
+
>>> sto.execute_script()
|
|
800
|
+
############ STDOUT Output ############
|
|
801
|
+
|
|
802
|
+
word count_input
|
|
803
|
+
0 Macdonald 1
|
|
804
|
+
1 A 1
|
|
805
|
+
2 Farm 1
|
|
806
|
+
3 2 1
|
|
807
|
+
4 his 1
|
|
808
|
+
5 farm 1
|
|
809
|
+
6 On 1
|
|
810
|
+
7 Had 1
|
|
811
|
+
8 Old 1
|
|
812
|
+
9 1 1
|
|
813
|
+
"""
|
|
814
|
+
super(Script, self).set_data(data,
|
|
815
|
+
data_partition_column,
|
|
816
|
+
data_hash_column,
|
|
817
|
+
data_order_column,
|
|
818
|
+
is_local_order,
|
|
819
|
+
sort_ascending,
|
|
820
|
+
nulls_first)
|
|
821
|
+
self.__validate()
|
|
822
|
+
|
|
823
|
+
def test_script(self, supporting_files=None, input_data_file=None, script_args="",
|
|
824
|
+
exec_mode ='local', **kwargs):
|
|
825
|
+
"""
|
|
826
|
+
DESCRIPTION:
|
|
827
|
+
Function enables user to run script locally outside Vantage.
|
|
828
|
+
Input data for user script is either read from a file or from database.
|
|
829
|
+
Note:
|
|
830
|
+
1. Purpose of test_script() function is to enable the user to test their scripts for any errors without
|
|
831
|
+
installing it on Vantage, using the input data provided.
|
|
832
|
+
2. Data is not partitioned for testing the script if read from input data file.
|
|
833
|
+
3. Function can produce different output if input is read from a file than input from database.
|
|
834
|
+
|
|
835
|
+
PARAMETERS:
|
|
836
|
+
supporting_files:
|
|
837
|
+
Optional Argument.
|
|
838
|
+
Specifies a file or list of supporting files like model files to be
|
|
839
|
+
copied to the container.
|
|
840
|
+
Types: string or list of str
|
|
841
|
+
|
|
842
|
+
input_data_file:
|
|
843
|
+
Optional Argument.
|
|
844
|
+
Specifies the name of the input data file.
|
|
845
|
+
It should have a path relative to the location specified in
|
|
846
|
+
"files_local_path" argument.
|
|
847
|
+
If set to None, read data from AMP, else from file passed in the argument
|
|
848
|
+
'input_data_file'.
|
|
849
|
+
File should have at least permissions of mode 644.
|
|
850
|
+
Types: str
|
|
851
|
+
|
|
852
|
+
script_args:
|
|
853
|
+
Optional Argument.
|
|
854
|
+
Specifies command line arguments required by the user script.
|
|
855
|
+
Types: str
|
|
856
|
+
|
|
857
|
+
exec_mode:
|
|
858
|
+
Optional Argument.
|
|
859
|
+
Specifies the mode in which user wants to test the script.
|
|
860
|
+
When set to 'local', the user script will run locally on user's system.
|
|
861
|
+
Permitted Values: 'local'
|
|
862
|
+
Default Value: 'local'
|
|
863
|
+
Types: str
|
|
864
|
+
|
|
865
|
+
kwargs:
|
|
866
|
+
Optional Argument.
|
|
867
|
+
Specifies the keyword arguments required for testing.
|
|
868
|
+
Keys can be:
|
|
869
|
+
data_row_limit:
|
|
870
|
+
Optional Argument. Ignored when data is read from file.
|
|
871
|
+
Specifies the number of rows to be taken from all amps when
|
|
872
|
+
reading from a table or view on Vantage.
|
|
873
|
+
Default Value: 1000
|
|
874
|
+
Types: int
|
|
875
|
+
|
|
876
|
+
password:
|
|
877
|
+
Optional Argument. Required when reading from database.
|
|
878
|
+
Specifies the password to connect to vantage where the data
|
|
879
|
+
resides.
|
|
880
|
+
Types: str
|
|
881
|
+
|
|
882
|
+
data_file_delimiter:
|
|
883
|
+
Optional Argument.
|
|
884
|
+
Specifies the delimiter used in the input data file. This
|
|
885
|
+
argument can be specified when data is read from file.
|
|
886
|
+
Default Value: '\t'
|
|
887
|
+
Types: str
|
|
888
|
+
|
|
889
|
+
data_file_header:
|
|
890
|
+
Optional Argument.
|
|
891
|
+
Specifies whether the input data file contains header. This
|
|
892
|
+
argument can be specified when data is read from file.
|
|
893
|
+
Default Value: True
|
|
894
|
+
Types: bool
|
|
895
|
+
|
|
896
|
+
data_file_quote_char:
|
|
897
|
+
Optional Argument.
|
|
898
|
+
Specifies the quotechar used in the input data file.
|
|
899
|
+
This argument can be specified when data is read from file.
|
|
900
|
+
Default Value: '"'
|
|
901
|
+
|
|
902
|
+
logmech:
|
|
903
|
+
Optional Argument.
|
|
904
|
+
Specifies the type of logon mechanism to establish a connection to
|
|
905
|
+
Teradata Vantage.
|
|
906
|
+
Permitted Values: 'TD2', 'TDNEGO', 'LDAP', 'KRB5' & 'JWT'.
|
|
907
|
+
TD2:
|
|
908
|
+
The Teradata 2 (TD2) mechanism provides authentication
|
|
909
|
+
using a Vantage username and password. This is the default
|
|
910
|
+
logon mechanism using which the connection is established
|
|
911
|
+
to Vantage.
|
|
912
|
+
|
|
913
|
+
TDNEGO:
|
|
914
|
+
A security mechanism that automatically determines the
|
|
915
|
+
actual mechanism required, based on policy, without user's
|
|
916
|
+
involvement. The actual mechanism is determined by the
|
|
917
|
+
TDGSS server configuration and by the security policy's
|
|
918
|
+
mechanism restrictions.
|
|
919
|
+
|
|
920
|
+
LDAP:
|
|
921
|
+
A directory-based user logon to Vantage with a directory
|
|
922
|
+
username and password and is authenticated by the directory.
|
|
923
|
+
|
|
924
|
+
KRB5 (Kerberos):
|
|
925
|
+
A directory-based user logon to Vantage with a domain
|
|
926
|
+
username and password and is authenticated by
|
|
927
|
+
Kerberos (KRB5 mechanism).
|
|
928
|
+
Note:
|
|
929
|
+
User must have a valid ticket-granting ticket in
|
|
930
|
+
order to use this logon mechanism.
|
|
931
|
+
|
|
932
|
+
JWT:
|
|
933
|
+
The JSON Web Token (JWT) authentication mechanism enables
|
|
934
|
+
single sign-on (SSO) to the Vantage after the user
|
|
935
|
+
successfully authenticates to Teradata UDA User Service.
|
|
936
|
+
Note:
|
|
937
|
+
User must use logdata parameter when using 'JWT' as
|
|
938
|
+
the logon mechanism.
|
|
939
|
+
Default Value: TD2
|
|
940
|
+
Types: str
|
|
941
|
+
|
|
942
|
+
Note:
|
|
943
|
+
teradataml expects the client environments are already setup with appropriate
|
|
944
|
+
security mechanisms and are in working conditions.
|
|
945
|
+
For more information please refer Teradata Vantage™ - Advanced SQL Engine
|
|
946
|
+
Security Administration at https://www.info.teradata.com/
|
|
947
|
+
|
|
948
|
+
logdata:
|
|
949
|
+
Optional Argument.
|
|
950
|
+
Specifies parameters to the LOGMECH command beyond those needed by
|
|
951
|
+
the logon mechanism, such as user ID, password and tokens
|
|
952
|
+
(in case of JWT) to successfully authenticate the user.
|
|
953
|
+
Types: str
|
|
954
|
+
|
|
955
|
+
Types: dict
|
|
956
|
+
|
|
957
|
+
RETURNS:
|
|
958
|
+
Output from user script.
|
|
959
|
+
|
|
960
|
+
RAISES:
|
|
961
|
+
TeradataMlException
|
|
962
|
+
|
|
963
|
+
EXAMPLES:
|
|
964
|
+
# Assumption - sto is Script() object. Please refer to help(Script)
|
|
965
|
+
# for creating Script object.
|
|
966
|
+
# Run user script in local mode with input from data file.
|
|
967
|
+
|
|
968
|
+
>>> sto.test_script(input_data_file='../barrier.csv',
|
|
969
|
+
... data_file_delimiter=',',
|
|
970
|
+
... data_file_quote_char='"',
|
|
971
|
+
... data_file_header=True,
|
|
972
|
+
... exec_mode='local')
|
|
973
|
+
|
|
974
|
+
############ STDOUT Output ############
|
|
975
|
+
word count_input
|
|
976
|
+
0 1 1
|
|
977
|
+
1 Old 1
|
|
978
|
+
2 Macdonald 1
|
|
979
|
+
3 Had 1
|
|
980
|
+
4 A 1
|
|
981
|
+
5 Farm 1
|
|
982
|
+
>>>
|
|
983
|
+
|
|
984
|
+
# Run user script in local mode with input from table.
|
|
985
|
+
>>> sto.test_script(data_row_limit=300, password='alice', exec_mode='local')
|
|
986
|
+
|
|
987
|
+
############ STDOUT Output ############
|
|
988
|
+
word count_input
|
|
989
|
+
0 1 1
|
|
990
|
+
1 Old 1
|
|
991
|
+
2 Macdonald 1
|
|
992
|
+
3 Had 1
|
|
993
|
+
4 A 1
|
|
994
|
+
5 Farm 1
|
|
995
|
+
|
|
996
|
+
"""
|
|
997
|
+
logmech_valid_values = ['TD2', 'TDNEGO', 'LDAP', 'KRB5', 'JWT']
|
|
998
|
+
|
|
999
|
+
awu_matrix_test=[]
|
|
1000
|
+
awu_matrix_test.append((["supporting_files", supporting_files, True,
|
|
1001
|
+
(str,list), True]))
|
|
1002
|
+
awu_matrix_test.append((["input_data_file", input_data_file, True, (str), True]))
|
|
1003
|
+
awu_matrix_test.append((["script_args", script_args, True, (str), False]))
|
|
1004
|
+
awu_matrix_test.append((["exec_mode", exec_mode, True, (str), True,
|
|
1005
|
+
[TableOperatorConstants.LOCAL_EXEC.value]]))
|
|
1006
|
+
|
|
1007
|
+
data_row_limit = kwargs.pop("data_row_limit", 1000)
|
|
1008
|
+
awu_matrix_test.append((["data_row_limit", data_row_limit, True, (int), True]))
|
|
1009
|
+
|
|
1010
|
+
data_file_delimiter = kwargs.pop("data_file_delimiter", '\t')
|
|
1011
|
+
awu_matrix_test.append((["data_file_delimiter", data_file_delimiter, True,
|
|
1012
|
+
(str), False]))
|
|
1013
|
+
|
|
1014
|
+
data_file_quote_char = kwargs.pop("data_file_quote_char", '"')
|
|
1015
|
+
awu_matrix_test.append((["data_file_quote_char", data_file_quote_char, True,
|
|
1016
|
+
(str), False]))
|
|
1017
|
+
|
|
1018
|
+
data_file_header = kwargs.pop("data_file_header", True)
|
|
1019
|
+
awu_matrix_test.append((["data_file_header", data_file_header, True, (bool)]))
|
|
1020
|
+
|
|
1021
|
+
logmech = kwargs.pop("logmech", "TD2")
|
|
1022
|
+
awu_matrix_test.append(
|
|
1023
|
+
["logmech", logmech, True, (str), True, logmech_valid_values])
|
|
1024
|
+
|
|
1025
|
+
logdata = kwargs.pop("logdata", None)
|
|
1026
|
+
awu_matrix_test.append(["logdata", logdata, True, (str), True])
|
|
1027
|
+
|
|
1028
|
+
# Validate argument types.
|
|
1029
|
+
_Validators._validate_function_arguments(awu_matrix_test)
|
|
1030
|
+
|
|
1031
|
+
self.__validate()
|
|
1032
|
+
self.__validate_for_reserved_keyword()
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
if logmech == "JWT" and not logdata:
|
|
1036
|
+
raise TeradataMlException(
|
|
1037
|
+
Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING, 'logdata',
|
|
1038
|
+
'logmech=JWT'),
|
|
1039
|
+
MessageCodes.DEPENDENT_ARG_MISSING)
|
|
1040
|
+
|
|
1041
|
+
if data_row_limit <= 0:
|
|
1042
|
+
raise ValueError(Messages.get_message(MessageCodes.TDMLDF_POSITIVE_INT).
|
|
1043
|
+
format("data_row_limit", "greater than"))
|
|
1044
|
+
|
|
1045
|
+
# Either of 'input_data_file' or 'password' argument is required.
|
|
1046
|
+
password = kwargs.pop("password", None)
|
|
1047
|
+
|
|
1048
|
+
# When exec_mode is local, the connection object is used to get the values in the table.
|
|
1049
|
+
if exec_mode == "local" and not (input_data_file or self.data):
|
|
1050
|
+
message = Messages.get_message(MessageCodes.EITHER_THIS_OR_THAT_ARGUMENT,
|
|
1051
|
+
"input_data_file", "Script data")
|
|
1052
|
+
raise TeradataMlException(message, MessageCodes.EITHER_THIS_OR_THAT_ARGUMENT)
|
|
1053
|
+
|
|
1054
|
+
if not self.script_name and self.files_local_path:
|
|
1055
|
+
message = Messages.get_message(MessageCodes.MISSING_ARGS,
|
|
1056
|
+
"script_name and files_local_path")
|
|
1057
|
+
raise TeradataMlException(message, MessageCodes.MISSING_ARGS)
|
|
1058
|
+
|
|
1059
|
+
if input_data_file:
|
|
1060
|
+
if self.files_local_path is None:
|
|
1061
|
+
message = Messages.get_message(MessageCodes.DEPENDENT_ARG_MISSING,
|
|
1062
|
+
"files_local_path","input_data_file")
|
|
1063
|
+
raise TeradataMlException(message, MessageCodes.DEPENDENT_ARG_MISSING)
|
|
1064
|
+
else:
|
|
1065
|
+
# Check if file exists.
|
|
1066
|
+
fpath = os.path.join(self.files_local_path,
|
|
1067
|
+
input_data_file)
|
|
1068
|
+
_Validators._validate_file_exists(fpath)
|
|
1069
|
+
|
|
1070
|
+
if self.script_name and self.files_local_path:
|
|
1071
|
+
# Check if file exists.
|
|
1072
|
+
fpath = os.path.join(self.files_local_path,
|
|
1073
|
+
os.path.basename(self.script_name))
|
|
1074
|
+
_Validators._validate_file_exists(fpath)
|
|
1075
|
+
|
|
1076
|
+
if exec_mode.upper() == TableOperatorConstants.LOCAL_EXEC.value:
|
|
1077
|
+
user_script_path = os.path.join(self.files_local_path, self.script_name)
|
|
1078
|
+
cmd = [str(sys.executable), user_script_path]
|
|
1079
|
+
cmd.extend(script_args)
|
|
1080
|
+
|
|
1081
|
+
if input_data_file is not None:
|
|
1082
|
+
input_file_path = os.path.join(self.files_local_path, input_data_file)
|
|
1083
|
+
|
|
1084
|
+
# Run user script locally with input from a file.
|
|
1085
|
+
exec_cmd_output = self.__local_run_user_script_input_file(
|
|
1086
|
+
cmd, input_file_path, data_file_delimiter, data_file_quote_char, data_file_header)
|
|
1087
|
+
try:
|
|
1088
|
+
return self.__process_test_script_output(exec_cmd_output)
|
|
1089
|
+
except Exception as exp:
|
|
1090
|
+
raise
|
|
1091
|
+
|
|
1092
|
+
else:
|
|
1093
|
+
if self.data.shape[0] > data_row_limit:
|
|
1094
|
+
raise ValueError(
|
|
1095
|
+
Messages.get_message(MessageCodes.DATAFRAME_LIMIT_ERROR,
|
|
1096
|
+
'data_row_limit', 'data_row_limit',
|
|
1097
|
+
data_row_limit))
|
|
1098
|
+
|
|
1099
|
+
if not self.data._table_name:
|
|
1100
|
+
self.data._table_name = df_utils._execute_node_return_db_object_name(
|
|
1101
|
+
self.data._nodeid, self.data._metaexpr)
|
|
1102
|
+
|
|
1103
|
+
table_name = UtilFuncs._extract_table_name(self.data._table_name)
|
|
1104
|
+
|
|
1105
|
+
# Run user script locally with input from db.
|
|
1106
|
+
exec_cmd_output = self.__local_run_user_script_input_db(cmd, table_name)
|
|
1107
|
+
try:
|
|
1108
|
+
return self.__process_test_script_output(exec_cmd_output)
|
|
1109
|
+
except Exception as exp:
|
|
1110
|
+
raise
|
|
1111
|
+
|
|
1112
|
+
def __local_run_user_script_input_file(self, cmd, input_file_path,
|
|
1113
|
+
data_file_delimiter='\t',
|
|
1114
|
+
data_file_quote_char='"',
|
|
1115
|
+
data_file_header=True):
|
|
1116
|
+
"""
|
|
1117
|
+
DESCRIPTION:
|
|
1118
|
+
Function to run the user script in local mode with input from file.
|
|
1119
|
+
|
|
1120
|
+
PARAMETERS:
|
|
1121
|
+
cmd:
|
|
1122
|
+
Required Argument.
|
|
1123
|
+
Specifies the command for running the user script.
|
|
1124
|
+
Types: str
|
|
1125
|
+
|
|
1126
|
+
input_file_path:
|
|
1127
|
+
Required Argument.
|
|
1128
|
+
Specifies the absolute local path of input data file.
|
|
1129
|
+
Types: str
|
|
1130
|
+
|
|
1131
|
+
data_file_delimiter:
|
|
1132
|
+
Optional Argument.
|
|
1133
|
+
Specifies the delimiter used in input data file.
|
|
1134
|
+
Default Value: '\t'
|
|
1135
|
+
Types: str
|
|
1136
|
+
|
|
1137
|
+
data_file_quote_char:
|
|
1138
|
+
Optional Argument.
|
|
1139
|
+
Specifies the quote character used in input data file.
|
|
1140
|
+
Default Value: '"'
|
|
1141
|
+
Types: str
|
|
1142
|
+
|
|
1143
|
+
data_file_header:
|
|
1144
|
+
Optional Argument.
|
|
1145
|
+
Specifies whether the input data file has header.
|
|
1146
|
+
Default Value: True
|
|
1147
|
+
Types: bool
|
|
1148
|
+
|
|
1149
|
+
RETURNS:
|
|
1150
|
+
The string output of the command that is run on input data file.
|
|
1151
|
+
|
|
1152
|
+
RAISES:
|
|
1153
|
+
Exception.
|
|
1154
|
+
|
|
1155
|
+
EXAMPLES:
|
|
1156
|
+
self.__local_run_user_script_input_file(cmd ="cmd",
|
|
1157
|
+
input_file_path = "input_file_path",
|
|
1158
|
+
data_file_delimiter = "data_file_delimiter",
|
|
1159
|
+
data_file_quote_char = "data_file_quote_char",
|
|
1160
|
+
data_file_header = True)
|
|
1161
|
+
|
|
1162
|
+
"""
|
|
1163
|
+
with open(input_file_path) as data_file:
|
|
1164
|
+
import csv
|
|
1165
|
+
from pandas import isna as pd_isna
|
|
1166
|
+
|
|
1167
|
+
data_handle = StringIO()
|
|
1168
|
+
|
|
1169
|
+
# Read data from input file.
|
|
1170
|
+
ip_data = csv.reader(data_file,
|
|
1171
|
+
delimiter=data_file_delimiter,
|
|
1172
|
+
quotechar=data_file_quote_char)
|
|
1173
|
+
# Skip the first row of input file if data_file_header is True.
|
|
1174
|
+
if data_file_header:
|
|
1175
|
+
next(ip_data)
|
|
1176
|
+
for row in ip_data:
|
|
1177
|
+
if self.quotechar is not None:
|
|
1178
|
+
# A NULL value should not be enclosed in quotes.
|
|
1179
|
+
# The CSV module has no support for such output with writer,
|
|
1180
|
+
# and hence the custom formatting.
|
|
1181
|
+
line = ['' if pd_isna(s) else "{}{}{}".format(self.quotechar,
|
|
1182
|
+
str(s),
|
|
1183
|
+
self.quotechar)
|
|
1184
|
+
for s in row]
|
|
1185
|
+
else:
|
|
1186
|
+
line = ['' if pd_isna(s) else str(s) for s in row]
|
|
1187
|
+
|
|
1188
|
+
complete_line = (self.delimiter.join(line))
|
|
1189
|
+
|
|
1190
|
+
data_handle.write(complete_line)
|
|
1191
|
+
data_handle.write("\n")
|
|
1192
|
+
|
|
1193
|
+
return self.__run_user_script_subprocess(cmd, data_handle)
|
|
1194
|
+
|
|
1195
|
+
def __local_run_user_script_input_db(self, cmd, table_name):
|
|
1196
|
+
"""
|
|
1197
|
+
DESCRIPTION:
|
|
1198
|
+
Function to run the user script in local mode with input from db.
|
|
1199
|
+
|
|
1200
|
+
PARAMETERS:
|
|
1201
|
+
cmd:
|
|
1202
|
+
Required Argument.
|
|
1203
|
+
Specifies the command for running the user script.
|
|
1204
|
+
Types: str
|
|
1205
|
+
|
|
1206
|
+
table_name:
|
|
1207
|
+
Required Argument.
|
|
1208
|
+
Specifies the table name for input to user script.
|
|
1209
|
+
Types: str
|
|
1210
|
+
|
|
1211
|
+
RETURNS:
|
|
1212
|
+
The string output of the command that is run on the Vantage table.
|
|
1213
|
+
|
|
1214
|
+
RAISES:
|
|
1215
|
+
Exception.
|
|
1216
|
+
|
|
1217
|
+
EXAMPLES:
|
|
1218
|
+
self.__local_run_user_script_input_db(cmd = "cmd", table_name = "table_name")
|
|
1219
|
+
|
|
1220
|
+
"""
|
|
1221
|
+
db_data_handle = StringIO()
|
|
1222
|
+
try:
|
|
1223
|
+
con = get_connection()
|
|
1224
|
+
# Query for reading data from DB.
|
|
1225
|
+
query = ("SELECT * FROM {} ORDER BY 1;".format(table_name))
|
|
1226
|
+
cur = execute_sql(query)
|
|
1227
|
+
row = cur.fetchone()
|
|
1228
|
+
from pandas import isna as pd_isna
|
|
1229
|
+
while row:
|
|
1230
|
+
if self.quotechar is not None:
|
|
1231
|
+
# A NULL value should not be enclosed in quotes.
|
|
1232
|
+
# The CSV module has no support for such output with writer,
|
|
1233
|
+
# and hence the custom formatting.
|
|
1234
|
+
line = ['' if pd_isna(s) else "{}{}{}".format(self.quotechar,
|
|
1235
|
+
str(s),
|
|
1236
|
+
self.quotechar)
|
|
1237
|
+
for s in row]
|
|
1238
|
+
else:
|
|
1239
|
+
line = ['' if pd_isna(s) else str(s) for s in row]
|
|
1240
|
+
|
|
1241
|
+
complete_line = (self.delimiter.join(line))
|
|
1242
|
+
db_data_handle.write(complete_line)
|
|
1243
|
+
db_data_handle.write("\n")
|
|
1244
|
+
row = cur.fetchone()
|
|
1245
|
+
except Exception as exp:
|
|
1246
|
+
raise exp
|
|
1247
|
+
|
|
1248
|
+
return self.__run_user_script_subprocess(cmd, db_data_handle)
|
|
1249
|
+
|
|
1250
|
+
def __process_test_script_output(self, exec_cmd_output):
|
|
1251
|
+
"""
|
|
1252
|
+
DESCRIPTION:
|
|
1253
|
+
Function to format the output of the user script.
|
|
1254
|
+
|
|
1255
|
+
PARAMETERS:
|
|
1256
|
+
exec_cmd_output:
|
|
1257
|
+
Required Argument.
|
|
1258
|
+
Specifies the output returned by the user script.
|
|
1259
|
+
Types: str
|
|
1260
|
+
|
|
1261
|
+
RETURNS:
|
|
1262
|
+
The test script output as Pandas DataFrame.
|
|
1263
|
+
|
|
1264
|
+
RAISES:
|
|
1265
|
+
Exception.
|
|
1266
|
+
|
|
1267
|
+
EXAMPLES:
|
|
1268
|
+
self.__process_test_script_output(exec_cmd_output = "exec_cmd_output")
|
|
1269
|
+
"""
|
|
1270
|
+
try:
|
|
1271
|
+
kwargs = dict()
|
|
1272
|
+
if self.quotechar is not None:
|
|
1273
|
+
kwargs['quotechar'] = self.quotechar
|
|
1274
|
+
kwargs['quoting'] = 1 # QUOTE_ALL
|
|
1275
|
+
|
|
1276
|
+
output = StringIO(exec_cmd_output)
|
|
1277
|
+
|
|
1278
|
+
from pandas import read_csv as pd_read_csv
|
|
1279
|
+
|
|
1280
|
+
# Form a pandas dataframe.
|
|
1281
|
+
df = pd_read_csv(output, sep=self.delimiter, index_col=False, header=None,
|
|
1282
|
+
names=list(self.returns.keys()), **kwargs)
|
|
1283
|
+
return df
|
|
1284
|
+
|
|
1285
|
+
except Exception as exp:
|
|
1286
|
+
raise exp
|
|
1287
|
+
|
|
1288
|
+
def __run_user_script_subprocess(self, cmd, data_handle):
|
|
1289
|
+
"""
|
|
1290
|
+
DESCRIPTION:
|
|
1291
|
+
Function to run the user script in a new process and return the output.
|
|
1292
|
+
|
|
1293
|
+
PARAMETERS:
|
|
1294
|
+
cmd:
|
|
1295
|
+
Required Argument.
|
|
1296
|
+
Specifies the command for running the script.
|
|
1297
|
+
Types: str
|
|
1298
|
+
|
|
1299
|
+
data_handle:
|
|
1300
|
+
Required Argument.
|
|
1301
|
+
Specifies the data handle for the input data required by the user script.
|
|
1302
|
+
|
|
1303
|
+
RETURNS:
|
|
1304
|
+
Output of user script on input data supplied in data_handle.
|
|
1305
|
+
|
|
1306
|
+
RAISES:
|
|
1307
|
+
None.
|
|
1308
|
+
|
|
1309
|
+
EXAMPLES:
|
|
1310
|
+
self.__run_user_script_subprocess(cmd = "exec_cmd_output",
|
|
1311
|
+
data_handle = data_handle)
|
|
1312
|
+
|
|
1313
|
+
"""
|
|
1314
|
+
# Launching new process to run the user script.
|
|
1315
|
+
try:
|
|
1316
|
+
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE,
|
|
1317
|
+
stdout=subprocess.PIPE,
|
|
1318
|
+
stderr=subprocess.PIPE)
|
|
1319
|
+
process_output, process_error = proc.communicate(data_handle.getvalue().encode())
|
|
1320
|
+
data_handle.close()
|
|
1321
|
+
|
|
1322
|
+
if proc.returncode == 0:
|
|
1323
|
+
return process_output.decode("utf-8").rstrip("\r|\n")
|
|
1324
|
+
else:
|
|
1325
|
+
message = Messages.get_message(MessageCodes.SCRIPT_LOCAL_RUN_ERROR).\
|
|
1326
|
+
format(process_error)
|
|
1327
|
+
raise TeradataMlException(message, MessageCodes.SCRIPT_LOCAL_RUN_ERROR)
|
|
1328
|
+
except Exception as e:
|
|
1329
|
+
raise e
|
|
1330
|
+
|
|
1331
|
+
def execute_script(self, output_style='VIEW'):
|
|
1332
|
+
"""
|
|
1333
|
+
DESCRIPTION:
|
|
1334
|
+
Function enables user to run script on Vantage.
|
|
1335
|
+
|
|
1336
|
+
PARAMETERS:
|
|
1337
|
+
output_style:
|
|
1338
|
+
Specifies the type of output object to create - a table or a view.
|
|
1339
|
+
Permitted Values: 'VIEW', 'TABLE'.
|
|
1340
|
+
Default value: 'VIEW'
|
|
1341
|
+
Types: str
|
|
1342
|
+
|
|
1343
|
+
RETURNS:
|
|
1344
|
+
Output teradataml DataFrames can be accessed using attribute
|
|
1345
|
+
references, such as ScriptObj.<attribute_name>.
|
|
1346
|
+
Output teradataml DataFrame attribute name is:
|
|
1347
|
+
result
|
|
1348
|
+
|
|
1349
|
+
RAISES:
|
|
1350
|
+
TeradataMlException, ValueError
|
|
1351
|
+
|
|
1352
|
+
EXAMPLES:
|
|
1353
|
+
Refer to help(Script)
|
|
1354
|
+
"""
|
|
1355
|
+
# Validate the output_style.
|
|
1356
|
+
permitted_values = [OutputStyle.OUTPUT_TABLE.value,
|
|
1357
|
+
OutputStyle.OUTPUT_VIEW.value]
|
|
1358
|
+
_Validators._validate_permitted_values(output_style, permitted_values,
|
|
1359
|
+
'output_style',
|
|
1360
|
+
case_insensitive=False, includeNone=False)
|
|
1361
|
+
|
|
1362
|
+
# Validate arguments.
|
|
1363
|
+
self.__validate()
|
|
1364
|
+
# Validating for reserved keywords.
|
|
1365
|
+
self.__validate_for_reserved_keyword()
|
|
1366
|
+
|
|
1367
|
+
# Generate the Table Operator query.
|
|
1368
|
+
self.__form_table_operator_query()
|
|
1369
|
+
|
|
1370
|
+
# Execute Table Operator query and return results.
|
|
1371
|
+
return self.__execute(output_style)
|
|
1372
|
+
|
|
1373
|
+
def install_file(self, file_identifier, file_name, is_binary = False,
|
|
1374
|
+
replace = False, force_replace = False):
|
|
1375
|
+
"""
|
|
1376
|
+
DESCRIPTION:
|
|
1377
|
+
Function to install script on Vantage.
|
|
1378
|
+
On success, prints a message that file is installed.
|
|
1379
|
+
This language script can be executed via execute_script() function.
|
|
1380
|
+
|
|
1381
|
+
PARAMETERS:
|
|
1382
|
+
file_identifier:
|
|
1383
|
+
Required Argument.
|
|
1384
|
+
Specifies the name associated with the user-installed file.
|
|
1385
|
+
It cannot have a schema name associated with it,
|
|
1386
|
+
as the file is always installed in the current schema.
|
|
1387
|
+
The name should be unique within the schema. It can be any valid Teradata
|
|
1388
|
+
identifier.
|
|
1389
|
+
Types: str
|
|
1390
|
+
|
|
1391
|
+
file_name:
|
|
1392
|
+
Required Argument:
|
|
1393
|
+
Specifies the name of the file user wnats to install.
|
|
1394
|
+
Types: str
|
|
1395
|
+
|
|
1396
|
+
is_binary:
|
|
1397
|
+
Optional Argument.
|
|
1398
|
+
Specifies if file to be installed is a binary file.
|
|
1399
|
+
Default Value: False
|
|
1400
|
+
Types: bool
|
|
1401
|
+
|
|
1402
|
+
replace:
|
|
1403
|
+
Optional Argument.
|
|
1404
|
+
Specifies if the file is to be installed or replaced.
|
|
1405
|
+
If set to True, then the file is replaced based on value the of
|
|
1406
|
+
force_replace.
|
|
1407
|
+
If set to False, then the file is installed.
|
|
1408
|
+
Default Value: False
|
|
1409
|
+
Types: bool
|
|
1410
|
+
|
|
1411
|
+
force_replace:
|
|
1412
|
+
Optional Argument.
|
|
1413
|
+
Specifies if system should check for the file being used before
|
|
1414
|
+
replacing it.
|
|
1415
|
+
If set to True, then the file is replaced even if it is being executed.
|
|
1416
|
+
If set to False, then an error is thrown if it is being executed.
|
|
1417
|
+
Default Value: False
|
|
1418
|
+
Types: bool
|
|
1419
|
+
|
|
1420
|
+
RETURNS:
|
|
1421
|
+
True, if success
|
|
1422
|
+
|
|
1423
|
+
RAISES:
|
|
1424
|
+
TeradataMLException.
|
|
1425
|
+
|
|
1426
|
+
EXAMPLES:
|
|
1427
|
+
# Note - Refer to User Guide for setting search path and required permissions.
|
|
1428
|
+
# Example 1: Install the file mapper.py found at the relative path
|
|
1429
|
+
# data/scripts/ using the default text mode.
|
|
1430
|
+
|
|
1431
|
+
# Set SEARCHUIFDBPATH.
|
|
1432
|
+
>>> execute_sql("SET SESSION SEARCHUIFDBPATH = alice;")
|
|
1433
|
+
|
|
1434
|
+
# Create a Script object that allows us to execute script on Vantage.
|
|
1435
|
+
>>> import os
|
|
1436
|
+
>>> from teradatasqlalchemy import VARCHAR
|
|
1437
|
+
>>> td_path = os.path.dirname(teradataml.__file__)
|
|
1438
|
+
>>> sto = Script(data=barrierdf,
|
|
1439
|
+
... script_name='mapper.py',
|
|
1440
|
+
... files_local_path= os.path.join(td_path, 'data', "scripts"),
|
|
1441
|
+
... script_command='tdpython3 ./alice/mapper.py',
|
|
1442
|
+
... data_order_column="Id",
|
|
1443
|
+
... is_local_order=False,
|
|
1444
|
+
... nulls_first=False,
|
|
1445
|
+
... sort_ascending=False,
|
|
1446
|
+
... charset='latin',
|
|
1447
|
+
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
1448
|
+
>>>
|
|
1449
|
+
|
|
1450
|
+
# Install file on Vantage.
|
|
1451
|
+
|
|
1452
|
+
>>> sto.install_file(file_identifier='mapper',
|
|
1453
|
+
... file_name='mapper.py',
|
|
1454
|
+
... is_binary=False)
|
|
1455
|
+
File mapper.py installed in Vantage
|
|
1456
|
+
|
|
1457
|
+
# Replace file on Vantage.
|
|
1458
|
+
>>> sto.install_file(file_identifier='mapper',
|
|
1459
|
+
... file_name='mapper.py',
|
|
1460
|
+
... is_binary=False,
|
|
1461
|
+
... replace=True,
|
|
1462
|
+
... force_replace=True)
|
|
1463
|
+
File mapper.py replaced in Vantage
|
|
1464
|
+
"""
|
|
1465
|
+
# Install/Replace file on Vantage.
|
|
1466
|
+
try:
|
|
1467
|
+
file_path = os.path.join(self.files_local_path, file_name)
|
|
1468
|
+
# Install file on Vantage.
|
|
1469
|
+
install_file(file_identifier=file_identifier, file_path=file_path,
|
|
1470
|
+
is_binary=is_binary,
|
|
1471
|
+
replace=replace, force_replace=force_replace)
|
|
1472
|
+
except:
|
|
1473
|
+
raise
|
|
1474
|
+
|
|
1475
|
+
def remove_file(self, file_identifier, force_remove=False):
|
|
1476
|
+
"""
|
|
1477
|
+
DESCRIPTION:
|
|
1478
|
+
Function to remove user installed files/scripts from Vantage.
|
|
1479
|
+
|
|
1480
|
+
PARAMETERS:
|
|
1481
|
+
file_identifier:
|
|
1482
|
+
Required Argument.
|
|
1483
|
+
Specifies the name associated with the user-installed file.
|
|
1484
|
+
It cannot have a database name associated with it,
|
|
1485
|
+
as the file is always installed in the current database.
|
|
1486
|
+
Types: str
|
|
1487
|
+
|
|
1488
|
+
force_remove:
|
|
1489
|
+
Required Argument.
|
|
1490
|
+
Specifies if system should check for the file being used before
|
|
1491
|
+
removing it.
|
|
1492
|
+
If set to True, then the file is removed even if it is being executed.
|
|
1493
|
+
If set to False, then an error is thrown if it is being executed.
|
|
1494
|
+
Default value: False
|
|
1495
|
+
Types: bool
|
|
1496
|
+
|
|
1497
|
+
RETURNS:
|
|
1498
|
+
True, if success.
|
|
1499
|
+
|
|
1500
|
+
RAISES:
|
|
1501
|
+
TeradataMLException.
|
|
1502
|
+
|
|
1503
|
+
EXAMPLES:
|
|
1504
|
+
# Note - Refer to User Guide for setting search path and required permissions.
|
|
1505
|
+
# Run install_file example before removing file.
|
|
1506
|
+
|
|
1507
|
+
# Set SEARCHUIFDBPATH.
|
|
1508
|
+
>>> execute_sql("SET SESSION SEARCHUIFDBPATH = alice;")
|
|
1509
|
+
|
|
1510
|
+
# Create a Script object that allows us to execute script on Vantage.
|
|
1511
|
+
>>> sto = Script(data=barrierdf,
|
|
1512
|
+
... script_name='mapper.py',
|
|
1513
|
+
... files_local_path= os.path.join(td_path, 'data', "scripts"),
|
|
1514
|
+
... script_command='tdpython3 ./alice/mapper.py',
|
|
1515
|
+
... data_order_column="Id",
|
|
1516
|
+
... is_local_order=False,
|
|
1517
|
+
... nulls_first=False,
|
|
1518
|
+
... sort_ascending=False,
|
|
1519
|
+
... charset='latin',
|
|
1520
|
+
... returns=OrderedDict([("word", VARCHAR(15)),("count_input", VARCHAR(2))]))
|
|
1521
|
+
>>>
|
|
1522
|
+
|
|
1523
|
+
# Install file on Vantage.
|
|
1524
|
+
>>> sto.install_file(file_identifier='mapper',
|
|
1525
|
+
... file_name='mapper.py',
|
|
1526
|
+
... is_binary=False,
|
|
1527
|
+
... replace=True,
|
|
1528
|
+
... force_replace=True)
|
|
1529
|
+
File mapper.py replaced in Vantage
|
|
1530
|
+
|
|
1531
|
+
# Remove the installed file.
|
|
1532
|
+
>>> sto.remove_file(file_identifier='mapper', force_remove=True)
|
|
1533
|
+
File mapper removed from Vantage
|
|
1534
|
+
|
|
1535
|
+
"""
|
|
1536
|
+
# Remove file from Vantage
|
|
1537
|
+
try:
|
|
1538
|
+
remove_file(file_identifier, force_remove)
|
|
1539
|
+
except:
|
|
1540
|
+
raise
|
|
1541
|
+
|
|
1542
|
+
def __form_table_operator_query(self):
|
|
1543
|
+
"""
|
|
1544
|
+
Function to generate the Table Operator queries. The function defines
|
|
1545
|
+
variables and list of arguments required to form the query.
|
|
1546
|
+
"""
|
|
1547
|
+
# Output table arguments list.
|
|
1548
|
+
self.__func_output_args_sql_names = []
|
|
1549
|
+
self.__func_output_args = []
|
|
1550
|
+
|
|
1551
|
+
# Generate lists for rest of the function arguments.
|
|
1552
|
+
self.__func_other_arg_sql_names = []
|
|
1553
|
+
self.__func_other_args = []
|
|
1554
|
+
self.__func_other_arg_json_datatypes = []
|
|
1555
|
+
|
|
1556
|
+
self.__func_other_arg_sql_names.append("SCRIPT_COMMAND")
|
|
1557
|
+
self.__func_other_args.append(
|
|
1558
|
+
UtilFuncs._teradata_collapse_arglist(self.script_command, "'"))
|
|
1559
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1560
|
+
|
|
1561
|
+
if self.delimiter is not None:
|
|
1562
|
+
self.__func_other_arg_sql_names.append("delimiter")
|
|
1563
|
+
self.__func_other_args.append(
|
|
1564
|
+
UtilFuncs._teradata_collapse_arglist(self.delimiter, "'"))
|
|
1565
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1566
|
+
|
|
1567
|
+
# Generate returns clause.
|
|
1568
|
+
ret_vals = []
|
|
1569
|
+
returns_clause = ''
|
|
1570
|
+
for key in self.returns.keys():
|
|
1571
|
+
ret_vals.append('{} {}'.format(key, self.returns[key].compile(td_dialect())))
|
|
1572
|
+
returns_clause = ', '.join(ret_vals)
|
|
1573
|
+
|
|
1574
|
+
self.__func_other_arg_sql_names.append("returns")
|
|
1575
|
+
self.__func_other_args.append(
|
|
1576
|
+
UtilFuncs._teradata_collapse_arglist(returns_clause, "'"))
|
|
1577
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1578
|
+
|
|
1579
|
+
if self.auth is not None:
|
|
1580
|
+
self.__func_other_arg_sql_names.append("auth")
|
|
1581
|
+
self.__func_other_args.append(
|
|
1582
|
+
UtilFuncs._teradata_collapse_arglist(self.auth, "'"))
|
|
1583
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1584
|
+
|
|
1585
|
+
if self.charset is not None:
|
|
1586
|
+
self.__func_other_arg_sql_names.append("charset")
|
|
1587
|
+
self.__func_other_args.append(
|
|
1588
|
+
UtilFuncs._teradata_collapse_arglist(self.charset, "'"))
|
|
1589
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1590
|
+
|
|
1591
|
+
if self.quotechar is not None:
|
|
1592
|
+
self.__func_other_arg_sql_names.append("quotechar")
|
|
1593
|
+
self.__func_other_args.append(
|
|
1594
|
+
UtilFuncs._teradata_collapse_arglist(self.quotechar, "'"))
|
|
1595
|
+
self.__func_other_arg_json_datatypes.append("STRING")
|
|
1596
|
+
|
|
1597
|
+
# Declare empty lists to hold input table information.
|
|
1598
|
+
self.__func_input_arg_sql_names = []
|
|
1599
|
+
self.__func_input_table_view_query = []
|
|
1600
|
+
self.__func_input_dataframe_type = []
|
|
1601
|
+
self.__func_input_distribution = []
|
|
1602
|
+
self.__func_input_partition_by_cols = []
|
|
1603
|
+
self.__func_input_order_by_cols = []
|
|
1604
|
+
self.__func_input_order_by_type = []
|
|
1605
|
+
self.__func_input_sort_ascending = self.sort_ascending
|
|
1606
|
+
self.__func_input_nulls_first = None
|
|
1607
|
+
|
|
1608
|
+
# Process data.
|
|
1609
|
+
if self.data is not None:
|
|
1610
|
+
data_distribution = "FACT"
|
|
1611
|
+
if self.data_hash_column is not None:
|
|
1612
|
+
data_distribution = "HASH"
|
|
1613
|
+
data_partition_column = UtilFuncs._teradata_collapse_arglist(
|
|
1614
|
+
self.data_hash_column, "\"")
|
|
1615
|
+
else:
|
|
1616
|
+
if self.__awu._is_default_or_not(self.data_partition_column, "ANY"):
|
|
1617
|
+
data_partition_column = UtilFuncs._teradata_collapse_arglist(
|
|
1618
|
+
self.data_partition_column, "\"")
|
|
1619
|
+
else:
|
|
1620
|
+
data_partition_column = None
|
|
1621
|
+
if self.data_order_column is not None:
|
|
1622
|
+
if self.is_local_order:
|
|
1623
|
+
self.__func_input_order_by_type.append("LOCAL")
|
|
1624
|
+
if not self.data_hash_column:
|
|
1625
|
+
data_distribution = None
|
|
1626
|
+
else:
|
|
1627
|
+
self.__func_input_order_by_type.append(None)
|
|
1628
|
+
self.__func_input_order_by_cols.append(
|
|
1629
|
+
UtilFuncs._teradata_collapse_arglist(self.data_order_column, "\""))
|
|
1630
|
+
else:
|
|
1631
|
+
self.__func_input_order_by_type.append(None)
|
|
1632
|
+
self.__func_input_order_by_cols.append("NA_character_")
|
|
1633
|
+
|
|
1634
|
+
self.__table_ref = self.__awu._teradata_on_clause_from_dataframe(self.data,
|
|
1635
|
+
False)
|
|
1636
|
+
self.__func_input_distribution.append(data_distribution)
|
|
1637
|
+
self.__func_input_arg_sql_names.append("input")
|
|
1638
|
+
self.__func_input_table_view_query.append(self.__table_ref["ref"])
|
|
1639
|
+
self.__func_input_dataframe_type.append(self.__table_ref["ref_type"])
|
|
1640
|
+
self.__func_input_partition_by_cols.append(data_partition_column)
|
|
1641
|
+
self.__func_input_nulls_first = self.nulls_first
|
|
1642
|
+
|
|
1643
|
+
function_name = "Script"
|
|
1644
|
+
# Create instance to generate Table Operator Query.
|
|
1645
|
+
aqg_obj = TableOperatorQueryGenerator(function_name,
|
|
1646
|
+
self.__func_input_arg_sql_names,
|
|
1647
|
+
self.__func_input_table_view_query,
|
|
1648
|
+
self.__func_input_dataframe_type,
|
|
1649
|
+
self.__func_input_distribution,
|
|
1650
|
+
self.__func_input_partition_by_cols,
|
|
1651
|
+
self.__func_input_order_by_cols,
|
|
1652
|
+
self.__func_other_arg_sql_names,
|
|
1653
|
+
self.__func_other_args,
|
|
1654
|
+
self.__func_other_arg_json_datatypes,
|
|
1655
|
+
self.__func_output_args_sql_names,
|
|
1656
|
+
self.__func_output_args,
|
|
1657
|
+
self.__func_input_order_by_type,
|
|
1658
|
+
self.__func_input_sort_ascending,
|
|
1659
|
+
self.__func_input_nulls_first,
|
|
1660
|
+
engine="ENGINE_SQL"
|
|
1661
|
+
)
|
|
1662
|
+
|
|
1663
|
+
# Invoke call to Table operator query generation.
|
|
1664
|
+
self._tblop_query = aqg_obj._gen_table_operator_select_stmt_sql()
|
|
1665
|
+
|
|
1666
|
+
# Print Table Operator query if requested to do so.
|
|
1667
|
+
if display.print_sqlmr_query:
|
|
1668
|
+
print(self._tblop_query)
|
|
1669
|
+
|
|
1670
|
+
def __execute(self, output_style='VIEW'):
|
|
1671
|
+
"""
|
|
1672
|
+
DESCRIPTION:
|
|
1673
|
+
Function to execute Table Operator queries.
|
|
1674
|
+
Create DataFrames for the required Table Operator output.
|
|
1675
|
+
|
|
1676
|
+
PARAMETERS:
|
|
1677
|
+
output_style:
|
|
1678
|
+
Specifies the type of output object to create - a table of a view.
|
|
1679
|
+
Permitted Values: 'VIEW', 'TABLE'.
|
|
1680
|
+
Default value: 'VIEW'
|
|
1681
|
+
Types: str
|
|
1682
|
+
|
|
1683
|
+
RAISES:
|
|
1684
|
+
None.
|
|
1685
|
+
|
|
1686
|
+
RETURNS:
|
|
1687
|
+
None.
|
|
1688
|
+
|
|
1689
|
+
EXAMPLES:
|
|
1690
|
+
>>> return self.__execute(output_style)
|
|
1691
|
+
"""
|
|
1692
|
+
# Generate STDOUT table name and add it to the output table list.
|
|
1693
|
+
if output_style == OutputStyle.OUTPUT_TABLE.value:
|
|
1694
|
+
table_type = TeradataConstants.TERADATA_TABLE
|
|
1695
|
+
else:
|
|
1696
|
+
table_type = TeradataConstants.TERADATA_VIEW
|
|
1697
|
+
|
|
1698
|
+
tblop_stdout_temp_tablename = \
|
|
1699
|
+
UtilFuncs._generate_temp_table_name(prefix="td_tblop_out_",
|
|
1700
|
+
use_default_database=True,
|
|
1701
|
+
gc_on_quit=True, quote=False,
|
|
1702
|
+
table_type=table_type)
|
|
1703
|
+
try:
|
|
1704
|
+
if output_style == OutputStyle.OUTPUT_TABLE.value:
|
|
1705
|
+
UtilFuncs._create_table(tblop_stdout_temp_tablename, self._tblop_query)
|
|
1706
|
+
else:
|
|
1707
|
+
UtilFuncs._create_view(tblop_stdout_temp_tablename, self._tblop_query)
|
|
1708
|
+
except Exception as emsg:
|
|
1709
|
+
raise TeradataMlException(
|
|
1710
|
+
Messages.get_message(MessageCodes.TDMLDF_EXEC_SQL_FAILED, str(emsg)),
|
|
1711
|
+
MessageCodes.TDMLDF_EXEC_SQL_FAILED)
|
|
1712
|
+
|
|
1713
|
+
self.result = self.__awu._create_data_set_object(
|
|
1714
|
+
df_input=UtilFuncs._extract_table_name(tblop_stdout_temp_tablename),
|
|
1715
|
+
source_type="table",
|
|
1716
|
+
database_name=UtilFuncs._extract_db_name(tblop_stdout_temp_tablename))
|
|
1717
|
+
|
|
1718
|
+
return self.result
|