USING EXTERNAL FUNCTION
句は、クエリで後続の SELECT
ステートメントで参照できる UDF または複数の UDF を指定します。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 データ型の 1 つであり、対応する 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<文字列,オブジェクト>
- 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