Présentation des UDFs Scala

Vous pouvez écrire le gestionnaire d’une fonction définie par l’utilisateur (UDF) en Scala. Un gestionnaire s’exécute comme la logique de la fonction lorsqu’elle est appelée en SQL.

Snowflake prend actuellement en charge l’écriture d’UDFs Java dans les versions suivantes de Scala :

  • 2,12

Une fois que vous avez un gestionnaire, vous créez l’UDF avec SQL. Pour plus d’informations sur l’utilisation de SQL pour créer ou appeler une UDF, reportez-vous à Création d’une UDF ou Appel d’une UDF.

Pour une introduction aux UDFs, y compris une liste de langages dans lesquels vous pouvez écrire un gestionnaire d’UDF, reportez-vous à Vue d’ensemble des fonctions définies par l’utilisateur.

Note

Pour les limitations liées aux gestionnaires Scala, reportez-vous à Limites liées aux UDF Scala.

Vous pouvez également utiliser Scala pour écrire une UDF lorsque vous utilisez l’API Snowpark. Pour plus d’informations, reportez-vous à Création de fonctions définies par l’utilisateur (UDFs) pour DataFrames dans Scala.

Comment fonctionne un gestionnaire ?

Lorsqu’un utilisateur appelle une UDF, il transmet le nom et les arguments de l’UDF à Snowflake. Snowflake appelle la méthode de gestionnaire associée à l’UDF pour exécuter la logique de l’UDF. La méthode de gestion renvoie ensuite la sortie à Snowflake, qui la renvoie au client.

Pour une fonction scalaire (qui renvoie une seule valeur), l’UDF renvoie une seule valeur pour chaque ligne transmise à l’UDF.

Pour soutenir la logique de votre gestionnaire, votre code peut faire appel à des bibliothèques externes au gestionnaire. Par exemple, si vous disposez déjà d’un code d’analyse de données en Scala, vous pouvez probablement l’utiliser à partir de votre code de gestionnaire.

Pour des informations générales sur l’écriture d’un gestionnaire en Scala, reportez-vous à Lignes directrices générales pour le codage de gestionnaires d’UDF Scala. Pour plus d’informations sur l’écriture d’une fonction scalaire, voir Écriture d’une UDF scalaire en Scala.

Exemple

Le code de l’exemple suivant crée une UDF appelée echo_varchar avec une méthode de gestionnaire TestFunc.echoVarchar. Les types d’argument et de retour Scala sont convertis de et vers SQL par Snowflake selon les mappages décrits dans Mappages de type de données SQL-Scala.

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

Appelez l’UDF

SELECT echo_varchar('Hello');
Copy

Remarques relatives à la conception

Gardez à l’esprit les points suivants pour concevoir un gestionnaire utile.

Codage du gestionnaire

Des principes de base à des exemples détaillés, les rubriques suivantes décrivent comment écrire un gestionnaire d’UDF en Scala.