SnowflakeにPythonから繋いでみよう!
Snowflakeで今日拝なびら(ちゅう うがなびら=こんにちは)。
ちゅらデータshinyashikiです!
今回から3部構成で、
・SnowflakeにPythonから繋いでみよう! ← 本記事
・CLIクライアント(SnowSQL)を使ってSnowflakeにアクセスしてみよう(次回掲載予定:12/25)
・SnowflakeとPythonでデータ可視化(次回掲載予定:1/8)
を行っていきたいと思います。
目次
使用するSnowflake環境について
ユーザや仮想ウェアハウス、データベースといったSnowflakeのリソースの作成方法については本記事では省略します。
必要に応じて事前にご用意ください。
本記事の検証端末としてMacを使用しています。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H2
Python環境の準備
今回はDockerを使って環境を作ります。
また、最終的にはデータの可視化を行いたいので、Jupyter Notebookが使える環境を構築したいと思います。
$ docker -v Docker version 19.03.5, build 633a0ea
Dockerfileの作成
以下のようなDockerfileを作成します。
Dockerイメージはpandasやmatplotlibなど主要なライブラリが含まれているscipy-notebookにします。
そのほかにもDockerイメージがあるので、必要に応じてこちらをご確認ください。
Pandas互換バージョンのPython用Snowflakeコネクタをインストールします。
PythonからSnowflakeへ繋ぐための、またPandasのDataFrameにデータを読み込ませるためにコネクタが必要になります。必要に応じてこちらをご確認ください
$ cat Dockerfile FROM jupyter/scipy-notebook:latest RUN pip install --upgrade snowflake-connector-python[pandas]
Dockerコンテナの作成&起動
作成したDockerfileのディレクトリでDockerコンテナを作成します。
$ ls Dockerfile $ docker build -t scipy-notebook . Sending build context to Docker daemon 3.072kB Step 1/2 : FROM jupyter/scipy-notebook:latest latest: Pulling from jupyter/scipy-notebook d72e567cc804: Pull complete …
コンテナを作成後、コンテナ名を「scipy-notebook(任意)」にして起動します。
$ docker run -p 8888:8888 --name scipy-notebook scipy-notebook
なお、起動時にコンソールに出力される<トークン>は後ほど必要になるのでコピーしておいてください。
To access the notebook, open this file in a browser: file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html Or copy and paste one of these URLs: http://01d3cd8d81f9:8888/?token=<トークン> or http://127.0.0.1:8888/?token=<トークン>
Jupyter Notebookの起動
localhost:8888でブラウザ起動すると以下のようにトークンを入力する画面となります。
先ほどコピーしておいたトークンをペーストしてください。
Jupyter Notebookの確認
適当にNotebookを作ってmatplotlibを使ってグラフを書いてみます。(Sample Code)
大丈夫そうですね!正常にグラフも表示されています。
Snowflakeにつないでみる
それでは実際にSnowflakeにつないでみます。
今回はとりあえずPythonからSnowflakeへの接続ができているか確認できれば良いので、Snowflakeのバージョンを確認するSQLをPythonから実行してみます。
Snowflakeにつなげてバージョンを確認してみる
Jupyter Notebookで以下のようなバージョンを確認するPythonコードを実行します。
import snowflake.connector # Gets the version ctx = snowflake.connector.connect( user='<ユーザ名>', password='<パスワード>', account='<アカウント名>' ) cs = ctx.cursor() try: cs.execute("SELECT current_version()") one_row = cs.fetchone() print(one_row[0]) finally: cs.close() ctx.close()
正常にSnowflakeのバージョン「4.37.0」が表示されました!
これでPythonからSnowflakeにつながっていることが確認できました。
次回予告
次回はSnowflakeのCLIツール(SnowSQL)を使って可視化するためのデータを登録してみます。
ではまた!
うにげーさびら!(よろしくお願いします!)
DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。
Contact
Explore Jobs
関連記事