Usar ML com sintaxe do Athena
A cláusula USING EXTERNAL FUNCTION especifica uma função ML com Athena ou várias funções que podem ser referenciadas por uma instrução SELECT subsequente na consulta. Você define o nome da função, os nomes das variáveis e os tipos de dados das variáveis e dos valores de retorno.
Resumo
A sintaxe a seguir mostra uma cláusula USING EXTERNAL FUNCTION que especifica uma função ML com Athena.
USING EXTERNAL FUNCTION ml_function_name (variable1 data_type[, variable2 data_type][,...])
RETURNS data_type
SAGEMAKER 'sagemaker_endpoint'
SELECT ml_function_name()
Parâmetros
- USING EXTERNAL FUNCTION
ml_function_name(variable1data_type[,variable2data_type][,...]) -
ml_function_namedefine o nome da função, que pode ser usada nas cláusulas de consultas subsequentes. Cadavariable data_typeespecifica uma variável nomeada e o tipo de dados correspondente que o modelo do SageMaker AI aceita como entrada. O tipo de dados especificado deve ser um permitido pelo Athena. - RETURNS
tipo_dados -
data_typeespecifica o tipo de dados SQL queml_function_nameretorna para a consulta como saída do modelo do SageMaker AI. - SAGEMAKER '
sagemaker_endpoint' -
sagemaker_endpointespecifica o endpoint do modelo do SageMaker AI. - SELECT [...]
ml_function_name(expression) [...] -
A consulta SELECT que transmite os valores para as variáveis de função e o modelo do SageMaker AI para retornar um resultado.
ml_function_nameespecifica a função que já foi definida na consulta, seguida de umaexpressionque é avaliada para passar os valores. Os valores que são passados e retornados devem coincidir com os tipos de dados correspondentes especificados para a função na cláusulaUSING EXTERNAL FUNCTION.
Exemplo
O exemplo a seguir demonstra uma consulta que usa ML com 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;