

# UDF 쿼리 구문을 사용한 쿼리
<a name="udf-query-syntax"></a>

`USING EXTERNAL FUNCTION` 절은 쿼리의 후속 `SELECT` 문에서 참조할 수 있는 단일 UDF 또는 여러 UDF를 지정합니다. UDF의 메서드 이름과 UDF를 호스팅하는 Lambda 함수의 이름이 필요합니다. Lambda 함수 이름 대신 Lambda ARN을 사용할 수 있습니다. 크로스 계정 시나리오에서는 Lambda ARN이 필요합니다.

## 시놉시스
<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}})] [...]
```

## 파라미터
<a name="udf-parameters"></a>

**USING EXTERNAL FUNCTION {{UDF\_name}}({{variable1}} {{data\_type}}[, {{variable2}} {{data\_type}}][,...])**  
{{UDF\_name}}은 참조된 Lambda 함수 내에서 Java 메서드에 해당하는 UDF의 이름을 지정합니다. 각 {{variable data\_type}}은 UDF가 입력으로 수락하는 명명된 변수와 해당 데이터 형식을 지정합니다. {{data\_type}}은 다음 표에 나열된 지원되는 Athena 데이터 형식 중 하나여야 하며 해당 Java 데이터 형식에 매핑되어야 합니다.      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/udf-query-syntax.html)

**RETURNS {{data\_type}}**  
`data_type`은 UDF가 출력으로 반환하는 SQL 데이터 형식을 지정합니다. 위의 표에 나열된 Athena 데이터 형식이 지원됩니다. `DECIMAL` 데이터 형식의 경우 {{precision}}과 {{scale}}이 정수인 `RETURNS DECIMAL({{precision}}, {{scale}})` 구문을 사용합니다.

**LAMBDA '{{lambda\_function}}'**  
{{lambda\_function}}은 UDF를 실행할 때 호출되는 Lambda 함수의 이름을 지정합니다.

**SELECT [...] {{UDF\_name}}({{expression}}) [...]**  
UDF에 값을 전달하고 결과를 반환하는 `SELECT` 쿼리입니다. {{UDF\_name}}은 사용할 UDF를 지정하며, 값을 전달하기 위해 평가되는 {{expression}}이 뒤에 옵니다. 전달되고 반환되는 값은 `USING EXTERNAL FUNCTION` 절의 UDF에 대해 지정된 해당 데이터 유형과 일치해야 합니다.

### 예제
<a name="udf-examples"></a>

GitHub의 [AthenaUDFHandler.java](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-udfs/src/main/java/com/amazonaws/athena/connectors/udfs/AthenaUDFHandler.java) 코드에 기반한 쿼리 예제는 GitHub [Amazon Athena UDF 커넥터](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-udfs)페이지를 참조하세요.