[新機能]Snowpark for PythonのコーディングがSnowsight上で出来る「Python Worksheets」がパブリックプレビューになりました #SnowflakeDB

2023.03.31

さがらです。

Snowpark for PythonのコーディングがSnowsight上で出来る「Python Worksheets」がパブリックプレビューになりました!!

早速試してみたので、本記事でまとめてみます。

Python Worksheetsとは

まず前提として、Snowflakeでは元々「Snowpark」というJava、Scala、Pythonなどの言語でSnowflake上のデータを操作できるフレームワークを元々提供しています。

このSnowparkで使用できる各言語の中でもPythonに関連する機能が、2022年のSnowflake Summitでも多く発表されていました。下記のブログは、2022年のSnowflake Summitの内容をもとに、Snowflake社の野田様にSnowpark for Pythonについて説明頂いた際のセッションレポートですので、ぜひこちらも併せてご覧ください。

そしてつい先日、このセッションでもお話があった「Python Worksheets」がパブリックプレビューとなりました!

SnowflakeをブラウザからGUIで操作できるSnowsightでは元々SQLを書いて実行できるWorksheetsを提供しておりましたが、今回リリースされた「Python Worksheets」はSnowparkを用いたPythonを記述して実行して結果を得ることができるWorksheetsとなります!

これまでSnowparkを用いた処理を開発するには、自身で開発環境を構築してSnowpark含め必要なライブラリをインストールして、という一連の準備が必要でした。しかし、開発環境の構築に慣れていない方からすると、どうしても時間や手間のかかる工程でもあります。

そこで、今回の「Python Worksheets」の出番となります!Snowsightの画面上でPython Worksheetsを選択して起動するだけで、すぐに実行できるサンプルコード付きのWorksheetsを立ち上げて、Snowparkを用いた処理の開発に取り掛かることができます。

また、まだ2023年3月31日時点では使用することは出来ませんが、いずれStreamlitを用いたアプリケーション開発からMarketplaceを介したアプリケーションの提供まで、Snowsight上で完結出来るようになる予定となっております!!

先日行われたSNOWDAY JAPANでも関連するセッションがありましたので、下記のセッションレポートもぜひご覧ください!

ドキュメント

Python Worksheetsに関する前提条件、注意事項、使い方などはこちらのドキュメントにまとまっておりますので、ぜひこちらも併せてご覧ください。

試してみた

ということで、早速試してみます!

Anaconda Pythonパッケージの有効化

まず、SnowflakeにはデフォルトでAnacondaのパッケージが入っているため、利用規約に同意した上でAnacondaを有効化する必要があります。

画面左の管理者から、請求と利用規約を押します。

「Anaconda Pythonパッケージ」という項目がありますので、有効化を押します。

ポップアップが表示されるので、表示されているリンク先の規約の内容を読んだ上で確認して続行するを押します。

一度有効化されると、下図のように表示されます。このように表示されたら、Anacondaに含まれるライブラリを使用する準備は完了です!

Python Worksheetsを立ち上げてみる

続けて、Python Worksheetsを立ち上げてみます!

ワークシートの画面から、右上のボタンを押します。すると、Pythonワークシートを選択できるのでこれを選択します。

すると、下図のようにPythonのサンプルコード付きでWorksheetsが立ち上がります!

エディターの最上部にある設定をクリックすると、実行したときに処理される関数の名前(デフォルトはmain)や、返り値の型、Linterを起動させるか、を選択出来ます。

ちなみにLinterを起動させていると、記述しているコード上に問題があるときに下図のように指摘してくれます。これは便利ですね!

また、エディターの最上部にあるパッケージをクリックすると、インストール済のAnacondaパッケージを確認できます。

また、ユーザーが別途用意したPythonファイルをステージングしてパッケージとしてインストールすることも出来るようです!

実行してみる

試しに何もコードを変更せずに実行してみると、information_schemapackagesビューの結果が返ってきました。これは9行目でtableName = 'information_schema.packages'と指定しているためですね!

そのため、このtableNameをユーザー独自のものに変更すると、それだけで任意のテーブルデータをdataframeとして取り込んで処理を行う準備が整います!

実際に、Snowflakeのハンズオンでも使用するCITIBIKEのテーブルを参照するように9行目をtableName = 'citibike.public.trips'した上で、10行目もBIRTH_YEAR1971のユーザーだけに絞り込めるようにdataframe = session.table(tableName).filter(col("birth_year") == '1971')と変更して実行してみます。

すると、CITIBIKEのtripsテーブルについて、BIRTH_YEAR1971のユーザーに絞り込んで結果を返してくれました!サンプルコードを少し書き換えるだけでdataframeに取り込めるのは簡単でいいですよね、Pythonに慣れていない方もすぐに触れると思います!

最後に

Snowpark for PythonのコーディングがSnowsight上で出来る「Python Worksheets」を試してみました。私は開発環境構築があまり得意ではない人間なので、特に待ち望んでいた機能でしたw

Pythonならではの統計処理や機械学習の処理も開発出来るので、フル活用していきましょう!