Introduction aux UDFs Python¶

Vous pouvez Ă©crire le gestionnaire d’une fonction dĂ©finie par l’utilisateur (UDF) en Python. Les rubriques de cette section dĂ©crivent comment concevoir et Ă©crire un gestionnaire Python. Vous trouverez Ă©galement des exemples.

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.

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.

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

  • 3,9

  • 3,10

  • 3,11

  • 3,12

Note

Pour les limitations liées aux gestionnaires UDF Python, reportez-vous à Limitations liées aux UDF Python.

Dans ce chapitre :

Fonctionnement d’un gestionnaire Python¶

Lorsqu’un utilisateur appelle une UDF, il transmet le nom et les arguments de l’UDF Ă  Snowflake. Snowflake appelle le code du gestionnaire associĂ© (avec des arguments, le cas Ă©chĂ©ant) pour exĂ©cuter la logique de l’UDF. La mĂ©thode de gestion renvoie ensuite la sortie Ă  Snowflake, qui la renvoie au client.

Pour chaque ligne transmise Ă  une UDF, l’UDF renvoie soit une valeur scalaire (c’est-Ă -dire unique), soit, si elle est dĂ©finie comme une fonction de table, un ensemble de lignes.

Les UDFs Python peuvent contenir Ă  la fois du nouveau code et des appels vers des paquets existants, ce qui vous offre Ă  la fois flexibilitĂ© et rĂ©utilisation du code. Par exemple, si vous disposez dĂ©jĂ  d’un code d’analyse de donnĂ©es en Python, vous pouvez probablement l’intĂ©grer dans un gestionnaire d’UDF Python.

Exemple¶

Le code de l’exemple suivant crĂ©e une UDF appelĂ©e addone avec une mĂ©thode de gestionnaire addone_py. Les types d’argument et de retour Python sont convertis de et vers SQL par Snowflake selon les mappages dĂ©crits dans Mappages des types de donnĂ©es SQL-Python.

CREATE OR REPLACE FUNCTION addone(i INT)
  RETURNS INT
  LANGUAGE PYTHON
  RUNTIME_VERSION = '3.9'
  HANDLER = 'addone_py'
AS $$
def addone_py(i):
  return i+1
$$;
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 Python.

  • DĂ©finition de module Java. Vous Ă©crivez la logique d’une UDF dans un module Python. Pour en savoir plus sur la maniĂšre dont Snowflake interagit avec votre code, reportez-vous Ă  Conception du module.

  • Traitement des erreurs. Pour plus d’informations sur la façon dont Snowflake traite les erreurs gĂ©nĂ©rĂ©es par les gestionnaires, reportez-vous Ă  Gestion des erreurs.

  • Valeurs de retour tabulaires. Vous pouvez renvoyer des valeurs tabulaires ainsi que des valeurs scalaires (individuelles) Ă  partir d’une UDF. Pour plus d’informations sur la maniĂšre d’écrire un gestionnaire qui renvoie des valeurs tabulaires, reportez-vous Ă  Écriture d’une UDTF en Python.

  • Journalisation et traçage d’évĂ©nements. Pour plus d’informations sur la capture des donnĂ©es de journal et de trace lors de l’exĂ©cution du code de votre gestionnaire, reportez-vous Ă  Journalisation, traçage et mĂ©triques.

  • DĂ©pendances. Vous pouvez mettre des dĂ©pendances Ă  la disposition de votre code au moment de l’exĂ©cution en les chargeant dans une zone de prĂ©paration. Pour plus d’informations, reportez-vous Ă  Mettre les dĂ©pendances Ă  la disposition de votre code.

  • Exemples de code Pour une sĂ©rie d’exemples de gestionnaires en Python, reportez-vous Ă  Exemples de gestionnaires d’UDF Python.