本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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