Snowflake Notebooks
Snowflake NotebooksはSnowflakeのWeb UIであるSnowsight上で提供されている開発環境です。SQL、Python、Markdownを一つのノート上に混在して記述できるのが特徴です。
雰囲気的にはJupyter Notebookのようなサービスになっています。
先日2024/5/25にPublic Preview (PuPr)されました!(2024/5/30時点では公式アナウンスなし)
SQLを実行するウェアハウスを変更する
ノートブックの実行にはウェアハウス1が必要になります。
クレジットが消費されるのでできるだけ小さいものを指定して節約することになるのですが、ノートブック内に重いクエリがあるときに時間がかかってしまいます。
そういうときは単純にUSE WAREHOUSE
コマンドでウェアハウスを切り替えればいいようです。
上記の例ではUSE WAREHOUSE FROSTYFRIDAY_WH_LAAAAAARGE;
を実行することで、ウェアハウスが切り替わっています。
また、ノートブックそのものの実行で使われるウェアハウスは切り替わっていないことが確認できます。
次のセルでも前のセルで設定したウェアハウスがそのまま使われているので、ここは注意が必要そうです。
一方で「特定のPythonセルだけ強いウェアハウスを使いたい!」という場合もあるので、そういうときにはSQLセルでウェアハウスを切り替えてから次のPythonセルで重い処理をやらせる、ということをやればよさそうです。
Pythonセルでウェアハウスを切り替える場合は以下のようにします。力業だ。
session.sql("USE WAREHOUSE (ウェアハウス名);")
ただし、SQLセルやPythonセルで切り替えたウェアハウスはSQL文の実行およびSnowpark DataFramesの操作2にのみ使われるようです。
Pythonセルに含まれるSnowpark DataFramesの操作以外のコードの実行はノートブックそのものの実行と同じウェアハウスが使われます。
そのため、Pythonセルで重い処理をやりたい場合は
- ノートブックそのものを強いウェアハウスで実行する。ただしコストは割高になる
- その重い処理をSnowpark DataFramesの操作に置き換えられないか考える
必要があります!
管理画面上ではどうなっているのか
ノートブックそのものの実行はexecute notebook
という形でログが出力されています。
上記の例で切り替えたウェアハウスの方を確認してみると、こちらにはクエリを実行したログのみが出力されていることが確認できます。
注意事項
ノートブックは表示している間、ウェアハウスが起動したままになってしまうため、じわじわとクレジットを消費します。
ユーザが何も操作しないアイドル状態が続くとウェアハウスが停止するのですが、そのタイマーが60分間とかなり長めに設定されています。3
ウェアハウスは、
- 右上のボタンから「セッションを終了」を選ぶ
- ノートブックのページを閉じる
- アイドル状態が60分間続く
のどれかが発生すると停止します。
- ノートブックを開いて、数分おきにクエリを実行していたら、いつの間にか最初に開いてから60分間経過していた
という場合は停止しません。
ワークシートのノリで開いたまま放置してしまいそうなので、こまめにセッションを終了して節約していきましょう。