

# Amazon Athena で機械学習 (ML) を使用する
<a name="querying-mlmodel"></a>

Machine Learning (ML) with Amazon Athena では、Amazon SageMaker AI を使用して Machine Learning (ML) 推論を実行する SQL ステートメントの記述に Athena を使用できます。この機能により、データ分析用の ML モデルへのアクセスが簡単になり、複合型のプログラミング方法を使用して推論を実行する必要がなくなります。

ML with Athena を使用するには、`USING EXTERNAL FUNCTION` 句で ML with Athena 関数を定義します。この関数は、使用する SageMaker AI モデルのエンドポイントをポイントし、モデルに渡す変数名とデータ型を指定します。クエリの後続の句は、関数を参照してモデルに値を渡します。モデルは、クエリが渡す値に基づいて推論を実行し、推論結果を返します。SageMaker AI に関する詳細と SageMaker AI エンドポイントの仕組みに関する詳細については、「[Amazon SageMaker AI デベロッパーガイド](https://docs.aws.amazon.com/sagemaker/latest/dg/)」を参照してください。

ML with 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 が想定する行よりも 1 行少なくなり、エラーが発生します。
+ **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 アクセス許可** – ML with Athena 関数を指定するクエリを実行するには、クエリを実行する IAM プリンシパルに、参照される SageMaker AI モデルのエンドポイントへの `sagemaker:InvokeEndpoint` アクションの実行が許可されている必要があります。詳細については、「[Athena で ML へのアクセスを許可する](machine-learning-iam-access.md)」を参照してください。
+ **`GROUP BY` 句で ML with Athena 関数を直接使用することはできません**

**Topics**
+ [考慮事項と制限事項](#considerations-and-limitations)
+ [ML with Athena 構文を使用する](ml-syntax.md)
+ [お客様のユースケースを見る](ml-videos.md)

# ML with Athena 構文を使用する
<a name="ml-syntax"></a>

`USING EXTERNAL FUNCTION` 句は、クエリ内の後続の `SELECT` ステートメントで参照できる 1 つの 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* は、SageMaker AI モデルからの出力として *ml\$1function\$1name* がクエリに返す SQL データ型を指定します。

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

# お客様のユースケースを見る
<a name="ml-videos"></a>

Machine Learning (ML) with Amazon Athena のプレビュー版を使用する以下の動画では、Athena と SageMaker AI を併用できる方法が紹介されています。

## カスタマーチャーンの予測
<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)
