Abfragen mit UDF-Abfragesyntax - Amazon Athena

Abfragen mit UDF-Abfragesyntax

Die USING EXTERNAL FUNCTION-Klausel gibt eine UDF oder mehrere UDFs an, auf die durch eine nachfolgende SELECT-Anweisung in der Abfrage verwiesen werden kann. Sie benötigen den Methodennamen für die UDF und den Namen der Lambda-Funktion, die die UDF hostet. Anstelle des Lambda-Funktionsnamens können Sie den Lambda-ARN verwenden. In kontenübergreifenden Szenarien ist der Lambda-ARN erforderlich.

Syntax

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

Parameter

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

UDF_name gibt den Namen der UDF an, der einer Java-Methode innerhalb der referenzierten Lambda-Funktion entsprechen muss. Jede variable_data_type gibt eine benannte Variable und ihren entsprechenden Datentyp an, den UDF als Eingabe akzeptiert. Der data_type muss einer der in der folgenden Tabelle aufgeführten unterstützten Athena-Datentypen sein und dem entsprechenden Java-Datentyp zugeordnet sein.

Athena-Datentyp Java-Datentyp

TIMESTAMP (ZEITSTEMPEL)

java.time.LocalDateTime (UTC)

DATUM

java.time.LocalDate (UTC)

TINYINT

java.lang.Byte

SMALLINT

java.lang.Short

REAL

java.lang.Float

DOUBLE

java.lang.Double

DECIMALE (siehe RETURNS-Hinweis)

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 gibt den SQL-Datentyp an, den die UDF als Ausgabe zurückgibt. Athena Datentypen, die in der obigen Tabelle aufgeführt sind, werden unterstützt. Verwenden Sie für den Datentyp DECIMAL die Syntax RETURNS DECIMAL(precision, scale), bei der Präzision und Skalierung Ganzzahlen sind.

LAMBDA 'lambda_funktion'

my_lambda_function gibt den Namen der Lambda-Funktion an, die bei Ausführung der UDF aufgerufen werden soll.

SELECT [...] UDF_name(expression) [...]

Die SELECT-Abfrage, die Werte an die UDF übergibt und ein Ergebnis zurückgibt. UDF_name gibt die zu verwendende UDF an, gefolgt von einem Ausdruck, der ausgewertet wird, um Werte zu übergeben. Werte, die übergeben und zurückgegeben werden, müssen mit den entsprechenden Datentypen übereinstimmen, die für die UDF in der USING EXTERNAL FUNCTION-Klausel angegeben sind.

Beispiele

Beispielabfragen, die auf dem Code AthenaUDFHandler.java auf GitHub basieren, finden Sie auf der GitHub-Seite Amazon-Athena-UDF-Connector.