

# Consulta mediante la sintaxis de la consulta de UDF
<a name="udf-query-syntax"></a>

La cláusula `USING EXTERNAL FUNCTION` especifica una UDF o varias UDF a las que se puede hacer referencia mediante una instrucción `SELECT` posterior en la consulta. Necesita el nombre del método para la UDF y el nombre de la función de Lambda que aloja la UDF. En lugar del nombre de la función de Lambda, puede utilizar el ARN de Lambda. En escenarios de varias cuentas, se requiere el ARN de Lambda.

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

```
USING EXTERNAL FUNCTION UDF_name(variable1 data_type[, variable2 data_type][,...])
RETURNS data_type
LAMBDA 'lambda_function_name_or_ARN'
[, EXTERNAL FUNCTION UDF_name2(variable1 data_type[, variable2 data_type][,...]) 
RETURNS data_type 
LAMBDA 'lambda_function_name_or_ARN'[,...]]
SELECT  [...] UDF_name(expression) [, UDF_name2(expression)] [...]
```

## Parameters
<a name="udf-parameters"></a>

**USING EXTERNAL FUNCTION *UDF\$1name*(*variable1* *data\$1type*[, *variable2* *data\$1type*][,...])**  
*UDF\$1name* especifica el nombre de la UDF, que debe corresponderse con un método Java dentro de la función de Lambda de referencia. Cada *variable data\$1type* especifica una variable con nombre con su tipo de datos correspondiente, que la UDF acepta como entrada. El *data\$1type* debe ser uno de los tipos de datos de Athena admitidos que aparecen en la siguiente tabla y asignarse al tipo de datos Java correspondiente.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/udf-query-syntax.html)

**RETURNS *data\$1type***  
`data_type` especifica el tipo de datos SQL que la UDF devuelve a la consulta como salida. Los tipos de datos de Athena enumerados en la tabla anterior son compatibles. Para el tipo de datos `DECIMAL`, utilice la sintaxis `RETURNS DECIMAL(precision, scale)` donde *precision* y *scale* son enteros.

**LAMBDA '*lambda\$1function*'**  
*lambda\$1function* especifica el nombre de la función de Lambda que se va a invocar cuando se ejecuta la UDF.

**SELECT [...] *UDF\$1name*(*expression*) [...]**  
La consulta `SELECT` que pasa valores a la UDF y devuelve un resultado. *UDF\$1name* especifica la UDF que se va a utilizar, seguida de una *expression* (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 UDF en la cláusula `USING EXTERNAL FUNCTION`.

### Ejemplos
<a name="udf-examples"></a>

Para ver ejemplos de consultas basadas en el código [AthenaUDFHandler.java](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-udfs/src/main/java/com/amazonaws/athena/connectors/udfs/AthenaUDFHandler.java) en GitHub, consulte la página [Conector UDF de Amazon Athena](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-udfs). 