Einführung in Python-UDFs

Sie können den Handler für eine benutzerdefinierte Funktion (UDF) in Python schreiben. Unter den Themen in diesem Abschnitt wird beschrieben, wie Sie einen Python-Handler entwerfen und schreiben. Außerdem werden Beispiele bereitgestellt.

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.

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.

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

  • 3.8

  • 3.9

  • 3.10

  • 3.11

Bemerkung

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

Unter diesem Thema:

Funktionsweise eines Python-Handlers

Wenn ein Benutzer eine UDF aufruft, übergibt der Benutzer den Namen und die Argumente der UDF an Snowflake. Snowflake ruft den zugehörigen Handler-Code (ggf. mit Argumenten) auf, um die Verarbeitungslogik der UDF auszuführen. Die Handler-Methode gibt dann die Ausgabe an Snowflake zurück, und Snowflake gibt die Ausgabe an den Client zurückgibt.

Für jede Zeile, die an eine UDF übergeben wird, gibt UDF entweder einen Einzelwert oder, falls als Tabellenfunktion definiert, eine Menge von Zeilen zurück.

Python-UDFs können sowohl neuen Code enthalten als auch Aufrufe bestehender Pakete, was sowohl Flexibilität als auch die Wiederverwendung von Code ermöglicht. Wenn Sie z. B. bereits Datenanalysecode in Python haben, dann können Sie diesen wahrscheinlich in einen Python-UDF-Handler einbinden.

Beispiel

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

create or replace function addone(i int)
returns int
language python
runtime_version = '3.8'
handler = 'addone_py'
as
$$
def addone_py(i):
  return i+1
$$;
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 Python erläutert.

  • Python-Moduldefinition. Die Logik einer UDF wird in ein Python -Modul geschrieben. Weitere Informationen dazu, wie Snowflake mit Ihrem Code interagiert, finden Sie unter Entwerfen des Moduls.

  • Fehlerbehandlung. Informationen dazu, wie Snowflake von Handlern generierte Fehler behandelt, finden Sie unter Fehlerbehandlung.

  • Tabellarische Rückgabewerte. Sie können sowohl tabellarische Werte als auch skalare (Einzel-)Werte aus einer UDF zurückgeben. Informationen zum Schreiben eines Handlers, der tabellarische Werte zurückgibt, finden Sie unter Schreiben von UDTF in Python.

  • Protokollierung und Ereignisablaufverfolgung. Informationen zum Erfassen von Protokoll- und Ablaufverfolgungsdaten während der Ausführung Ihres Handler-Codes finden Sie unter Übersicht zu Protokollierung und Ablaufverfolgung.

  • Abhängigkeiten. Sie können Ihrem Code zur Laufzeit Abhängigkeiten zur Verfügung stellen, indem Sie diese in einen Stagingbereich hochladen. Weitere Informationen dazu finden Sie unter Abhängigkeiten für Code zur Verfügung stellen.

  • Codebeispiele. Zahlreiche Beispiele für Handler in Python finden Sie unter Beispiele für Python-UDF-Handler.