

# 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\_function\_name}} ({{variable1}} {{data\_type}}[, {{variable2}} {{data\_type}}][,...])**  
{{ml\_function\_name}} define o nome da função, que pode ser usada nas cláusulas de consultas subsequentes. Cada {{variable data\_type}} 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\_dados}}**  
{{data\_type}} especifica o tipo de dados SQL que {{ml\_function\_name}} retorna para a consulta como saída do modelo do SageMaker AI.

**SAGEMAKER '{{sagemaker\_endpoint}}'**  
{{sagemaker\_endpoint}} especifica 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\_name}} 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;
```