Fonctions anonymes de flocon de neige
Que sont les fonctionnalités d'aperçu ?
Snowflake développe constamment de nouvelles fonctionnalités et a conçu un système de publication qui permet aux utilisateurs de les utiliser le plus tôt possible. Cela garantit que nous pouvons valider leur fonctionnalité à l'avance et voir comment ils s'intègrent aux projets sur lesquels nous travaillons.
Comprendre à quelles étapes les nouvelles fonctionnalités sont rendues disponibles (également appelées cycle de vie de la version des fonctionnalités) est une considération particulièrement importante si vous gérez des charges de travail de production ou stockez des données sensibles, car certaines fonctionnalités disponibles publiquement ne conviennent pas à une utilisation dans des environnements de production.
Les fonctionnalités de Snowflake, comme la prise en charge de Snowpark Python, par exemple, comportent trois phases de publication :
Aperçu privé
Cette étape décrit une fonctionnalité disponible sur demande pour les comptes Snowflake. Ces fonctionnalités sont généralement à des stades de développement plus précoces et donc plus expérimentales et sujettes aux bogues. Les fonctionnalités d'aperçu privé peuvent être activées en contactant l'assistance Snowflake.
Aperçu public
Cette étape inclut des fonctionnalités qui sont disponibles pour les comptes Snowflake sans en faire la demande, mais qui n'ont pas encore été entièrement testées par Snowflake et peuvent donc inclure des bogues. En tant que tel, Snowflake insiste pour que les fonctionnalités de prévisualisation privées et publiques ne soient pas utilisées en production . Ceci est particulièrement important lorsque l'on considère des données sensibles en production qui pourraient être exposées par un bogue non encore corrigé dans une fonctionnalité d'aperçu.
Disponibilité générale
Après les tests en avant-première publique, une fonctionnalité Snowflake entre en disponibilité générale, ce qui signifie que tous les comptes Snowflake peuvent l'utiliser librement et qu'elle est considérée comme entièrement prise en charge par Snowflake et adaptée aux charges de travail de production.
Nous pouvons parcourir les fonctionnalités de Snowflake en mode aperçu en accédant à la page suivante de leur documentation .
Pour garder une longueur d'avance et tester de nouvelles fonctionnalités, il est judicieux de consulter régulièrement les nouvelles fonctionnalités disponibles en mode aperçu. C'est également une bonne idée de garder une trace des fonctionnalités qu'il convient maintenant de promouvoir en production.
Dans cet article, nous allons examiner de plus près une fonctionnalité intéressante actuellement en avant-première publique, les procédures anonymes .
Procédures stockées
Pour comprendre où les procédures anonymes entrent en jeu, passons rapidement en revue la procédure standard, également appelée procédure stockée.
Dans Snowflake, une procédure stockée est un ensemble nommé d'instructions - écrites en JavaScript, SQL, Python, Java ou Scala - généralement conçues pour effectuer des tâches administratives. L'exemple de code suivant crée une procédure stockée à l'aide de JavaScript pour supprimer les données de table antérieures à une période configurable, puis l'exécute dans une instruction distincte à l'aide du mot clé call :
create or replace procedure table_retention(table_name string, years float)
returns string
language javascript
execute as owner
as
$$
var table_name = TABLE_NAME;
var years = YEARS;
var sql_command = `DELETE FROM ${table_name} WHERE JOIN_DATE < DATEADD(YEAR, -${years}, current_date())`
snowflake.execute({sqlText:sql_command});
$$;
call table_retention('emp',10);
Procédures anonymes
Les procédures anonymes, en revanche, ne créent pas d'objet de procédure dans une base de données et un schéma. Ils n'existent que pour la durée d'une session d'un utilisateur particulier et ne peuvent être exécutés que dans ce contexte.
Décomposons comment nous créons et appelons des procédures anonymes en réimplémentant la logique de la procédure stockée :
with table_retention as procedure (table_name string, years float)
returns string
language javascript
as
$$
var table_name = TABLE_NAME;
var years = YEARS;
var sql_command = `DELETE FROM ${table_name} WHERE JOIN_DATE < DATEADD(YEAR, -${years}, current_date())`
snowflake.execute({sqlText:sql_command});
$$
call table_retention('emp',10);
Les deux prochaines lignes sont les options de notre procédure. Le premier est le type de retour. Il s'agit d'une option obligatoire pour spécifier le type de données que la procédure stockée peut renvoyer. Et bien qu'il soit obligatoire d'inclure cette option dans la définition de la procédure, il est facultatif de renvoyer explicitement une valeur dans le corps de la procédure. Si aucune valeur n'est renvoyée explicitement, une valeur NULL sera renvoyée.
Vient ensuite le paramètre language qui spécifie le langage de programmation que nous utiliserons dans le corps de la procédure. Dans ce cas, nous créons une procédure JavaScript, mais cette option accepte également Java, Scala et Python en utilisant Snowpark. Les scripts Snowflake ne sont actuellement pas pris en charge avec les fonctions anonymes .
Vous avez peut-être remarqué que dans la procédure anonyme, nous n'incluons pas l'option 'EXECUTE AS'. Les procédures stockées régulières ont un modèle de privilège unique dans lequel elles peuvent être exécutées avec les privilèges du rôle propriétaire de la procédure (droits du propriétaire) ou du rôle appelant la procédure (droits de l'appelant). Dans le cas d'une procédure anonyme, elles sont toujours exécutées avec les droits de l'appelant . C'est-à-dire avec les privilèges du rôle que l'utilisateur avait actif lors de l'exécution de la procédure anonyme.
Ensuite, nous avons le corps du code de la procédure qui est délimité par deux signes dollar. Ici, nous pouvons copier le code tel quel.
Après la deuxième paire de signes dollar, au lieu de terminer l'instruction par un point-virgule comme nous l'avons fait pour la procédure stockée, nous suivons immédiatement la définition de la procédure anonyme avec le mot-clé call. Ainsi, une autre différence clé entre les fonctions stockées et anonymes à garder à l'esprit est que les fonctions anonymes sont définies et appelées dans une seule instruction.
Pourquoi utiliser des procédures anonymes ?
Parce que l'un des principaux avantages d'une procédure stockée est sa capacité à être stockée pour une réutilisation ultérieure, pourquoi alors utiliser une procédure anonyme ? Un avantage à garder à l'esprit est que les procédures anonymes ne nécessitent pas que le rôle exécutant le code ait le privilège CREATE PROCEDURE . De plus, avec des procédures anonymes, nous acquérons les fonctionnalités de programmation de niveau supérieur telles que la création de branches, les boucles et la gestion des erreurs, mais sans avoir à conserver une version permanente de notre code si ce n'est pas nécessaire.
Vous voulez en savoir plus sur Snowflake ?
Si vous cherchez à passer la certification de base SnowPro ou si vous voulez simplement en savoir plus sur les concepts Snowflake tels que les procédures stockées, consultez mon cours d'introduction Snowflake disponible sur Udemy. Pour 50 % de réduction, suivez ce lien ou entrez NEWYEAR50 à la caisse.
Nous couvrons les bases comme l'architecture de données partagées multi-cluster et des sujets plus complexes comme l'accès aux données semi-structurées et aux fonctions d'estimation.
Si vous souhaitez me contacter, envoyez-moi un message sur LinkedIn ou visitez mon site Web :https://www.tombaileycourses.com/.
Merci et bon apprentissage !
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































