Création d’une UDF¶
Vous créez une fonction définie par l’utilisateur (UDF) ou une fonction de table définie par l’utilisateur (UDTF) avec une commande CREATE FUNCTION qui spécifie les propriétés de la fonction, y compris le gestionnaire à utiliser pour sa logique.
Cette rubrique présente les étapes à suivre pour créer une UDF. Pour des exemples, voir la référence CREATE FUNCTION.
Vous créez une UDF en suivant les étapes suivantes :
Écrivez le code du gestionnaire qui s’exécute lorsque l” UDF est appelée.
Vous pouvez utiliser l’un des langages du gestionnaire pris en charge. Pour plus d’informations, voir Langues acceptées.
Choisissez si vous allez garder le code du gestionnaire en ligne avec l’instruction CREATE FUNCTION SQL ou si vous allez y faire référence dans une zone de préparation.
Chacun a ses avantages. Pour plus d’informations, voir Conserver le code du gestionnaire en ligne ou dans une zone de préparation.
Exécutez une instruction CREATE FUNCTION dans SQL, en spécifiant les propriétés de la fonction.
Le code de l’exemple suivant crée une UDF appelée
function_name
avec un gestionnaire en ligneHandlerClass.handlerMethod
.create function function_name(x integer, y integer) returns integer language java handler='HandlerClass.handlerMethod' target_path='@~/HandlerCode.jar' as $$ class HandlerClass { public static int handlerMethod(int x, int y) { return x + y; } } $$;
Les paragraphes suivants décrivent certaines des propriétés requises ou généralement utilisées lors de la création d’une fonction.
Nom de la fonction.
Le nom de l’UDF ne doit pas nécessairement correspondre au nom de la méthode du gestionnaire. L’instruction CREATE FUNCTION associe le nom de l’UDF au gestionnaire.
Pour plus d’informations sur les contraintes et les conventions relatives aux noms, voir Nommage et surcharge de procédures et d’UDFs.
Les arguments de la fonction, le cas échéant.
Voir Définition des arguments pour UDFs et les procédures stockées.
Type de retour avec la clause RETURNS.
Pour une valeur de retour scalaire, la clause RETURNS spécifiera un seul type de retour ; pour une valeur de retour tabulaire, RETURNS spécifiera le mot clé TABLE précisant le type de colonne dans la valeur de retour tabulaire.
Pour plus d’informations sur la façon dont Snowflake fait correspondre les types de données SQL aux types de données des gestionnaires, voir Nommage et surcharge de procédures et d’UDFs.
Nom du gestionnaire avec la clause HANDLER.
Si nécessaire, il s’agit du nom de la classe ou de la méthode contenant le code qui s’exécute lorsque l’UDF est appelée. Vous devez spécifier un nom de gestionnaire uniquement pour les gestionnaires écrits en Java et en Python. Pour les gestionnaires JavaScript et SQL, tout le code spécifié en ligne sera exécuté comme le gestionnaire.
Le tableau suivant décrit la forme de la valeur de la clause HANDLER en fonction du langage et du type de fonction du gestionnaire.
Langage du gestionnaire
UDF
UDTF
Java
Nom de la classe et de la méthode.
Par exemple :
MyClass.myMethod
Nom de la classe seulement. Le nom de la méthode du gestionnaire est prédéterminé par l’interface requise.
JavaScript
Aucune.
Aucune.
Python
Nom de la classe et de la méthode si une classe est utilisée ; sinon, nom de la fonction.
Par exemple :
module.my_function
oumy_function
Nom de la classe seulement. Le nom de la méthode du gestionnaire est prédéterminé par l’interface requise.
SQL
Aucune.
Aucune.
Dépendances requises par le gestionnaire, le cas échéant, en utilisant les clauses IMPORTS ou PACKAGES.
Pour plus d’informations sur la mise à disposition des dépendances pour votre gestionnaire, voir Mettre les dépendances à la disposition de votre code.
Exécution du langage du gestionnaire avec la clause RUNTIME_VERSION.
Lorsque le langage du gestionnaire est Java ou Python, utilisez la clause RUNTIME_VERSION pour spécifier la version d’exécution prise en charge à utiliser. En omettant la clause, Snowflake utilisera la valeur par défaut, qui peut changer à l’avenir.