

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 利用使用者定義函式進行查詢
<a name="querying-udf"></a>

Amazon Athena 中的使用者定義函數 (UDF) 可讓您建立自訂函數，以處理記錄或記錄群組。UDF 接受參數、執行工作，然後傳回結果。

若要在 Athena 中使用 UDF，請在 SQL 查詢中的 `SELECT` 陳述式之前撰寫 `USING EXTERNAL FUNCTION` 子句。`SELECT` 陳述式參考 UDF，並定義在執行查詢時傳遞至 UDF 的變數。SQL 查詢呼叫 UDF 時使用 Java 執行時間叫用 Lambda 函數。UDF 在 Lambda 函數內被定義為 Java 部署套件中的方法。在同一個 Java 部署套件中，一個 Lambda 函數可以定義多個 UDF。您也可以在 `USING EXTERNAL FUNCTION` 子句中指定 Lambda 函數的名稱。

部署 Athena UDF 的 Lambda 函數時有兩種選項。您可以直接使用 Lambda，也可以使用 AWS Serverless Application Repository部署函數。若要尋找 UDFs的現有 Lambda 函數，您可以搜尋公有 AWS Serverless Application Repository 或私有儲存庫，然後部署至 Lambda。您也可以建立或修改 Java 原始程式碼、將其封裝成 JAR 檔案，然後使用 Lambda 或 AWS Serverless Application Repository部署此檔案。如需 Java 原始程式碼和套件範例來協助您開始使用，請參閱[使用 Lambda 建立和部署 UDF](udf-creating-and-deploying.md)。如需有關 Lambda 的詳細資訊，請參閱《[AWS Lambda 開發人員指南](https://docs.aws.amazon.com/lambda/latest/dg/)》。如需 的詳細資訊 AWS Serverless Application Repository，請參閱 [AWS Serverless Application Repository 開發人員指南](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/)。

如需搭配 Athena 使用 UDFs 來翻譯和分析文字的範例，請參閱 AWS Machine Learning部落格文章[搭配 Amazon Athena、Amazon Translate 和 Amazon Comprehend 使用 SQL 函數來翻譯和分析文字](https://aws.amazon.com/blogs/machine-learning/translate-and-analyze-text-using-sql-functions-with-amazon-athena-amazon-translate-and-amazon-comprehend/)，或觀看 [video](udf-videos.md#udf-videos-xlate)。

如需使用 UDF 在 Amazon Athena 擴充地理空間查詢的範例，請參閱使用 *AWS 大數據部落格*中的[使用 UDF 和 AWS Lambda在 Amazon Athena 中擴充地理空間查詢](https://aws.amazon.com/blogs/big-data/extend-geospatial-queries-in-amazon-athena-with-udfs-and-aws-lambda/)。

**Topics**
+ [有關 Athena 中的 UDF 的影片](udf-videos.md)
+ [考量和限制](udf-considerations-limitations.md)
+ [使用 UDF 查詢語法進行查詢](udf-query-syntax.md)
+ [使用 Lambda 建立和部署 UDF](udf-creating-and-deploying.md)