Création d’une session pour Snowpark Scala¶
Pour utiliser Snowpark dans votre application, vous devez créer une session. Pour faciliter l’écriture du code, vous pouvez également importer les noms des paquets et des objets.
Dans ce chapitre :
Importation de noms à partir de paquets et d’objets pour Snowpark¶
L’API de Snowpark fournit un certain nombre de classes, d’objets et de fonctions qui sont disponibles dans différents paquets. Pour des raisons de commodité, vous pouvez importer les noms de classes, d’objets et de fonctions à partir de paquets et d’objets pour éviter d’avoir à utiliser des noms qualifiés.
Par exemple :
- Le paquet com.snowflake.snowpark contient les classes principales de l’API Snowpark. Pour importer les noms de ce paquet, utilisez : - import com.snowflake.snowpark._ 
- L”objet com.snowflake.snowpark.functions définit les fonctions utilitaires (y compris les fonctions définies par le système). Pour importer les noms de fonctions de cet objet, utilisez : - import com.snowflake.snowpark.functions._ 
- Le paquet com.snowflake.snowpark.types définit les classes et les objets que vous pouvez utiliser pour définir des schémas pour les données semi-structurées. - import com.snowflake.snowpark.types._ 
Note
Si vous avez utilisé le script run.sh pour démarrer le REPL Scala, le script importe déjà des noms com.snowflake.snowpark et com.snowflake.snowpark.functions.
Création d’une session pour Snowpark¶
La première étape de l’utilisation de la bibliothèque consiste à établir une session avec la base de données Snowflake. Pour créer une session, utilisez l’objet SessionBuilder. Vous pouvez accéder à l’objet SessionBuilder par le biais du champ builder de l’objet compagnon Session :
import com.snowflake.snowpark._
...
// Get a SessionBuilder object.
val builder = Session.builder
Pour fournir les détails permettant d’établir une session avec une base de données Snowflake (par exemple, l’identificateur du compte, le nom de l’utilisateur, etc.), il faut soit créer un fichier de propriétés (un fichier texte), soit construire de manière programmatique un Map contenant les propriétés.
Dans le fichier de propriétés ou Map, définissez les propriétés suivantes :
- URL: définissez ce paramètre sur l’URL de votre compte sous la forme- https://account_identifier.snowflakecomputing.com.- Voir Identificateurs de compte. - Si l’identificateur du compte contient des traits de soulignement ( - _), remplacez-les par des traits d’union (- -).
- Tout paramètre JDBC supplémentaire (voir Référence Paramètre de connexion pilote JDBC dans la documentation du pilote JDBC) nécessaire à la connexion à Snowflake (par exemple - USER,- ROLE,- WAREHOUSE,- DB,- SCHEMA, etc.).- Note - Pour modifier le niveau de journalisation (par exemple de - INFOà- DEBUG), voir Modification des paramètres de journalisation.
- (Facultatif) - snowpark_request_timeout_in_seconds: définissez ici le nombre maximum de secondes pendant lesquelles la bibliothèque Snowpark doit patienter dans les cas suivants :- En attente du chargement de dépendances vers une zone de préparation. 
- En attente de l’achèvement d’une action asynchrone. 
 - La valeur par défaut de cette propriété est 86400 secondes (1 jour). - Note - Cette propriété a été introduite dans Snowpark 0.10.0. 
Pour vous authentifier, vous pouvez utiliser les mêmes mécanismes que ce que le pilote JDBC prend en charge. Par exemple, vous pouvez utiliser :
- l’authentification par mot de passe (en définissant la propriété - PASSWORD)
Pour l’authentification par paire de clés, vous pouvez soit :
- Définir la propriété - PRIVATE_KEY_FILEcomme le chemin d’accès au fichier de la clé privée.- Si la clé privée est chiffrée, définir la propriété - PRIVATE_KEY_FILE_PWDsur la phrase secrète permettant de déchiffrer la clé.
- Définir la propriété - PRIVATEKEYsur la valeur de chaîne de la clé privée non chiffrée du fichier de clé privée. (Si la clé privée est chiffrée, vous devez déchiffrer la clé avant de la définir comme valeur de la propriété- PRIVATEKEY).
Pour créer la session :
- Définissez les propriétés de l’objet - Session.builder.- Si vous avez créé un fichier de propriétés, transmettez le chemin d’accès au fichier de propriétés à la méthode - Session.builder.configFile.
- Si vous avez construit de façon programmée un - Mapdes propriétés, transmettez- Mapà la méthode- Session.builder.configs.
 - Les deux méthodes renvoient un objet - builderqui possède ces propriétés.
- Appelez la méthode - createde l’objet- builderpour établir la session.
Voici un exemple de fichier de propriétés qui définit les paramètres de base pour la connexion à une base de données Snowflake. L’exemple est configuré pour utiliser l’authentification par paire de clés. Définissez PRIVATE_KEY_FILE comme le chemin d’accès au fichier de la clé privée. De plus, si la clé privée est chiffrée, vous devez définir PRIVATE_KEY_FILE_PWD comme la phrase secrète pour le déchiffrage de la clé privée :
# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATE_KEY_FILE = </path/to/private_key_file.p8>
PRIVATE_KEY_FILE_PWD = <if the private key is encrypted, set this to the passphrase for decrypting the key>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
À la place, vous pouvez définir la propriété PRIVATEKEY sur la clé privée non chiffrée du fichier de clé privée.
# profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
L’exemple suivant utilise ce fichier de propriétés pour créer une nouvelle session :
// Create a new session, using the connection properties
// specified in a file.
val session = Session.builder.configFile("/path/to/properties/file").create
L’exemple suivant utilise une carte pour définir les propriétés :
// Create a new session, using the connection properties
// specified in a Map.
val session = Session.builder.configs(Map(
    "URL" -> "https://<account_identifier>.snowflakecomputing.com",
    "USER" -> "<username>",
    "PRIVATE_KEY_FILE" -> "</path/to/private_key_file.p8>",
    "PRIVATE_KEY_FILE_PWD" -> "<if the private key is encrypted, set this to the passphrase for decrypting the key>",
    "ROLE" -> "<role_name>",
    "WAREHOUSE" -> "<warehouse_name>",
    "DB" -> "<database_name>",
    "SCHEMA" -> "<schema_name>"
)).create
Clôture d’une session¶
Si vous n’avez plus besoin d’utiliser une session pour exécuter des requêtes et que vous souhaitez annuler les requêtes en cours d’exécution, appelez la méthode close de l’objet Session. Par exemple :
// Close the session, cancelling any queries that are currently running, and
// preventing the use of this Session object for performing any subsequent queries.
session.close();