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, le fichier principal du notebook est créé. Vous pouvez voir ce fichier dans l’onglet Files sur le côté gauche du 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.

  • Fichier principal du notebook : Par défaut, ce fichier 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.

  • environnement.yml : Ce fichier est généré automatiquement après l’installation d’un nouveau paquet. Il décrit l’environnement de votre notebook, y compris les paquets installés.

Pour inspecter le contenu du fichier, sélectionnez le nom du fichier pour afficher une avant-première du contenu 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’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;
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

Ajouter des fichiers à un notebook à partir d’un ordinateur local

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.

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 Notebooks.

Note

Pour les notebooks sur l’environnement d’exécution du conteneur : si votre session notebook est active lorsque vous avez importé le fichier, vous devrez redémarrer votre session notebook pour que le fichier importé soit accessible. Snowflake recommande d’ajouter tous les fichiers dont vous avez besoin avant de commencer votre session pour les utiliser dans votre notebook.

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 Snowflake Notebooks avec un référentiel Git.

Référencer des fichiers dans 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 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

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 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},{"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