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.
Voraussetzungen¶
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.
Beispielsweise verwendet der folgende Code Verbindungsparameter, die in einer Konfigurationsdatei definiert sind, um eine Verbindung zu Snowflake zu erstellen:
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Unter Verwendung des resultierenden Session
-Objekts erstellt der Code ein Root
-Objekt, das die Typen und Methoden der API verwendet. Weitere Informationen dazu finden Sie unter Verbindung zu Snowflake über Snowflake-Python-API herstellen.
Erstellen von Warehouses¶
Um ein Warehouse zu erstellen, erstellen Sie zunächst ein Warehouse
-Objekt und erstellen dann ein WarehouseCollection
-Objekt aus dem API-Root
-Objekt. 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:
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)
Der Code erstellt eine WarehouseCollection
-Variable namens warehouses
und verwendet WarehouseCollection.create
, um ein neues Warehouse in Snowflake zu erstellen.
Abrufen von Warehouse-Details¶
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())
Erstellen oder Aktualisieren eines Warehouses¶
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:
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)
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.
Auflisten von Warehouses¶
Sie können Warehouses mit der Methode WarehouseCollection.iter
auflisten, die einen PagedIter
-Iterator für Warehouse
-Objekte zurückgibt.
Der Code im folgenden Beispiel listet Warehouses auf, deren Namen den Text my enthalten, 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)
Ausführen von Warehouse-Operationen¶
Mit einem WarehouseResource
-Objekt können Sie allgemeine Warehouse-Operationen, wie 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()