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_nb
ノートブック・リソース・オブジェクトを取得します。ノートブック・オブジェクトにライブバージョンを追加します。これは、 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()