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

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

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.

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

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