

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

# 使用帶有 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\_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>

下例範例示範一個搭配 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;
```