UDFs d’exécution de scripts Snowflake¶
Snowflake prend en charge les fonctions définies par l’utilisateur (UDFs) SQL qui contiennent le langage procédural Exécution de scripts Snowflake. Ces UDFs sont appelés UDFs d’exécution de scripts Snowflake.
Les UDFs d’exécution de scripts Snowflake peuvent être appelées dans une instruction SQL, telle qu’une instruction SELECT ou une instruction INSERT. Par conséquent, elles sont plus flexibles qu’une procédure stockée d’exécution de scripts Snowflake, qui ne peut être appelée que dans une commande SQL CALL.
Utilisation générale¶
Une UDF d’exécution de scripts Snowflake évalue le code procédural et renvoie une valeur scalaire (c’est-à-dire unique).
Vous pouvez utiliser le sous-ensemble suivant de la syntaxe d”exécution de scripts Snowflake dans les UDFs d’exécution de scripts Snowflake :
Types de données pris en charge¶
Les UDFs d’exécution de scripts Snowflake prennent en charge les types de données suivants pour les arguments d’entrée et les valeurs de retour :
Types de données numériques (par exemple, INTEGER, NUMBER et FLOAT)
Types de données Chaîne et Binaire (par exemple, VARCHAR et BINARY)
Types de données de date et heure (par exemple, DATE, TIME, et TIMESTAMP)
Types de données logiques (par exemple, BOOLEAN)
Les UDFs d’exécution de scripts Snowflake prennent en charge les types de données suivants pour les arguments d’entrée uniquement :
Types de données semi-structurées (par exemple, VARIANT, OBJECT, et ARRAY)
Types de données structurés (par exemple, ARRAY, OBJECT et MAP)
Limitations¶
Les limitations suivantes s’appliquent aux UDFs d’exécution de scripts Snowflake :
Les types suivants de la syntaxe d’exécution de scripts Snowflake ne sont pas pris en charge dans les UDFs d’exécution de scripts Snowflake :
Les instructions SQL ne sont pas prises en charge dans les UDFs d’exécution de scripts Snowflake (y compris SELECT, INSERT, UPDATE, etc.).
Les UDFs d’exécution de scripts Snowflake ne peuvent pas être définies en tant que fonctions de table.
Les types d’expressions suivants ne sont pas pris en charge dans les UDFs d’exécution de scripts Snowflake :
Fonctions définies par l’utilisateur
Fonctions d’agrégation
Fonctions de fenêtre
Les UDFs d’exécution de scripts Snowflake ne peuvent pas être utilisées lors de la création d’une vue matérialisée.
Les UDFs d’exécution de scripts Snowflake ne peuvent pas être utilisées lors de la création de politiques d’accès aux lignes et de politiques de masquage.
Les UDFs d’exécution de scripts Snowflake ne peuvent pas être utilisées pour spécifier une valeur de colonne par défaut.
Les UDFs d’exécution de scripts Snowflake ne peuvent pas être utilisées dans une commande COPY INTO pour le chargement et le déchargement de données.
Les UDFs d’exécution de scripts Snowflake ne sont pas mémorisable.
Les UDFs d’exécution de scripts Snowflake ont une limite de 500 arguments d’entrée.
Vous ne pouvez pas enregistrer de messages pour les UDFs d’exécution de scripts Snowflake.
Exemples¶
Les exemples suivants créent et appellent des UDFs d’exécution de scripts Snowflake :
Créer une UDF d’exécution de scripts Snowflake avec des variables
Créer une UDF d’exécution de scripts Snowflake avec une logique conditionnelle
Créer une UDF d’exécution de scripts Snowflake avec une boucle
Créer une UDF d’exécution de scripts Snowflake avec traitement des exceptions
Créer une UDF d’exécution de scripts Snowflake qui renvoie une valeur pour une instruction INSERT
Créer une UDF d’exécution de scripts Snowflake appelée dans les clauses WHERE et ORDER BY
Créer une UDF d’exécution de scripts Snowflake avec des variables¶
Créer une UDF d’exécution de scripts Snowflake qui calcule le bénéfice en fonction des valeurs de deux arguments :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler calculate_profit dans une requête :
Vous pouvez utiliser la même UDF d’exécution de scripts Snowflake et spécifier des colonnes pour les arguments. Créer une table en premier et insérer des données :
Appeler calculate_profit dans une requête et spécifier les colonnes pour les arguments :
Créer une UDF d’exécution de scripts Snowflake avec une logique conditionnelle¶
Créer une UDF d’exécution de scripts Snowflake qui utilise une logique conditionnelle pour déterminer le nom du département en fonction d’une valeur INTEGER d’entrée :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler check_dept dans une requête :
Vous pouvez utiliser une variable SQL dans un argument lorsque vous appelez une UDF d’exécution de scripts Snowflake. L’exemple suivant définit une variable SQL et utilise ensuite la variable dans un appel à l’UDF check_dept :
Créer une UDF d’exécution de scripts Snowflake avec une boucle¶
Créer une UDF d’exécution de scripts Snowflake qui utilise une boucle pour compter tous les nombres jusqu’à un nombre cible fourni dans un argument et calculer la somme de tous les nombres comptés :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler count_to dans une requête :
Créer une UDF d’exécution de scripts Snowflake avec traitement des exceptions¶
Créer une UDF d’exécution de scripts Snowflake qui déclare une exception et soulève ensuite l’exception :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler raise_exception dans une requête et spécifier 1 pour la valeur d’entrée :
Appeler raise_exception dans une requête et spécifier 2 pour la valeur d’entrée :
Appeler raise_exception dans une requête et spécifier NULL pour la valeur d’entrée :
Créer une UDF d’exécution de scripts Snowflake qui renvoie une valeur pour une instruction INSERT¶
Créer une UDF d’exécution de scripts Snowflake qui renvoie une valeur utilisée dans une instruction INSERT. Créer la table dans laquelle les valeurs seront insérées :
Créer une UDF SQL qui renvoie une valeur numérique :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler value_to_insert dans plusieurs instructions INSERT :
Interroger la table pour afficher les valeurs insérées :
Créer une UDF d’exécution de scripts Snowflake appelée dans les clauses WHERE et ORDER BY¶
Créer une UDF d’exécution de scripts Snowflake qui renvoie une valeur utilisée dans une clause WHERE ou ORDER BY. Créer une table et insérer des valeurs :
Créer une UDF SQL qui renvoie une valeur numérique qui est le produit de la multiplication de deux valeurs d’entrée :
Note
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Appeler get_product dans la clause WHERE d’une requête pour renvoyer les lignes où le produit est supérieur à 350 :
Appeler get_product dans la clause ORDER BY d’une requête pour classer les résultats du produit du plus bas au plus élevé renvoyés par l’UDF :