Utilisation des fichiers dans des Snowflake Notebooks¶
Cette rubrique décrit comment vous pouvez charger des fichiers et y accéder à partir de vos Snowflake Notebooks.
Fichiers dans les environnements de notebooks¶
Lorsque vous créez un nouveau notebook, deux fichiers sont créés. Vous pouvez les voir dans le volet Files sur le côté gauche du notebook. Les fichiers sont mis dans une zone de préparation interne qui représente l’environnement de votre notebook. Les fichiers mis en zone de préparation interne persistent entre les sessions.
Fichier principal du notebook : par défaut, il est nommé
notebook_app.ipynb
. Si votre notebook est créé à partir de Git ou chargé à partir d’un autre fichier.ipynb
, le nom du fichier peut être différent.environment.yml : il s’agit d’un fichier autogénéré qui décrit l’environnement de votre notebook, par exemple les paquets installés.
Pour inspecter le contenu du fichier, vous pouvez sélectionner le nom du fichier et une fenêtre contextuelle apparaîtra avec un aperçu du contenu du fichier. Notez que les fichiers sont en lecture seule. Pour modifier le contenu d’un fichier, vous devez le télécharger, le modifier localement, puis charger la copie mise à jour.
Système de fichiers temporaire dans l’environnement d’un notebook¶
Votre notebook dispose d’un système de fichiers temporaire qui est disponible pendant une session active. Tous les fichiers créés pendant la session sont mis dans une zone de préparation temporaire. Les fichiers en zone de préparation temporaire ne seront plus disponibles une fois que vous aurez quitté la session du notebook en cours.
Le code suivant crée un fichier appelé myfile.txt
et y écrit du texte :
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
Vous pouvez accéder à ce fichier au cours de la même session que celle où il a été créé.
Utilisez la méthode listdir()
pour dresser la liste des fichiers mis en zone de préparation temporaire :
import os
os.listdir()
Déconnectez-vous maintenant de votre session en cours et reconnectez-vous. Essayez à nouveau la méthode listdir()
et le fichier myfile.txt
n’apparaîtra pas dans la liste.
Fichiers conservés lors des sessions du notebook¶
Pour conserver vos fichiers à travers les sessions du notebook :
Accédez aux fichiers de données dans une zone de préparation Snowflake.¶
Si vous souhaitez que vos fichiers persistent entre les sessions et qu’ils soient référencés dans différents notebooks, utilisez une zone de préparation Snowflake pour les stocker. Vous pouvez charger des fichiers de votre machine locale sur la zone de préparation et utiliser les opérations de fichiers de l’API Snowpark pour y accéder depuis votre notebook.
Exemple¶
Cet exemple montre comment créer une zone de préparation et y stocker et récupérer des fichiers à partir de votre notebook.
Pour créer une zone de préparation appelée permanent_stage
, exécutez le code suivant dans une cellule SQL :
CREATE OR REPLACE STAGE permanent_stage;
Ensuite, pour créer un fichier appelé myfile.txt
contenant du texte, exécutez le code suivant dans une cellule Python :
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
Notez qu’à ce stade, myfile.txt
est stocké dans le système de fichiers temporaire du notebook. Pour le mettre en zone de préparation, vous pouvez utiliser l’API Snowpark pour charger le fichier myfile.txt
sur votre permanent_stage
:
from snowflake.snowpark.context import get_active_session
session = get_active_session()
put_result = session.file.put("myfile.txt","@PERMANENT_STAGE", auto_compress= False)
put_result[0].status
Si vous déconnectez votre session et que vous vous reconnectez, vous pouvez exécuter le code suivant dans une cellule SQL pour vérifier que le fichier est toujours là :
LS @permanent_stage;
Ajouter des fichiers au notebook à partir d’un ordinateur local¶
Vous pouvez charger des fichiers depuis votre ordinateur local pour les utiliser dans votre notebook Snowflake.
Connectez-vous à Snowsight.
Sélectionnez Projects » Notebooks.
Dans l’onglet Files, à côté de l’explorateur d’objets de base de données, sélectionnez l’icône
pour sélectionner les fichiers à charger.
Parcourez et sélectionnez ou glissez-déposez des fichiers dans la boîte de dialogue.
Sélectionnez Upload pour charger votre fichier.
Les fichiers chargés sont enregistrés dans une zone de préparation interne du notebook et conservés entre les sessions. Vous pouvez référencer les fichiers chargés en utilisant leurs chemins locaux à partir du fichier notebook. Voir Référencement de fichiers dans les notebooks.
Avertissement
Si votre session notebook est active lorsque vous avez chargé le fichier, vous devrez redémarrer votre session notebook pour que le fichier chargé soit accessible. Il s’agit d’un bogue connu. Snowflake recommande d’ajouter tous les fichiers dont vous avez besoin avant de commencer votre session pour les utiliser dans votre notebook.
Synchronisation avec les fichiers depuis Git¶
Si votre notebook est lié à Git, tous les fichiers se trouvant dans le même dossier Git que votre notebook seront affichés dans l’onglet Files.
Pour plus d’informations sur le travail avec les fichiers dans Git, consultez Synchroniser Snowflake Notebooks avec un référentiel Git.
Référencement de fichiers dans les notebooks¶
Chaque fichier dans l’environnement du notebook possède un chemin d’accès à la zone de préparation et un chemin d’accès local. Vous pouvez utiliser ces chemins pour référencer le fichier dans le notebook.
Référencement d’un chemin local avec Python¶
En général, les bibliothèques Python utilisent le chemin local du fichier comme référence à ce dernier. Par exemple, le code suivant accède au fichier data.csv
qui a été chargé dans le même répertoire que le notebook dans lequel ce code est exécuté :
import pandas as pd
df = pd.read_csv("data.csv")
Référence à un chemin de zone de préparation avec SQL¶
Avec SQL, Snowflake fait référence à des fichiers en fonction de la zone de préparation. Le chemin de zone de préparation d’un fichier dans votre notebook est basé sur le format suivant :
snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/<file_name>
Pour trouver le chemin de la zone de préparation associé aux fichiers de la zone de préparation de votre notebook, utilisez le menu Copy path :
Connectez-vous à Snowsight.
Sélectionnez Projects » Notebooks.
Dans l’onglet Files , à côté de l’explorateur d’objets de base de données, sélectionnez l’icône
à côté du fichier dont vous souhaitez obtenir le chemin.
Sélectionnez Copy path. Cette opération permet de copier le chemin du fichier dans votre presse-papiers.
Vous pouvez ensuite utiliser l’instruction SQL suivante pour dresser la liste des détails du fichier de zone de préparation :
LIST 'snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/data.csv'
Exigences en matière de contrôle d’accès¶
Vous devez utiliser un rôle doté des privilèges suivants pour accéder aux fichiers d’une zone de préparation dans un notebook.
Privilège |
Objet |
---|---|
USAGE |
Zone de préparation qui contient les fichiers. |
Limites et considérations¶
Chargez les fichiers avant de démarrer votre session de notebook. Si vous chargez des fichiers après le démarrage d’une session, vous devez redémarrer votre session pour accéder aux fichiers.
Aucune restriction sur les types de fichiers à charger.
La taille maximale d’un fichier est de 250 MB.
Les fichiers qui sont écrits sur un chemin local dans le notebook n’apparaissent pas sur l’UI Files. Il s’agit d’un bogue connu. Cependant, vous devriez toujours pouvoir utiliser le fichier dans le code de votre notebook.
Par exemple, si vous créez un fichier,
data.json
, vous pouvez y accéder comme indiqué dans le code suivant, même s’il ne sera pas visible dans l’UI Files :# Generate sample JSON file with open("data.json", "w") as f: f.write('{"fruit":"apple", "size":3.4, "weight":1.4},{"fruit":"orange", "size":5.4, "weight":3.2}') # Read from local JSON file (File doesn't show in UI) df = pd.read_json("data.json",lines=True) df
L’ouverture d’un autre fichier
.ipynb
qui n’est pas le fichier principal du notebook n’est pas prise en charge.
Ressources supplémentaires¶
Pour des exemples supplémentaires, consultez les notebooks d’exemples suivants sur Github :