

# ML with Athena 구문 사용
<a name="ml-syntax"></a>

`USING EXTERNAL FUNCTION` 절은 쿼리의 후속 `SELECT` 문에서 참조할 수 있는 ML with Athena 함수 또는 여러 함수를 지정합니다. 변수 및 반환 값에 대한 함수 이름, 변수 이름 및 데이터 유형을 정의합니다.

## 시놉시스
<a name="ml-synopsis"></a>

다음 구문은 ML with Athena 함수를 지정하는 `USING EXTERNAL FUNCTION` 절을 보여줍니다.

```
USING EXTERNAL FUNCTION ml_function_name (variable1 data_type[, variable2 data_type][,...])
RETURNS data_type 
SAGEMAKER 'sagemaker_endpoint'
SELECT ml_function_name()
```

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

**USING EXTERNAL FUNCTION *ml\$1function\$1name* (*variable1* *data\$1type*[, *variable2* *data\$1type*][,...])**  
*ml\$1function\$1name*은 후속 쿼리 절에서 사용할 수 있는 함수 이름을 정의합니다. 각 *variable data\$1type*은 SageMaker AI 모델이 입력으로 수락하는 명명된 변수와 해당 데이터 형식을 지정합니다. 지정된 데이터 유형은 지원되는 Athena 데이터 형식이어야 합니다.

**RETURNS *data\$1type***  
*data\$1type*은 *ml\$1function\$1name*이 쿼리에 반환하는 SQL 데이터 형식을 SageMaker AI 모델의 출력으로 지정합니다.

**SAGEMAKER '*sagemaker\$1endpoint*'**  
*sagemaker\$1endpoint*는 SageMaker AI 모델의 엔드포인트를 지정합니다.

**SELECT [...] *ml\$1function\$1name*(*expression*) [...]**  
함수 변수 및 SageMaker AI 모델에 값을 전달하여 결과를 반환하는 SELECT 쿼리입니다. *ml\$1function\$1name*은 쿼리에서 이전에 정의된 함수를 지정한 후 값을 전달하기 위해 평가되는 *expression*을 지정합니다. 전달되고 반환되는 값은 `USING EXTERNAL FUNCTION` 절의 함수에 대해 지정된 해당 데이터 유형과 일치해야 합니다.

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

다음의 예제는 ML with 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;
```