

# Usar ML com sintaxe do Athena
<a name="ml-syntax"></a>

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 name="ml-synopsis"></a>

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
<a name="udf-parameters"></a>

**USING EXTERNAL FUNCTION *ml\$1function\$1name* (*variable1* *data\$1type*[, *variable2* *data\$1type*][,...])**  
*ml\$1function\$1name* define o nome da função, que pode ser usada nas cláusulas de consultas subsequentes. Cada *variable data\$1type* especifica 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\$1dados***  
*data\$1type* especifica o tipo de dados SQL que *ml\$1function\$1name* retorna para a consulta como saída do modelo do SageMaker AI.

**SAGEMAKER '*sagemaker\$1endpoint*'**  
*sagemaker\$1endpoint* especifica o endpoint do modelo do SageMaker AI.

**SELECT [...] *ml\$1function\$1name*(*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\$1function\$1name* especifica a função que já foi definida na consulta, seguida de uma *expression* que é 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áusula `USING EXTERNAL FUNCTION`.

## Exemplo
<a name="ml-examples"></a>

O exemplo a seguir demonstra uma consulta que usa ML com Athena.

**Example**  

```
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;
```