Einführung in Scala-UDFs

Sie können den Handler für eine benutzerdefinierte Funktion (UDF) in Scala schreiben. Ein Handler wird als Logik der Funktion ausgeführt, wenn diese in SQL aufgerufen wird.

Snowflake unterstützt derzeit das Schreiben von UDFs mit den folgenden Scala-Versionen:

  • 2.12

Sobald der Handler verfügbar ist, erstellen Sie die UDF mit SQL. Weitere Informationen zur Verwendung von SQL für das Erstellen oder Aufrufen einer UDF finden Sie unter Erstellen einer UDF bzw. Aufrufen einer UDF.

Eine Einführung in UDFs, einschließlich einer Liste der Sprachen, in denen Sie einen UDF-Handler schreiben können, finden Sie unter Übersicht zu benutzerdefinierten Funktionen.

Bemerkung

Informationen zu Einschränkungen bezüglich Scala-Handlern finden Sie unter Scala-UDF-Einschränkungen.

Sie können auch Scala verwenden, um ein UDF zu schreiben, wenn Sie die Snowpark-API verwenden. Weitere Informationen dazu finden Sie unter Erstellen von benutzerdefinierten Funktionen (UDFs) für DataFrames in Scala.

Funktionsweise eines Handlers

Wenn ein Benutzer eine UDF aufruft, übergibt der Benutzer den Namen und die Argumente der UDF an Snowflake. Snowflake ruft die mit der UDF verbundene Handler-Methode auf, um die Logik der UDFauszuführen. Die Handler-Methode gibt dann die Ausgabe an Snowflake zurück, und Snowflake gibt die Ausgabe an den Client zurückgibt.

Bei einer skalaren Funktion (gibt einen einzelnen Wert zurück) gibt die UDF einen einzelnen Wert für jede an die UDF übergebene Zeile zurück.

Um die Logik Ihres Handlers zu unterstützen, kann Ihr Code auch Bibliotheken verwenden, die extern zum Handler sind. Wenn Sie z. B. bereits Datenanalysecode in Scala haben, können Sie diesen wahrscheinlich von Ihrem Handler-Code aus verwenden.

Allgemeine Informationen zum Schreiben eines Handlers in Scala finden Sie unter Allgemeine Richtlinien zum Codieren von Scala-UDF-Handlern. Weitere Informationen zum Schreiben einer skalaren Funktion finden Sie unter Schreiben einer skalaren UDF in Scala.

Beispiel

Der Code im folgenden Beispiel erstellt eine UDF namens echo_varchar mit der Handler-Methode TestFunc.echoVarchar. Die Scala-Argumente und -Rückgabetypen werden von Snowflake gemäß den unter Zuordnung von Datentypen zwischen SQL und Scala beschriebenen Zuordnungen in und aus SQL konvertiert.

CREATE OR REPLACE FUNCTION echo_varchar(x VARCHAR)
RETURNS VARCHAR
LANGUAGE SCALA
RUNTIME_VERSION = 2.12
HANDLER='TestFunc.echoVarchar'
AS
$$
class TestFunc {
  def echoVarchar(x : String): String = {
    return x
  }
}
$$;
Copy

Aufrufen der UDF

SELECT echo_varchar('Hello');
Copy

Hinweise zum Entwurf

Beachten Sie beim Entwerfen eines effizienten Handlers die folgenden Hinweise.

Codieren von Handlern

Unter den folgenden Themen wird von den Grundlagen bis zu detaillierten Beispielen das Schreiben eines UDF-Handlers in Scala erläutert.