[新機能]Workspace内でNotebookの開発・実行ができるようになりました
さがらです。
Snowflakeの新機能として、Workspaceの中でNotebookの開発・実行ができるようになる機能がリリースされました。これまでNotebookは独立したオブジェクトだったのですが、今回のアップデートによりファイルベースかつGitでのバージョン管理も可能となりました。(2025/12/18時点ではプレビュー機能です。)
この機能を実際に試してみたので、本記事でその内容をまとめてみます。
Notebookを新規作成
Workspaceを立ち上げ、左上の+ Add newからNotebookを押し、適当にファイル名をつけます。(.ipynbファイルとして作られるのがわかります。)


作成後、対象のファイルを開くとWorkspace上でNotebookの開発画面が表示されます。

これは余談ですが、WorkspaceでNotebookを開くとTerminalのタブも追加されていました!下図のようにコマンドも実行できました。

notebook serviceの作成
Workspace内のNotebookでは、Notebook kernelをホストしてコードを実行するために「notebook service」というオブジェクトが必要となります。(下図は公式Docより引用)

事前準備:PyPIにアクセスするためのexternal access integrationを作成
PyPIからパッケージを取得することを行うため、以下のクエリを実行しておきます。こちらの公式Docを参考にしています。
use role accountadmin;
create external access integration sagara_pypi_access
allowed_network_rules = (snowflake.external_access.pypi_rule)
enabled = true;
-- 使用するロールへ付与
grant usage on integration sagara_pypi_access to role sagara_admin_role;
事前準備:Notebook kernel用のcompute poolを作成
Workspace内のNotebookはContainer Runtimeが前提のため、Notebook kernel用のcompute poolを作成する必要があります。
use role accountadmin;
create compute pool sagara_xs_compute_pool
min_nodes = 1
max_nodes = 1
instance_family = cpu_x64_xs;
-- 使用するロールへ付与
grant usage, operate, modify, monitor
on compute pool sagara_xs_compute_pool
to role sagara_admin_role;
notebook serviceの作成
続いて、notebook serviceを作成します。
先程作成した.ipynbファイルを開いた状態で、Connectを押します。

先程作成したexternal access integrationとcompute poolを設定して、Create and connectを押します。

この後Workspaceの画面に戻ると、下図のようにkernelに接続している様子が見れます。※もし2枚目のようにエラーが起きた場合は、少し時間を空けながら何度かConnectを押してみると解決しました。


Connectedと表示されたら準備完了です!

PyPI経由で外部のパッケージをインストール・実行
今回はPyPIに対するexternal access integrationも設定していたので、PyPI経由で外部のパッケージをインストールし、コードを書いて実行してみます。
プリインストールされたパッケージの確認
以下のコマンドを実行して、プリインストールされたパッケージを確認できます。

PyPI経由で外部のパッケージをインストール
PyPIにあるパッケージとして、great_expectationsを試してみます。
パッケージのインストール方法ですが、WorkspaceのNotebookならではということで、requirements.txtを用いたインストールを試してみます。
まず、下記の内容でrequirements.txtを作成します。
great_expectations>=1.9.0

この後、.ipynbファイルにて以下を入力し、セルを実行します。すると無事にインストールできました。
!pip install -r requirements.txt

無事にインストールできたため、下図の通りバージョンも確認できました。

適当にgreat_expectations検証用のコードを書いて実行してみる
先程インストールしたgreat_expectations検証用のコードを書いて実行してみます。(コードはAIに生成してもらいました。)
適当に欠損値のあるdataframeを作ります。
import pandas as pd
df = pd.DataFrame(
{
"id": [1, 2, 3, 4],
"age": [20, 35, None, 150], # None と 150(範囲外)を混ぜる
"country": ["JP", "US", "JP", None], # 欠損を混ぜる
}
)
df
続いて、以下のコードをセルに入れて実行してみると、問題なく定義したExpectationを実行できたことがわかります。
import great_expectations as gx
# Context(プロジェクトが無ければエフェメラルContextが返ります)
context = gx.get_context()
datasource_name = "pandas"
asset_name = "my_df_asset"
batch_definition_name = "whole_df"
# Data Source(あれば取得、なければ作成)
try:
data_source = context.data_sources.get(datasource_name)
except Exception:
data_source = context.data_sources.add_pandas(datasource_name)
# Data Asset(あれば取得、なければ作成)
try:
data_asset = data_source.get_asset(asset_name)
except Exception:
data_asset = data_source.add_dataframe_asset(name=asset_name)
# Batch Definition(あれば取得、なければ作成)
try:
batch_definition = data_asset.get_batch_definition(batch_definition_name)
except Exception:
batch_definition = data_asset.add_batch_definition_whole_dataframe(batch_definition_name)
# DataFrameをruntimeで渡してBatch化(from_pandas の代わり)
batch = batch_definition.get_batch(batch_parameters={"dataframe": df})
# 期待値(Expectations)
basic = {"result_format": "BASIC"}
col = "country"
mostly = 1.0
expectation = gx.expectations.ExpectColumnValuesToNotBeNull(
column=col,
mostly=mostly,
result_format=basic,
)
validation_result = batch.validate(expectation)
print(f"\tEXPECTATION: {'PASS' if validation_result['success'] else 'FAIL'}")
validation_result

Git操作をしてみる
今回検証に用いたWorkspaceはGitHubのリポジトリから作成していたため、Git操作も試してみます。
Workspace左上のChangesタブから、Pushを押してコメントを入れてCommitします。(今回は検証のため、mainブランチに直接Pushしています。)

Open repo pageを押すと、PushしたコードがGitHub上で確認できました!



Notebookのスケジュール実行
従来のNotebookと同様に、スケジュール実行する機能も備わっています。
Workspaceで.ipynbファイルを開いた状態で、右上のScheduled runsを押すと、下図のように表示されます。


WorkspaceのNotebook機能の制限事項
とても便利なWorkspaceのNotebook機能ですが、以下の公式Docに記載があるように制限事項があります。
1アカウントあたりのアクティブサービス数は最大200まで、週末にメンテナンスのためnotebook serviceが再起動する可能性がある、Streamlitに非対応、セル参照は非対応、など従来のNotebook機能と比較しても色々と違いがあるため、ご注意ください。
最後に
Workspace内でNotebookの開発・実行ができるようになりましたので、試した内容をまとめてみました。
Container Runtimeがベースのため、簡単に外部のパッケージをインストールできますし、Workspace上で連携できるのでGitでバージョン管理もできるのが素晴らしいですね!まだプレビュー中ではありますが、ぜひご活用ください。









