使用 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)
代码可通过生成的 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)
该代码会创建一个 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)
获取笔记本详细信息¶
您可以通过调用 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())
列出笔记本¶
您可以使用 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)
执行笔记本操作¶
您可以使用 NotebookResource
对象执行常见的笔记本操作 – 例如管理版本和执行笔记本。
为了演示您可以使用笔记本资源执行的一些操作,以下示例中的代码会执行以下操作:
获取
my_nb
笔记本资源对象。将实时版本添加到笔记本对象。这等同于 ALTER NOTEBOOK ...ADD LIVE VERSION 的章节。
如果设置了 Git 连接,则将笔记本的实时版本提交到 Git 存储库。否则,将实时版本设置为
null
。有关更多信息,请参阅 ALTER 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()