PythonTech Blog 

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でブラウザ起動すると以下のようにトークンを入力する画面となります。
先ほどコピーしておいたトークンをペーストしてください。

Snowflake_DATUM STUDIO

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は、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。