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Ă©er une fonction dĂ©finie par l’utilisateur ou ExĂ©cutez 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.