UDF 쿼리 구문을 사용한 쿼리 - Amazon Athena

UDF 쿼리 구문을 사용한 쿼리

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은 참조된 Lambda 함수 내에서 Java 메서드에 해당하는 UDF의 이름을 지정합니다. 각 variable data_type은 UDF가 입력으로 수락하는 명명된 변수와 해당 데이터 형식을 지정합니다. data_type은 다음 표에 나열된 지원되는 Athena 데이터 형식 중 하나여야 하며 해당 Java 데이터 형식에 매핑되어야 합니다.

Athena 데이터 형식 Java 데이터 유형

TIMESTAMP

java.time.LocalDateTime(UTC)

날짜

java.time.LocalDate(UTC)

TINYINT

java.lang.Byte

SMALLINT

java.lang.Short

REAL

java.lang.Float

DOUBLE

java.lang.Double

DECIMA (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 데이터 형식의 경우 precisionscale이 정수인 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 커넥터페이지를 참조하세요.