Pythonと Snowflake Notebooks の管理¶
Pythonで Snowflake Notebooks を管理できます。これは、 Snowsight の開発インターフェイスで、Pythonおよび SQL 用の対話的なセルベースのプログラミング環境を提供します。詳細については、 Snowflake Notebooksについて をご参照ください。
Snowflake Python APIs は、2つのタイプに分かれたノートブックを表しています。
- Notebook: ノートブックの名前、バージョン、クエリーウェアハウス、- .ipynbファイルなどのプロパティを公開します。
- NotebookResource: 対応する- Notebookオブジェクトの取得、ノートブックのバージョン管理、ノートブックの実行に使用できるメソッドを公開しています。
前提条件¶
このトピックの例では、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への接続 をご参照ください。
ノートブックの作成¶
ノートブックを作成するには、まず Notebook オブジェクトを作成して、 API Root オブジェクトから NotebookCollection オブジェクトを作成します。 NotebookCollection.create を使って、新しいノートブックをSnowflakeに追加します。
次の例のコードは、 my_db データベースと my_schema スキーマの my_nb というノートブックを表す Notebook オブジェクトを作成します。
from snowflake.core.notebook import Notebook
my_nb = Notebook(name="my_nb")
notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
コードは、 NotebookCollection 変数 notebooks を作成し、 NotebookCollection.create を使用してSnowflakeに新しいノートブックを作成します。
既存の .ipynb ファイルのあるステージからノートブックを作成することもできます。次の例のコードは、 @my_stage ステージから、 notebook_file.ipynb ファイルでノートブックを作成します。
from snowflake.core.notebook import Notebook
my_nb = Notebook(name="my_nb",
  query_warehouse="my_wh",
  from_location="@my_stage",
  main_file="notebook_file.ipynb")
notebooks = root.databases["my_db"].schemas["my_schema"].notebooks
notebooks.create(my_nb)
ノートブック詳細の取得¶
Notebook オブジェクトを返す NotebookResource.fetch メソッドを呼び出すことで、ノートブックに関する情報を取得できます。
次の例のコードは、 my_db データベースと my_schema スキーマの my_nb というノートブックに関する情報を取得します。
my_nb = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"].fetch()
print(my_nb.to_dict())
ノートブックのリスト¶
Notebook オブジェクトの PagedIter 反復子を返す NotebookCollection.iter メソッドを使用して、ノートブックを一覧表示することができます。
次の例のコードは、 my_db データベースと my_schema スキーマの my で始まる名前のノートブックをリストアップし、それぞれの名前を表示します。
from snowflake.core.notebook import NotebookCollection
notebooks: NotebookCollection = root.databases["my_db"].schemas["my_schema"].notebooks
nb_iter = notebooks.iter(like="my%")  # returns a PagedIter[Notebook]
for nb_obj in nb_iter:
  print(nb_obj.name)
ノートブック操作の実行¶
NotebookResource オブジェクトを使用して、バージョンの管理やノートブックの実行など、ノートブックの一般的な操作を行うことができます。
ノートブック・リソースでできるいくつかの操作を示すために、次の例のコードでは次のようにしています。
- my_nbnotebook リソースオブジェクトを取得します。
- ノートブック・オブジェクトにライブバージョンを追加します。これは、 ALTER NOTEBOOK ... ADD LIVE VERSION と同等です。 
- Git接続が設定されていれば、ノートブックのライブバージョンをGitリポジトリにコミットします。そうでない場合は、ライブ・バージョンを - nullに設定します。- 詳細については、 ALTER NOTEBOOK をご参照ください。 
- ノートブックを実行します。 - 注釈 - ノートブックを実行するには、まずライブ・バージョンを追加する必要があります。 
- ノートブックをドロップします。 
my_nb_res = root.databases["my_db"].schemas["my_schema"].notebooks["my_nb"]
my_nb_res.add_live_version(from_last=True)
my_nb_res.commit()
my_nb_res.execute()
my_nb_res.drop()