Appeler des fonctions et des procédures stockées dans Snowpark

Pour traiter les données d’un DataFrame, vous pouvez appeler des fonctions SQL définies par le système, des fonctions définies par l’utilisateur et des procédures stockées. Cette rubrique explique comment les appeler dans Snowpark.

Dans ce chapitre :

Appel de fonctions définies par le système

Si vous devez appeler des fonctions SQL définies par le système, utilisez les fonctions équivalentes dans l’objet com.snowflake.snowpark.functions.

L’exemple suivant appelle la fonction upper de l’objet functions (l’équivalent de la fonction UPPER définie par le système) pour renvoyer les valeurs de la colonne nom avec les lettres en majuscules :

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

Si une fonction SQL définie par le système n’est pas disponible dans l’objet fonctions, vous pouvez utiliser l’une des approches suivantes :

  • Utilisez la fonction callBuiltin pour appeler la fonction définie par le système.

  • Utilisez la fonction builtin pour créer un objet fonction que vous pouvez utiliser pour appeler la fonction définie par le système.

callBuiltin et builtin sont définis dans l’objet com.snowflake.snowpark.functions.

Pour callBuiltin, transmettez le nom de la fonction définie par le système comme premier argument. Si vous devez transmettre les valeurs des colonnes à la fonction définie par le système, définissez et transmettez les objets colonne comme arguments supplémentaires dans la fonction callBuiltin.

L’exemple suivant appelle la fonction RADIANS définie par le système, en lui transmettant la valeur de la colonne col1 :

// 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()

La fonction callBuiltin renvoie un Column, que vous pouvez transmettre aux méthodes de transformation DataFrame (par exemple, filtre, sélection, etc.).

Pour builtin, transmettez le nom de la fonction définie par le système, et utilisez l’objet fonction retourné pour appeler la fonction définie par le système. Par exemple :

// 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()

Appel de fonctions définies par l’utilisateur (UDFs)

Pour appeler des UDFs que vous avez enregistrées par le nom et des UDFs que vous avez créées en exécutant CREATE FUNCTION, utilisez la fonction callUDF dans l’objet com.snowflake.snowpark.functions. Transmettez le nom de l’UDF comme premier argument et tous les paramètres de l’UDF comme arguments supplémentaires.

L’exemple suivant appelle la fonction UDF myFunction, en lui transmettant les valeurs des colonnes col1 et col2. L’exemple transmet la valeur de retour de myFunction à la méthode select de DataFrame.

// 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()

Appel de procédures stockées

Pour appeler une procédure stockée, utilisez la méthode sql de la classe Session. Voir Exécution d’instructions SQL.