

# UDF クエリ構文を使用してクエリする
<a name="udf-query-syntax"></a>

`USING EXTERNAL FUNCTION` 句は、クエリで後続の `SELECT` ステートメントで参照できる UDF または複数の UDF を指定します。UDF のメソッド名と UDF をホストする Lambda 関数の名前が必要です。Lambda 関数名の代わりに、Lambda ARN を使用できます。クロスアカウントのシナリオでは、Lambda ARN が必要です。

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

```
USING EXTERNAL FUNCTION {{UDF_name}}({{variable1}} {{data_type}}[, {{variable2}} {{data_type}}][,...])
RETURNS {{data_type}}
LAMBDA '{{lambda_function_name_or_ARN}}'
[, EXTERNAL FUNCTION {{UDF_name2}}({{variable1}} {{data_type}}[, {{variable2}} {{data_type}}][,...]) 
RETURNS {{data_type}} 
LAMBDA '{{lambda_function_name_or_ARN}}'[,...]]
SELECT  [...] {{UDF_name}}({{expression}}) [, {{UDF_name2}}({{expression}})] [...]
```

## パラメータ
<a name="udf-parameters"></a>

**USING EXTERNAL FUNCTION {{UDF\_name}}({{variable1}} {{data\_type}}[, {{variable2}} {{data\_type}}][,...])**  
{{UDF\_name}} は UDF の名前を指定します。この名前は、参照される Lambda 関数内の Java メソッドに対応している必要があります。各 {{variable data\_type}} は、UDF が入力として受け入れる名前付きの変数とそれに対応するデータ型を指定します。{{data\_type}} は、以下の表に記載されているサポート対象の Athena データ型の 1 つであり、対応する Java データ型にマップする必要があります。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/athena/latest/ug/udf-query-syntax.html)

**RETURNS {{data\_type}}**  
`data_type` は、UDF が出力として返す SQL データ型を指定します。上記の表にリストされている Athena データ型がサポートされます。`DECIMAL` データ型の場合、この構文 `RETURNS DECIMAL({{precision}}, {{scale}})` を使います。{{精度}}と{{スケール}}は整数です。

**LAMBDA '{{lambda\_function}}'**  
{{lambda\_function}} は、UDF の実行時に呼び出される Lambda 関数の名前を指定します。

**SELECT [...] {{UDF\_name}}({{expression}}) [...]**  
UDF に値を渡し、結果を返す `SELECT` クエリです。{{UDF\_Name}} は使用する UDF を指定し、値を渡すために評価される {{expression}} がその後に続きます。渡される値と返される値は、`USING EXTERNAL FUNCTION` 句で UDF に指定された対応するデータ型と一致する必要があります。

### 例
<a name="udf-examples"></a>

GitHub にある [AthenaUDFHandler.java](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-udfs/src/main/java/com/amazonaws/athena/connectors/udfs/AthenaUDFHandler.java) コードに基づいたクエリの例については、GitHub の「[Amazon Athena UDF connector](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-udfs)」(Amazon Athena UDF コネクタ) ページを参照してください。