Gestion de Snowflake Notebooks avec Python

Vous pouvez utiliser Python pour gérer Snowflake Notebooks, qui est une interface de développement dans Snowsight qui offre un environnement de programmation interactif, basé sur des cellules, pour Python et SQL. Pour plus d’informations, voir À propos de Snowflake Notebooks.

Les Snowflake Python APIs représentent des Notebooks avec deux types distincts :

  • Notebook : expose les propriétés d’un notebook telles que son nom, sa version, l’entrepôt de requêtes et le fichier .ipynb.

  • NotebookResource : expose les méthodes que vous pouvez utiliser pour récupérer un objet Notebook correspondant, gérer les versions du notebook et exécuter le notebook.

Conditions préalables

Les exemples de cette rubrique supposent que vous ayez ajouté le code nécessaire pour vous connecter à Snowflake et créer un objet Root à partir duquel utiliser les Snowflake Python APIs.

Par exemple, le code suivant utilise les paramètres de connexion définis dans un fichier de configuration pour créer une connexion à Snowflake.

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

En utilisant l’objet Session obtenu, le code crée un objet Root pour utiliser les types et les méthodes de l’API. Pour plus d’informations, voir Connexion à Snowflake avec Snowflake Python APIs.

Création d’un notebook

Pour créer un notebook, il faut d’abord créer un objet Notebook, puis créer un objet NotebookCollection à partir de l’objet Root de l’API. En utilisant NotebookCollection.create, ajoutez le nouveau notebook à Snowflake.

Le code de l’exemple suivant crée un objet Notebook qui représente un notebook nommé my_nb dans la base de données my_db et le schéma my_schema :

from snowflake.core.notebook import Notebook

my_nb = Notebook(name="my_nb")

notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
Copy

Ce code crée une variable NotebookCollection notebooks et utilise NotebookCollection.create pour créer un nouveau notebook dans Snowflake.

Vous pouvez également créer un notebook à partir d’une zone de préparation avec un fichier .ipynb existant. Le code de l’exemple suivant crée un notebook à partir de la zone de préparation @my_stage avec le fichier notebook_file.ipynb :

from snowflake.core.notebook import Notebook

my_nb = Notebook(name="my_nb",
  query_warehouse="my_wh",
  from_location="@my_stage",
  main_file="notebook_file.ipynb")

notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
Copy

Obtention des détails du notebook

Vous pouvez obtenir des informations sur un notebook en appelant la méthode NotebookResource.fetch, qui renvoie un objet Notebook.

Le code de l’exemple suivant obtient des informations sur un notebook nommé my_nb dans la base de données my_db et le schéma my_schema :

my_nb = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"].fetch()
print(my_nb.to_dict())
Copy

Affichage des Notebooks

Vous pouvez répertorier des Notebooks à l’aide de la méthode NotebookCollection.iter qui renvoie un itérateur PagedIter d’objets Notebook.

Le code de l’exemple suivant répertorie les Notebooks dont le nom commence par my dans la base de données my_db et le schéma my_schema, puis imprime le nom de chacun :

from snowflake.core.notebook import NotebookCollection

notebooks: NotebookCollection = root.databases["my_db"].schemas["my_schema"].notebooks
nb_iter = notebooks.iter(like="my%")  # returns a PagedIter[Notebook]
for nb_obj in nb_iter:
  print(nb_obj.name)
Copy

Effectuer des opérations de notebook

Vous pouvez effectuer des opérations de Notebook courantes, telles que la gestion des versions et l’exécution de Notebooks, avec un objet NotebookResource.

Pour illustrer certaines opérations que vous pouvez effectuer avec une ressource de notebook, le code de l’exemple suivant effectue les opérations suivantes :

  1. Extrait l’objet de ressource de notebook my_nb.

  2. Ajoute une version en direct à l’objet de notebook. Cela est équivalent à ALTER NOTEBOOK … ADD LIVE VERSION.

  3. Valide la version en direct du notebook dans un référentiel Git, si une connexion Git est configurée. Sinon, définit la version en direct sur null.

    Pour plus d’informations, voir ALTER NOTEBOOK.

  4. Exécute le notebook.

    Note

    Pour exécuter un notebook, vous devez d’abord lui ajouter une version en direct.

  5. Supprime le notebook.

my_nb_res = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"]

my_nb_res.add_live_version(from_last=True)
my_nb_res.commit()
my_nb_res.execute()
my_nb_res.drop()
Copy