PythonによるSnowflake仮想ウェアハウスの管理¶
Pythonを使用して、SnowflakeのコンピューティングリソースのクラスタであるSnowflake仮想ウェアハウスを管理できます。ウェアハウスの概要については、 仮想ウェアハウス をご参照ください。
Snowflake Python Snowflake Python APIs は、2つの別々のタイプでウェアハウスを表します。
Warehouse
: ウェアハウスの名前、サイズ、タイプ、自動再開と自動中断の設定などのプロパティを公開します。WarehouseResource
: 対応するWarehouse
オブジェクトの取得、ウェアハウスの中断と再開、ウェアハウスの削除に使用できるメソッドを公開します。
前提条件¶
このトピックの例では、Snowflakeと接続するコードを追加して Root
オブジェクトを作成し、そこからSnowflake Python 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
オブジェクトを使って、コードは API のタイプとメソッドを使う Root
オブジェクトを作成します。詳細については、 Snowflake Python APIs によるSnowflakeへの接続 をご参照ください。
ウェアハウスの作成¶
ウェアハウスを作成するには、まず Warehouse
オブジェクトを作成して、 API Root
オブジェクトから WarehouseCollection
オブジェクトを作成します。 WarehouseCollection.create
を使用して、新しいウェアハウスをSnowflakeに追加します。
次の例のコードは、 my_wh
というウェアハウスを表す Warehouse
オブジェクトを作成します。
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)
コードは、 WarehouseCollection
変数 warehouses
を作成し、 WarehouseCollection.create
を使用してSnowflakeに新しいウェアハウスを作成します。
ウェアハウスの詳細の取得¶
Warehouse
オブジェクトを返す WarehouseResource.fetch
メソッドを呼び出すことで、ウェアハウスに関する情報を取得できます。
次の例のコードは、 my_wh
というウェアハウスに関する情報を取得します。
my_wh = root.warehouses["my_wh"].fetch()
print(my_wh.to_dict())
ウェアハウスの作成または更新¶
Warehouse
オブジェクトのプロパティを設定し、 WarehouseResource.create_or_alter
メソッドに渡すことで、ウェアハウスが存在しない場合は作成し、存在する場合はウェアハウスの定義に従って変更することができます。 create_or_alter
の動作は、メソッドを実行する前にウェアハウスが存在していたかどうかに関係なく、結果のウェアハウスオブジェクトが同じであることを意味します。
注釈
create_or_alter
メソッドは、明示的に定義していない Warehouse プロパティにはデフォルト値を使用します。例えば、 auto_suspend
を設定しない場合、ウェアハウスが以前別の値で存在していたとしても、その値はデフォルトで None
になります。
以下の例のコードは、 my_wh
ウェアハウスのサイズと自動中断設定を更新し、Snowflake 上のウェアハウスを変更します。
from snowflake.core.warehouse import Warehouse
my_wh = root.warehouses["my_wh"].fetch()
my_wh.warehouse_size = "LARGE"
my_wh.auto_suspend = 1800
my_wh_res = root.warehouses["my_wh"]
my_wh_res.create_or_alter(my_wh)
このケースでは、 my_wh
ウェアハウスのサイズを LARGE
に、自動中断の設定を 1800
に変更します。
ウェアハウスのリスト¶
Warehouse
オブジェクトの PagedIter
反復子を返す WarehouseCollection.iter
メソッドを使用して、ウェアハウスをリストすることができます。
次の例のコードは、名前に my というテキストを含むウェアハウスをリストし、以下のそれぞれの名前を印刷します。
from snowflake.core.warehouse import 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)
ウェアハウス操作の実行¶
ウェアハウスの中断や再開、ウェアハウスにあるすべてのクエリの中止など、一般的なウェアハウス操作を WarehouseResource
オブジェクトを使用して実行できます。
次の例のコードは、 my_wh
ウェアハウスを中断および再開し、ウェアハウス上で実行中またはキューに入っているすべてのクエリを中止し、ウェアハウスを削除します。
my_wh_res = root.warehouses["my_wh"]
my_wh_res.suspend()
my_wh_res.resume()
my_wh_res.abort_all_queries()
my_wh_res.drop()