ユーザー定義関数を使用してクエリする
Amazon Athena のユーザー定義関数 (UDF) を使用すると、レコードまたはレコードのグループを処理するためのカスタム関数を作成できます。UDF は、パラメータを受け入れ、作業を実行し、結果を返します。
Athena で UDF を使用するには、SQL クエリの USING EXTERNAL FUNCTION
ステートメントの前に SELECT
句を記述します。この SELECT
ステートメントは UDF を参照し、クエリの実行時に、UDF に渡される変数を定義します。SQL クエリは UDF を呼び出すときに、Java ランタイムを使用して Lambda 関数を呼び出します。UDF は、Java デプロイパッケージのメソッドとして Lambda 関数内で定義されます。Lambda 関数の同じ Java デプロイパッケージで複数の UDF を定義できます。また、USING EXTERNAL FUNCTION
句で Lambda 関数の名前も指定します。
Athena UDF 用の Lambda 関数のデプロイには 2 つのオプションがあり、Lambda を使用して直接関数をデプロイすることも、AWS Serverless Application Repository を使用することもできます。UDF の既存の Lambda 関数を検索するには、パブリック AWS Serverless Application Repository またはプライベートリポジトリを検索し、Lambda にデプロイします。また、Java ソースコードを作成または変更して、JAR ファイルにパッケージ化し、Lambda または AWS Serverless Application Repository を使用してデプロイすることもできます。これを開始するための Java ソースコードとパッケージの例については、「Lambda を利用して UDF を作成およびデプロイする」を参照してください。Lambda の詳細については、AWS Lambda デベロッパーガイドを参照してください。AWS Serverless Application Repository の詳細については、AWS Serverless Application Repository 開発者ガイドを参照してください。
Athena で UDF を使用してテキストを翻訳および分析する例については、AWS Machine Learning ブログ記事「Amazon Athena、Amazon Translate、および Amazon Comprehend で SQL 関数を使用してテキストを翻訳および分析する
UDF を使用して Amazon Athena で地理空間クエリを拡張する例については、AWS Big Data Blog の「Extend geospatial queries in Amazon Athena with UDFs and AWS Lambda