

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

# 搭配 Amazon Athena 使用機器學習 (ML)
<a name="querying-mlmodel"></a>

搭配 Amazon Athena 的機器學習 (ML) 可讓您使用 Athena 撰寫 SQL 陳述式，以使用 Amazon SageMaker AI 執行機器學習 (ML) 推論。此功能讓您輕鬆存取 ML 模型以分析資料，無需使用複雜的程式設計方法來執行推論。

若要搭配 Athena 使用機器學習 (ML)，您可以使用 `USING EXTERNAL FUNCTION` 子句定義帶有 Athena 函數的機器學習 (ML)。此函式指向您要使用的 SageMaker AI 模型端點，並指定要傳遞給模型的變數名稱和資料類型。查詢中的後續子句參考此函數，將值傳遞給模型。模型根據查詢傳遞的值執行推論，然後傳回推論結果。如需有關 SageMaker AI 以及 SageMaker AI 端點運作方式的詳細資訊，請參閱《Amazon SageMaker AI 開發人員指南[https://docs.aws.amazon.com/sagemaker/latest/dg/](https://docs.aws.amazon.com/sagemaker/latest/dg/)》。

如需使用 ML 搭配 Athena 和 SageMaker AI 推論來偵測結果集中異常值的範例，請參閱 AWS 大數據部落格文章[透過叫用 Amazon Athena 機器學習推論函數來偵測異常值](https://aws.amazon.com/blogs/big-data/detecting-anomalous-values-by-invoking-the-amazon-athena-machine-learning-inference-function/)。

## 考量和限制
<a name="considerations-and-limitations"></a>
+ **可用區域** – Athena ML 功能可在支援 Athena 引擎第 2 版或更新版本 AWS 區域 的 中使用。
+ **SageMaker AI 模型端點必須接受並傳回 `text/csv`** – 如需有關資料格式的詳細資訊，請參閱《Amazon SageMaker AI 開發人員指南**》中的[推論的一般資料格式](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html)。
+ **Athena 不會傳送 CSV 標頭** – 如果您的 SageMaker AI 端點是 `text/csv`，您的輸入處理常式不應假設輸入的第一行是 CSV 標頭。由於 Athena 不會傳送 CSV 標頭，因此傳回至 Athena 的輸出將包含比 Athena 預期的少一個資料列，並導致錯誤。
+ **SageMaker AI 端點擴展** – 確保參考的 SageMaker AI 模型端點已充分向上擴展到可讓 Athena 呼叫端點。如需詳細資訊，請參閱《Amazon SageMaker AI 開發人員指南**》中的[自動擴展 SageMaker AI 模型](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)和《Amazon SageMaker AI API 參考**》中的 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html)。
+ **IAM 許可** – 若要執行指定帶有 Athena 函式的機器學習 (ML) 的查詢，則執行該查詢的 IAM 主體必須能夠針對參考的 SageMaker AI 模型端點執行 `sagemaker:InvokeEndpoint` 動作。如需詳細資訊，請參閱[允許使用 Athena 存取機器學習](machine-learning-iam-access.md)。
+ **不能直接在 `GROUP BY` 子句中使用帶有 Athena 函數的機器學習 (ML)**

**Topics**
+ [考量和限制](#considerations-and-limitations)
+ [使用帶有 Athena 的機器學習 (ML) 語法](ml-syntax.md)
+ [請參閱客戶使用範例](ml-videos.md)

# 使用帶有 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;
```

# 請參閱客戶使用範例
<a name="ml-videos"></a>

下列影片搭配 Amazon Athena 使用機器學習 (ML) 的預覽版本，展示您可以將 SageMaker AI 搭配 Athena 使用的方法。

## 預測客戶流失率
<a name="ml-videos-predict-churn"></a>

下列影片展示如何將 Athena 與 Amazon SageMaker AI 的機器學習功能結合起來，預測客戶流失率。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/CUHbSpekRVg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/CUHbSpekRVg)


## 偵測殭屍網路
<a name="ml-videos-detect-botnets"></a>

下列影片展示一家公司如何使用 Amazon Athena 和 Amazon SageMaker AI 來偵測殭屍網路。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/0dUv-jCt2aw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/0dUv-jCt2aw)
