ウェアハウスの操作¶
すべてのウェアハウスタスクは、Snowflakeウェブインターフェイスから、またはウェアハウスの DDL コマンドを使用して実行できます。
ウェアハウスの作成¶
You can create a warehouse using the Snowsight or SQL:
- Snowsight:
ナビゲーションメニューで、Compute » Warehouses » :ui:`Warehouse`を選択します。
- SQL:
CREATE WAREHOUSE コマンドを実行します。
- Python:
WarehouseCollection.create API (ウェアハウスの作成) を使用してください。
ウェアハウスを作成するとき、ウェアハウスを最初に「開始済み」(つまり実行中)状態で作成するか、「一時停止」状態で作成するかを指定できます。「開始済み」を選択した場合、すべてのコンピューティングリソースがウェアハウスにプロビジョニングされると、ウェアハウスはクレジットの消費を開始します。
注釈
「開始済み」状態でウェアハウスを作成することを選択すると、Snowflakeがウェアハウスのすべてのコンピューティングリソースをプロビジョニングするため、ウェアハウスが完全に使用可能になるまでに時間がかかる場合があります。
ウェアハウスの開始または再開¶
ウェアハウスは、初期作成時を含め、いつでも開始できます。ウェアハウスが作成されると、ウェアハウスの再開はウェアハウスの開始と同じです。
以下のインターフェイスを使用することで、一時停止した(つまりアクティブでない)ウェアハウスを再開することができます。
- Snowsight:
ナビゲーションメニューで、Compute » :ui:`Warehouses`|raa|*<一時停止したウェアハウス名>* |raa||ellipsis-explorer| » :ui:`Resume`を選択します。
- SQL:
RESUMEキーワードを使用して ALTER WAREHOUSE コマンドを実行します。- Python:
WarehouseResource.resume API (ウェアハウス操作の実行) を使用してください。
通常、ウェアハウスの開始には数秒しかかかりません。ただし、まれに、Snowflakeがウェアハウスにコンピューティングリソースをプロビジョニングする際に時間がかかる場合があります。
ウェアハウスは実行中にクレジットを消費します。
すべてのコンピューティングリソースがウェアハウスにプロビジョニングされると、ウェアハウスはクレジットを消費し始めます。
まれに、コンピューティングリソースの一部がプロビジョニングに失敗すると、ウェアハウスはプロビジョニングされたコンピューティングリソースのクレジットのみを消費します。
残りのコンピューティングリソースが正常にプロビジョニングされると、ウェアハウスは要求されたすべてのコンピューティングリソースでクレジットの消費を開始します。
通常、ウェアハウスの開始には数秒しかかかりませんが、場合によっては、Snowflakeがウェアハウスにコンピューティングリソースをプロビジョニングする際に時間がかかるときがあります。
Snowflakeは、いずれかのコンピューティングリソースがプロビジョニングに失敗しない限り、ウェアハウスのすべてのコンピューティングリソースが正常にプロビジョニングされるまで、ウェアハウスに送信された SQL ステートメントの実行を開始しません。
ウェアハウスのいずれかのコンピューティングリソースが起動時にプロビジョニングに失敗すると、Snowflakeは失敗したコンピューティングリソースの修復を試みます。
修復プロセス中、要求されたコンピューティングリソースの50%以上が正常にプロビジョニングされると、ウェアハウスは SQL ステートメントの処理を開始します。
クレジットは、ウェアハウスの実行中に1秒ごとに請求され、ウェアハウスが再開されるたびに最低1分が請求されます。ただし、クレジット消費は60分(つまり、1時間ごと)の増分で報告されます。
ウェアハウスの一時停止¶
稼働中のウェアハウスは、 SQL ステートメントの実行中であっても、いつでも一時停止できます。ウェアハウスの一時停止は、すべてのコンピューティングリソースがシャットダウンされた後に、ウェアハウスによるクレジットの消費を停止します。
ウェアハウスを一時停止するには、以下のインターフェイスを使用します。
- Snowsight:
ナビゲーションメニューで、 Compute » :ui:`Warehouses`|raa|*<開始されたウェアハウス名>* »
» :ui:`Suspend`を選択します。
- SQL:
SUSPENDキーワードを使用して ALTER WAREHOUSE コマンドを実行します。- Python:
WarehouseResource.suspend API (ウェアハウス操作の実行) を使用してください。
ウェアハウスを一時停止すると、Snowflakeはすぐにアイドル状態のウェアハウス用コンピューティングリソースすべてをシャットダウンしますが、ステートメントを実行中のコンピューティングリソースは、ステートメントが完了するまで継続できます。ステートメントが完了すると、コンピューティングリソースがシャットダウンされ、ウェアハウスのステータスが「一時停止」に変更されます。シャットダウンを待機しているコンピューティングリソースは、「静止」モードにあると見なされます。
ウェアハウスのサイズ変更¶
ウェアハウスは、ステートメントの実行中および処理中を含め、いつでもサイズを変更できます。
以下のインターフェイスを使用して、ウェアハウスのサイズを変更することができます。
- Snowsight:
ナビゲーションメニューで、 Compute »:ui:`Warehouses`|raa|*<ウェアハウス名>* »
» :ui:`Edit`を選択します。
- SQL:
SET WAREHOUSE_SIZE = ...で ALTER WAREHOUSE コマンドを実行します。- Python:
WarehouseResource.create_or_alter API (ウェアハウスの作成または更新) を使用してください。
以下を含む計算リソースを大きくすることにより、ウェアハウスが実行する操作にメリットが生じる場合は、ウェアハウスを大きなサイズに変更すると便利です。
大規模なデータセットに対する大規模で複雑なクエリのパフォーマンスの改善。
大量のデータのロードおよびアンロード中のパフォーマンスの改善。
稼働中のウェアハウスのサイズ変更による影響¶
稼働中のウェアハウスのサイズを変更すると、ウェアハウス内の 各 クラスターのコンピューティングリソースが追加または削除されます。ウェアハウスの開始または一時停止に関連する使用およびクレジットルールすべては、次のような開始されたウェアハウスのサイズ変更に適用されます。
ウェアハウスに追加されたコンピューティングリソースは、プロビジョニングされるとクレジットの使用を開始します。ただし、一部のコンピューティングリソースがプロビジョニングに失敗しない限り、追加コンピューティングリソースはすべてプロビジョニングされるまでステートメントの実行を開始しません。
コンピューティングリソースがウェアハウスから削除されるのは、現在のステートメントの実行に使用されなくなった場合のみです。
ウェアハウスのサイズを変更しても、ウェアハウスによって現在実行されているステートメントには影響はありません。より大きなサイズに変更する場合、新しいコンピューティングリソースは、完全にプロビジョニングされた後に、ウェアハウスキューのすでにあるステートメントと、ウェアハウスに送信される今後のすべてのステートメントを実行するためにのみ使用されます。
Tip
ウェアハウスの追加コンピューティングリソースが完全にプロビジョニングされていることを確認するには、 ALTER WAREHOUSE コマンドに WAIT_FOR_COMPLETION パラメーターを追加します。SHOW WAREHOUSES を使用して state を確認することもできます。
中断したウェアハウスのサイズ変更の影響¶
一時停止中のウェアハウスのサイズを変更しても、ウェアハウスに新しいコンピューティングリソースはプロビジョニングされません。ウェアハウスの次回再開時に追加のコンピューティングリソースをプロビジョニングするようにSnowflakeに指示するだけで、その時点でウェアハウスの開始に関連するすべての使用法とクレジットの規則が適用されます。
ウェアハウスの使用¶
Snowflakeでクエリまたは DML ステートメントを実行するには、ウェアハウスが実行されていて、クエリ/ステートメントが送信されるセッションの現在のウェアハウスとして指定されている必要があります。
Snowflakeセッションには、一度に1つの現在のウェアハウスしか持てません。セッションの現在のウェアハウスは、 USE WAREHOUSE SQL コマンドや WarehouseResource.use_warehouse Python API によって、いつでも指定したり変更したりすることができます。
Once a running warehouse has been set as the current warehouse for the session, queries and DML statements submitted within the session are processed by the warehouse. In the Query History and Workspaces pages in Snowsight, you can view the warehouse used to process each query/statement.
注釈
Snowsight 機能の中には、テーブルの Task Run History や Data Preview など、データを取得するためにデータウェアハウスが SQL クエリを実行する必要があるものもあります。X-Smallウェアハウスが推奨され、一般的にこれらのクエリのほとんどに十分です。詳細については、 ウェアハウスに関する考慮事項 をご参照ください。
ウェアハウス管理の委託¶
ACCOUNTADMIN ロールにはデフォルトで、アカウント内のすべてのウェアハウスに対する、変更、中断、説明、その他の操作を実行する権限が付与されます。
これらの権限をアカウントのカスタムロールに委譲する必要がある場合、そのロールに MANAGE WAREHOUSES 権限を付与することができます。MANAGE WAREHOUSES 権限を付与することは、アカウント内のすべてのウェアハウスに対する MODIFY、 MONITOR、 OPERATE 権限を付与することと同じです。
以下の例は、 manage_wh_role という名前のカスタムロールにウェアハウスを管理する権限を委任する方法を示しています。この例では、 manage_wh_role を使用して、別のロール(create_wh_role)が所有するウェアハウス test_wh に変更を加えています。
新しいウェアハウスを作成し所有する新しいロールを作成し、そのロールに CREATE WAREHOUSE 権限を付与します。
GRANT <権限> ... TO ROLE コマンドの使用。
CREATE ROLE create_wh_role;
GRANT CREATE WAREHOUSE ON ACCOUNT TO ROLE create_wh_role;
GRANT ROLE create_wh_role TO ROLE SYSADMIN;
RoleResource.grant_privileges API を使用:
from snowflake.core.role import Role, Securable
my_role = Role(name="create_wh_role")
my_role_res = root.roles.create(my_role)
my_role_res.grant_privileges(
privileges=["CREATE WAREHOUSE"], securable_type="ACCOUNT"
)
root.roles['SYSADMIN'].grant_role(role_type="ROLE", role=Securable(name='create_wh_role'))
アカウント内のすべてのウェアハウスを管理する2番目のロールを作成し、そのロールに MANAGE WAREHOUSES 権限を付与します。
CREATE ROLE manage_wh_role;
GRANT MANAGE WAREHOUSES ON ACCOUNT TO ROLE manage_wh_role;
GRANT ROLE manage_wh_role TO ROLE SYSADMIN;
from snowflake.core.role import Role, Securable
my_role = Role(name="manage_wh_role")
my_role_res = root.roles.create(my_role)
my_role_res.grant_privileges(
privileges=["MANAGE WAREHOUSES"], securable_type="ACCOUNT"
)
root.roles['SYSADMIN'].grant_role(role_type="ROLE", role=Securable(name='manage_wh_role'))
create_wh_role ロールを使用して、新しいウェアハウスを作成します。
USE ROLE create_wh_role;
CREATE OR REPLACE WAREHOUSE test_wh
WITH WAREHOUSE_SIZE= XSMALL;
from snowflake.core import CreateMode
from snowflake.core.warehouse import Warehouse
root.session.use_role("create_wh_role")
my_wh = Warehouse(
name="test_wh",
warehouse_size="XSMALL"
)
root.warehouses.create(my_wh, mode=CreateMode.or_replace)
現在のロールを manage_wh_role に変更します。
USE ROLE manage_wh_role;
root.session.use_role("manage_wh_role")
manage_wh_role は test_wh を所有していませんが、そのロールは MANAGE WAREHOUSES 権限を持っています。
ウェアハウスを中断し、再開する。
ALTER WAREHOUSE test_wh SUSPEND; ALTER WAREHOUSE test_wh RESUME;
my_wh_res = root.warehouses["test_wh"] my_wh_res.suspend() my_wh_res.resume()
ウェアハウスのサイズを変更する。
ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
my_wh = root.warehouses["test_wh"].fetch() my_wh.warehouse_size = "SMALL" root.warehouses["test_wh"].create_or_alter(my_wh)
ウェアハウスを説明する。
DESC WAREHOUSE test_wh;
my_wh = root.warehouses["test_wh"].fetch() print(my_wh.to_dict())
Snowsight でウェアハウスの詳細をレビューする¶
ACCOUNTADMIN ロール、または関連する ウェアハウス権限 を与えられたロールを使用する必要があります。
Snowsight でウェアハウスを確認し、ウェアハウスの詳細を管理するには、以下の手順を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Compute » Warehouses を選択します。
その後、ウェアハウスのテーブルを確認したり、ウェアハウスを検索したり、ステータスやサイズでウェアハウスのリストをフィルタリングすることができます。
デフォルトでは、各ウェアハウスに関する以下の情報を見ることができます。
Name
Started、 Resuming、または Suspended などの Status。
Size
Clusters は、列のバーで示されています。値の上にカーソルを置くと、アクティブなクラスタの数を確認できます。
Running は、ウェアハウスで実行されている SQL ステートメントの数の詳細を示します。
Queued は、SQL ステートメントがウェアハウスに何件キューイングされているかの詳細を示します。
Owner は、またはウェアハウスの所有者ロール。
Resumed は、ウェアハウスが再開されたのは何年前かを示します。値にカーソルを合わせると、正確な日付とタイムスタンプが表示されます。
また、列を追加して、テーブル内の各ウェアハウスの詳細を確認することもできます。
Query Acceleration Service(QAS)で使用されるウェアハウスのスケール係数を確認する QAS (Scale Factor)。Query Acceleration Serviceの使用(QAS) をご参照ください。
Scaling Policy では、ウェアハウスに定義されたスケーリングポリシーを確認することができます。マルチクラスターウェアハウスのスケーリングポリシーの設定 をご参照ください。
Auto Resume では、自動再開がウェアハウスに設定されているかどうかを確認できます。
Auto Suspend では、ウェアハウスで自動停止が発生するまでの期間を確認できます。
Created では、ウェアハウスがいつ作成されたかを確認できます。値にカーソルを合わせると、正確な日付とタイムスタンプが表示されます。
Warehouses テーブルでウェアハウスを選択すると、詳細が表示されます。
Warehouse Activity セクションは、一定期間におけるウェアハウス負荷のグラフを提供し、クエリの実行が遅い理由を理解するのに役立ちます。詳細については、 ウェアハウス負荷の監視 をご参照ください。
Details セクションでは、次のようなウェアハウスに関する追加情報が提供されます。
ウェアハウスのステータス。
ウェアハウスのサイズ。
ウェアハウスが使用できるクラスターの最大数と最小数。
スケーリングポリシー。
実行中のタスクとキューに入れられているタスクの数。
ウェアハウスが自動的に一時停止される前のアクティビティがない期間。
ウェアハウスが一時停止されている場合で、必要なときにウェアハウスを自動的に再開するかどうか。
ウェアハウスが最後に操作を再開した時。
Privileges セクションを使用して、ウェアハウスの権限を表示、付与、および取り消します。
