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)
Copy

出来上がった 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)
Copy

コードは、 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)
Copy

ノートブック詳細の取得

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())
Copy

ノートブックのリスト

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)
Copy

ノートブック操作の実行

NotebookResource オブジェクトを使用して、バージョンの管理やノートブックの実行など、ノートブックの一般的な操作を行うことができます。

ノートブック・リソースでできるいくつかの操作を示すために、次の例のコードでは次のようにしています。

  1. my_nb ノートブック・リソース・オブジェクトを取得します。

  2. ノートブック・オブジェクトにライブバージョンを追加します。これは、 ALTER NOTEBOOK ... ADD LIVE VERSION と同等です。

  3. Git接続が設定されていれば、ノートブックのライブバージョンをGitリポジトリにコミットします。そうでない場合は、ライブ・バージョンを null に設定します。

    詳細については、 ALTER NOTEBOOK をご参照ください。

  4. ノートブックを実行します。

    注釈

    ノートブックを実行するには、まずライブ・バージョンを追加する必要があります。

  5. ノートブックをドロップします。

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()
Copy