

# 考慮事項と制限事項
<a name="udf-considerations-limitations"></a>

Athena でユーザー定義関数 (UDF) を使用する際には、次の点を考慮してください。
+ **組み込み Athena 関数** – Athena の組み込み関数は、高い性能を発揮するように設計されています。可能な場合は、UDF よりも組み込み関数を使用することをお勧めします。組み込み関数の詳細については、「[Amazon Athena の関数](functions.md)」を参照してください。
+ **スカラー UDF 限定** – Athena は、一度に 1 行を処理し、単一の列値を返すスカラー UDF のみをサポートします。Athena は、Lambda を呼び出すたびに行のバッチを UDF に渡しましますが、これは並行的に行われる可能性があります。UDF とクエリを設計するときは、この処理がネットワークトラフィックに及ぼす可能性がある影響に注意する必要があります。
+ **UDF ハンドラ関数は省略形式を使用** – UDF 関数には、省略形式 (フルフォーマットではない) を使用します (例:`package.Class::method` の代わりに `package.Class`)。
+ **UDF メソッドは小文字を使用する必要がある** – UDF メソッドは小文字にする必要があります。キャメルケースは使用できません。
+ **パラメータを必要とする UDF メソッド** — UDF メソッドには少なくとも 1 つの入力パラメータが必要です。入力パラメータなしで定義された UDF を呼び出そうとすると、ランタイム例外が発生する原因となります。UDF はデータレコードに対して関数を実行するためのものですが、引数のない UDF はデータを取り込まないため、例外が発生します。
+ **Java ランタイムサポート** – 現在、Athena UDF は Lambda について Java 8、Java 11、Java 17 のランタイムをサポートしています。詳細については、*AWS Lambda デベロッパーガイド*の「[Java による Lambda 関数のビルド](https://docs.aws.amazon.com/lambda/latest/dg/lambda-java.html)」を参照してください。
**注記**  
 Java 17 の場合、`JAVA_TOOL_OPTIONS` 環境変数の値を Lambda の `--add-opens=java.base/java.nio=ALL-UNNAMED` に設定する必要があります。
+ **IAM 許可** – Athena で UDF クエリステートメントを作成して実行するには、クエリを実行する IAM プリンシパルに、Athena 関数以外のアクションを実行することが許可されている必要があります。詳細については、「[Athena UDF へのアクセスを許可する: ポリシーの例](udf-iam-access.md)」を参照してください。
+ **Lambda のクォータ** – UDF には Lambda のクォータが適用されます。詳細については、*AWS Lambda デベロッパーガイド*の「[Lambda のクォータ](https://docs.aws.amazon.com/lambda/latest/dg/limits.html)」を参照してください。
+ **行レベルのフィルタリング** – UDF では、Lake Formation の行レベルのフィルタリングはサポートされていません。
+ **ビュー** – UDF でビューを使用することはできません。
+ **既知の問題** – 既知の問題に関する最新のリストについては、GitHub の awslabs/aws-athena-query-federation セクションにある「[Limitations and Issues](https://github.com/awslabs/aws-athena-query-federation/wiki/Limitations_And_Issues)」(制限と問題) を参照してください。