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()
Copy

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()
Copy

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;
Copy

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()
Copy

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
Copy

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;
Copy

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.

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Projects » Notebooks.

  3. Dans l’onglet Files, à côté de l’explorateur d’objets de base de données, sélectionnez l’icône Ajout d'une vignette de tableau de bord pour sélectionner les fichiers à charger.

  4. Parcourez et sélectionnez ou glissez-déposez des fichiers dans la boîte de dialogue.

  5. 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")
Copy

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;
Copy

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")
Copy

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>
Copy

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 :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Projects » Notebooks.

  3. Dans l’onglet Files , à côté de l’explorateur d’objets de base de données, sélectionnez l’icône Plus d'options à côté du fichier dont vous souhaitez obtenir le chemin.

  4. 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'
Copy

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
    
    Copy
  • 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