Travailler avec des fichiers dans des 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, le fichier principal du notebook est créé. Par défaut, le fichier du notebook porte le même nom que le notebook.
Les fichiers sont mis en préparation dans une zone de préparation interne qui représente l’environnement de votre notebook, et ils persistent entre les sessions. Vous pouvez les voir dans l’onglet Files sur le côté gauche du notebook. Pour afficher un aperçu du contenu du fichier, sélectionnez le nom du fichier.
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 de la zone de préparation temporaire ne seront plus disponibles après la fin de 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.
Persistance des fichiers dans les sessions de notebook¶
Pour conserver vos fichiers entre les sessions de notebook :
Stocker les fichiers dans une zone de préparation Snowflake¶
Si vous souhaitez que vos fichiers persistent entre les sessions et qu’il soit possible d’y faire référence dans différents notebooks, utilisez une zone de préparation Snowflake pour les stocker. Vous pouvez télécharger des fichiers de votre ordinateur local à la zone de préparation et utiliser les opérations de fichiers de l’API Snowpark pour y accéder à partir de 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 vous reconnectez, vous pouvez exécuter le code suivant dans une cellule SQL pour vérifier si le fichier apparaît toujours :
LS @permanent_stage;
Utiliser Snowsight pour télécharger des fichiers dans un notebook¶
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.
Note
Si vous téléchargez des fichiers pour les utiliser comme paquets Python dans votre notebook, sachez que seuls les fichiers .py
et .zip
sont pris en charge lors de l’exécution dans Warehouse Runtime. Pour Container Runtime, les fichiers (wheel) .whl
sont également pris en charge. Si vous importez un paquet sous la forme d’un fichier .zip
, assurez-vous qu’il existe un fichier __init__.py
à la racine pour indiquer qu’il s’agit d’un paquet Python.
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érencer des fichiers dans les notebooks.
Note
Seules les zones de préparation internes sont prises en charge. Les zones de préparation externes (par exemple, Amazon S3, Google Cloud Storage ou Azure Blob Storage) ne sont pas prises en charge.
Utiliser d’autres environnements d’édition pour charger ou télécharger des fichiers¶
En plus d’utiliser le navigateur de fichiers de Snowsight, vous pouvez également travailler avec des fichiers dans la zone de préparation Notebooks en utilisant une session Snowpark Python locale ou des commandes SnowSQL.
Session locale de Python dans un Snowpark¶
Vous pouvez charger et télécharger des fichiers entre votre ordinateur local et une zone de préparation Notebooks en utilisant les méthodes session.file.put
et session.file.get
de Snowpark Python. Cela suppose de démarrer une session Snowpark à partir de votre environnement d’édition local (et non depuis Snowsight). Par exemple :
# Upload a local file to the notebook stage
res = session.file.put("aaa.csv", """snow://notebook/DEMO_DB.PUBLIC."JSMITH dbapi test"/versions/live""", overwrite=True)
# Download a file from the notebook stage to your local computer
res = session.file.get("""snow://notebook/DEMO_DB.PUBLIC."JSMITH dbapi test"/versions/live/aaa.json""", "aaa.csv")
Note
Cette méthode ne fonctionne pas à partir de l’interface CLI de SnowSQL. Vous devez exécuter la méthode à partir d’un environnement Python avec une session Snowpark active.
commandes SnowSQL¶
Vous pouvez également charger ou télécharger des fichiers vers ou depuis la zone de préparation Notebooks en utilisant directement les commandes SnowSQL :
-- Download a file from the notebook stage to your local computer
GET 'snow://notebook/SNOWPUBLIC.NOTEBOOKS."ADMIN_SPCS"/versions/live/ADMIN_SPCS.ipynb' 'file://download';
-- Upload a file from your local computer to the notebook stage
PUT 'file://test.json' 'snow://notebook/SNOWPUBLIC.NOTEBOOKS.ADMIN_SPCS/versions/live' overwrite = TRUE;
Avant d’exécuter ces commandes, assurez-vous que vous avez paramétré la base de données, le schéma et l’entrepôt appropriés dans votre session SnowSQL.
Synchroniser avec les fichiers depuis Git¶
Si votre notebook est connecté à 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 les notebooks avec un référentiel Git.
Référencer des 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érencer un chemin local avec Python¶
En général, les bibliothèques Python utilisent le chemin local du fichier comme référence au fichier. 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érencer le chemin de la 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'
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 dans un chemin local dans le notebook ne sont pas affichés dans l’onglet Files. Cependant, vous pouvez toujours 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}\n{"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.