

# 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\_function\_name}} ({{variable1}} {{data\_type}}[, {{variable2}} {{data\_type}}][,...])**  
{{ml\_function\_name}}은 후속 쿼리 절에서 사용할 수 있는 함수 이름을 정의합니다. 각 {{variable data\_type}}은 SageMaker AI 모델이 입력으로 수락하는 명명된 변수와 해당 데이터 형식을 지정합니다. 지정된 데이터 유형은 지원되는 Athena 데이터 형식이어야 합니다.

**RETURNS {{data\_type}}**  
{{data\_type}}은 {{ml\_function\_name}}이 쿼리에 반환하는 SQL 데이터 형식을 SageMaker AI 모델의 출력으로 지정합니다.

**SAGEMAKER '{{sagemaker\_endpoint}}'**  
{{sagemaker\_endpoint}}는 SageMaker AI 모델의 엔드포인트를 지정합니다.

**SELECT [...] {{ml\_function\_name}}({{expression}}) [...]**  
함수 변수 및 SageMaker AI 모델에 값을 전달하여 결과를 반환하는 SELECT 쿼리입니다. {{ml\_function\_name}}은 쿼리에서 이전에 정의된 함수를 지정한 후 값을 전달하기 위해 평가되는 {{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;
```