Verwalten von virtuellen Snowflake-Warehouses mit Python¶
Sie können Python verwenden, um virtuelle Snowflake-Warehouses zu verwalten, bei denen es sich um Cluster von Computeressourcen in Snowflake handelt. Einen Überblick zu Warehouses finden Sie unter Virtuelle Warehouses.
Die Snowflake-Python-API repräsentiert Warehouses mit zwei verschiedenen Typen:
Warehouse
: Zeigt die Eigenschaften eines Warehouses an, z. B. seinen Namen, seine Größe, seinen Typ sowie die Einstellungen für automatisches Anhalten und automatisches Fortsetzen.WarehouseResource
: Stellt Methoden zur Verfügung, mit denen Sie ein entsprechendesWarehouse
-Objekt abrufen, das Warehouse anhalten und fortsetzen sowie das Warehouse löschen können.
Die Beispiele unter diesem Thema gehen davon aus, dass Sie Code hinzugefügt haben, um eine Verbindung zu Snowflake herzustellen und ein Root
-Objekt zu erstellen, von dem aus Sie die Snowflake-Python-API verwenden können. Weitere Informationen dazu finden Sie unter Verbinden mit Snowflake über die Snowflake-Python-API.
Der Code im folgenden Beispiel verwendet die in einer Konfigurationsdatei definierten Verbindungsparameter, um eine Verbindung zu Snowflake herzustellen. Unter Verwendung des resultierenden Session
-Objekts erstellt der Code ein Root
-Objekt, das die Typen und Methoden der API verwendet.
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Warehouse erstellen¶
Um eine Warehouse zu erstellen, erstellen Sie zunächst ein Warehouse
-Objekt. Erstellen Sie dann ein WarehouseCollection
-Objekt aus dem Root
-Objekt der API. Fügen Sie mit WarehouseCollection.create
das neue Warehouse zu Snowflake hinzu.
Der Code im folgenden Beispiel erstellt ein Warehouse
-Objekt, das ein Warehouse namens my_wh
repräsentiert. Er erstellt eine WarehouseCollection
-Variable namens warehouses
und verwendet WarehouseCollection.create
, um ein neues Warehouse in Snowflake zu erstellen.
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)
Details zum Warehouse abrufen¶
Sie können Informationen zu einem Warehouse erhalten, indem Sie die Methode WarehouseResource.fetch
aufrufen, die ein Warehouse
-Objekt zurückgibt.
Der Code im folgenden Beispiel ruft Informationen zu einem Warehouse namens my_wh
ab.
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse
my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
Warehouse erstellen oder aktualisieren¶
Sie können die Merkmale eines vorhandenen Warehouses aktualisieren, indem Sie die Eigenschaften eines Warehouse
-Objekts festlegen, das das Warehouse repräsentiert, und das Objekt dann mit der Methode WarehouseResource.create_or_update
an Snowflake übergeben.
Sie können auch ein Warehouse
-Objekt übergeben, das ein neues Warehouse beschreibt, wenn Sie das Warehouse erstellen möchten.
Der Code im folgenden Beispiel legt den Namen, die Größe und die Einstellung für das automatische Anhalten für ein Warehouse fest und aktualisiert dann das Warehouse in Snowflake, wobei das Warehouse erstellt wird, falls es noch nicht vorhanden ist. In diesem Fall wird die Größe des Warehouses my_wh
auf LARGE
und die Einstellung für das automatische Anhalten auf 1800
geändert, wenn Sie es zuvor mit anderen Eigenschaften erstellt haben.
from snowflake.core import Root
from snowflake.core.warehouse import Warehouse
my_wh = Warehouse(
name="my_wh",
warehouse_size="LARGE",
auto_suspend=1800,
)
my_wh_res = root.warehouses["my_wh"]
my_wh_res.create_or_update(my_wh)
Warehouses auflisten¶
Sie können Warehouses mit der Methode WarehouseCollection.iter
auflisten. Die Methode gibt einen PagedIter
-Iterator für Warehouse
-Objekte zurück.
Der Code im folgenden Beispiel listet Warehouses auf, deren Name den Text „my“ enthält, und gibt den Namen jedes einzelnen aus.
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)
Warehouse-Operationen ausführen¶
Mit einem WarehouseResource
-Objekt können Sie allgemeine Warehouse-Operationen, wie das Ausführen, Anhalten und Fortsetzen von Warehouses, ausführen.
Der Code im folgenden Beispiel hält das Warehouse my_wh
an und setzt es fort, bricht alle aktiven oder in der Warteschlange befindlichen Abfragen für das Warehouse ab und löscht dann das Warehouse.
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()