使用 UDF 查詢語法進行查詢 - Amazon Athena

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

使用 UDF 查詢語法進行查詢

USING EXTERNAL FUNCTION 子句指定一個 UDF 或多個 UDF,供查詢中的後續 SELECT 陳述式參考。您需要 UDF 的方法名稱及託管 UDF 之 Lambda 函數的名稱。若要取代 Lambda 函數名稱,您可以使用 Lambda ARN。在跨帳戶案例中,需要使用 Lambda ARN。

概要

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)] [...]

參數

USING EXTERNAL FUNCTION UDF_name(variable1 data_type[, variable2 data_type][,...])

UDF_name 指定 UDF 的名稱,其必須對應於所參考 Lambda 函數中的 Java 方法。每個 variable data_type 會指定具名變數及其相應的資料類型,供 UDF 接受作為輸入。此 data_type 必須是下表列出的其中一種支援的 Athena 資料類型,並對應至相應的 Java 資料類型。

Athena 資料類型 Java 資料類型

TIMESTAMP

java.time.LocalDateTime (UTC)

DATE

java.time.LocalDate (UTC)

TINYINT

java.lang.Byte

SMALLINT

java.lang.Short

REAL

java.lang.Float

DOUBLE

java.lang.Double

DECIMAL (請參閱 RETURNS 備註)

java.math.BigDecimal

BIGINT

java.lang.Long

INTEGER

java.lang.Int

VARCHAR

java.lang.String

VARBINARY

byte[]

BOOLEAN

java.lang.Boolean

ARRAY

java.util.List

ROW

java.util.Map<String, Object>

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 指定的相應資料類型。

範例

如需 GitHub 上基於 AthenaUDFHandler.java 程式碼的查詢範例,請參閱 GitHub Amazon Athena UDF 連接器頁面。