本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用查詢語法進行UDF查詢
USING EXTERNAL FUNCTION
子句會指定 UDF或多個 UDFs ,以供查詢中的後續SELECT
陳述式參考。您需要 的方法名稱,UDF以及託管 的 Lambda 函數名稱UDF。您可以使用 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
)precision
和scale
是整數。 - LAMBDA '
lambda_function
' -
lambda_function
指定執行 時要叫用的 Lambda 函數名稱UDF。 - SELECT [...]
UDF_name
(expression
) [...] -
將值傳遞至 UDF並傳回結果的
SELECT
查詢。UDF_name
會指定UDF要使用的 ,後面接著評估為傳遞值expression
的 。傳遞和傳回的值必須符合子USING EXTERNAL FUNCTION
句UDF中為 指定的對應資料類型。
範例
如需根據 上 AthenaUDFHandler.java