

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用帶有 Athena 的機器學習 (ML) 語法
<a name="ml-syntax"></a>

`USING EXTERNAL FUNCTION` 子句會指定帶有一或多個 Athena 函數的機器學習 (ML)，供查詢中的後續 `SELECT` 陳述句參考。您定義函數名稱、變數名稱，以及變數和傳回值的資料類型。

## 概要
<a name="ml-synopsis"></a>

下面的語法顯示了 `USING EXTERNAL FUNCTION` 子句，其會指定帶有 Athena 函數的機器學習 (ML)。

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

## Parameters
<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>

下例範例示範一個搭配 Athena 使用機器學習 (ML) 的查詢。

**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;
```