

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