teradataml 17.20.0.6__py3-none-any.whl → 20.0.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of teradataml might be problematic. Click here for more details.
- teradataml/LICENSE-3RD-PARTY.pdf +0 -0
- teradataml/LICENSE.pdf +0 -0
- teradataml/README.md +238 -1
- teradataml/__init__.py +13 -3
- teradataml/_version.py +1 -1
- teradataml/analytics/Transformations.py +4 -4
- teradataml/analytics/__init__.py +0 -2
- teradataml/analytics/analytic_function_executor.py +3 -0
- teradataml/analytics/json_parser/utils.py +13 -12
- teradataml/analytics/sqle/DecisionTreePredict.py +15 -30
- teradataml/analytics/sqle/NaiveBayesPredict.py +11 -20
- teradataml/analytics/sqle/__init__.py +0 -13
- teradataml/analytics/utils.py +1 -0
- teradataml/analytics/valib.py +3 -0
- teradataml/automl/__init__.py +1628 -0
- teradataml/automl/custom_json_utils.py +1270 -0
- teradataml/automl/data_preparation.py +993 -0
- teradataml/automl/data_transformation.py +727 -0
- teradataml/automl/feature_engineering.py +1648 -0
- teradataml/automl/feature_exploration.py +547 -0
- teradataml/automl/model_evaluation.py +163 -0
- teradataml/automl/model_training.py +887 -0
- teradataml/catalog/__init__.py +0 -2
- teradataml/catalog/byom.py +49 -6
- teradataml/catalog/function_argument_mapper.py +0 -2
- teradataml/catalog/model_cataloging_utils.py +2 -1021
- teradataml/common/aed_utils.py +6 -2
- teradataml/common/constants.py +50 -58
- teradataml/common/deprecations.py +160 -0
- teradataml/common/garbagecollector.py +61 -104
- teradataml/common/messagecodes.py +27 -36
- teradataml/common/messages.py +11 -15
- teradataml/common/utils.py +205 -287
- teradataml/common/wrapper_utils.py +1 -110
- teradataml/context/context.py +150 -78
- teradataml/data/bank_churn.csv +10001 -0
- teradataml/data/bmi.csv +501 -0
- teradataml/data/docs/sqle/docs_17_10/BincodeFit.py +3 -3
- teradataml/data/docs/sqle/docs_17_10/BincodeTransform.py +6 -5
- teradataml/data/docs/sqle/docs_17_10/Fit.py +1 -1
- teradataml/data/docs/sqle/docs_17_10/OneHotEncodingTransform.py +1 -1
- teradataml/data/docs/sqle/docs_17_10/OutlierFilterTransform.py +1 -1
- teradataml/data/docs/sqle/docs_17_10/PolynomialFeaturesTransform.py +2 -2
- teradataml/data/docs/sqle/docs_17_10/RowNormalizeTransform.py +2 -1
- teradataml/data/docs/sqle/docs_17_10/ScaleTransform.py +1 -0
- teradataml/data/docs/sqle/docs_17_10/SimpleImputeTransform.py +1 -1
- teradataml/data/docs/sqle/docs_17_10/Transform.py +2 -1
- teradataml/data/docs/sqle/docs_17_20/BincodeFit.py +3 -3
- teradataml/data/docs/sqle/docs_17_20/BincodeTransform.py +6 -5
- teradataml/data/docs/sqle/docs_17_20/Fit.py +1 -1
- teradataml/data/docs/sqle/docs_17_20/GLM.py +1 -1
- teradataml/data/docs/sqle/docs_17_20/GLMPredictPerSegment.py +9 -10
- teradataml/data/docs/sqle/docs_17_20/KMeansPredict.py +3 -2
- teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierPredict.py +16 -15
- teradataml/data/docs/sqle/docs_17_20/NaiveBayesTextClassifierTrainer.py +2 -2
- teradataml/data/docs/sqle/docs_17_20/NonLinearCombineFit.py +2 -2
- teradataml/data/docs/sqle/docs_17_20/NonLinearCombineTransform.py +8 -8
- teradataml/data/docs/sqle/docs_17_20/OneClassSVMPredict.py +21 -20
- teradataml/data/docs/sqle/docs_17_20/OneHotEncodingTransform.py +1 -1
- teradataml/data/docs/sqle/docs_17_20/OutlierFilterTransform.py +8 -3
- teradataml/data/docs/sqle/docs_17_20/PolynomialFeaturesTransform.py +6 -5
- teradataml/data/docs/sqle/docs_17_20/RandomProjectionTransform.py +6 -6
- teradataml/data/docs/sqle/docs_17_20/RowNormalizeTransform.py +2 -1
- teradataml/data/docs/sqle/docs_17_20/SVM.py +1 -1
- teradataml/data/docs/sqle/docs_17_20/SVMPredict.py +16 -16
- teradataml/data/docs/sqle/docs_17_20/ScaleTransform.py +1 -0
- teradataml/data/docs/sqle/docs_17_20/SimpleImputeTransform.py +3 -2
- teradataml/data/docs/sqle/docs_17_20/TDDecisionForestPredict.py +4 -4
- teradataml/data/docs/sqle/docs_17_20/TDGLMPredict.py +19 -19
- teradataml/data/docs/sqle/docs_17_20/TargetEncodingTransform.py +5 -4
- teradataml/data/docs/sqle/docs_17_20/Transform.py +2 -2
- teradataml/data/docs/sqle/docs_17_20/XGBoostPredict.py +9 -9
- teradataml/data/fish.csv +160 -0
- teradataml/data/glass_types.csv +215 -0
- teradataml/data/insurance.csv +1 -1
- teradataml/data/iris_data.csv +151 -0
- teradataml/data/jsons/sqle/17.10/TD_FunctionTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_OneHotEncodingTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_OutlierFilterTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_PolynomialFeaturesTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_RowNormalizeTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_ScaleTransform.json +1 -0
- teradataml/data/jsons/sqle/17.10/TD_SimpleImputeTransform.json +1 -0
- teradataml/data/load_example_data.py +3 -0
- teradataml/data/multi_model_classification.csv +401 -0
- teradataml/data/multi_model_regression.csv +401 -0
- teradataml/data/openml_example.json +63 -0
- teradataml/data/scripts/deploy_script.py +65 -0
- teradataml/data/scripts/mapper.R +20 -0
- teradataml/data/scripts/sklearn/__init__.py +0 -0
- teradataml/data/scripts/sklearn/sklearn_fit.py +175 -0
- teradataml/data/scripts/sklearn/sklearn_fit_predict.py +135 -0
- teradataml/data/scripts/sklearn/sklearn_function.template +113 -0
- teradataml/data/scripts/sklearn/sklearn_model_selection_split.py +158 -0
- teradataml/data/scripts/sklearn/sklearn_neighbors.py +152 -0
- teradataml/data/scripts/sklearn/sklearn_score.py +128 -0
- teradataml/data/scripts/sklearn/sklearn_transform.py +179 -0
- teradataml/data/templates/open_source_ml.json +9 -0
- teradataml/data/teradataml_example.json +73 -1
- teradataml/data/test_classification.csv +101 -0
- teradataml/data/test_prediction.csv +101 -0
- teradataml/data/test_regression.csv +101 -0
- 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/wine_data.csv +1600 -0
- teradataml/dataframe/copy_to.py +79 -13
- teradataml/dataframe/data_transfer.py +8 -0
- teradataml/dataframe/dataframe.py +910 -311
- teradataml/dataframe/dataframe_utils.py +102 -5
- teradataml/dataframe/fastload.py +11 -3
- teradataml/dataframe/setop.py +15 -2
- teradataml/dataframe/sql.py +3735 -77
- teradataml/dataframe/sql_function_parameters.py +56 -5
- teradataml/dataframe/vantage_function_types.py +45 -1
- teradataml/dataframe/window.py +30 -29
- teradataml/dbutils/dbutils.py +18 -1
- teradataml/geospatial/geodataframe.py +18 -7
- teradataml/geospatial/geodataframecolumn.py +5 -0
- teradataml/hyperparameter_tuner/optimizer.py +910 -120
- teradataml/hyperparameter_tuner/utils.py +131 -37
- 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 +1668 -0
- teradataml/opensource/sklearn/_wrapper_utils.py +268 -0
- teradataml/opensource/sklearn/constants.py +54 -0
- teradataml/options/__init__.py +3 -6
- teradataml/options/configure.py +21 -20
- teradataml/scriptmgmt/UserEnv.py +61 -5
- teradataml/scriptmgmt/lls_utils.py +135 -53
- teradataml/table_operators/Apply.py +38 -6
- teradataml/table_operators/Script.py +45 -308
- teradataml/table_operators/TableOperator.py +182 -591
- teradataml/table_operators/__init__.py +0 -1
- teradataml/table_operators/table_operator_util.py +32 -40
- teradataml/utils/validators.py +127 -3
- {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/METADATA +243 -3
- {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/RECORD +147 -391
- 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.6.dist-info → teradataml-20.0.0.0.dist-info}/WHEEL +0 -0
- {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/top_level.txt +0 -0
- {teradataml-17.20.0.6.dist-info → teradataml-20.0.0.0.dist-info}/zip-safe +0 -0
|
@@ -27,87 +27,6 @@ import teradataml.dataframe as tdmldf
|
|
|
27
27
|
from teradatasqlalchemy.types import INTEGER, SMALLINT, BIGINT, BYTEINT, FLOAT, NUMBER, VARCHAR, BYTE
|
|
28
28
|
|
|
29
29
|
FUNCTION_PREDICTION_TYPE_MAPPER = {
|
|
30
|
-
# MLE functions
|
|
31
|
-
'teradataml.analytics.mle.AdaBoost.AdaBoost':
|
|
32
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
33
|
-
'teradataml.analytics.mle.AdaBoostPredict.AdaBoostPredict':
|
|
34
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
35
|
-
'teradataml.analytics.mle.Arima.Arima':
|
|
36
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
37
|
-
'teradataml.analytics.mle.ArimaPredict.ArimaPredict':
|
|
38
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
39
|
-
'teradataml.analytics.mle.CoxHazardRatio.CoxHazardRatio':
|
|
40
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
41
|
-
'teradataml.analytics.mle.CoxPH.CoxPH':
|
|
42
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
43
|
-
'teradataml.analytics.mle.CoxSurvival.CoxSurvival':
|
|
44
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
45
|
-
'teradataml.analytics.mle.DecisionTree.DecisionTree':
|
|
46
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
47
|
-
'teradataml.analytics.mle.DecisionTreePredict.DecisionTreePredict':
|
|
48
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
49
|
-
'teradataml.analytics.mle.GLM.GLM':
|
|
50
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
51
|
-
'teradataml.analytics.mle.GLML1L2.GLML1L2':
|
|
52
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
53
|
-
'teradataml.analytics.mle.GLML1L2Predict.GLML1L2Predict':
|
|
54
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
55
|
-
'teradataml.analytics.mle.GLMPredict.GLMPredict':
|
|
56
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
57
|
-
'teradataml.analytics.mle.KMeans.KMeans':
|
|
58
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLUSTERING.value,
|
|
59
|
-
'teradataml.analytics.mle.KNN.KNN':
|
|
60
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
61
|
-
'teradataml.analytics.mle.LAR.LAR':
|
|
62
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
63
|
-
'teradataml.analytics.mle.LARPredict.LARPredict':
|
|
64
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
65
|
-
'teradataml.analytics.mle.LDA.LDA':
|
|
66
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
67
|
-
'teradataml.analytics.mle.LDAInference.LDAInference':
|
|
68
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
69
|
-
'teradataml.analytics.mle.LDATopicSummary.LDATopicSummary':
|
|
70
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
71
|
-
'teradataml.analytics.mle.LinReg.LinReg':
|
|
72
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
73
|
-
'teradataml.analytics.mle.LinRegPredict.LinRegPredict':
|
|
74
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
75
|
-
'teradataml.analytics.mle.MinHash.MinHash':
|
|
76
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLUSTERING.value,
|
|
77
|
-
'teradataml.analytics.mle.NaiveBayes.NaiveBayes':
|
|
78
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
79
|
-
'teradataml.analytics.mle.NaiveBayesPredict.NaiveBayesPredict':
|
|
80
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
81
|
-
'teradataml.analytics.mle.NaiveBayesTextClassifier.NaiveBayesTextClassifier':
|
|
82
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
83
|
-
'teradataml.analytics.mle.NaiveBayesTextClassifier2.NaiveBayesTextClassifier2':
|
|
84
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
85
|
-
'teradataml.analytics.mle.NaiveBayesTextClassifierPredict.NaiveBayesTextClassifierPredict':
|
|
86
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
87
|
-
'teradataml.analytics.mle.SVMDense.SVMDense':
|
|
88
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
89
|
-
'teradataml.analytics.mle.SVMDensePredict.SVMDensePredict':
|
|
90
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
91
|
-
'teradataml.analytics.mle.SVMDenseSummary.SVMDenseSummary':
|
|
92
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
93
|
-
'teradataml.analytics.mle.SVMSparse.SVMSparse':
|
|
94
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
95
|
-
'teradataml.analytics.mle.SVMSparsePredict.SVMSparsePredict':
|
|
96
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
97
|
-
'teradataml.analytics.mle.SVMSparseSummary.SVMSparseSummary':
|
|
98
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
99
|
-
'teradataml.analytics.mle.TextClassifierTrainer.TextClassifierTrainer':
|
|
100
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
101
|
-
'teradataml.analytics.mle.TextClassifier.TextClassifier':
|
|
102
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
103
|
-
'teradataml.analytics.mle.TextClassifierTrainerEvaluator.TextClassifierTrainerEvaluator':
|
|
104
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
105
|
-
'teradataml.analytics.mle.VarMax.VarMax':
|
|
106
|
-
ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value,
|
|
107
|
-
'teradataml.analytics.mle.XGBoost.XGBoost':
|
|
108
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
109
|
-
'teradataml.analytics.mle.XGBoostPredict.XGBoostPredict':
|
|
110
|
-
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
111
30
|
# SQLE functions
|
|
112
31
|
'teradataml.analytics.sqle.DecisionTreePredict.DecisionTreePredict':
|
|
113
32
|
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value,
|
|
@@ -121,11 +40,6 @@ FUNCTION_PREDICTION_TYPE_MAPPER = {
|
|
|
121
40
|
ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value
|
|
122
41
|
}
|
|
123
42
|
|
|
124
|
-
# List of functions having the prediction dependent on the inputs
|
|
125
|
-
INPUT_DEPENDENT_PREDICTION_TYPE_FUNCTION_LIST = [
|
|
126
|
-
'teradataml.analytics.mle.DecisionForest.DecisionForest'
|
|
127
|
-
]
|
|
128
|
-
|
|
129
43
|
|
|
130
44
|
class AnalyticsWrapperUtils:
|
|
131
45
|
|
|
@@ -673,24 +587,6 @@ class AnalyticsWrapperUtils:
|
|
|
673
587
|
# This list serves as a quick lookup.
|
|
674
588
|
function_name_with_module = '{}.{}'.format(function_obj.__class__.__module__, function_obj.__class__.__name__)
|
|
675
589
|
|
|
676
|
-
if function_name_with_module == 'teradataml.analytics.mle.DecisionForest.DecisionForest':
|
|
677
|
-
# Check the tree_type argument to the function
|
|
678
|
-
if function_obj.tree_type is not None:
|
|
679
|
-
# The tree_type argument can be either 'regression' or 'classification'.
|
|
680
|
-
# We can return it as is.
|
|
681
|
-
return function_obj.tree_type.upper()
|
|
682
|
-
else:
|
|
683
|
-
# Since tree_type was not used, we will have to check the type of the response column used with formula
|
|
684
|
-
formula_object = self._validate_formula_notation(function_obj.formula, input_data, "formula")
|
|
685
|
-
# response variable
|
|
686
|
-
response = formula_object._get_dependent_vars()
|
|
687
|
-
|
|
688
|
-
common_util = UtilFuncs()
|
|
689
|
-
if response in formula_object.get_all_columns(common_util._get_numeric_datatypes()):
|
|
690
|
-
# The response column is numeric, so the prediction type is REGRESSION
|
|
691
|
-
return ModelCatalogingConstants.PREDICTION_TYPE_REGRESSION.value
|
|
692
|
-
else:
|
|
693
|
-
return ModelCatalogingConstants.PREDICTION_TYPE_CLASSIFICATION.value
|
|
694
590
|
|
|
695
591
|
def _get_function_prediction_type(self, function_obj, input_data=None):
|
|
696
592
|
"""
|
|
@@ -726,9 +622,4 @@ class AnalyticsWrapperUtils:
|
|
|
726
622
|
try:
|
|
727
623
|
return FUNCTION_PREDICTION_TYPE_MAPPER[function_name_with_module]
|
|
728
624
|
except KeyError:
|
|
729
|
-
|
|
730
|
-
# in its input, or must default to OTHER
|
|
731
|
-
if function_name_with_module not in INPUT_DEPENDENT_PREDICTION_TYPE_FUNCTION_LIST:
|
|
732
|
-
return ModelCatalogingConstants.PREDICTION_TYPE_OTHER.value
|
|
733
|
-
else:
|
|
734
|
-
return self.__get_input_dependent_prediction_type(function_obj, input_data)
|
|
625
|
+
return self.__get_input_dependent_prediction_type(function_obj, input_data)
|
teradataml/context/context.py
CHANGED
|
@@ -13,7 +13,10 @@ A teradataml context functions provide interface to Teradata Vantage. Provides f
|
|
|
13
13
|
context which can be used by other analytical functions to get the Teradata Vantage connection.
|
|
14
14
|
|
|
15
15
|
"""
|
|
16
|
+
from pathlib import Path
|
|
16
17
|
from sqlalchemy import create_engine
|
|
18
|
+
from teradatasqlalchemy.telemetry.queryband import collect_queryband
|
|
19
|
+
from teradataml.common.deprecations import argument_deprecation
|
|
17
20
|
from teradataml.common.exceptions import TeradataMlException
|
|
18
21
|
from teradataml.common.warnings import TeradataMlRuntimeWarning
|
|
19
22
|
from teradataml.common.messages import Messages
|
|
@@ -23,12 +26,12 @@ from teradataml.common.constants import SQLConstants
|
|
|
23
26
|
from teradataml.common.garbagecollector import GarbageCollector
|
|
24
27
|
from teradataml.context.aed_context import AEDContext
|
|
25
28
|
from teradataml.common.constants import TeradataConstants, Query
|
|
26
|
-
from teradataml.common.utils import UtilFuncs
|
|
27
29
|
from teradataml.options.configure import configure
|
|
28
30
|
from teradataml.utils.utils import execute_sql
|
|
29
31
|
from teradataml.utils.validators import _Validators
|
|
30
32
|
from teradataml.utils.internal_buffer import _InternalBuffer
|
|
31
33
|
from sqlalchemy.engine.base import Engine
|
|
34
|
+
from sqlalchemy.engine.url import URL
|
|
32
35
|
import os
|
|
33
36
|
import warnings
|
|
34
37
|
import atexit
|
|
@@ -122,7 +125,7 @@ def __cleanup_garbage_collection():
|
|
|
122
125
|
def _get_other_connection_parameters(logmech = None, logdata = None, database = None, **kwargs):
|
|
123
126
|
"""
|
|
124
127
|
DESCRIPTION:
|
|
125
|
-
|
|
128
|
+
Internal function to return the connection parameters.
|
|
126
129
|
|
|
127
130
|
PARAMETERS:
|
|
128
131
|
logmech:
|
|
@@ -145,7 +148,7 @@ def _get_other_connection_parameters(logmech = None, logdata = None, database =
|
|
|
145
148
|
Specifies the keyword value pairs of other connection parameters to create the connection string.
|
|
146
149
|
|
|
147
150
|
RETURNS:
|
|
148
|
-
|
|
151
|
+
dict, needed to generate engine URL.
|
|
149
152
|
|
|
150
153
|
EXAMPLES:
|
|
151
154
|
__get_other_connection_parameters(logmech = "JWT", logdata = "<jwt_token>", database = "<database_name>",
|
|
@@ -155,12 +158,14 @@ def _get_other_connection_parameters(logmech = None, logdata = None, database =
|
|
|
155
158
|
if not logmech and not logdata and not database and len(kwargs) == 0:
|
|
156
159
|
return ""
|
|
157
160
|
|
|
161
|
+
result = {}
|
|
162
|
+
|
|
158
163
|
if logmech:
|
|
159
|
-
|
|
164
|
+
result['LOGMECH'] = logmech.upper()
|
|
160
165
|
if logdata:
|
|
161
|
-
|
|
166
|
+
result['LOGDATA'] = logdata
|
|
162
167
|
if database:
|
|
163
|
-
|
|
168
|
+
result['DATABASE'] = database
|
|
164
169
|
|
|
165
170
|
# Create connection parameters string.
|
|
166
171
|
other_params = []
|
|
@@ -174,11 +179,12 @@ def _get_other_connection_parameters(logmech = None, logdata = None, database =
|
|
|
174
179
|
# Other type values like integer, boolean etc, are converted to string.
|
|
175
180
|
# For boolean values, the connection string should contain lower case values i.e., True -> true
|
|
176
181
|
val = str(val).lower()
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return "/?{}".format("&".join(other_params))
|
|
182
|
+
result[key] = val
|
|
180
183
|
|
|
184
|
+
return result
|
|
181
185
|
|
|
186
|
+
@argument_deprecation("future", ["url_encode"], False, None)
|
|
187
|
+
@collect_queryband(queryband='CrtCxt')
|
|
182
188
|
def create_context(host = None, username = None, password = None, tdsqlengine = None, temp_database_name = None,
|
|
183
189
|
logmech = None, logdata = None, database = None, url_encode = True, **kwargs):
|
|
184
190
|
"""
|
|
@@ -284,36 +290,17 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
284
290
|
logmech:
|
|
285
291
|
Optional Argument.
|
|
286
292
|
Specifies the type of logon mechanism to establish a connection to Teradata Vantage.
|
|
287
|
-
Permitted Values:
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
mechanism required, based on policy, without user's involvement.
|
|
295
|
-
The actual mechanism is determined by the TDGSS server configuration
|
|
296
|
-
and by the security policy's mechanism restrictions.
|
|
297
|
-
LDAP:
|
|
298
|
-
A directory-based user logon to Vantage with a directory username
|
|
299
|
-
and password and is authenticated by the directory.
|
|
300
|
-
KRB5 (Kerberos):
|
|
301
|
-
A directory-based user logon to Vantage with a domain username
|
|
302
|
-
and password and is authenticated by Kerberos (KRB5 mechanism).
|
|
303
|
-
Note: User must have a valid ticket-granting ticket in order to use this logon mechanism.
|
|
304
|
-
JWT:
|
|
305
|
-
The JSON Web Token (JWT) authentication mechanism enables single
|
|
306
|
-
sign-on (SSO) to the Vantage after the user successfully authenticates
|
|
307
|
-
to Teradata UDA User Service.
|
|
308
|
-
Note: User must use logdata parameter when using 'JWT' as the logon mechanism.
|
|
309
|
-
Types: str
|
|
310
|
-
|
|
311
|
-
Note:
|
|
312
|
-
teradataml expects the client environments are already setup with appropriate
|
|
313
|
-
security mechanisms and are in working conditions.
|
|
293
|
+
Permitted Values: As supported by the teradata driver.
|
|
294
|
+
Notes:
|
|
295
|
+
1. teradataml expects the client environments are already setup with appropriate
|
|
296
|
+
security mechanisms and are in working conditions.
|
|
297
|
+
2. User must have a valid ticket-granting ticket in order to use KRB5 (Kerberos) logon mechanism.
|
|
298
|
+
3. User must use logdata parameter when using 'JWT' as the logon mechanism.
|
|
299
|
+
4. Browser Authentication is supported for Windows and macOS.
|
|
314
300
|
For more information please refer Teradata Vantage™ - Advanced SQL Engine
|
|
315
301
|
Security Administration at https://www.info.teradata.com/
|
|
316
|
-
|
|
302
|
+
Types: str
|
|
303
|
+
|
|
317
304
|
logdata:
|
|
318
305
|
Optional Argument.
|
|
319
306
|
Specifies parameters to the LOGMECH command beyond those needed by the logon mechanism, such as
|
|
@@ -325,13 +312,6 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
325
312
|
Specifies the initial database to use after logon, instead of the user's default database.
|
|
326
313
|
Types: str
|
|
327
314
|
|
|
328
|
-
url_encode:
|
|
329
|
-
Optional Argument.
|
|
330
|
-
Specifies whether the password should be URL encoded or not.
|
|
331
|
-
When set to True, passwords are URL encoded, otherwise not.
|
|
332
|
-
Default Value: True
|
|
333
|
-
Types: bool
|
|
334
|
-
|
|
335
315
|
kwargs:
|
|
336
316
|
Specifies the keyword-value pairs of connection parameters that are passed to Teradata SQL Driver for
|
|
337
317
|
Python. Please refer to https://github.com/Teradata/python-driver#ConnectionParameters to get information
|
|
@@ -409,22 +389,6 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
409
389
|
>>> td_context = create_context(host = 'tdhost', username='tduser', password = 'tdpassword', tmode = 'tera',
|
|
410
390
|
log = 8, lob_support = False)
|
|
411
391
|
|
|
412
|
-
# Example 14: Create context when password has special characters.
|
|
413
|
-
# In this example password "alice@pass" is encoded by default.
|
|
414
|
-
>>> td_context = create_context(host = 'tdhost', username='alice_pass', password = 'alice@pass')
|
|
415
|
-
UserWarning: Warning: Password is URL encoded.
|
|
416
|
-
|
|
417
|
-
# Example 15: Create context when password contains space and special characters.
|
|
418
|
-
# "url_encode" must be set to False and special characters should be manually encoded in the password.
|
|
419
|
-
# For example, let's say password is: "kx%jj5/ g"
|
|
420
|
-
# then password should be manually encoded as: "kx%25jj5%2F g"
|
|
421
|
-
# where,
|
|
422
|
-
# %25 represents the '%' character and
|
|
423
|
-
# %2F represents the '/' character
|
|
424
|
-
# space is not encoded.
|
|
425
|
-
>>> td_context = create_context(host = 'tdhost', username='alice_pass', password = 'kx%25jj5%2F g',
|
|
426
|
-
url_encode=False)
|
|
427
|
-
|
|
428
392
|
"""
|
|
429
393
|
global td_connection
|
|
430
394
|
global td_sqlalchemy_engine
|
|
@@ -432,16 +396,14 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
432
396
|
global user_specified_connection
|
|
433
397
|
global python_packages_installed
|
|
434
398
|
global td_user
|
|
435
|
-
logmech_valid_values = ['TD2', 'TDNEGO', 'LDAP', 'KRB5', 'JWT']
|
|
436
399
|
awu_matrix = []
|
|
437
400
|
awu_matrix.append(["host", host, True, (str), True])
|
|
438
401
|
awu_matrix.append(["username", username, True, (str), True])
|
|
439
402
|
awu_matrix.append(["password", password, True, (str), True])
|
|
440
403
|
awu_matrix.append(["tdsqlengine", tdsqlengine, True, (Engine)])
|
|
441
|
-
awu_matrix.append(["logmech", logmech, True, (str), True
|
|
404
|
+
awu_matrix.append(["logmech", logmech, True, (str), True])
|
|
442
405
|
awu_matrix.append(["logdata", logdata, True, (str), True])
|
|
443
406
|
awu_matrix.append(["database", database, True, (str), True])
|
|
444
|
-
awu_matrix.append(["url_encode", url_encode, True, (bool), True])
|
|
445
407
|
|
|
446
408
|
awu = _Validators()
|
|
447
409
|
awu._validate_function_arguments(awu_matrix)
|
|
@@ -459,7 +421,7 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
459
421
|
warnings.simplefilter("always", TeradataMlRuntimeWarning)
|
|
460
422
|
# Throwing warning and removing context if any.
|
|
461
423
|
if td_connection is not None:
|
|
462
|
-
warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT))
|
|
424
|
+
warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT), stacklevel=2)
|
|
463
425
|
remove_context()
|
|
464
426
|
|
|
465
427
|
# Check if teradata sqlalchemy engine is provided by the user
|
|
@@ -477,25 +439,23 @@ def create_context(host = None, username = None, password = None, tdsqlengine =
|
|
|
477
439
|
elif host:
|
|
478
440
|
username = '' if username is None else username
|
|
479
441
|
|
|
480
|
-
|
|
481
|
-
if password and url_encode:
|
|
482
|
-
encoded_password = urllib.parse.quote_plus(password)
|
|
483
|
-
if encoded_password != password:
|
|
484
|
-
warnings.warn("Warning: Password is URL encoded.", category=TeradataMlRuntimeWarning)
|
|
485
|
-
password = encoded_password
|
|
486
|
-
|
|
487
|
-
if logmech and logmech.upper() == 'JWT':
|
|
442
|
+
if logmech and logmech.upper() in ['JWT', 'BROWSER']:
|
|
488
443
|
host_value = host
|
|
489
444
|
elif logmech and logmech.upper() == 'KRB5':
|
|
490
445
|
host_value = '{}:@{}'.format(username, host)
|
|
491
446
|
else:
|
|
492
447
|
host_value = '{}:{}@{}'.format(username, password, host)
|
|
493
448
|
|
|
494
|
-
|
|
449
|
+
url_object = URL.create(
|
|
450
|
+
"teradatasql",
|
|
451
|
+
username=username,
|
|
452
|
+
password=password, # plain (unescaped) text
|
|
453
|
+
host=host,
|
|
454
|
+
query=_get_other_connection_parameters(logmech, logdata, database, **kwargs)
|
|
455
|
+
)
|
|
495
456
|
|
|
496
457
|
try:
|
|
497
|
-
|
|
498
|
-
td_sqlalchemy_engine = create_engine(engine_url.format(host_value, other_connection_parameters))
|
|
458
|
+
td_sqlalchemy_engine = create_engine(url_object)
|
|
499
459
|
td_connection = td_sqlalchemy_engine.connect()
|
|
500
460
|
td_user = username.upper()
|
|
501
461
|
|
|
@@ -614,6 +574,7 @@ def get_connection():
|
|
|
614
574
|
return td_connection
|
|
615
575
|
|
|
616
576
|
|
|
577
|
+
@collect_queryband(queryband='SetCxt')
|
|
617
578
|
def set_context(tdsqlengine, temp_database_name=None):
|
|
618
579
|
"""
|
|
619
580
|
DESCRIPTION:
|
|
@@ -647,7 +608,7 @@ def set_context(tdsqlengine, temp_database_name=None):
|
|
|
647
608
|
global user_specified_connection
|
|
648
609
|
global python_packages_installed
|
|
649
610
|
if td_connection is not None:
|
|
650
|
-
warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT))
|
|
611
|
+
warnings.warn(Messages.get_message(MessageCodes.OVERWRITE_CONTEXT), stacklevel=2)
|
|
651
612
|
remove_context()
|
|
652
613
|
|
|
653
614
|
if tdsqlengine:
|
|
@@ -680,6 +641,7 @@ def set_context(tdsqlengine, temp_database_name=None):
|
|
|
680
641
|
return td_connection
|
|
681
642
|
|
|
682
643
|
|
|
644
|
+
@collect_queryband(queryband='RmCxt')
|
|
683
645
|
def remove_context():
|
|
684
646
|
"""
|
|
685
647
|
DESCRIPTION:
|
|
@@ -837,9 +799,9 @@ def _load_function_aliases():
|
|
|
837
799
|
alias_config_file = os.path.join(config_folder,
|
|
838
800
|
"{}_{}".format(supported_engines[engine]["file"], vantage_versions[vv]))
|
|
839
801
|
engine_name = supported_engines[engine]['name']
|
|
840
|
-
|
|
802
|
+
ContextUtilFuncs._check_alias_config_file_exists(vv, alias_config_file)
|
|
841
803
|
function_alias_mappings_by_engine[engine_name] = \
|
|
842
|
-
|
|
804
|
+
ContextUtilFuncs._get_function_mappings_from_config_file(alias_config_file)
|
|
843
805
|
function_alias_mappings[vv] = function_alias_mappings_by_engine
|
|
844
806
|
|
|
845
807
|
|
|
@@ -997,3 +959,113 @@ def _get_user():
|
|
|
997
959
|
if not td_user:
|
|
998
960
|
td_user = _get_database_username()
|
|
999
961
|
return td_user
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
class ContextUtilFuncs():
|
|
965
|
+
@staticmethod
|
|
966
|
+
def _check_alias_config_file_exists(vantage_version, alias_config_file):
|
|
967
|
+
"""
|
|
968
|
+
Function to validate whether alias_config_file exists for the current vantage version.
|
|
969
|
+
|
|
970
|
+
PARAMETERS:
|
|
971
|
+
vantage_version:
|
|
972
|
+
Required Argument.
|
|
973
|
+
Specifies the current vantage version.
|
|
974
|
+
|
|
975
|
+
alias_config_file:
|
|
976
|
+
Required Argument.
|
|
977
|
+
Specifies the location of configuration file to be read.
|
|
978
|
+
|
|
979
|
+
RETURNS:
|
|
980
|
+
True, if the file 'alias_config_file' is present in the
|
|
981
|
+
teradataml/config directory for the current vantage version.
|
|
982
|
+
|
|
983
|
+
RAISES:
|
|
984
|
+
TeradataMLException
|
|
985
|
+
|
|
986
|
+
EXAMPLES:
|
|
987
|
+
ContextUtilFuncs._check_alias_config_file_exists("vantage1.0", "config_file_location")
|
|
988
|
+
|
|
989
|
+
"""
|
|
990
|
+
# Raise exception if alias config file is not defined.
|
|
991
|
+
if not Path(alias_config_file).exists():
|
|
992
|
+
raise TeradataMlException(Messages.get_message(
|
|
993
|
+
MessageCodes.CONFIG_ALIAS_CONFIG_FILE_NOT_FOUND).format(alias_config_file,
|
|
994
|
+
vantage_version),
|
|
995
|
+
MessageCodes.CONFIG_ALIAS_CONFIG_FILE_NOT_FOUND)
|
|
996
|
+
return True
|
|
997
|
+
|
|
998
|
+
@staticmethod
|
|
999
|
+
def _get_function_mappings_from_config_file(alias_config_file):
|
|
1000
|
+
"""
|
|
1001
|
+
Function to return the function mappings given the location of configuration file in
|
|
1002
|
+
argument 'alias_config_file'.
|
|
1003
|
+
|
|
1004
|
+
PARAMETERS:
|
|
1005
|
+
alias_config_file:
|
|
1006
|
+
Required Argument.
|
|
1007
|
+
Specifies the location of configuration file to be read.
|
|
1008
|
+
|
|
1009
|
+
RETURNS:
|
|
1010
|
+
Function mappings as a dictionary of function_names to alias_names.
|
|
1011
|
+
|
|
1012
|
+
RAISES:
|
|
1013
|
+
TeradataMLException
|
|
1014
|
+
|
|
1015
|
+
EXAMPLES:
|
|
1016
|
+
ContextUtilFuncs._get_function_mappings_from_config_file("config_file_location")
|
|
1017
|
+
|
|
1018
|
+
"""
|
|
1019
|
+
repeated_function_names = []
|
|
1020
|
+
function_mappings = {}
|
|
1021
|
+
invalid_function_mappings = []
|
|
1022
|
+
invalid_function_mappings_line_nos = []
|
|
1023
|
+
# Reading configuration files
|
|
1024
|
+
with open(alias_config_file, 'r') as fread:
|
|
1025
|
+
for line_no, line in enumerate(fread.readlines()):
|
|
1026
|
+
line = line.strip()
|
|
1027
|
+
|
|
1028
|
+
# Ignoring empty lines in the config files.
|
|
1029
|
+
if line == "":
|
|
1030
|
+
continue
|
|
1031
|
+
|
|
1032
|
+
# If the separator ":" is not present.
|
|
1033
|
+
if ':' not in line:
|
|
1034
|
+
invalid_function_mappings.append(line)
|
|
1035
|
+
invalid_function_mappings_line_nos.append(str(line_no + 1))
|
|
1036
|
+
else:
|
|
1037
|
+
func_name, alias_name = line.split(":")
|
|
1038
|
+
func_name = func_name.strip()
|
|
1039
|
+
alias_name = alias_name.strip()
|
|
1040
|
+
|
|
1041
|
+
# First line of 'alias_config_file' has header "functionName:aliasName".
|
|
1042
|
+
if line_no == 0 and func_name == "functionName" and alias_name == "aliasName":
|
|
1043
|
+
continue
|
|
1044
|
+
|
|
1045
|
+
if func_name == "" or alias_name == "":
|
|
1046
|
+
invalid_function_mappings.append(line)
|
|
1047
|
+
invalid_function_mappings_line_nos.append(str(line_no + 1))
|
|
1048
|
+
continue
|
|
1049
|
+
|
|
1050
|
+
if func_name.lower() in function_mappings:
|
|
1051
|
+
repeated_function_names.append(func_name.lower())
|
|
1052
|
+
|
|
1053
|
+
# Loading function maps with lower values for key.
|
|
1054
|
+
function_mappings[func_name.lower()] = alias_name
|
|
1055
|
+
|
|
1056
|
+
# Presence of Invalid function mappings in the 'alias_config_file'.
|
|
1057
|
+
if len(invalid_function_mappings) > 0:
|
|
1058
|
+
err_ = Messages.get_message(MessageCodes.CONFIG_ALIAS_INVALID_FUNC_MAPPING)
|
|
1059
|
+
err_ = err_.format("', '".join(invalid_function_mappings),
|
|
1060
|
+
", ".join(invalid_function_mappings_line_nos),
|
|
1061
|
+
alias_config_file)
|
|
1062
|
+
raise TeradataMlException(err_, MessageCodes.CONFIG_ALIAS_INVALID_FUNC_MAPPING)
|
|
1063
|
+
|
|
1064
|
+
# Raising teradataml exception if there are any duplicates in function names.
|
|
1065
|
+
if len(repeated_function_names) > 0:
|
|
1066
|
+
raise TeradataMlException(Messages.get_message(
|
|
1067
|
+
MessageCodes.CONFIG_ALIAS_DUPLICATES).format(alias_config_file,
|
|
1068
|
+
", ".join(repeated_function_names)),
|
|
1069
|
+
MessageCodes.CONFIG_ALIAS_DUPLICATES)
|
|
1070
|
+
|
|
1071
|
+
return function_mappings
|