Aufrufen von Funktionen und gespeicherten Prozeduren in Snowpark

Zur Verarbeitung von Daten in einem DataFrame können Sie systemdefinierte SQL-Funktionen, benutzerdefinierte Funktionen und gespeicherte Prozeduren aufrufen. Unter diesem Thema wird erklärt, wie Sie diese Funktionen in Snowpark aufrufen können.

Unter diesem Thema:

Aufrufen von systemdefinierten Funktionen

Wenn Sie systemdefinierte SQL-Funktionen aufrufen müssen, verwenden Sie die entsprechenden Funktionen im Objekt com.snowflake.snowpark.functions.

Im folgenden Beispiel wird die Funktion upper im Objekt functions (das Äquivalent zur systemdefinierten Funktion UPPER) aufgerufen, um die Werte in der Namensspalte mit Großbuchstaben zurückzugeben:

// Import the upper function from the functions object.
import com.snowflake.snowpark.functions._
...
session.table("products").select(upper(col("name"))).show()

Wenn im Funktionsobjekt keine systemdefinierte SQL-Funktion verfügbar ist, können Sie einen der folgenden Ansätze verwenden:

  • Verwenden Sie die Funktion callBuiltin, um die systemdefinierte Funktion aufzurufen.

  • Verwenden Sie die Funktion builtin, um ein Funktionsobjekt zu erstellen, das Sie zum Aufrufen der systemdefinierten Funktion verwenden können.

callBuiltin und builtin sind im Objekt com.snowflake.snowpark.functions definiert.

Für callBuiltin übergeben Sie den Namen der systemdefinierten Funktion als erstes Argument. Wenn Sie die Werte von Spalten an die systemdefinierte Funktion übergeben müssen, definieren Sie Spalten-Objekte und übergeben diese als zusätzliche Argumente an die callBuiltin-Funktion.

Im folgenden Beispiel wird die systemdefinierte Funktion RADIANS aufgerufen, die den Wert aus der Spalte col1 übergibt:

// Import the callBuiltin function from the functions object.
import com.snowflake.snowpark.functions._
...
// Call the system-defined function RADIANS() on col1.
val result = df.select(callBuiltin("radians", col("col1"))).collect()

Die Funktion callBuiltin gibt einen Column-Wert zurück, den Sie an die DataFrame-Transformationsmethoden (z. B. an Filtern oder Auswählen) übergeben können.

Für builtin übergeben Sie den Namen der systemdefinierten Funktion, und Sie verwenden das zurückgegebene Funktionsobjekt, um die systemdefinierte Funktion aufzurufen. Beispiel:

// Import the callBuiltin function from the functions object.
import com.snowflake.snowpark.functions._
...
// Create a function object for the system-defined function RADIANS().
val radians = builtin("radians")
// Call the system-defined function RADIANS() on col1.
val result = df.select(radians(col("col1"))).collect()

Benutzerdefinierte Funktionen (UDFs)

Zum Aufrufen von UDFs, die Sie mit Namen registriert haben, und von UDFs, die Sie durch Ausführen von CREATE FUNCTION erstellt haben, verwenden Sie die Funktion callUDF im Objekt com.snowflake.snowpark.functions. Übergeben Sie den Namen der UDF als erstes Argument und alle UDF-Parameter als weitere Argumente.

Im folgenden Beispiel wird die UDF-Funktion myFunction aufgerufen, wobei die Werte aus den Spalten col1 und col2 übergeben werden. Im Beispiel wird der Rückgabewert von myFunction an die Methode select des DataFrame übergeben.

// Import the callUDF function from the functions object.
import com.snowflake.snowpark.functions._
...
// Runs the scalar function 'myFunction' on col1 and col2 of df.
val result =
    df.select(
        callUDF("myDB.schema.myFunction", col("col1"), col("col2"))
    ).collect()

Aufrufen von gespeicherten Prozeduren

Um eine gespeicherte Prozedur aufzurufen, verwenden Sie die Methode sql der Klasse Session. Siehe Ausführen von SQL-Anweisungen.