

# Uso de ML con sintaxis de Athena
<a name="ml-syntax"></a>

La cláusula `USING EXTERNAL FUNCTION` especifica una función o varias funciones de ML con Athena a las que se puede hacer referencia mediante una instrucción `SELECT` posterior en la consulta. Defina el nombre de la función, los nombres de las variables y los tipos de datos para las variables y los valores de devolución.

## Sinopsis
<a name="ml-synopsis"></a>

La siguiente sintaxis muestra una cláusula `USING EXTERNAL FUNCTION` que especifica una función de ML con 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 el nombre de la función, que se puede utilizar en las cláusulas de consulta posteriores. Cada *variable data\$1type* especifica una variable con nombre con su tipo de datos correspondiente, que el modelo de SageMaker IA puede aceptar como entrada. El tipo de datos especificado debe ser un tipo de datos de Athena admitido.

**RETURNS *data\$1type***  
*data\$1type* especifica el tipo de datos SQL que *ml\$1function\$1name* devuelve a la consulta como salida del modelo de SageMaker IA.

**SAGEMAKER '*sagemaker\$1endpoint*'**  
*sagemaker\$1endpoint* especifica el punto de conexión del modelo de SageMaker IA.

**SELECT [...] *ml\$1function\$1name*(*expression*) [...]**  
La consulta SELECT que pasa valores a variables de función y al modelo de SageMaker IA para devolver un resultado. *ml\$1function\$1name* especifica la función definida anteriormente en la consulta, seguida de una *expresión* que se evalúa para pasar valores. Los valores que se pasan y se devuelven deben coincidir con los tipos de datos correspondientes especificados para la función en la cláusula `USING EXTERNAL FUNCTION`.

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

En el siguiente ejemplo se muestra una consulta mediante ML con 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;
```