

# Consultar com uso da sintaxe de consulta de UDFs
<a name="udf-query-syntax"></a>

A cláusula `USING EXTERNAL FUNCTION` especifica uma UDF ou várias UDFs que podem ser referenciadas por uma instrução `SELECT` subsequente na consulta. Você precisa do nome do método da UDF e do nome da função do Lambda que hospeda a UDF. No lugar do nome da função do Lambda, você pode usar o ARN do Lambda. Em cenários entre contas, o ARN do Lambda é obrigatório.

## Resumo
<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}})] [...]
```

## Parâmetros
<a name="udf-parameters"></a>

**USING EXTERNAL FUNCTION {{UDF\_name}}({{variable1}} {{data\_type}}[, {{variable2}} {{data\_type}}][,...])**  
{{UDF\_name}} especifica o nome da UDF, que deve corresponder a um método Java com a função do Lambda referenciada. Cada {{variable data\_type}} especifica uma variável nomeada e o tipo de dados correspondente que a UDF aceita como entrada. O {{data\_type}} deve ser um dos tipos de dados do Athena permitidos listados na tabela a seguir e mapear para o tipo de dados Java correspondente.      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/athena/latest/ug/udf-query-syntax.html)

**RETURNS {{tipo\_dados}}**  
`data_type`O especifica o tipo de dados SQL que a UDF retorna como saída. Os tipos de dados do Athena listados na tabela acima são permitidos. Para o tipo de dados `DECIMAL`, use a sintaxe `RETURNS DECIMAL({{precision}}, {{scale}})` em que {{precision}} e {{scale}} são inteiros.

**LAMBDA '{{lambda\_function}}'**  
{{lambda\_function}} especifica o nome da função do Lambda que será invocada ao executar a UDF.

**SELECT [...] {{UDF\_name}}({{expression}}) [...]**  
A consulta `SELECT` que passa os valores para a UDF e retorna um resultado. {{UDF\_name}} especifica a UDF que será usada, seguida de uma {{expressão}} que é avaliado para passar os valores. Os valores que são passados e retornados devem coincidir com os tipos de dados correspondentes especificados para a UDF na cláusula `USING EXTERNAL FUNCTION`.

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

Para ver exemplos de consultas baseadas no 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) no GitHub, consulte a página [Amazon Athena UDF Connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-udfs) (Conector de UDF do Amazon Athena). 