見出し画像

Snowflake環境でPythonを接続する

こんにちは。コグラフSSD−2事業部のルイスです。
前回、Snowflakeとローカルのpythonを接続する方法を紹介しました。もし、Snowflakeの中で直接Pythonが使えると言ったらどうなるでしょうか?今日は、Snowflakeの中のPythonワークシートについて紹介します。


Pythonワークシートはどんなツール?

SnowflakeホームサイトによるとPythonワークシートに  Snowparkコードを記述して、 Snowsight でSnowpark Pythonを使用してデータを処理します。Pythonワークシートにコードを記述することで、依存ライブラリをインストールする必要なくSnowflakeで開発とテストを実行できます。

Snowflake ドキュメンテーション

ということでコネクターを作成でなく、直接Snowflake上にSnowpark・Pythonを利用することができます。
nowflake機能でPythonワークシートを使用できるようにするには、まずSnowsightでAnaconda利用規約を確認し、同意する必要があります。
ステップは以下の通りです
1)Snowflakeにログインにしてから、管理アカウントを選択します。
2)左側にある「Admin」タブをクリックすると、メニューを開きます。そのメニューの中に「Billing and terms」を選択してください。
3)Anacondaのタブで「Enable」ボタンを押してください。
4)同意ボタンを押してください(Acknowledge & Continue)

このプロセスは一回だけ必要です。どうするとどんなロールにログインにしてもPythonワークシートのAnacondaパッケージを利用することができます。

Medium.com

Pythonワークシートで環境設定

Anaconda利用規約を確認後、Pythonワークシートを利用できます。
次のステップをフォローすれば環境設定になります。

1)ログインしてください。ログイン後、Snowsight(ホーム)を表します。Snowsightの一番上の右側に「+」ボタンを選択し、選ばれるオプションの中にはPython Worksheetを選択してください

2)選択すると、自動的にPythonワークシートを作成されます。ですがまだウエアハウス・データベース・スキーマも設定されていません。そのため、右側にあるデータベース内に使いたいテータベースやウエアハウスを選んでください。スキーマも選べます。

3)設定タブの中にはHandlerがmainになり、アウトレット出力オプションを選択できます。テーブルかstringなどのオプションはあります。この例ではテーブルを選びます。

4)必要なパッケージをAnaconda Packagesタブで書いてください。例えば、Pandas、Numpy、Matplotlibなどです。
この4つのステップで環境設定が完了です。

Medium.com

Pythonワークシートで開発を開始する

Pythonワークシートには、自分のタスクに応じて変数を変更するだけのプレコードが用意されている。次の例を見てみましょう。
二つの変数を作成します。その変数はXとYです。Xは0~99の値を持つ1×100の2次元配列を入れること、YはXを2倍し、0~49のランダムな数値を加算した1×100の2次元配列を入れることになります。
その後XとYを統合して、一度PandasのDataFrameに変換してからSnowparkのDataFrameを作成します。このプロセスは大事です。Snowparkは主にSnowflakeのオブジェクトを利用するのでPandasのDataFrameから普通のSnowflakeのテーブルにしてSnowparkのDataFrameに保存されます。最後にそのフレームをSnowflake上に保存されます。保存される場所は設定されたデータベースとスキーマです。
最後に一番の上右のところに実行(Run)というボタンを押すとすべてのコードを実行させます。

qiita.com

もちろん自分のSnowflake環境に既存されているテーブルも利用できます。例えば以下のコードでanalyticsというスキーマにあるcustomersというテーブルを利用することになります。その後必要な処理を書けます。

def main(session: snowpark.Session):
    tablename = "db_data.analytics_sch.customers"
    dataframe = session.table(tablename)

まとめ

Pythonワークシートは、Pythonのローカル環境で作業したくない方にとって便利なツールです。また、anacondaの規約に同意すれば、pipコマンドを使ってライブラリをインストールする必要がなくなります。最後に、情報を処理するためにpandasとsnowflakeオブジェクトの両方を使用することができます。


この記事が気に入ったらサポートをしてみませんか?