Utilizzare ML con sintassi Athena
La clausola USING EXTERNAL FUNCTION specifica un ML con funzione o più funzioni Athena a cui è possibile fare riferimento da un'istruzione SELECT successiva nella query. Definire il nome della funzione, i nomi delle variabili e i tipi di dati per le variabili e i valori restituiti.
Riepilogo
La seguente sintassi mostra una clausola USING EXTERNAL FUNCTION che specifica un ML con funzione Athena.
USING EXTERNAL FUNCTION ml_function_name (variable1 data_type[, variable2 data_type][,...])
RETURNS data_type
SAGEMAKER 'sagemaker_endpoint'
SELECT ml_function_name()
Parametri
- USING EXTERNAL FUNCTION
ml_function_name(variable1data_type[,variable2data_type][,...]) -
ml_function_namedefinisce il nome della funzione, che può essere utilizzato nelle successive clausole di query. Ognivariabile data_typespecifica una variabile denominata e il tipo di dati corrispondente, che il modello SageMaker AI accetta come input. Il tipo di dati specificato deve essere un tipo di dati Athena supportato. - RETURNS
data_type -
data_typespecifica il tipo di dati SQL restituito daml_function_namealla query come output del modello SageMaker AI. - SAGEMAKER '
sagemaker_endpoint' -
sagemaker_endpointspecifica l'endpoint del modello SageMaker AI. - SELEZIONA [...]
ml_function_name(expression) [...] -
La query SELECT che trasmette valori alle variabili di funzione e il modello SageMaker AI per restituire un risultato.
ml_function_namespecifica la funzione definita in precedenza nella query, seguita da unaespressioneche viene valutata per trasmettere i valori. I valori passati e restituiti devono corrispondere ai tipi di dati corrispondenti specificati per la funzione nella clausolaUSING EXTERNAL FUNCTION.
Esempio
Nell'esempio seguente viene illustrata una query mediante ML con Athena.
USING EXTERNAL FUNCTION predict_customer_registration(age INTEGER) RETURNS DOUBLE SAGEMAKER 'xgboost-2019-09-20-04-49-29-303' SELECT predict_customer_registration(age) AS probability_of_enrolling, customer_id FROM "sampledb"."ml_test_dataset" WHERE predict_customer_registration(age) < 0.5;