

# Uso de machine learning (ML) con Amazon Athena
<a name="querying-mlmodel"></a>

Machine Learning (ML) con Amazon Athena permite utilizar Athena para escribir instrucciones SQL que ejecutan la inferencia de Machine Learning (ML) mediante Amazon SageMaker IA. Esta característica simplifica el acceso a los modelos ML para el análisis de datos y elimina la necesidad de utilizar métodos de programación complejos para ejecutar la inferencia.

Para utilizar ML con Athena, defina una función de ML con Athena con la cláusula `USING EXTERNAL FUNCTION`. La función apunta al punto de conexión del modelo de SageMaker IA que desee utilizar y especifica los nombres de las variables y los tipos de datos que se transferirán al modelo. Las cláusulas posteriores de la consulta hacen referencia a la función para pasar valores al modelo. El modelo ejecuta la inferencia basada en los valores que pasa la consulta y, a continuación, devuelve resultados de inferencia. Para obtener más información acerca de SageMaker IA y cómo funcionan los puntos de conexión de SageMaker IA, consulte la [Guía para desarrolladores de Amazon SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/).

Para ver un ejemplo que utiliza ML con la inferencia de Athena y SageMaker IA para detectar un valor anómalo en un conjunto de resultados, consulte el artículo del Blog de macrodatos de AWS [Detección de valores anómalos al invocar la función de inferencia de machine learning de Amazon Athena](https://aws.amazon.com/blogs/big-data/detecting-anomalous-values-by-invoking-the-amazon-athena-machine-learning-inference-function/).

## Consideraciones y limitaciones
<a name="considerations-and-limitations"></a>
+ **Regiones disponibles**: la característica de ML de Athena está disponible en las Regiones de AWS en las que se admite la versión 2 o una versión posterior del motor de Athena.
+ **El punto de conexión del modelo de SageMaker IA debe aceptar y devolver `text/csv`**: para obtener más información sobre los formatos de datos, consulte [Formatos de datos comunes para inferencia](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html) en la *Guía para desarrolladores de Amazon SageMaker IA*.
+ **Athena no envía encabezados CSV**: si el punto de conexión de SageMaker IA es `text/csv`, el controlador de entrada no debe suponer que la primera línea de la entrada es un encabezado CSV. Debido a que Athena no envía encabezados CSV, el resultado devuelto a Athena contará con una fila menos de lo esperado y provocará un error. 
+ **Escalado de puntos de conexión de SageMaker IA**: asegúrese de que el punto de conexión del modelo de SageMaker IA al que se hace referencia esté suficientemente escalado verticalmente para las llamadas de Athena al punto de conexión. Para obtener más información, consulte [Escalado automático de modelos de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html) en la *Guía para desarrolladores de Amazon SageMaker IA* y [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html) en la *Referencia de la API de Amazon SageMaker IA*.
+ **Permisos de IAM**: para ejecutar una consulta que especifica una función de ML con Athena, la entidad principal de IAM que ejecuta la consulta debe tener permiso para realizar la acción `sagemaker:InvokeEndpoint` para el punto de conexión del modelo de SageMaker IA al que se hace referencia. Para obtener más información, consulte [Permiso de acceso para ML con Athena](machine-learning-iam-access.md).
+ **Las funciones de ML con Athena no pueden utilizarse en las cláusulas `GROUP BY` directamente**.

**Topics**
+ [Consideraciones y limitaciones](#considerations-and-limitations)
+ [Uso de ML con sintaxis de Athena](ml-syntax.md)
+ [Visualización de ejemplos de usos de clientes](ml-videos.md)

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

# Visualización de ejemplos de usos de clientes
<a name="ml-videos"></a>

En los siguientes videos, que utilizan la versión preliminar de Machine Learning (ML) con Amazon Athena, se muestran formas en las que puede utilizar SageMaker IA con Athena.

## Predicción del abandono de clientes
<a name="ml-videos-predict-churn"></a>

En el siguiente video se muestra cómo combinar Athena con las capacidades de machine learning de Amazon SageMaker IA para predecir el abandono del cliente.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/CUHbSpekRVg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/CUHbSpekRVg)


## Detección de botnets
<a name="ml-videos-detect-botnets"></a>

En el siguiente video se muestra cómo una empresa utiliza Amazon Athena y Amazon SageMaker IA para detectar botnets.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/0dUv-jCt2aw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/0dUv-jCt2aw)
