0
0

SnowflakeにローカルPCのAnaconda環境のjupyter notebookから接続

Posted at

SnowflakeにローカルPCのAnaconda環境のjupyter notebookからつないでみました。
トライアルのSnowflake環境です。

Anacondaはインストール済みです。

仮想環境作成

まずはAnacondaの仮想環境を作成します。
スクリーンショット 2024-09-20 212224.png
左メニューの「Environments」を選んで、画面下部の「Create」をクリックします。

スクリーンショット 2024-09-20 212422.png
するとこんな小画面が出てくるのでNameに今回は「SnowparkTest」と入れました。
「Create」をクリックします。

スクリーンショット 2024-09-20 212701.png

SnowparkTestというのが新たに出てきます。
次に左メニューの「Home」をクリックします。

スクリーンショット 2024-09-20 213155.png
いろんなアイコンが並んでる上にドロップダウンリストで「SnowparkTest」が選択状態であることを確認します。
いろんなアイコンのうち、「jupyter notebook」のインストールをクリックします。(右から2番目、上から2番目)
スクリーンショット 2024-09-20 213354.png
インストールが終わるとLaunchにボタン名が変わります。
クリックします。
すると、ブラウザが起動します。
ここからはブラウザに操作画面が移ります。

jupyter notebookでの操作

スクリーンショット 2024-09-20 213505.png
私の場合は
/workspace
がAnacondaの初期フォルダです。
その下に「SnowparkTest」フォルダを作成しました。
フォルダ作成は右上の「▼New」から行えます。
次に同じ「▼New」から「Python 3(ipykernel)」でPythonのファイルを作成します。
スクリーンショット 2024-09-20 213534.png
Untitledというファイル名でファイルができるとこのような画面になります。

ここからはこの環境に必要なライブラリをインストールしていきます。

pip install snowflake-snowpark-python

これが必要なライブラリ:snowflake-snowpark-pythonです。
スクリーンショット 2024-09-20 213736.png
この画面では切れちゃってますが、最後にカーネルのリスタートをすべしみたいな英語のメッセージが出ていたので従います。
画面上部のメニューに「Kernel」というのがありますので、そこから「Restart」を選びます。
スクリーンショット 2024-09-20 213827.png
こんな確認メッセージが出るので「Restart」です。

pip install numpy
pip install pandas

もついでにやっておきました。使わないけど。
これでやっと環境準備が整いました。

Snowflakeへの接続設定

Pythonファイルと同じフォルダに「cred.json」というテキストファイルを作ります。
※jsonファイルの名前はなんでもいいです。
スクリーンショット 2024-09-20 214639.png
Snowflakeへの接続情報です。

  • account
  • user
  • password
  • role
  • warehouse
    を定義しておきます。
    ※このアカウントはSnowflakeトライアル環境のものです。

スクリーンショット 2024-09-20 214750.png
こんな感じで「Untitled.ipynb」と「cred.json」が同じ階層に存在するようにします。

Snowflakeにつないでみる

ではjupyter notebookで以下を入力します。

from snowflake.snowpark import Session
import json
session = Session.builder.configs(json.load(open('cred.json'))).create()

スクリーンショット 2024-09-20 215318.png

実行するとここではまだ何も起こりませんが、cred.jsonを読み込んでSnowflakeに接続はしています。
続けて以下を入力して実行します。

tableName = "TEST_DB.TEST_SCHEMA.TRIPS"
df = session.table(tableName).limit(10)
df.show()

DB:TEST_DB
スキーマ:TEST_SCHEMA
テーブル:TRIPS
から上限10件で取得します。
なおこの"TEST_DB.TEST_SCHEMA.TRIPS"は以前の下記の記事の際に作ったものです。

実行します。
スクリーンショット 2024-09-20 215336.png
出力が表形式じゃないので見づらいですが、ちゃんと結果が取れました。
パイソニスタはこれでいろいろできちゃうということですね。

比較用
スクリーンショット 2024-09-20 215426.png
Snowsightで見るとこんな感じです。

あとがき

最近はSnowflakeの中にnotebookができていて、こんなことをしなくてもPythonが使えるらしいとは聞いていますが、まだ自分はそこまでキャッチアップできていないので、古の手法でつないでみました。

認証情報をjsonファイルに書いておくという形をとったのですが、SSO環境の場合はどうなるのかというのは謎です。
次はSSOの会社環境を使って試してみようと思います。(自信なし。)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0