用 Python 管理 Snowflake 虚拟仓库

您可以使用 Python 管理 Snowflake 虚拟仓库,虚拟仓库是 Snowflake 中的计算资源集群。有关仓库的概述,请参阅 虚拟仓库

Snowflake Python API 使用两种不同类型来表示仓库:

  • Warehouse:显示仓库的属性,如名称、大小、类型、自动恢复和自动暂停设置。

  • WarehouseResource:显示可用于提取相应的 Warehouse 对象、暂停和恢复仓库以及删除仓库的方法。

先决条件

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

例如,以下代码使用配置文件中定义的连接参数来创建与 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 API 连接到 Snowflake

创建仓库

要创建仓库,请先创建 Warehouse 对象,然后根据 API Root 对象创建 WarehouseCollection 对象。使用 WarehouseCollection.create 将新仓库添加到 Snowflake。

以下示例中的代码会创建一个 Warehouse 对象,该对象表示一个名为 my_wh 的仓库:

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh = Warehouse(
  name="my_wh",
  warehouse_size="SMALL",
  auto_suspend=600,
)
warehouses = root.warehouses
warehouses.create(my_wh)
Copy

该代码会创建一个 WarehouseCollection 变量 warehouses ,并使用 WarehouseCollection.create 在 Snowflake 中创建了一个新仓库。

获取仓库详细信息

您可以通过调用 WarehouseResource.fetch 方法获取仓库信息,该方法会返回一个 Warehouse 对象。

以下示例中的代码会获取有关名为 my_wh 的仓库的信息:

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
Copy

列出仓库

您可以使用 WarehouseCollection.iter 方法列出仓库,该方法会返回 Warehouse 对象的 PagedIter 迭代器。

以下示例中的代码会列出名称中包含 my 文本的仓库,并打印每个仓库的名称:

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse, WarehouseCollection

warehouses: WarehouseCollection = root.warehouses
wh_iter = warehouses.iter(like="my%")  # returns a PagedIter[Warehouse]
for wh_obj in wh_iter:
  print(wh_obj.name)
Copy

执行仓库操作

您可以通过 WarehouseResource 对象执行常见的仓库操作,如暂停和恢复仓库以及中止仓库上的所有查询。

以下示例中的代码会暂停和恢复 my_wh 仓库,中止仓库上所有正在运行或排队的查询,然后删除仓库:

from snowflake.core import Root
from snowflake.core.warehouse import Warehouse

my_wh_res = root.warehouses["my_wh"]

my_wh_res.suspend()
my_wh_res.resume()
my_wh_res.abort_all_queries()
my_wh_res.delete()
Copy
语言: 中文