使用 Python 管理 Snowflake Notebooks

您可以使用 Python 管理 Snowflake Notebooks,它是 Snowsight 中的一个开发接口,为 Python 和 SQL 提供了一个交互式的、基于单元格的编程环境。有关更多信息,请参阅 关于 Snowflake Notebooks

Snowflake Python APIs 使用两种不同类型来表示笔记本:

  • Notebook:显示笔记本的属性,例如其名称、版本、查询仓库和 .ipynb 文件。

  • NotebookResource:显示可用于提取相应 Notebook 对象、管理笔记本的版本并执行笔记本的方法。

先决条件

在本主题中的示例中,假设您已添加了用来连接 Snowflake 和创建 Root 对象以使用 Snowflake Python APIs 的代码。

例如,以下代码使用配置文件中定义的连接参数来创建与 Snowflake 的连接:

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

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

代码可通过生成的 Session 对象创建 Root 对象,从而使用 API 的类型和方法。有关更多信息,请参阅 使用 Snowflake Python APIs 连接到 Snowflake

创建笔记本

要创建笔记本,请先创建 Notebook 对象,然后根据 API Root 对象创建 NotebookCollection 对象。使用 NotebookCollection.create 将新笔记本添加到 Snowflake。

以下示例中的代码会创建 Notebook 对象,表示 my_db 数据库和 my_schema 架构中一个名为 my_nb 的笔记本:

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

该代码会创建一个 NotebookCollection 变量 notebooks,并使用 NotebookCollection.create 在 Snowflake 中创建一个新笔记本。

您还可以从包含现有 .ipynb 文件的暂存区创建笔记本。以下示例中的代码会从 @my_stage 暂存区使用 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

获取笔记本详细信息

您可以通过调用 NotebookResource.fetch 方法来获取关于笔记本的信息,该方法会返回一个 Notebook 对象。

以下示例中的代码会获取 my_db 数据库和 my_schema 架构中名为 my_nb 的笔记本的信息:

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

列出笔记本

您可以使用 NotebookCollection.iter 方法列出笔记本,该方法会返回 Notebook 对象的 PagedIter 迭代器。

以下示例中的代码会列出 my_db 数据库和 my_schema 架构中名称以 my 开头的笔记本,并打印每个笔记本的名称:

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

执行笔记本操作

您可以使用 NotebookResource 对象执行常见的笔记本操作 – 例如管理版本和执行笔记本。

为了演示您可以使用笔记本资源执行的一些操作,以下示例中的代码会执行以下操作:

  1. 获取 my_nb 笔记本资源对象。

  2. 将实时版本添加到笔记本对象。这等同于 ALTER NOTEBOOK ...ADD LIVE VERSION 的章节

  3. 如果设置了 Git 连接,则将笔记本的实时版本提交到 Git 存储库。否则,将实时版本设置为 null

    有关更多信息,请参阅 ALTER NOTEBOOK

  4. 执行笔记本。

    备注

    要执行笔记本,必须先向其添加实时版本。

  5. 删除笔记本。

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
语言: 中文