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,1510 +1,491 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Copyright (c) 2020 by Teradata Corporation. All rights reserved.
|
|
3
|
-
TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
|
|
4
|
-
|
|
5
|
-
Primary Owner: Rohit.Khurd@teradata.com
|
|
6
|
-
Secondary Owner:
|
|
7
|
-
|
|
8
|
-
teradataml Model Cataloging utilities
|
|
9
|
-
-------------------------------------
|
|
10
|
-
The teradataml Model Cataloging utility functions provide internal utilities that
|
|
11
|
-
the Model Cataloging APIs make use of.
|
|
12
|
-
"""
|
|
13
|
-
import importlib
|
|
14
|
-
import warnings
|
|
15
|
-
import pandas as pd
|
|
16
|
-
import re
|
|
17
|
-
|
|
18
|
-
from teradataml.common.constants import ModelCatalogingConstants as mac,\
|
|
19
|
-
FunctionArgumentMapperConstants as famc
|
|
20
|
-
from teradataml.common.constants import TeradataConstants
|
|
21
|
-
from teradataml.common.exceptions import TeradataMlException
|
|
22
|
-
from teradataml.common.utils import UtilFuncs
|
|
23
|
-
from teradataml.common.messagecodes import MessageCodes
|
|
24
|
-
from teradataml.common.messages import Messages
|
|
25
|
-
from teradataml.context.context import get_connection, get_context, _get_current_databasename
|
|
26
|
-
from teradataml.dataframe.dataframe_utils import DataFrameUtils as df_utils
|
|
27
|
-
from teradataml.catalog.function_argument_mapper import _argument_mapper
|
|
28
|
-
from teradataml.common.sqlbundle import SQLBundle
|
|
29
|
-
from teradataml.utils.utils import execute_sql
|
|
30
|
-
from teradatasqlalchemy import CLOB
|
|
31
|
-
from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
|
|
32
|
-
from sqlalchemy.sql.expression import select, case as case_when
|
|
33
|
-
from sqlalchemy import func
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name):
|
|
37
|
-
"""
|
|
38
|
-
DESCRIPTION:
|
|
39
|
-
Internal function to find SQL equivalent name for given teradataml name.
|
|
40
|
-
|
|
41
|
-
PARAMETERS:
|
|
42
|
-
function_arg_map:
|
|
43
|
-
Required Argument.
|
|
44
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
45
|
-
Types: dict
|
|
46
|
-
|
|
47
|
-
arg_type:
|
|
48
|
-
Required Argument.
|
|
49
|
-
Specifies a string representing the type of lookup, one of the keys in the function argument map.
|
|
50
|
-
Acceptable values: 'arguments', 'inputs', 'outputs'
|
|
51
|
-
Types: str
|
|
52
|
-
|
|
53
|
-
name:
|
|
54
|
-
Required Argument.
|
|
55
|
-
Specifies the teradataml input, output, or argument name to lookup.
|
|
56
|
-
Types: str
|
|
57
|
-
|
|
58
|
-
RETURNS:
|
|
59
|
-
A String representing the SQL equivalent name for the teradataml name passed as input.
|
|
60
|
-
|
|
61
|
-
EXAMPLES:
|
|
62
|
-
>>> sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name)
|
|
63
|
-
"""
|
|
64
|
-
if name in function_arg_map[arg_type][famc.TDML_TO_SQL.value]:
|
|
65
|
-
sql_name = function_arg_map[arg_type][famc.TDML_TO_SQL.value][name]
|
|
66
|
-
|
|
67
|
-
if isinstance(sql_name, dict):
|
|
68
|
-
sql_name = sql_name[famc.TDML_NAME.value]
|
|
69
|
-
|
|
70
|
-
if isinstance(sql_name, list):
|
|
71
|
-
sql_name = sql_name[0]
|
|
72
|
-
|
|
73
|
-
return sql_name
|
|
74
|
-
|
|
75
|
-
# No SQL name found for given teradataml input name
|
|
76
|
-
return None
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name):
|
|
80
|
-
"""
|
|
81
|
-
DESCRIPTION:
|
|
82
|
-
Internal function to find teradataml equivalent name and type, if any, for given SQL name.
|
|
83
|
-
|
|
84
|
-
PARAMETERS:
|
|
85
|
-
function_arg_map:
|
|
86
|
-
Required Argument.
|
|
87
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
88
|
-
Types: dict
|
|
89
|
-
|
|
90
|
-
arg_type:
|
|
91
|
-
Required Argument.
|
|
92
|
-
Specifies a string representing the type of lookup, one of the keys in the function argument map.
|
|
93
|
-
Acceptable values: 'arguments', 'inputs', 'outputs'
|
|
94
|
-
Types: str
|
|
95
|
-
|
|
96
|
-
name:
|
|
97
|
-
Required Argument.
|
|
98
|
-
Specifies the SQL input, output, or argument name to lookup.
|
|
99
|
-
Types: str
|
|
100
|
-
|
|
101
|
-
RETURNS:
|
|
102
|
-
* A String representing the teradataml equivalent name for the SQL name when arg_type
|
|
103
|
-
is 'inputs' or 'outputs'.
|
|
104
|
-
* A dictionary with tdml_name and tdml_type for the SQL name when arg_type
|
|
105
|
-
is 'arguments'.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
EXAMPLES:
|
|
109
|
-
>>> tdml_name = __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name)
|
|
110
|
-
"""
|
|
111
|
-
if name in function_arg_map[arg_type][famc.SQL_TO_TDML.value]:
|
|
112
|
-
tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name]
|
|
113
|
-
|
|
114
|
-
# Check for alternate names.
|
|
115
|
-
if isinstance(tdml_name, dict) and famc.ALTERNATE_TO.value in tdml_name:
|
|
116
|
-
alternate_to = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name][
|
|
117
|
-
famc.ALTERNATE_TO.value]
|
|
118
|
-
tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][alternate_to]
|
|
119
|
-
|
|
120
|
-
if isinstance(tdml_name, list):
|
|
121
|
-
tdml_name = tdml_name[0]
|
|
122
|
-
|
|
123
|
-
return tdml_name
|
|
124
|
-
|
|
125
|
-
# No teradataml name found for given teradataml input name
|
|
126
|
-
return None
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
def __get_model_inputs_outputs(model, function_arg_map):
|
|
130
|
-
"""
|
|
131
|
-
DESCRIPTION:
|
|
132
|
-
Internal function to get input and output information of the model to be saved.
|
|
133
|
-
|
|
134
|
-
PARAMETERS:
|
|
135
|
-
model:
|
|
136
|
-
Required Argument.
|
|
137
|
-
The model (analytic function object instance) to be saved.
|
|
138
|
-
Types: teradataml Analytic Function object
|
|
139
|
-
|
|
140
|
-
function_arg_map:
|
|
141
|
-
Required Argument.
|
|
142
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
143
|
-
Types: dict
|
|
144
|
-
|
|
145
|
-
RETURNS:
|
|
146
|
-
A tuple of two dictionaries, and a list:
|
|
147
|
-
* The first containing input information.
|
|
148
|
-
* The second containing output information.
|
|
149
|
-
* The list containing names of tables to remove entries from GC for.
|
|
150
|
-
|
|
151
|
-
EXAMPLE:
|
|
152
|
-
>>> inputs, outputs, tables_to_not_gc = __get_model_inputs_outputs(model, function_arg_map)
|
|
153
|
-
"""
|
|
154
|
-
input_json = {}
|
|
155
|
-
output_json = {}
|
|
156
|
-
remove_tables_entries_from_gc = []
|
|
157
|
-
|
|
158
|
-
# First, let's identify the output DataFrames
|
|
159
|
-
output_tables = [df._table_name for df in model._mlresults]
|
|
160
|
-
|
|
161
|
-
for key in model.__dict__:
|
|
162
|
-
if not key.startswith('_'):
|
|
163
|
-
member = getattr(model, key)
|
|
164
|
-
# The DataFrame is input if it is not output
|
|
165
|
-
if isinstance(member, DataFrame):
|
|
166
|
-
if member._table_name not in output_tables:
|
|
167
|
-
# Populate the input dictionary
|
|
168
|
-
# We construct a dictionary of the following form:
|
|
169
|
-
# { "<schema_name> :
|
|
170
|
-
# { "<table_name>" :
|
|
171
|
-
# { "nrows": <num_rows>,
|
|
172
|
-
# "ncols": <num_cols>,
|
|
173
|
-
# "input_name": <SQL name for the input>,
|
|
174
|
-
# "client_specific_input_name": <tdml name for the input>
|
|
175
|
-
# },
|
|
176
|
-
# ...
|
|
177
|
-
# }
|
|
178
|
-
# }
|
|
179
|
-
tdp = preparer(td_dialect)
|
|
180
|
-
nrows, ncols = member.shape
|
|
181
|
-
db_schema = UtilFuncs._extract_db_name(member._table_name)
|
|
182
|
-
# Add quotes around the DB name in case we are getting it using _get_current_databasename()
|
|
183
|
-
db_schema = tdp.quote(_get_current_databasename()) if db_schema is None else db_schema
|
|
184
|
-
db_table_name = UtilFuncs._extract_table_name(member._table_name)
|
|
185
|
-
|
|
186
|
-
if db_schema not in input_json:
|
|
187
|
-
input_json[db_schema] = {}
|
|
188
|
-
input_json[db_schema][db_table_name] = {}
|
|
189
|
-
input_json[db_schema][db_table_name]["nrows"] = int(nrows)
|
|
190
|
-
input_json[db_schema][db_table_name]["ncols"] = ncols
|
|
191
|
-
input_json[db_schema][db_table_name]["input_name"] = __get_arg_sql_name_from_tdml(function_arg_map,
|
|
192
|
-
arg_type=famc.INPUTS.value,
|
|
193
|
-
name=key)
|
|
194
|
-
input_json[db_schema][db_table_name]["client_specific_input_name"] = key
|
|
195
|
-
else:
|
|
196
|
-
# Populate the output dictionary
|
|
197
|
-
# We construct a dictionary of the following form:
|
|
198
|
-
# { "<Output SQL Name> :
|
|
199
|
-
# { "table_name": "<Database qualified name of the table>",
|
|
200
|
-
# "client_specific_name": "<TDML specific name of the output>"
|
|
201
|
-
# },
|
|
202
|
-
# ...
|
|
203
|
-
# }
|
|
204
|
-
|
|
205
|
-
# teradataml Analytic functions models can be of two types:
|
|
206
|
-
# 1. Non-lazy OR
|
|
207
|
-
# 2. Lazy
|
|
208
|
-
# When model is non-lazy, that means model tables are already present/created on the system.
|
|
209
|
-
# When model is lazy, it may happen that model tables are yet to be evaluated/created.
|
|
210
|
-
# So first, let's make sure that model is evaluated, i.e., model tables are created,
|
|
211
|
-
# if they are not created already.
|
|
212
|
-
#
|
|
213
|
-
if member._table_name is None:
|
|
214
|
-
member._table_name = df_utils._execute_node_return_db_object_name(member._nodeid,
|
|
215
|
-
member._metaexpr)
|
|
216
|
-
output_table_name = member._table_name
|
|
217
|
-
if __is_view(output_table_name):
|
|
218
|
-
# If output table is not of type table, which means it's a view.
|
|
219
|
-
# So instead of using view name for persisting, we must materialize the same.
|
|
220
|
-
#
|
|
221
|
-
# To do so, let's just generate another temporary table name. One can notice, when
|
|
222
|
-
# we generate the temporary table name, we set the following flag 'gc_on_quit=True'.
|
|
223
|
-
# One can say, why to mark it for GC, when we are going to persist it.
|
|
224
|
-
# Only reason we added it for GC, so that, if in case anything goes wrong from the point
|
|
225
|
-
# we create the table to the end of the model saving, later this will be GC'ed as
|
|
226
|
-
# model saving had failed. Later we remove entry from GC, when model info is saved in
|
|
227
|
-
# MC tables and model is persisted in table.
|
|
228
|
-
#
|
|
229
|
-
output_table_name = UtilFuncs._generate_temp_table_name(prefix="td_saved_model_",
|
|
230
|
-
use_default_database=True,
|
|
231
|
-
gc_on_quit=True, quote=False,
|
|
232
|
-
table_type=TeradataConstants.TERADATA_TABLE)
|
|
233
|
-
|
|
234
|
-
base_query = SQLBundle._build_base_query(member._table_name)
|
|
235
|
-
crt_table_query = SQLBundle._build_create_table_with_data(output_table_name, base_query)
|
|
236
|
-
UtilFuncs._execute_ddl_statement(crt_table_query)
|
|
237
|
-
|
|
238
|
-
# Append the name of the table to remove entry from GC.
|
|
239
|
-
remove_tables_entries_from_gc.append(output_table_name)
|
|
240
|
-
|
|
241
|
-
sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.OUTPUTS.value, name=key)
|
|
242
|
-
output_json[sql_name] = {}
|
|
243
|
-
output_json[sql_name]["table_name"] = output_table_name
|
|
244
|
-
output_json[sql_name]["client_specific_name"] = key
|
|
245
|
-
|
|
246
|
-
return input_json, output_json, remove_tables_entries_from_gc
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
def __check_if_client_specific_use(key, function_arg_map, is_sql_name=False):
|
|
250
|
-
"""
|
|
251
|
-
DESCRIPTION:
|
|
252
|
-
Internal function to check if the argument corresponds to a client-only specific argument.
|
|
253
|
-
|
|
254
|
-
PARAMETERS:
|
|
255
|
-
key:
|
|
256
|
-
Required Argument.
|
|
257
|
-
The teradataml or SQL argument name to check for.
|
|
258
|
-
Types: str
|
|
259
|
-
|
|
260
|
-
function_arg_map:
|
|
261
|
-
Required Argument.
|
|
262
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
263
|
-
Types: dict
|
|
264
|
-
|
|
265
|
-
is_sql_name:
|
|
266
|
-
Optional Argument.
|
|
267
|
-
Specifies a boolean value indicating whether the key is a SQL or teradataml key.
|
|
268
|
-
Types: bool
|
|
269
|
-
Default Value: False
|
|
270
|
-
|
|
271
|
-
RETURNS:
|
|
272
|
-
A tuple containing:
|
|
273
|
-
* A boolean value indicating whether the argument is or has:
|
|
274
|
-
- a client-only specific argument: True
|
|
275
|
-
- else False
|
|
276
|
-
* A string specifying whether it is used in sequence_column ('used_in_sequence_by') or formula ('used_in_formula')
|
|
277
|
-
|
|
278
|
-
EXAMPLES:
|
|
279
|
-
>>> client_only, where_used = __check_if_client_specific_use(key, function_arg_map, is_sql_name=False)
|
|
280
|
-
"""
|
|
281
|
-
# Let's assume SQL Name was passed
|
|
282
|
-
sql_name = key
|
|
283
|
-
|
|
284
|
-
if not is_sql_name:
|
|
285
|
-
if key in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
|
|
286
|
-
sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.ARGUMENTS.value, name=key)
|
|
287
|
-
else:
|
|
288
|
-
# No SQL name found for given teradataml input name
|
|
289
|
-
return False, None
|
|
290
|
-
|
|
291
|
-
if isinstance(sql_name, dict):
|
|
292
|
-
sql_name = sql_name[famc.TDML_NAME.value]
|
|
293
|
-
|
|
294
|
-
if isinstance(sql_name, list):
|
|
295
|
-
sql_name = sql_name[0]
|
|
296
|
-
|
|
297
|
-
# Check if SQL name is an alternate name
|
|
298
|
-
sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name]
|
|
299
|
-
if famc.ALTERNATE_TO.value in sql_block:
|
|
300
|
-
alternate_to = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.ALTERNATE_TO.value]
|
|
301
|
-
sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_to]
|
|
302
|
-
|
|
303
|
-
# Check and return boolean indicating if it is a formula or sequence_input_by argument
|
|
304
|
-
if famc.USED_IN_SEQUENCE_INPUT_BY.value in sql_block:
|
|
305
|
-
return True, famc.USED_IN_SEQUENCE_INPUT_BY.value
|
|
306
|
-
elif famc.USED_IN_FORMULA.value in sql_block:
|
|
307
|
-
return True, famc.USED_IN_FORMULA.value
|
|
308
|
-
else:
|
|
309
|
-
return False, None
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
"""
|
|
314
|
-
DESCRIPTION:
|
|
315
|
-
Internal function to
|
|
316
|
-
|
|
317
|
-
PARAMETERS:
|
|
318
|
-
|
|
319
|
-
Required
|
|
320
|
-
|
|
321
|
-
Types:
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
|
|
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
|
-
RAISES:
|
|
494
|
-
None.
|
|
495
|
-
|
|
496
|
-
RETURNS:
|
|
497
|
-
True, if the view exists, else False.
|
|
498
|
-
|
|
499
|
-
EXAMPLES:
|
|
500
|
-
>>> __check_if_model_cataloging_tables_exists()
|
|
501
|
-
"""
|
|
502
|
-
# Get current connection().
|
|
503
|
-
conn = get_connection()
|
|
504
|
-
|
|
505
|
-
# Check whether tables exists on the system or not.
|
|
506
|
-
model_table_exists = conn.dialect.has_view(conn, view_name=mac.MODELS.value,
|
|
507
|
-
schema=mac.MODEL_CATALOG_DB.value)
|
|
508
|
-
|
|
509
|
-
# If both tables exist, return True.
|
|
510
|
-
if model_table_exists:
|
|
511
|
-
return True
|
|
512
|
-
|
|
513
|
-
# We are here means the Model Cataloging view does not exist.
|
|
514
|
-
# Let's raise error if 'raise_error_if_does_not_exists' set to True.
|
|
515
|
-
if raise_error_if_does_not_exists:
|
|
516
|
-
# Raise error, as one or both Model Cataloging tables does not exist.
|
|
517
|
-
# MODEL_CATALOGING_TABLE_DOES_EXIST
|
|
518
|
-
raise TeradataMlException(
|
|
519
|
-
Messages.get_message(MessageCodes.MODEL_CATALOGING_TABLE_DOES_EXIST),
|
|
520
|
-
MessageCodes.MODEL_CATALOGING_TABLE_DOES_EXIST)
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
def __get_tables_for_model(name, current_user):
|
|
524
|
-
"""
|
|
525
|
-
DESCRIPTION:
|
|
526
|
-
Function to get model tables for a given model name.
|
|
527
|
-
|
|
528
|
-
PARAMETERS:
|
|
529
|
-
name:
|
|
530
|
-
Required Argument.
|
|
531
|
-
Specifies the name of the model to get the model tables for.
|
|
532
|
-
Types: str
|
|
533
|
-
|
|
534
|
-
current_user:
|
|
535
|
-
Required Argument.
|
|
536
|
-
Specifies the name of the current Vantage user.
|
|
537
|
-
Types: str
|
|
538
|
-
|
|
539
|
-
RETURNS:
|
|
540
|
-
A list of model tables associated with the model.
|
|
541
|
-
|
|
542
|
-
EXAMPLES:
|
|
543
|
-
>>> table_list = __get_tables_for_model(name, current_user)
|
|
544
|
-
"""
|
|
545
|
-
# Get list of tables
|
|
546
|
-
model_object_info = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_OBJECTS.value))
|
|
547
|
-
model_info = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELSX.value))
|
|
548
|
-
model_info = model_info[model_info[mac.CREATED_BY.value].str.lower() == current_user.lower()]
|
|
549
|
-
model_info = model_info[model_info[mac.MODEL_NAME.value] == name]
|
|
550
|
-
model_objects_to_publish = model_info.join(model_object_info,
|
|
551
|
-
on=[model_info.Name == model_object_info.ModelName],
|
|
552
|
-
how='inner').select([mac.MODEL_OBJ_TABLE_NAME.value])
|
|
553
|
-
|
|
554
|
-
model_objects_to_publish = model_objects_to_publish.to_pandas().squeeze()
|
|
555
|
-
if isinstance(model_objects_to_publish, str):
|
|
556
|
-
# If there is only one output table
|
|
557
|
-
return [model_objects_to_publish]
|
|
558
|
-
else:
|
|
559
|
-
# For multiple or no output tables
|
|
560
|
-
return model_objects_to_publish.tolist()
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
def __get_current_user(conn=None):
|
|
564
|
-
"""
|
|
565
|
-
DESCRIPTION:
|
|
566
|
-
Internal function to return the current Vantage user
|
|
567
|
-
|
|
568
|
-
PARAMETERS:
|
|
569
|
-
conn:
|
|
570
|
-
Optional Argument,
|
|
571
|
-
The underlying SQLAlchemy engine for the connection.
|
|
572
|
-
Types: SQLAlchemy engine
|
|
573
|
-
|
|
574
|
-
RETURNS:
|
|
575
|
-
A string representing the name of the current database user.
|
|
576
|
-
|
|
577
|
-
EXAMPLE:
|
|
578
|
-
>>> current_user = __get_current_user()
|
|
579
|
-
"""
|
|
580
|
-
if conn is None:
|
|
581
|
-
conn = get_connection()
|
|
582
|
-
|
|
583
|
-
return execute_sql('select user').fetchall()[0][0]
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
def __get_like_filter_expression_on_col(metaexpr, column_name, like):
|
|
587
|
-
"""
|
|
588
|
-
DESCRIPTION:
|
|
589
|
-
Internal function to get the filter expression on column_name containing string matching with like.
|
|
590
|
-
(Case insensitive matching)
|
|
591
|
-
|
|
592
|
-
PARAMETERS:
|
|
593
|
-
metaexpr:
|
|
594
|
-
Required Argument.
|
|
595
|
-
Specifies the teradataml DataFrame meta data.
|
|
596
|
-
Types: _MetaExpression
|
|
597
|
-
|
|
598
|
-
column_name:
|
|
599
|
-
Required Argument.
|
|
600
|
-
Specifies the column name which is to be used in filter expression.
|
|
601
|
-
Types: str
|
|
602
|
-
|
|
603
|
-
like:
|
|
604
|
-
Required Argument.
|
|
605
|
-
Specifies the pattern to be matched in filter expression.
|
|
606
|
-
Types: str
|
|
607
|
-
|
|
608
|
-
RETURNS:
|
|
609
|
-
_SQLColumnExpression object
|
|
610
|
-
|
|
611
|
-
RAISES:
|
|
612
|
-
None
|
|
613
|
-
|
|
614
|
-
EXAMPLES:
|
|
615
|
-
>>> filter_expression = __get_like_filter_expression_on_col(models_meta_df._metaexpr,
|
|
616
|
-
... mmc.MMT_COL_model_class.value,
|
|
617
|
-
... function_name)
|
|
618
|
-
"""
|
|
619
|
-
return metaexpr._filter(0, 'like', [column_name], like = like, match_arg='i')
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
def __get_model_engine(model):
|
|
623
|
-
"""
|
|
624
|
-
DESCRIPTION:
|
|
625
|
-
Internal function to return the engine name on which the model was generated.
|
|
626
|
-
|
|
627
|
-
PARAMETERS:
|
|
628
|
-
model:
|
|
629
|
-
Required Argument.
|
|
630
|
-
Model object, for which engine is to be found.
|
|
631
|
-
Types: str
|
|
632
|
-
|
|
633
|
-
RETURNS:
|
|
634
|
-
Engine name ('ML Engine' or 'Advanced SQL Engine')
|
|
635
|
-
|
|
636
|
-
RAISES:
|
|
637
|
-
TeradataMlException
|
|
638
|
-
|
|
639
|
-
EXAMPLES:
|
|
640
|
-
>>> __get_model_engine(model)
|
|
641
|
-
"""
|
|
642
|
-
if ".mle." in str(type(model)):
|
|
643
|
-
return mac.MODEL_ENGINE_ML.value
|
|
644
|
-
elif ".sqle." in str(type(model)):
|
|
645
|
-
return mac.MODEL_ENGINE_ADVSQL.value
|
|
646
|
-
else:
|
|
647
|
-
raise TeradataMlException(Messages.get_message(MessageCodes.UNKNOWN_MODEL_ENGINE,
|
|
648
|
-
str(type(model))),
|
|
649
|
-
MessageCodes.UNKNOWN_MODEL_ENGINE)
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
def __get_wrapper_class(model_engine, model_class):
|
|
653
|
-
"""
|
|
654
|
-
DESCRIPTION:
|
|
655
|
-
Internal function to the wrapper class that can be executed to create the instance of the
|
|
656
|
-
model_class from engine specified in model_engine.
|
|
657
|
-
|
|
658
|
-
PARAMETERS:
|
|
659
|
-
model_engine:
|
|
660
|
-
Required Argument.
|
|
661
|
-
Model engine string 'ML Engine' or 'Advanced SQL Engine'.
|
|
662
|
-
Types: str
|
|
663
|
-
|
|
664
|
-
model_class:
|
|
665
|
-
Required Argument.
|
|
666
|
-
Model class string for the analytical function wrapper.
|
|
667
|
-
Types: str
|
|
668
|
-
|
|
669
|
-
RETURNS:
|
|
670
|
-
A wrapper CLASS
|
|
671
|
-
|
|
672
|
-
RAISES:
|
|
673
|
-
ValueError - When invalid engine is passed.
|
|
674
|
-
AttributeError - When model_class wrapper function, does is not from model_engine.
|
|
675
|
-
|
|
676
|
-
EXAMPLES:
|
|
677
|
-
>>> __get_wrapper_class("ML Engine", "GLM")
|
|
678
|
-
"""
|
|
679
|
-
if model_engine == mac.MODEL_ENGINE_ML.value:
|
|
680
|
-
module_name = "teradataml.analytics.mle"
|
|
681
|
-
elif model_engine == mac.MODEL_ENGINE_ADVSQL.value:
|
|
682
|
-
module_name = "teradataml.analytics.sqle"
|
|
683
|
-
else:
|
|
684
|
-
raise ValueError("Invalid Engine found in Model Cataloging table.")
|
|
685
|
-
|
|
686
|
-
wrapper_module = importlib.import_module(module_name)
|
|
687
|
-
|
|
688
|
-
return getattr(wrapper_module, model_class)
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
def __is_view(tablename):
|
|
692
|
-
"""
|
|
693
|
-
DESCRIPTION:
|
|
694
|
-
Internal function to check whether the object is view or not.
|
|
695
|
-
|
|
696
|
-
PARAMETERS:
|
|
697
|
-
tablename:
|
|
698
|
-
Required Argument.
|
|
699
|
-
Table name or view name to be checked.
|
|
700
|
-
Types: str
|
|
701
|
-
|
|
702
|
-
RAISES:
|
|
703
|
-
None.
|
|
704
|
-
|
|
705
|
-
RETURNS:
|
|
706
|
-
True when the tablename is view, else false.
|
|
707
|
-
|
|
708
|
-
EXAMPLES:
|
|
709
|
-
>>> __is_view('"dbaname"."tablename"')
|
|
710
|
-
"""
|
|
711
|
-
db_name = UtilFuncs._teradata_unquote_arg(UtilFuncs._extract_db_name(tablename), "\"")
|
|
712
|
-
table_view_name = UtilFuncs._teradata_unquote_arg(UtilFuncs._extract_table_name(tablename), "\"")
|
|
713
|
-
query = SQLBundle._build_select_table_kind(db_name, "{0}".format(table_view_name), "'V'")
|
|
714
|
-
|
|
715
|
-
pdf = pd.read_sql(query, get_context())
|
|
716
|
-
if pdf.shape[0] > 0:
|
|
717
|
-
return True
|
|
718
|
-
else:
|
|
719
|
-
return False
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
def __delete_model_tableview(tableviewname):
|
|
723
|
-
"""
|
|
724
|
-
DESCRIPTION:
|
|
725
|
-
Internal function to remove table name or view.
|
|
726
|
-
|
|
727
|
-
PARAMETERS:
|
|
728
|
-
tableviewname:
|
|
729
|
-
Required Argument.
|
|
730
|
-
Table name or view name to be deleted.
|
|
731
|
-
Types: str
|
|
732
|
-
|
|
733
|
-
RAISES:
|
|
734
|
-
None.
|
|
735
|
-
|
|
736
|
-
RETURNS:
|
|
737
|
-
bool
|
|
738
|
-
|
|
739
|
-
EXAMPLES:
|
|
740
|
-
>>> __delete_model_tableview('"dbname"."tableviewname"')
|
|
741
|
-
"""
|
|
742
|
-
if not __is_view(tableviewname):
|
|
743
|
-
try:
|
|
744
|
-
UtilFuncs._drop_table(tableviewname)
|
|
745
|
-
except:
|
|
746
|
-
return False
|
|
747
|
-
else:
|
|
748
|
-
try:
|
|
749
|
-
UtilFuncs._drop_view(tableviewname)
|
|
750
|
-
except:
|
|
751
|
-
return False
|
|
752
|
-
|
|
753
|
-
return True
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
def __get_all_formula_related_args(function_arg_map):
|
|
757
|
-
"""
|
|
758
|
-
DESCRIPTION:
|
|
759
|
-
Internal function to find a list of all formula related arguments for a function.
|
|
760
|
-
|
|
761
|
-
PARAMETERS:
|
|
762
|
-
function_arg_map:
|
|
763
|
-
Required Argument.
|
|
764
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
765
|
-
Types: dict
|
|
766
|
-
|
|
767
|
-
RETURNS:
|
|
768
|
-
A dictionary mapping all SQL Arguments for the function related to formula to its role in formula.
|
|
769
|
-
|
|
770
|
-
EXAMPLE:
|
|
771
|
-
>>> __get_all_formula_related_args(function_arg_map)
|
|
772
|
-
"""
|
|
773
|
-
formula_args = {}
|
|
774
|
-
for arg_name in function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value]:
|
|
775
|
-
arg = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][arg_name]
|
|
776
|
-
# Ignore alternate names
|
|
777
|
-
if famc.ALTERNATE_TO.value in arg:
|
|
778
|
-
alternate_name = arg[famc.ALTERNATE_TO.value]
|
|
779
|
-
arg = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_name]
|
|
780
|
-
|
|
781
|
-
if famc.USED_IN_FORMULA.value in arg:
|
|
782
|
-
formula_args[arg_name] = {}
|
|
783
|
-
formula_args[arg_name][famc.USED_IN_FORMULA.value] = arg[famc.USED_IN_FORMULA.value]
|
|
784
|
-
formula_args[arg_name]['arg_value'] = None
|
|
785
|
-
|
|
786
|
-
return formula_args
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
def __fix_imbalanced_quotes(arg):
|
|
790
|
-
"""
|
|
791
|
-
DESCRIPTION:
|
|
792
|
-
Internal function to fix imbalanced quotes around a string.
|
|
793
|
-
|
|
794
|
-
PARAMETERS:
|
|
795
|
-
arg:
|
|
796
|
-
Required Argument.
|
|
797
|
-
The string to fix the imbalanced quotes for, if any.
|
|
798
|
-
Types: str
|
|
799
|
-
|
|
800
|
-
RETURNS:
|
|
801
|
-
The input string with any imbalanced quotes stripped.
|
|
802
|
-
|
|
803
|
-
EXAMPLE:
|
|
804
|
-
>>> __fix_imbalanced_quotes('hello"')
|
|
805
|
-
hello
|
|
806
|
-
"""
|
|
807
|
-
for quote in ["'", '"']:
|
|
808
|
-
if (arg.startswith(quote) and not arg.endswith(quote)) or (not arg.startswith(quote) and arg.endswith(quote)):
|
|
809
|
-
return arg.strip(quote)
|
|
810
|
-
|
|
811
|
-
return arg
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
def __get_tdml_parameter_value_for_sequence(function_arg_map, attr_value):
|
|
815
|
-
"""
|
|
816
|
-
DESCRIPTION:
|
|
817
|
-
Internal function to form sequence_column teradataml argument from SQL arguments.
|
|
818
|
-
|
|
819
|
-
PARAMETERS:
|
|
820
|
-
function_arg_map:
|
|
821
|
-
Required Argument.
|
|
822
|
-
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
823
|
-
Types: dict
|
|
824
|
-
|
|
825
|
-
attr_value:
|
|
826
|
-
Required Argument.
|
|
827
|
-
The value of the SQL sequence argument.
|
|
828
|
-
|
|
829
|
-
RETURNS:
|
|
830
|
-
A dictionary mapping the teradataml sequence argument to its values.
|
|
831
|
-
|
|
832
|
-
EXAMPLES:
|
|
833
|
-
>>> tdml_sequence_args = __get_tdml_parameter_value_for_sequence(function_arg_map, sql_sequence_arg)
|
|
834
|
-
"""
|
|
835
|
-
sequence_dict = {}
|
|
836
|
-
tdml_name = None
|
|
837
|
-
for column in attr_value.split(','):
|
|
838
|
-
if len(column) == 0:
|
|
839
|
-
continue
|
|
840
|
-
if ':' in column:
|
|
841
|
-
input_name, col_val = column.split(':')
|
|
842
|
-
input_name = __fix_imbalanced_quotes(input_name)
|
|
843
|
-
col_val = __fix_imbalanced_quotes(col_val)
|
|
844
|
-
tdml_name = '{}_{}'.format(__get_arg_tdml_name_from_sql(function_arg_map, famc.INPUTS.value,
|
|
845
|
-
input_name.lower()),
|
|
846
|
-
'sequence_column')
|
|
847
|
-
tdml_name = __fix_imbalanced_quotes(tdml_name)
|
|
848
|
-
sequence_dict[tdml_name] = [col_val]
|
|
849
|
-
else:
|
|
850
|
-
if tdml_name not in sequence_dict:
|
|
851
|
-
# This means there is only one input and the input name was not specified in the
|
|
852
|
-
# SequenceInputBy clause. So we get the only input name.
|
|
853
|
-
tdml_name = list(function_arg_map[famc.INPUTS.value][famc.TDML_TO_SQL.value].keys())[0]
|
|
854
|
-
tdml_name = '{}_{}'.format(tdml_name, 'sequence_column')
|
|
855
|
-
sequence_dict[tdml_name] = []
|
|
856
|
-
column = __fix_imbalanced_quotes(column)
|
|
857
|
-
sequence_dict[tdml_name].append(column)
|
|
858
|
-
|
|
859
|
-
return sequence_dict
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
def __get_target_column(name):
|
|
863
|
-
"""
|
|
864
|
-
DESCRIPTION:
|
|
865
|
-
Internal function to get the target column of a saved model.
|
|
866
|
-
|
|
867
|
-
PARAMETERS:
|
|
868
|
-
name:
|
|
869
|
-
Required Argument.
|
|
870
|
-
Specifies the name used to save the model.
|
|
871
|
-
Types: str
|
|
872
|
-
|
|
873
|
-
RETURNS:
|
|
874
|
-
A String representing the name of the target column.
|
|
875
|
-
|
|
876
|
-
EXAMPLES:
|
|
877
|
-
>>> target_column = __get_target_column('GLMModel')
|
|
878
|
-
"""
|
|
879
|
-
model_details = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILSX.value))
|
|
880
|
-
model_details = model_details[model_details[mac.MODEL_DERIVED_NAME.value] == name]
|
|
881
|
-
target_column = model_details.select([mac.MODEL_DERIVED_TARGET_COLUMN.value]).squeeze()
|
|
882
|
-
return target_column
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
def __get_tdml_parameter_value_for_formula(formula_args, target_column):
|
|
886
|
-
"""
|
|
887
|
-
DESCRIPTION:
|
|
888
|
-
Internal function to build the formula argument based on the SQL equivalent inputs.
|
|
889
|
-
|
|
890
|
-
PARAMETERS:
|
|
891
|
-
formula_args:
|
|
892
|
-
Required Argument.
|
|
893
|
-
A dictionary mapping all SQL Arguments for the function related to formula to its role in formula.
|
|
894
|
-
Types: dict
|
|
895
|
-
|
|
896
|
-
target_column:
|
|
897
|
-
Required Argument.
|
|
898
|
-
The target column for the model, if any.
|
|
899
|
-
Types: str
|
|
900
|
-
|
|
901
|
-
RETURNS:
|
|
902
|
-
A String representing the formula argument to be used with teradataml.
|
|
903
|
-
|
|
904
|
-
EXAMPLES:
|
|
905
|
-
>>> formula = __get_tdml_parameter_value_for_formula(formula_args, target_column)
|
|
906
|
-
"""
|
|
907
|
-
dependent_var = target_column
|
|
908
|
-
all_vars = []
|
|
909
|
-
|
|
910
|
-
for arg in formula_args:
|
|
911
|
-
if formula_args[arg]['arg_value'] is not None:
|
|
912
|
-
if formula_args[arg][famc.USED_IN_FORMULA.value] == famc.DEPENDENT_ATTR.value:
|
|
913
|
-
dependent_var = formula_args[arg]['arg_value'].strip("'")
|
|
914
|
-
else:
|
|
915
|
-
all_vars.extend(formula_args[arg]['arg_value'].split(','))
|
|
916
|
-
|
|
917
|
-
# Remove duplicates
|
|
918
|
-
all_vars = list(set(all_vars))
|
|
919
|
-
all_vars = [var.strip("'") for var in all_vars]
|
|
920
|
-
|
|
921
|
-
# Remove dependent variable if it occurs in all_vars
|
|
922
|
-
if dependent_var in all_vars:
|
|
923
|
-
all_vars.pop(all_vars.index(dependent_var))
|
|
924
|
-
|
|
925
|
-
formula = '{} ~ {}'.format(dependent_var, ' + '. join(all_vars))
|
|
926
|
-
return formula
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
def __cast_arg_values_to_tdml_types(value, type_):
|
|
930
|
-
"""
|
|
931
|
-
DESCRIPTION:
|
|
932
|
-
Internal function used by retrieve_model() to cast the retrieved model parameters to the expected python types.
|
|
933
|
-
|
|
934
|
-
PARAMETERS:
|
|
935
|
-
value:
|
|
936
|
-
Required Argument.
|
|
937
|
-
Specifies the value retrieved that needs a type cast.
|
|
938
|
-
Types: str
|
|
939
|
-
|
|
940
|
-
type_:
|
|
941
|
-
Required Argument.
|
|
942
|
-
Specifies the Python type the value needs to be cast to.
|
|
943
|
-
Type: Python type or tuple of Python types
|
|
944
|
-
|
|
945
|
-
RETURNS:
|
|
946
|
-
The value cast to the required Python type.
|
|
947
|
-
|
|
948
|
-
RAISES:
|
|
949
|
-
None
|
|
950
|
-
|
|
951
|
-
EXAMPLE:
|
|
952
|
-
>>> cast_value = __cast_arg_values_to_tdml_types('0.1', float)
|
|
953
|
-
"""
|
|
954
|
-
return_value = None
|
|
955
|
-
required_type = type_
|
|
956
|
-
|
|
957
|
-
accepted_bool_values = ['1', 't', 'true', 'y', 'yes']
|
|
958
|
-
|
|
959
|
-
# If the required_type is a tuple, we need to consider the possibility of the value being a list
|
|
960
|
-
if isinstance(required_type, tuple):
|
|
961
|
-
# The function_argument_mapper adds the type of the object in the list as the first value in the tuple
|
|
962
|
-
required_type = required_type[0]
|
|
963
|
-
|
|
964
|
-
# Use regex to split the string value into a list.
|
|
965
|
-
# This is required only when we expect the values to be a list as well, in which case,
|
|
966
|
-
# the 'value' will be a comma-separated list of strings.
|
|
967
|
-
# The pattern matches anything but whitespace and comma and not in quotes, or anything in quotes,
|
|
968
|
-
# basically avoiding splitting on a comma when surrounded by quotes.
|
|
969
|
-
pattern = r"[^',\s]+|'[^']*'"
|
|
970
|
-
values = re.findall(pattern, value)
|
|
971
|
-
if len(values) > 1:
|
|
972
|
-
if required_type == bool:
|
|
973
|
-
# Remove the quotes surrounding items in a list,
|
|
974
|
-
# and check for their presence in the acceptable TRUE values.
|
|
975
|
-
return_value = [val.strip().strip("'").lower() in accepted_bool_values for val in values]
|
|
976
|
-
else:
|
|
977
|
-
# Remove the quotes surrounding items in a list cast them to the required type.
|
|
978
|
-
return_value = [required_type(val.strip().strip("'")) for val in values]
|
|
979
|
-
else:
|
|
980
|
-
value = values[0]
|
|
981
|
-
|
|
982
|
-
if return_value is None:
|
|
983
|
-
if required_type == bool:
|
|
984
|
-
# Remove the quotes surrounding the value,
|
|
985
|
-
# and check for their presence in the acceptable TRUE values.
|
|
986
|
-
return_value = value.strip().strip("'").lower() in accepted_bool_values
|
|
987
|
-
else:
|
|
988
|
-
# Remove the quotes surrounding the value and cast it to the required type.
|
|
989
|
-
return_value = required_type(value.strip().strip("'"))
|
|
990
|
-
|
|
991
|
-
return return_value
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
def __get_model_access(name):
|
|
995
|
-
"""
|
|
996
|
-
DESCRIPTION:
|
|
997
|
-
Internal function to get the current access level of a saved model.
|
|
998
|
-
|
|
999
|
-
PARAMETERS:
|
|
1000
|
-
name:
|
|
1001
|
-
Required Argument.
|
|
1002
|
-
Specifies the name of the saved model to get the access level for.
|
|
1003
|
-
Types: str
|
|
1004
|
-
|
|
1005
|
-
RAISES:
|
|
1006
|
-
None.
|
|
1007
|
-
|
|
1008
|
-
RETURNS:
|
|
1009
|
-
A String representing the access level of the saved model.
|
|
1010
|
-
|
|
1011
|
-
EXAMPLES:
|
|
1012
|
-
>>> __get_model_access('saved_glm_model')
|
|
1013
|
-
"""
|
|
1014
|
-
df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILS.value))
|
|
1015
|
-
return df[df[mac.MODEL_DERIVED_NAME.value] == name].select([mac.MODEL_ACCESS.value]).squeeze()
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
def __get_tdml_type_for_tdml_arg(name, function_arg_map):
|
|
1019
|
-
"""
|
|
1020
|
-
DESCRIPTION:
|
|
1021
|
-
Internal function to get the Python type for the given teradataml model class attribute.
|
|
1022
|
-
|
|
1023
|
-
PARAMETERS:
|
|
1024
|
-
name:
|
|
1025
|
-
Required Argument.
|
|
1026
|
-
Specifies the teradataml name for the attribute to get the expected python type for.
|
|
1027
|
-
Types: str
|
|
1028
|
-
|
|
1029
|
-
function_arg_map:
|
|
1030
|
-
Required Argument.
|
|
1031
|
-
Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
|
|
1032
|
-
Types: dict
|
|
1033
|
-
|
|
1034
|
-
RETURNS:
|
|
1035
|
-
Python type for the given teradataml model class attribute name.
|
|
1036
|
-
None when argument name not found.
|
|
1037
|
-
|
|
1038
|
-
RAISES:
|
|
1039
|
-
None
|
|
1040
|
-
|
|
1041
|
-
EXAMPLES:
|
|
1042
|
-
>>> from teradataml.catalog.function_argument_mapper import _argument_mapper
|
|
1043
|
-
>>> function_arg_map = _argument_mapper._get_function_map('ML Engine', 'glm')
|
|
1044
|
-
>>> tdml_type = __get_tdml_type_for_tdml_arg('linkfunction', function_arg_map)
|
|
1045
|
-
"""
|
|
1046
|
-
# Let's check if the function argument mapper has the information about the argument we are looking for.
|
|
1047
|
-
# If not, let's return None.
|
|
1048
|
-
if name not in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
|
|
1049
|
-
return None
|
|
1050
|
-
|
|
1051
|
-
tdml_type = str
|
|
1052
|
-
sql_name = function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value][name]
|
|
1053
|
-
|
|
1054
|
-
# We can ignore formula letting it default to str
|
|
1055
|
-
special_use, used_in = __check_if_client_specific_use(name, function_arg_map)
|
|
1056
|
-
if not special_use or used_in == famc.USED_IN_SEQUENCE_INPUT_BY.value:
|
|
1057
|
-
tdml_type = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.TDML_TYPE.value]
|
|
1058
|
-
|
|
1059
|
-
return tdml_type
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
def __retrieve_model_class(name, model_client, function_arg_map):
|
|
1063
|
-
"""
|
|
1064
|
-
DESCRIPTION:
|
|
1065
|
-
Internal function to get the teradataml class used for generating model given it's name.
|
|
1066
|
-
|
|
1067
|
-
PARAMETERS:
|
|
1068
|
-
name:
|
|
1069
|
-
Optional Argument. Required when model was saved by teradataml.
|
|
1070
|
-
Specifies the name of the model to retrieve the model attributes and output information for.
|
|
1071
|
-
Types: str
|
|
1072
|
-
|
|
1073
|
-
model_client:
|
|
1074
|
-
Required Argument.
|
|
1075
|
-
Specified the name of the client used to generate the model.
|
|
1076
|
-
Types: str
|
|
1077
|
-
|
|
1078
|
-
function_arg_map:
|
|
1079
|
-
Optional Argument. Required when model was not saved by teradataml.
|
|
1080
|
-
Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
|
|
1081
|
-
Types: dict
|
|
1082
|
-
|
|
1083
|
-
RETURNS:
|
|
1084
|
-
A String representing the teradataml class name corresponding to the model.
|
|
1085
|
-
|
|
1086
|
-
EXAMPLES:
|
|
1087
|
-
>>> model_class = __retrieve_model_class(name, model_client, function_arg_map)
|
|
1088
|
-
"""
|
|
1089
|
-
if model_client == mac.MODEL_TDML.value:
|
|
1090
|
-
# Create DF on top of ModelAttributesV view
|
|
1091
|
-
model_arguments = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_ATTRS.value))
|
|
1092
|
-
model_arguments = model_arguments[model_arguments[mac.MODEL_DERIVED_NAME.value] == name]
|
|
1093
|
-
model_class = model_arguments[model_arguments.ClientSpecificAttributeName.str.
|
|
1094
|
-
contains(mac.MODEL_CLIENT_CLASS_KEY.value) == 1].\
|
|
1095
|
-
select([mac.MODEL_ATTR_VALUE.value]).squeeze()
|
|
1096
|
-
else:
|
|
1097
|
-
model_class = function_arg_map[famc.FUNCTION_TDML_NAME.value]
|
|
1098
|
-
|
|
1099
|
-
return model_class
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
def __retrieve_model_client_engine_algorithm(name, return_details=False):
|
|
1103
|
-
"""
|
|
1104
|
-
DESCRIPTION:
|
|
1105
|
-
Internal function to get the the model generating engine, client, algorithm, and optionally the model details
|
|
1106
|
-
given the model name.
|
|
1107
|
-
|
|
1108
|
-
PARAMETERS:
|
|
1109
|
-
name:
|
|
1110
|
-
Required Argument.
|
|
1111
|
-
Specifies the name of the model to retrieve the model attributes and output information for.
|
|
1112
|
-
Types: str
|
|
1113
|
-
|
|
1114
|
-
return_details:
|
|
1115
|
-
Optional Argument.
|
|
1116
|
-
Specifies whether to also return the row from the ModelDetailsV corresponding to the model.
|
|
1117
|
-
Types: bool
|
|
1118
|
-
Default Value: False
|
|
1119
|
-
|
|
1120
|
-
RETURNS:
|
|
1121
|
-
A tuple containing:
|
|
1122
|
-
* the name of the client that was used to generate the model,
|
|
1123
|
-
* the name of the engine that generated the model, and
|
|
1124
|
-
* the name of the algorithm used to generate the model.
|
|
1125
|
-
* If return_details=True, then additionally, the ModelDetailsV row related to the model.
|
|
1126
|
-
|
|
1127
|
-
EXAMPLES:
|
|
1128
|
-
>>> model_client, model_engine, algorithm = __retrieve_model_client_engine_algorithm(name)
|
|
1129
|
-
"""
|
|
1130
|
-
|
|
1131
|
-
model_details = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_DETAILS.value))
|
|
1132
|
-
model_details = model_details[model_details[mac.MODEL_DERIVED_NAME.value] == name]
|
|
1133
|
-
model_algorithm = model_details.select([mac.MODEL_DERIVED_ALGORITHM.value]).squeeze().lower()
|
|
1134
|
-
|
|
1135
|
-
model_client_and_eng = model_details.select([mac.MODEL_DERIVED_GENCLIENT.value,
|
|
1136
|
-
mac.MODEL_DERIVED_GENENG.value]).squeeze()
|
|
1137
|
-
|
|
1138
|
-
model_client = model_client_and_eng.select([mac.MODEL_DERIVED_GENCLIENT.value]).squeeze()
|
|
1139
|
-
model_engine = model_client_and_eng.select([mac.MODEL_DERIVED_GENENG.value]).squeeze()
|
|
1140
|
-
|
|
1141
|
-
if return_details:
|
|
1142
|
-
return model_client, model_engine, model_algorithm, model_details
|
|
1143
|
-
else:
|
|
1144
|
-
return model_client, model_engine, model_algorithm
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
def __retrieve_model_attributes(name, model_client, function_arg_map):
|
|
1148
|
-
"""
|
|
1149
|
-
DESCRIPTION:
|
|
1150
|
-
Internal function to get the the attributes used for generating model given it's name.
|
|
1151
|
-
|
|
1152
|
-
PARAMETERS:
|
|
1153
|
-
name:
|
|
1154
|
-
Required Argument.
|
|
1155
|
-
Specifies the name of the model to retrieve the model attributes and output information for.
|
|
1156
|
-
Types: str
|
|
1157
|
-
|
|
1158
|
-
model_client:
|
|
1159
|
-
Required Argument.
|
|
1160
|
-
Specified the name of the engine that generated the model.
|
|
1161
|
-
Types: str
|
|
1162
|
-
|
|
1163
|
-
function_arg_map:
|
|
1164
|
-
Required Argument.
|
|
1165
|
-
Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
|
|
1166
|
-
Types: dict
|
|
1167
|
-
|
|
1168
|
-
RETURNS:
|
|
1169
|
-
A tuple of dictionaries:
|
|
1170
|
-
* the first one containing the attribute names and their values, and
|
|
1171
|
-
* the second one containing the formula related properties and their values, if the model saving client was
|
|
1172
|
-
teradataml.
|
|
1173
|
-
|
|
1174
|
-
EXAMPLES:
|
|
1175
|
-
>>> model_parameters, formula_related_params = __retrieve_model_attributes(name, model_client, function_arg_map)
|
|
1176
|
-
"""
|
|
1177
|
-
# Create DF on top of ModelAttributesV view and
|
|
1178
|
-
# 1. get only rows related to the model named 'name'.
|
|
1179
|
-
model_arguments = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_ATTRS.value))
|
|
1180
|
-
model_arguments = model_arguments[model_arguments[mac.MODEL_DERIVED_NAME.value] == name]
|
|
1181
|
-
|
|
1182
|
-
if model_client == mac.MODEL_TDML.value:
|
|
1183
|
-
attr_name_to_use = mac.MODEL_ATTR_CLIENT_NAME.value
|
|
1184
|
-
else:
|
|
1185
|
-
attr_name_to_use = mac.MODEL_ATTR_NAME.value
|
|
1186
|
-
|
|
1187
|
-
if model_client != mac.MODEL_TDML.value:
|
|
1188
|
-
# 2. Filter out the the row where "AttributeName" is not like __nonsql_argument_
|
|
1189
|
-
model_arguments = model_arguments.assign(notSqlonly=model_arguments.AttributeName.str.contains('__nonsql_argument_'))
|
|
1190
|
-
model_arguments = model_arguments[model_arguments.notSqlonly == 0]
|
|
1191
|
-
else:
|
|
1192
|
-
# 2. Filter out the the row where "ClientSpecificAttributeName" is not NULL
|
|
1193
|
-
model_arguments = model_arguments[model_arguments[attr_name_to_use] != None]
|
|
1194
|
-
|
|
1195
|
-
# Make sure the non-lazy view exists before SQLAlchemy construct can be used
|
|
1196
|
-
if model_arguments._table_name is None:
|
|
1197
|
-
model_arguments._table_name = df_utils._execute_node_return_db_object_name(model_arguments._nodeid,
|
|
1198
|
-
model_arguments._metaexpr)
|
|
1199
|
-
|
|
1200
|
-
# Since lengthier arguments can be a clob column, casting the smaller to clob
|
|
1201
|
-
# to select one of the two as applicable without values being truncated.
|
|
1202
|
-
select_expression = [model_arguments[attr_name_to_use].expression.label("AttrName"),
|
|
1203
|
-
case_when([(model_arguments[mac.MODEL_ATTR_VALUE.value].expression == None,
|
|
1204
|
-
model_arguments[mac.MODEL_ATTR_VALUEC.value].expression)],
|
|
1205
|
-
else_=func.cast(model_arguments[mac.MODEL_ATTR_VALUE.value].expression,
|
|
1206
|
-
type_=CLOB)).expression.label("AttrValue")]
|
|
1207
|
-
|
|
1208
|
-
# Get the final list of AttNames (Client/SQL) and their values (CLOB type)
|
|
1209
|
-
final_list = DataFrame.from_query(str(select(select_expression).compile(compile_kwargs={"literal_binds": True})))
|
|
1210
|
-
|
|
1211
|
-
# Model Parameters
|
|
1212
|
-
final_list = final_list[final_list["AttrName"] != mac.MODEL_CLIENT_CLASS_KEY.value]
|
|
1213
|
-
params = final_list.to_pandas().to_dict()
|
|
1214
|
-
model_parameters = {}
|
|
1215
|
-
formula_related_params = {}
|
|
1216
|
-
|
|
1217
|
-
index_len = len(params["AttrName"])
|
|
1218
|
-
if model_client == mac.MODEL_TDML.value:
|
|
1219
|
-
for i in range(index_len):
|
|
1220
|
-
# Check if the arguments are related to formula
|
|
1221
|
-
if params["AttrName"][i] == '__all_columns':
|
|
1222
|
-
formula_related_params['__all_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
|
|
1223
|
-
(str, list))
|
|
1224
|
-
elif params["AttrName"][i] == '__numeric_columns':
|
|
1225
|
-
formula_related_params['__numeric_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
|
|
1226
|
-
(str, list))
|
|
1227
|
-
elif params["AttrName"][i] == '__categorical_columns':
|
|
1228
|
-
formula_related_params['__categorical_columns'] = __cast_arg_values_to_tdml_types(params["AttrValue"]
|
|
1229
|
-
[i], (str, list))
|
|
1230
|
-
elif params["AttrName"][i] == '__response_column':
|
|
1231
|
-
formula_related_params['__response_column'] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
|
|
1232
|
-
str)
|
|
1233
|
-
else:
|
|
1234
|
-
tdml_type = __get_tdml_type_for_tdml_arg(params["AttrName"][i], function_arg_map)
|
|
1235
|
-
# tdml_type can be None when we do not have information about the argument in
|
|
1236
|
-
# the function argument mapper. Let's ignore it in the retrieval.
|
|
1237
|
-
if tdml_type is not None:
|
|
1238
|
-
model_parameters[params["AttrName"][i]] = __cast_arg_values_to_tdml_types(params["AttrValue"][i],
|
|
1239
|
-
tdml_type)
|
|
1240
|
-
else:
|
|
1241
|
-
formula_args = None
|
|
1242
|
-
for i in range(index_len):
|
|
1243
|
-
model_param_name = __get_arg_tdml_name_from_sql(function_arg_map,
|
|
1244
|
-
arg_type=famc.ARGUMENTS.value,
|
|
1245
|
-
name=params["AttrName"][i].lower())
|
|
1246
|
-
|
|
1247
|
-
attr_value = params["AttrValue"][i]
|
|
1248
|
-
|
|
1249
|
-
special_use, used_in = __check_if_client_specific_use(params["AttrName"][i].lower(),
|
|
1250
|
-
function_arg_map, is_sql_name=True)
|
|
1251
|
-
if special_use:
|
|
1252
|
-
if used_in == famc.USED_IN_FORMULA.value:
|
|
1253
|
-
# Get formula
|
|
1254
|
-
if formula_args is None:
|
|
1255
|
-
formula_args = __get_all_formula_related_args(function_arg_map)
|
|
1256
|
-
formula_args[params["AttrName"][i].lower()]['arg_value'] = attr_value
|
|
1257
|
-
else:
|
|
1258
|
-
# Get dictionary of sequence_column arguments
|
|
1259
|
-
sequence_by = __get_tdml_parameter_value_for_sequence(function_arg_map, attr_value)
|
|
1260
|
-
if sequence_by:
|
|
1261
|
-
for seq_key in sequence_by:
|
|
1262
|
-
model_parameters[seq_key] = sequence_by[seq_key]
|
|
1263
|
-
else:
|
|
1264
|
-
# tdml_name can be None when we do not have information about the SQL argument in
|
|
1265
|
-
# the function argument mapper. Let's ignore it in the retrieval.
|
|
1266
|
-
if model_param_name is None:
|
|
1267
|
-
warnings.warn(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME,
|
|
1268
|
-
params["AttrName"][i]))
|
|
1269
|
-
continue
|
|
1270
|
-
model_param_type = model_param_name[famc.TDML_TYPE.value]
|
|
1271
|
-
model_param_name = model_param_name[famc.TDML_NAME.value]
|
|
1272
|
-
model_parameters[model_param_name] = __cast_arg_values_to_tdml_types(attr_value,
|
|
1273
|
-
model_param_type)
|
|
1274
|
-
|
|
1275
|
-
if formula_args is not None:
|
|
1276
|
-
formula = __get_tdml_parameter_value_for_formula(formula_args, __get_target_column(name))
|
|
1277
|
-
model_parameters[famc.TDML_FORMULA_NAME.value] = formula
|
|
1278
|
-
|
|
1279
|
-
return model_parameters, formula_related_params
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
def __retrieve_model_outputs(name, model_client, function_arg_map):
|
|
1283
|
-
"""
|
|
1284
|
-
DESCRIPTION:
|
|
1285
|
-
Internal function to get the output DataFrames corresponding to a saved model given it's name.
|
|
1286
|
-
|
|
1287
|
-
PARAMETERS:
|
|
1288
|
-
name:
|
|
1289
|
-
Required Argument.
|
|
1290
|
-
Specifies the name of the model to retrieve the model output information for.
|
|
1291
|
-
Types: str
|
|
1292
|
-
|
|
1293
|
-
model_client:
|
|
1294
|
-
Required Argument.
|
|
1295
|
-
Specifies the name of the client that generated the model.
|
|
1296
|
-
Types: str
|
|
1297
|
-
|
|
1298
|
-
function_arg_map:
|
|
1299
|
-
Required Argument.
|
|
1300
|
-
Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
|
|
1301
|
-
Types: dict
|
|
1302
|
-
|
|
1303
|
-
RAISES:
|
|
1304
|
-
TeradataMlException
|
|
1305
|
-
|
|
1306
|
-
RETURNS:
|
|
1307
|
-
A Pandas DataFrame with the teradataml specific name for the output, and the underlying
|
|
1308
|
-
table names corresponding to them.
|
|
1309
|
-
|
|
1310
|
-
EXAMPLES:
|
|
1311
|
-
>>> output_df = __retrieve_model_outputs(name, model_client, function_arg_map)
|
|
1312
|
-
"""
|
|
1313
|
-
# Let's also get the output table map
|
|
1314
|
-
model_outputs = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_OBJECTS.value))
|
|
1315
|
-
model_outputs = model_outputs[model_outputs[mac.MODEL_DERIVED_NAME.value] == name]
|
|
1316
|
-
if model_client == mac.MODEL_TDML.value:
|
|
1317
|
-
model_outputs = model_outputs.assign(drop_columns=True,
|
|
1318
|
-
OutputName=model_outputs[mac.MODEL_OBJ_CLIENT_NAME.value],
|
|
1319
|
-
OutputTableName=model_outputs[mac.MODEL_OBJ_TABLE_NAME.value]).to_pandas()
|
|
1320
|
-
else:
|
|
1321
|
-
model_outputs = model_outputs.assign(drop_columns=True,
|
|
1322
|
-
OutputName=model_outputs[mac.MODEL_OBJ_NAME.value],
|
|
1323
|
-
OutputTableName=model_outputs[mac.MODEL_OBJ_TABLE_NAME.value]).to_pandas()
|
|
1324
|
-
output_names = []
|
|
1325
|
-
output_table_names = []
|
|
1326
|
-
index_len = len(model_outputs["OutputName"])
|
|
1327
|
-
for i in range(index_len):
|
|
1328
|
-
output_name = __get_arg_tdml_name_from_sql(function_arg_map, famc.OUTPUTS.value,
|
|
1329
|
-
model_outputs["OutputName"][i].lower())
|
|
1330
|
-
# We raise an exception when we are not able to get the teradataml name
|
|
1331
|
-
# for the SQL name of the output table.
|
|
1332
|
-
if output_name is None:
|
|
1333
|
-
raise TeradataMlException(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME),
|
|
1334
|
-
MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME)
|
|
1335
|
-
output_names.append(output_name)
|
|
1336
|
-
output_table_names.append(model_outputs["OutputTableName"][i])
|
|
1337
|
-
model_outputs = pd.DataFrame({'OutputName': output_names, 'OutputTableName': output_table_names})
|
|
1338
|
-
|
|
1339
|
-
return model_outputs
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
def __retrieve_model_inputs(name, model_client, function_arg_map):
|
|
1343
|
-
"""
|
|
1344
|
-
DESCRIPTION:
|
|
1345
|
-
Internal function to get the input DataFrames corresponding to a saved model given it's name.
|
|
1346
|
-
|
|
1347
|
-
PARAMETERS:
|
|
1348
|
-
name:
|
|
1349
|
-
Required Argument.
|
|
1350
|
-
Specifies the name of the model to retrieve the model input information for.
|
|
1351
|
-
Types: str
|
|
1352
|
-
|
|
1353
|
-
model_client:
|
|
1354
|
-
Required Argument.
|
|
1355
|
-
Specifies the name of the client that generated the model.
|
|
1356
|
-
Types: str
|
|
1357
|
-
|
|
1358
|
-
function_arg_map:
|
|
1359
|
-
Required Argument.
|
|
1360
|
-
Specifies the teradataml-sql map for the function obtained using function_argument_mapper.
|
|
1361
|
-
Types: dict
|
|
1362
|
-
|
|
1363
|
-
RETURNS:
|
|
1364
|
-
A dict mapping the teradataml specific name for the input to actual input DataFrame.
|
|
1365
|
-
The dictionary is of the following form:
|
|
1366
|
-
{
|
|
1367
|
-
<tdml_input_name> :
|
|
1368
|
-
{
|
|
1369
|
-
'TableName' : <actual_table_name>,
|
|
1370
|
-
'NRows': <number of rows>,
|
|
1371
|
-
'NCols': <number of columns>
|
|
1372
|
-
}
|
|
1373
|
-
}
|
|
1374
|
-
|
|
1375
|
-
EXAMPLES:
|
|
1376
|
-
>>> input_info = __retrieve_model_inputs(name, model_client, function_arg_map)
|
|
1377
|
-
"""
|
|
1378
|
-
model_inputs = {}
|
|
1379
|
-
|
|
1380
|
-
# First get the model_id
|
|
1381
|
-
model_id = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
|
|
1382
|
-
model_id = model_id[model_id[mac.MODEL_NAME.value] == name].select([mac.MODEL_ID.value]).squeeze().item()
|
|
1383
|
-
|
|
1384
|
-
# Now find the inputs related to the model
|
|
1385
|
-
model_training_data = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS_INPUTSX.value))
|
|
1386
|
-
model_training_data = model_training_data[model_training_data[mac.MODEL_ID.value] == model_id]
|
|
1387
|
-
model_training_data = model_training_data.to_pandas().to_dict()
|
|
1388
|
-
|
|
1389
|
-
index_len = len(model_training_data[mac.MODEL_ID.value])
|
|
1390
|
-
for i in range(index_len):
|
|
1391
|
-
if model_client == mac.MODEL_TDML.value:
|
|
1392
|
-
input_name = model_training_data[mac.MODEL_INPUT_CLIENT_NAME.value][i]
|
|
1393
|
-
table_name = model_training_data[mac.MODEL_INPUT_TABLE_NAME.value][i]
|
|
1394
|
-
else:
|
|
1395
|
-
input_name = __get_arg_tdml_name_from_sql(function_arg_map, famc.INPUTS.value,
|
|
1396
|
-
model_training_data[mac.MODEL_INPUT_NAME.value][i].lower())
|
|
1397
|
-
# if input_name is None then we have been unable to get the tdml name from the SQL name
|
|
1398
|
-
# for the input. In this case, we ignore the input initialization and continue.
|
|
1399
|
-
if input_name is None:
|
|
1400
|
-
warnings.warn(Messages.get_message(MessageCodes.CANNOT_TRANSLATE_TO_TDML_NAME,
|
|
1401
|
-
model_training_data[mac.MODEL_INPUT_NAME.value][i]))
|
|
1402
|
-
continue
|
|
1403
|
-
table_name = model_training_data[mac.MODEL_INPUT_TABLE_NAME.value][i]
|
|
1404
|
-
|
|
1405
|
-
# No need for further processing if the TableName associated with an input is None.
|
|
1406
|
-
if table_name is None:
|
|
1407
|
-
continue
|
|
1408
|
-
|
|
1409
|
-
nrows = model_training_data[mac.MODEL_INPUT_NROWS.value][i]
|
|
1410
|
-
ncols = model_training_data[mac.MODEL_INPUT_NCOLS.value][i]
|
|
1411
|
-
|
|
1412
|
-
model_inputs[input_name] = {}
|
|
1413
|
-
model_inputs[input_name][mac.MODEL_OBJ_TABLE_NAME.value] = table_name
|
|
1414
|
-
model_inputs[input_name][mac.MODEL_INPUT_NROWS.value] = nrows
|
|
1415
|
-
model_inputs[input_name][mac.MODEL_INPUT_NCOLS.value] = ncols
|
|
1416
|
-
|
|
1417
|
-
return model_inputs
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
def __retrieve_argument_and_output_map(name):
|
|
1421
|
-
"""
|
|
1422
|
-
DESCRIPTION:
|
|
1423
|
-
Internal function to get the teradataml function class corresponding to the model to retrieve,
|
|
1424
|
-
along with the attributes and output objects to initialize the model with.
|
|
1425
|
-
|
|
1426
|
-
PARAMETERS:
|
|
1427
|
-
name:
|
|
1428
|
-
Required Argument.
|
|
1429
|
-
Specifies the name of the model to retrieve the model attributes and output information for.
|
|
1430
|
-
Types: str
|
|
1431
|
-
|
|
1432
|
-
RETURNS:
|
|
1433
|
-
A tuple with the following elements:
|
|
1434
|
-
* the function class to initialize for the model,
|
|
1435
|
-
* the model generating engine to help with the initialization, and
|
|
1436
|
-
* the dictionary containing the attributes and their values including output table objects.
|
|
1437
|
-
|
|
1438
|
-
EXAMPLES:
|
|
1439
|
-
>>> model_class, model_engine, attribute_dictionary = __retrieve_argument_and_output_map(name)
|
|
1440
|
-
"""
|
|
1441
|
-
# First, let's get the model engine, client, algorithm, and other details.
|
|
1442
|
-
model_client, model_engine, model_algorithm, model_details = __retrieve_model_client_engine_algorithm(name, True)
|
|
1443
|
-
|
|
1444
|
-
# Get the build_time, algorithm_name/model_class, target_column, prediction_type to be returned later as parameters.
|
|
1445
|
-
# model_algorithm is also use to figure out the Python class to be instantiated.
|
|
1446
|
-
build_time = model_details.select([mac.MODEL_DERIVED_BUILD_TIME.value]).squeeze()
|
|
1447
|
-
prediction_type = model_details.select([mac.MODEL_DERIVED_PREDICTION_TYPE.value]).squeeze()
|
|
1448
|
-
target_column = model_details.select([mac.MODEL_DERIVED_TARGET_COLUMN.value]).squeeze()
|
|
1449
|
-
|
|
1450
|
-
# Get the teradataml model class corresponding to the model
|
|
1451
|
-
function_arg_map = _argument_mapper._get_function_map(engine=model_engine,
|
|
1452
|
-
function_name=model_algorithm.lower())
|
|
1453
|
-
model_class = __retrieve_model_class(name, model_client, function_arg_map)
|
|
1454
|
-
|
|
1455
|
-
# Get the model attributes and formula related arguments
|
|
1456
|
-
model_parameters, formula_related_args = __retrieve_model_attributes(name, model_client, function_arg_map)
|
|
1457
|
-
# Also append the algorithm_name, build_time, target_column, and prediction_type for the function
|
|
1458
|
-
model_parameters['__algorithm_name'] = model_algorithm
|
|
1459
|
-
if build_time is not None:
|
|
1460
|
-
model_parameters['__build_time'] = build_time.item()
|
|
1461
|
-
if target_column is not None:
|
|
1462
|
-
model_parameters['__target_column'] = target_column
|
|
1463
|
-
if prediction_type is not None:
|
|
1464
|
-
model_parameters['__prediction_type'] = prediction_type
|
|
1465
|
-
|
|
1466
|
-
# Merge the formula related arguments
|
|
1467
|
-
model_parameters = {**model_parameters, **formula_related_args}
|
|
1468
|
-
|
|
1469
|
-
# Try plugging in the input DataFrames as well
|
|
1470
|
-
model_inputs = __retrieve_model_inputs(name, model_client, function_arg_map)
|
|
1471
|
-
for input_name in model_inputs:
|
|
1472
|
-
table_name = model_inputs[input_name][mac.MODEL_OBJ_TABLE_NAME.value]
|
|
1473
|
-
sname = UtilFuncs._extract_db_name(table_name)
|
|
1474
|
-
tname = UtilFuncs._extract_table_name(table_name)
|
|
1475
|
-
|
|
1476
|
-
# Add quoted around the DB and Table names if necessary.
|
|
1477
|
-
tdp = preparer(td_dialect)
|
|
1478
|
-
if sname is not None:
|
|
1479
|
-
sname = tdp.quote(UtilFuncs._teradata_unquote_arg(sname, quote='"'))
|
|
1480
|
-
if tname is not None:
|
|
1481
|
-
tname = tdp.quote(UtilFuncs._teradata_unquote_arg(tname, quote='"'))
|
|
1482
|
-
|
|
1483
|
-
# Try creating the input DataFrames
|
|
1484
|
-
try:
|
|
1485
|
-
if sname is None:
|
|
1486
|
-
input = DataFrame(tname)
|
|
1487
|
-
else:
|
|
1488
|
-
input = DataFrame(in_schema(sname, tname))
|
|
1489
|
-
|
|
1490
|
-
model_inputs[input_name] = input
|
|
1491
|
-
except Exception as err:
|
|
1492
|
-
# We are most likely not able to create a DataFrame on the input as the input may no longer be existent.
|
|
1493
|
-
# In this case, we just initialize it to None.
|
|
1494
|
-
warnings.warn("Unable to fetch input details for the '{}' argument "
|
|
1495
|
-
"from underlying object named '{}'".format(input_name, table_name))
|
|
1496
|
-
model_inputs[input_name] = None
|
|
1497
|
-
|
|
1498
|
-
# Let's also get the output table map
|
|
1499
|
-
model_outputs = __retrieve_model_outputs(name, model_client, function_arg_map)
|
|
1500
|
-
tables = model_outputs.to_dict()
|
|
1501
|
-
model_tables = {}
|
|
1502
|
-
index_len = len(tables["OutputName"])
|
|
1503
|
-
for i in range(index_len):
|
|
1504
|
-
output_name = tables["OutputName"][i]
|
|
1505
|
-
model_tables[output_name] = tables["OutputTableName"][i]
|
|
1506
|
-
|
|
1507
|
-
return model_class, model_engine, {**model_inputs, **model_parameters, **model_tables}
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
from teradataml.dataframe.dataframe import DataFrame, in_schema
|
|
1
|
+
"""
|
|
2
|
+
Copyright (c) 2020 by Teradata Corporation. All rights reserved.
|
|
3
|
+
TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET
|
|
4
|
+
|
|
5
|
+
Primary Owner: Rohit.Khurd@teradata.com
|
|
6
|
+
Secondary Owner:
|
|
7
|
+
|
|
8
|
+
teradataml Model Cataloging utilities
|
|
9
|
+
-------------------------------------
|
|
10
|
+
The teradataml Model Cataloging utility functions provide internal utilities that
|
|
11
|
+
the Model Cataloging APIs make use of.
|
|
12
|
+
"""
|
|
13
|
+
import importlib
|
|
14
|
+
import warnings
|
|
15
|
+
import pandas as pd
|
|
16
|
+
import re
|
|
17
|
+
|
|
18
|
+
from teradataml.common.constants import ModelCatalogingConstants as mac,\
|
|
19
|
+
FunctionArgumentMapperConstants as famc
|
|
20
|
+
from teradataml.common.constants import TeradataConstants
|
|
21
|
+
from teradataml.common.exceptions import TeradataMlException
|
|
22
|
+
from teradataml.common.utils import UtilFuncs
|
|
23
|
+
from teradataml.common.messagecodes import MessageCodes
|
|
24
|
+
from teradataml.common.messages import Messages
|
|
25
|
+
from teradataml.context.context import get_connection, get_context, _get_current_databasename
|
|
26
|
+
from teradataml.dataframe.dataframe_utils import DataFrameUtils as df_utils
|
|
27
|
+
from teradataml.catalog.function_argument_mapper import _argument_mapper
|
|
28
|
+
from teradataml.common.sqlbundle import SQLBundle
|
|
29
|
+
from teradataml.utils.utils import execute_sql
|
|
30
|
+
from teradatasqlalchemy import CLOB
|
|
31
|
+
from teradatasqlalchemy.dialect import preparer, dialect as td_dialect
|
|
32
|
+
from sqlalchemy.sql.expression import select, case as case_when
|
|
33
|
+
from sqlalchemy import func
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name):
|
|
37
|
+
"""
|
|
38
|
+
DESCRIPTION:
|
|
39
|
+
Internal function to find SQL equivalent name for given teradataml name.
|
|
40
|
+
|
|
41
|
+
PARAMETERS:
|
|
42
|
+
function_arg_map:
|
|
43
|
+
Required Argument.
|
|
44
|
+
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
45
|
+
Types: dict
|
|
46
|
+
|
|
47
|
+
arg_type:
|
|
48
|
+
Required Argument.
|
|
49
|
+
Specifies a string representing the type of lookup, one of the keys in the function argument map.
|
|
50
|
+
Acceptable values: 'arguments', 'inputs', 'outputs'
|
|
51
|
+
Types: str
|
|
52
|
+
|
|
53
|
+
name:
|
|
54
|
+
Required Argument.
|
|
55
|
+
Specifies the teradataml input, output, or argument name to lookup.
|
|
56
|
+
Types: str
|
|
57
|
+
|
|
58
|
+
RETURNS:
|
|
59
|
+
A String representing the SQL equivalent name for the teradataml name passed as input.
|
|
60
|
+
|
|
61
|
+
EXAMPLES:
|
|
62
|
+
>>> sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type, name)
|
|
63
|
+
"""
|
|
64
|
+
if name in function_arg_map[arg_type][famc.TDML_TO_SQL.value]:
|
|
65
|
+
sql_name = function_arg_map[arg_type][famc.TDML_TO_SQL.value][name]
|
|
66
|
+
|
|
67
|
+
if isinstance(sql_name, dict):
|
|
68
|
+
sql_name = sql_name[famc.TDML_NAME.value]
|
|
69
|
+
|
|
70
|
+
if isinstance(sql_name, list):
|
|
71
|
+
sql_name = sql_name[0]
|
|
72
|
+
|
|
73
|
+
return sql_name
|
|
74
|
+
|
|
75
|
+
# No SQL name found for given teradataml input name
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name):
|
|
80
|
+
"""
|
|
81
|
+
DESCRIPTION:
|
|
82
|
+
Internal function to find teradataml equivalent name and type, if any, for given SQL name.
|
|
83
|
+
|
|
84
|
+
PARAMETERS:
|
|
85
|
+
function_arg_map:
|
|
86
|
+
Required Argument.
|
|
87
|
+
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
88
|
+
Types: dict
|
|
89
|
+
|
|
90
|
+
arg_type:
|
|
91
|
+
Required Argument.
|
|
92
|
+
Specifies a string representing the type of lookup, one of the keys in the function argument map.
|
|
93
|
+
Acceptable values: 'arguments', 'inputs', 'outputs'
|
|
94
|
+
Types: str
|
|
95
|
+
|
|
96
|
+
name:
|
|
97
|
+
Required Argument.
|
|
98
|
+
Specifies the SQL input, output, or argument name to lookup.
|
|
99
|
+
Types: str
|
|
100
|
+
|
|
101
|
+
RETURNS:
|
|
102
|
+
* A String representing the teradataml equivalent name for the SQL name when arg_type
|
|
103
|
+
is 'inputs' or 'outputs'.
|
|
104
|
+
* A dictionary with tdml_name and tdml_type for the SQL name when arg_type
|
|
105
|
+
is 'arguments'.
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
EXAMPLES:
|
|
109
|
+
>>> tdml_name = __get_arg_tdml_name_from_sql(function_arg_map, arg_type, name)
|
|
110
|
+
"""
|
|
111
|
+
if name in function_arg_map[arg_type][famc.SQL_TO_TDML.value]:
|
|
112
|
+
tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name]
|
|
113
|
+
|
|
114
|
+
# Check for alternate names.
|
|
115
|
+
if isinstance(tdml_name, dict) and famc.ALTERNATE_TO.value in tdml_name:
|
|
116
|
+
alternate_to = function_arg_map[arg_type][famc.SQL_TO_TDML.value][name][
|
|
117
|
+
famc.ALTERNATE_TO.value]
|
|
118
|
+
tdml_name = function_arg_map[arg_type][famc.SQL_TO_TDML.value][alternate_to]
|
|
119
|
+
|
|
120
|
+
if isinstance(tdml_name, list):
|
|
121
|
+
tdml_name = tdml_name[0]
|
|
122
|
+
|
|
123
|
+
return tdml_name
|
|
124
|
+
|
|
125
|
+
# No teradataml name found for given teradataml input name
|
|
126
|
+
return None
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def __get_model_inputs_outputs(model, function_arg_map):
|
|
130
|
+
"""
|
|
131
|
+
DESCRIPTION:
|
|
132
|
+
Internal function to get input and output information of the model to be saved.
|
|
133
|
+
|
|
134
|
+
PARAMETERS:
|
|
135
|
+
model:
|
|
136
|
+
Required Argument.
|
|
137
|
+
The model (analytic function object instance) to be saved.
|
|
138
|
+
Types: teradataml Analytic Function object
|
|
139
|
+
|
|
140
|
+
function_arg_map:
|
|
141
|
+
Required Argument.
|
|
142
|
+
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
143
|
+
Types: dict
|
|
144
|
+
|
|
145
|
+
RETURNS:
|
|
146
|
+
A tuple of two dictionaries, and a list:
|
|
147
|
+
* The first containing input information.
|
|
148
|
+
* The second containing output information.
|
|
149
|
+
* The list containing names of tables to remove entries from GC for.
|
|
150
|
+
|
|
151
|
+
EXAMPLE:
|
|
152
|
+
>>> inputs, outputs, tables_to_not_gc = __get_model_inputs_outputs(model, function_arg_map)
|
|
153
|
+
"""
|
|
154
|
+
input_json = {}
|
|
155
|
+
output_json = {}
|
|
156
|
+
remove_tables_entries_from_gc = []
|
|
157
|
+
|
|
158
|
+
# First, let's identify the output DataFrames
|
|
159
|
+
output_tables = [df._table_name for df in model._mlresults]
|
|
160
|
+
|
|
161
|
+
for key in model.__dict__:
|
|
162
|
+
if not key.startswith('_'):
|
|
163
|
+
member = getattr(model, key)
|
|
164
|
+
# The DataFrame is input if it is not output
|
|
165
|
+
if isinstance(member, DataFrame):
|
|
166
|
+
if member._table_name not in output_tables:
|
|
167
|
+
# Populate the input dictionary
|
|
168
|
+
# We construct a dictionary of the following form:
|
|
169
|
+
# { "<schema_name> :
|
|
170
|
+
# { "<table_name>" :
|
|
171
|
+
# { "nrows": <num_rows>,
|
|
172
|
+
# "ncols": <num_cols>,
|
|
173
|
+
# "input_name": <SQL name for the input>,
|
|
174
|
+
# "client_specific_input_name": <tdml name for the input>
|
|
175
|
+
# },
|
|
176
|
+
# ...
|
|
177
|
+
# }
|
|
178
|
+
# }
|
|
179
|
+
tdp = preparer(td_dialect)
|
|
180
|
+
nrows, ncols = member.shape
|
|
181
|
+
db_schema = UtilFuncs._extract_db_name(member._table_name)
|
|
182
|
+
# Add quotes around the DB name in case we are getting it using _get_current_databasename().
|
|
183
|
+
db_schema = tdp.quote(_get_current_databasename()) if db_schema is None else db_schema
|
|
184
|
+
db_table_name = UtilFuncs._extract_table_name(member._table_name)
|
|
185
|
+
|
|
186
|
+
if db_schema not in input_json:
|
|
187
|
+
input_json[db_schema] = {}
|
|
188
|
+
input_json[db_schema][db_table_name] = {}
|
|
189
|
+
input_json[db_schema][db_table_name]["nrows"] = int(nrows)
|
|
190
|
+
input_json[db_schema][db_table_name]["ncols"] = ncols
|
|
191
|
+
input_json[db_schema][db_table_name]["input_name"] = __get_arg_sql_name_from_tdml(function_arg_map,
|
|
192
|
+
arg_type=famc.INPUTS.value,
|
|
193
|
+
name=key)
|
|
194
|
+
input_json[db_schema][db_table_name]["client_specific_input_name"] = key
|
|
195
|
+
else:
|
|
196
|
+
# Populate the output dictionary
|
|
197
|
+
# We construct a dictionary of the following form:
|
|
198
|
+
# { "<Output SQL Name> :
|
|
199
|
+
# { "table_name": "<Database qualified name of the table>",
|
|
200
|
+
# "client_specific_name": "<TDML specific name of the output>"
|
|
201
|
+
# },
|
|
202
|
+
# ...
|
|
203
|
+
# }
|
|
204
|
+
|
|
205
|
+
# teradataml Analytic functions models can be of two types:
|
|
206
|
+
# 1. Non-lazy OR
|
|
207
|
+
# 2. Lazy
|
|
208
|
+
# When model is non-lazy, that means model tables are already present/created on the system.
|
|
209
|
+
# When model is lazy, it may happen that model tables are yet to be evaluated/created.
|
|
210
|
+
# So first, let's make sure that model is evaluated, i.e., model tables are created,
|
|
211
|
+
# if they are not created already.
|
|
212
|
+
#
|
|
213
|
+
if member._table_name is None:
|
|
214
|
+
member._table_name = df_utils._execute_node_return_db_object_name(member._nodeid,
|
|
215
|
+
member._metaexpr)
|
|
216
|
+
output_table_name = member._table_name
|
|
217
|
+
if __is_view(output_table_name):
|
|
218
|
+
# If output table is not of type table, which means it's a view.
|
|
219
|
+
# So instead of using view name for persisting, we must materialize the same.
|
|
220
|
+
#
|
|
221
|
+
# To do so, let's just generate another temporary table name. One can notice, when
|
|
222
|
+
# we generate the temporary table name, we set the following flag 'gc_on_quit=True'.
|
|
223
|
+
# One can say, why to mark it for GC, when we are going to persist it.
|
|
224
|
+
# Only reason we added it for GC, so that, if in case anything goes wrong from the point
|
|
225
|
+
# we create the table to the end of the model saving, later this will be GC'ed as
|
|
226
|
+
# model saving had failed. Later we remove entry from GC, when model info is saved in
|
|
227
|
+
# MC tables and model is persisted in table.
|
|
228
|
+
#
|
|
229
|
+
output_table_name = UtilFuncs._generate_temp_table_name(prefix="td_saved_model_",
|
|
230
|
+
use_default_database=True,
|
|
231
|
+
gc_on_quit=True, quote=False,
|
|
232
|
+
table_type=TeradataConstants.TERADATA_TABLE)
|
|
233
|
+
|
|
234
|
+
base_query = SQLBundle._build_base_query(member._table_name)
|
|
235
|
+
crt_table_query = SQLBundle._build_create_table_with_data(output_table_name, base_query)
|
|
236
|
+
UtilFuncs._execute_ddl_statement(crt_table_query)
|
|
237
|
+
|
|
238
|
+
# Append the name of the table to remove entry from GC.
|
|
239
|
+
remove_tables_entries_from_gc.append(output_table_name)
|
|
240
|
+
|
|
241
|
+
sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.OUTPUTS.value, name=key)
|
|
242
|
+
output_json[sql_name] = {}
|
|
243
|
+
output_json[sql_name]["table_name"] = output_table_name
|
|
244
|
+
output_json[sql_name]["client_specific_name"] = key
|
|
245
|
+
|
|
246
|
+
return input_json, output_json, remove_tables_entries_from_gc
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
def __check_if_client_specific_use(key, function_arg_map, is_sql_name=False):
|
|
250
|
+
"""
|
|
251
|
+
DESCRIPTION:
|
|
252
|
+
Internal function to check if the argument corresponds to a client-only specific argument.
|
|
253
|
+
|
|
254
|
+
PARAMETERS:
|
|
255
|
+
key:
|
|
256
|
+
Required Argument.
|
|
257
|
+
The teradataml or SQL argument name to check for.
|
|
258
|
+
Types: str
|
|
259
|
+
|
|
260
|
+
function_arg_map:
|
|
261
|
+
Required Argument.
|
|
262
|
+
The teradataml-sql map for the function obtained using function_argument_mapper.
|
|
263
|
+
Types: dict
|
|
264
|
+
|
|
265
|
+
is_sql_name:
|
|
266
|
+
Optional Argument.
|
|
267
|
+
Specifies a boolean value indicating whether the key is a SQL or teradataml key.
|
|
268
|
+
Types: bool
|
|
269
|
+
Default Value: False
|
|
270
|
+
|
|
271
|
+
RETURNS:
|
|
272
|
+
A tuple containing:
|
|
273
|
+
* A boolean value indicating whether the argument is or has:
|
|
274
|
+
- a client-only specific argument: True
|
|
275
|
+
- else False
|
|
276
|
+
* A string specifying whether it is used in sequence_column ('used_in_sequence_by') or formula ('used_in_formula')
|
|
277
|
+
|
|
278
|
+
EXAMPLES:
|
|
279
|
+
>>> client_only, where_used = __check_if_client_specific_use(key, function_arg_map, is_sql_name=False)
|
|
280
|
+
"""
|
|
281
|
+
# Let's assume SQL Name was passed
|
|
282
|
+
sql_name = key
|
|
283
|
+
|
|
284
|
+
if not is_sql_name:
|
|
285
|
+
if key in function_arg_map[famc.ARGUMENTS.value][famc.TDML_TO_SQL.value]:
|
|
286
|
+
sql_name = __get_arg_sql_name_from_tdml(function_arg_map, arg_type=famc.ARGUMENTS.value, name=key)
|
|
287
|
+
else:
|
|
288
|
+
# No SQL name found for given teradataml input name
|
|
289
|
+
return False, None
|
|
290
|
+
|
|
291
|
+
if isinstance(sql_name, dict):
|
|
292
|
+
sql_name = sql_name[famc.TDML_NAME.value]
|
|
293
|
+
|
|
294
|
+
if isinstance(sql_name, list):
|
|
295
|
+
sql_name = sql_name[0]
|
|
296
|
+
|
|
297
|
+
# Check if SQL name is an alternate name
|
|
298
|
+
sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name]
|
|
299
|
+
if famc.ALTERNATE_TO.value in sql_block:
|
|
300
|
+
alternate_to = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][sql_name][famc.ALTERNATE_TO.value]
|
|
301
|
+
sql_block = function_arg_map[famc.ARGUMENTS.value][famc.SQL_TO_TDML.value][alternate_to]
|
|
302
|
+
|
|
303
|
+
# Check and return boolean indicating if it is a formula or sequence_input_by argument
|
|
304
|
+
if famc.USED_IN_SEQUENCE_INPUT_BY.value in sql_block:
|
|
305
|
+
return True, famc.USED_IN_SEQUENCE_INPUT_BY.value
|
|
306
|
+
elif famc.USED_IN_FORMULA.value in sql_block:
|
|
307
|
+
return True, famc.USED_IN_FORMULA.value
|
|
308
|
+
else:
|
|
309
|
+
return False, None
|
|
310
|
+
|
|
311
|
+
def __check_if_model_exists(name, created=False, accessible=False,
|
|
312
|
+
raise_error_if_exists=False, raise_error_if_model_not_found=False):
|
|
313
|
+
"""
|
|
314
|
+
DESCRIPTION:
|
|
315
|
+
Internal function to check if model with model_name, exists or not.
|
|
316
|
+
|
|
317
|
+
PARAMETERS:
|
|
318
|
+
name:
|
|
319
|
+
Required Argument.
|
|
320
|
+
Specifies the name of the model to check whether it exists or not.
|
|
321
|
+
Types: str
|
|
322
|
+
|
|
323
|
+
created:
|
|
324
|
+
Optional Argument.
|
|
325
|
+
Specifies whether to check if the model exists and is created by the user.
|
|
326
|
+
Default Value: False (Check for all models)
|
|
327
|
+
Types: bool
|
|
328
|
+
|
|
329
|
+
accessible:
|
|
330
|
+
Optional Argument.
|
|
331
|
+
Specifies whether to check if the model exists and is accessible by the user.
|
|
332
|
+
Default Value: False (Check for all models)
|
|
333
|
+
Types: bool
|
|
334
|
+
|
|
335
|
+
raise_error_if_exists:
|
|
336
|
+
Optional Argument.
|
|
337
|
+
Specifies the flag to decide whether to raise error when model exists or not.
|
|
338
|
+
Default Value: False (Do not raise exception)
|
|
339
|
+
Types: bool
|
|
340
|
+
|
|
341
|
+
raise_error_if_model_not_found:
|
|
342
|
+
Optional Argument.
|
|
343
|
+
Specifies the flag to decide whether to raise error when model is found or not.
|
|
344
|
+
Default Value: False (Do not raise exception)
|
|
345
|
+
Types: bool
|
|
346
|
+
|
|
347
|
+
RETURNS:
|
|
348
|
+
None.
|
|
349
|
+
|
|
350
|
+
RAISES:
|
|
351
|
+
TeradataMlException - MODEL_ALREADY_EXISTS, MODEL_NOT_FOUND
|
|
352
|
+
|
|
353
|
+
EXAMPLES:
|
|
354
|
+
>>> meta_df = __check_if_model_exists("glm_out")
|
|
355
|
+
"""
|
|
356
|
+
# Get the DataFrame for the Models metadata table.
|
|
357
|
+
if created:
|
|
358
|
+
current_user = __get_current_user()
|
|
359
|
+
models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
|
|
360
|
+
models_meta_df = models_meta_df[models_meta_df[mac.CREATED_BY.value].str.lower() == current_user.lower()]
|
|
361
|
+
elif accessible:
|
|
362
|
+
models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELSX.value))
|
|
363
|
+
else:
|
|
364
|
+
models_meta_df = DataFrame(in_schema(mac.MODEL_CATALOG_DB.value, mac.MODELS.value))
|
|
365
|
+
|
|
366
|
+
# Get the model created by current client user, using teradataml, with name as model_name.
|
|
367
|
+
model_name = models_meta_df.Name
|
|
368
|
+
|
|
369
|
+
# Filter Expression.
|
|
370
|
+
if name is not None:
|
|
371
|
+
models_meta_df = models_meta_df[model_name == name]
|
|
372
|
+
|
|
373
|
+
num_rows = models_meta_df.shape[0]
|
|
374
|
+
|
|
375
|
+
if raise_error_if_exists:
|
|
376
|
+
if num_rows == 1 and name is not None:
|
|
377
|
+
# If model with name 'name' already exists.
|
|
378
|
+
raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_ALREADY_EXISTS,
|
|
379
|
+
name),
|
|
380
|
+
MessageCodes.MODEL_ALREADY_EXISTS)
|
|
381
|
+
|
|
382
|
+
if raise_error_if_model_not_found:
|
|
383
|
+
if num_rows == 0:
|
|
384
|
+
if not created:
|
|
385
|
+
# 'name' MODEL_NOT_FOUND
|
|
386
|
+
raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
|
|
387
|
+
name, ''),
|
|
388
|
+
MessageCodes.MODEL_NOT_FOUND)
|
|
389
|
+
else:
|
|
390
|
+
# 'name' MODEL_NOT_FOUND or not created by user.
|
|
391
|
+
raise TeradataMlException(Messages.get_message(MessageCodes.MODEL_NOT_FOUND,
|
|
392
|
+
name, ' or not created by user'),
|
|
393
|
+
MessageCodes.MODEL_NOT_FOUND)
|
|
394
|
+
|
|
395
|
+
def __get_current_user(conn=None):
|
|
396
|
+
"""
|
|
397
|
+
DESCRIPTION:
|
|
398
|
+
Internal function to return the current Vantage user
|
|
399
|
+
|
|
400
|
+
PARAMETERS:
|
|
401
|
+
conn:
|
|
402
|
+
Optional Argument,
|
|
403
|
+
The underlying SQLAlchemy engine for the connection.
|
|
404
|
+
Types: SQLAlchemy engine
|
|
405
|
+
|
|
406
|
+
RETURNS:
|
|
407
|
+
A string representing the name of the current database user.
|
|
408
|
+
|
|
409
|
+
EXAMPLE:
|
|
410
|
+
>>> current_user = __get_current_user()
|
|
411
|
+
"""
|
|
412
|
+
if conn is None:
|
|
413
|
+
conn = get_connection()
|
|
414
|
+
|
|
415
|
+
return execute_sql('select user').fetchall()[0][0]
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def __get_like_filter_expression_on_col(metaexpr, column_name, like):
|
|
419
|
+
"""
|
|
420
|
+
DESCRIPTION:
|
|
421
|
+
Internal function to get the filter expression on column_name containing string matching with like.
|
|
422
|
+
(Case insensitive matching)
|
|
423
|
+
|
|
424
|
+
PARAMETERS:
|
|
425
|
+
metaexpr:
|
|
426
|
+
Required Argument.
|
|
427
|
+
Specifies the teradataml DataFrame meta data.
|
|
428
|
+
Types: _MetaExpression
|
|
429
|
+
|
|
430
|
+
column_name:
|
|
431
|
+
Required Argument.
|
|
432
|
+
Specifies the column name which is to be used in filter expression.
|
|
433
|
+
Types: str
|
|
434
|
+
|
|
435
|
+
like:
|
|
436
|
+
Required Argument.
|
|
437
|
+
Specifies the pattern to be matched in filter expression.
|
|
438
|
+
Types: str
|
|
439
|
+
|
|
440
|
+
RETURNS:
|
|
441
|
+
_SQLColumnExpression object
|
|
442
|
+
|
|
443
|
+
RAISES:
|
|
444
|
+
None
|
|
445
|
+
|
|
446
|
+
EXAMPLES:
|
|
447
|
+
>>> filter_expression = __get_like_filter_expression_on_col(models_meta_df._metaexpr,
|
|
448
|
+
... mmc.MMT_COL_model_class.value,
|
|
449
|
+
... function_name)
|
|
450
|
+
"""
|
|
451
|
+
return metaexpr._filter(0, 'like', [column_name], like = like, match_arg='i')
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
def __get_wrapper_class(model_engine, model_class):
|
|
455
|
+
"""
|
|
456
|
+
DESCRIPTION:
|
|
457
|
+
Internal function to the wrapper class that can be executed to create the instance of the
|
|
458
|
+
model_class from engine specified in model_engine.
|
|
459
|
+
|
|
460
|
+
PARAMETERS:
|
|
461
|
+
model_engine:
|
|
462
|
+
Required Argument.
|
|
463
|
+
Model engine string 'ML Engine' or 'Advanced SQL Engine'.
|
|
464
|
+
Types: str
|
|
465
|
+
|
|
466
|
+
model_class:
|
|
467
|
+
Required Argument.
|
|
468
|
+
Model class string for the analytical function wrapper.
|
|
469
|
+
Types: str
|
|
470
|
+
|
|
471
|
+
RETURNS:
|
|
472
|
+
A wrapper CLASS
|
|
473
|
+
|
|
474
|
+
RAISES:
|
|
475
|
+
ValueError - When invalid engine is passed.
|
|
476
|
+
AttributeError - When model_class wrapper function, does is not from model_engine.
|
|
477
|
+
|
|
478
|
+
EXAMPLES:
|
|
479
|
+
>>> __get_wrapper_class("SQL Engine", "GLM")
|
|
480
|
+
"""
|
|
481
|
+
if model_engine == mac.MODEL_ENGINE_ADVSQL.value:
|
|
482
|
+
module_name = "teradataml.analytics.sqle"
|
|
483
|
+
else:
|
|
484
|
+
raise ValueError("Invalid Engine found in Model Cataloging table.")
|
|
485
|
+
|
|
486
|
+
wrapper_module = importlib.import_module(module_name)
|
|
487
|
+
|
|
488
|
+
return getattr(wrapper_module, model_class)
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
from teradataml.dataframe.dataframe import DataFrame, in_schema
|