初めに
snowparkは、クラウド型データウェアハウスである「Snowflake」の大規模なデータのクエリ、処理を実行する為のライブラリを提供します。このライブラリを使用することで、Snowflake上でデータをライブライ(Snowflake API)経由で処理をすることができます。
■ 公式ドキュメント
アナコンダ上の仮想環境
Anacondaの仮想環境から、condaコマンドよりpythonの仮想環境を作成します。
(base) C:\Users\user>conda create --name py38_env --override-channels -c https://repo.anaconda.com/pkgs/snowflake python=3.9 numpy pandas pyarrow
その後、snowparkのライブラリをインストールしてみます。
下記のようにライブラリのインストールが進んでいきます。
(base) C:\Users\user>conda install snowflake-snowpark-python
added / updated specs:
- snowflake-snowpark-python
The following packages will be downloaded:
package | build
---------------------------|-----------------
asn1crypto-1.5.1 | py312haa95532_0 210 KB
ca-certificates-2025.2.25 | haa95532_0 130 KB
certifi-2025.1.31 | py312haa95532_0 164 KB
conda-24.11.3 | py312haa95532_0 1.2 MB
openssl-3.0.16 | h3f729d1_0 7.8 MB
snowflake-connector-python-3.14.0|py312h5da7b33_100 1.9 MB
snowflake-snowpark-python-1.29.1|py312haa95532_100 2.7 MB
tzlocal-5.2 | py312haa95532_0 43 KB
------------------------------------------------------------
Total: 14.1 MB
The following NEW packages will be INSTALLED:
asn1crypto pkgs/main/win-64::asn1crypto-1.5.1-py312haa95532_0
snowflake-connect~ pkgs/main/win-64::snowflake-connector-python-3.14.0-py312h5da7b33_100
snowflake-snowpar~ pkgs/main/win-64::snowflake-snowpark-python-1.29.1-py312haa95532_100
tzlocal pkgs/main/win-64::tzlocal-5.2-py312haa95532_0
The following packages will be UPDATED:
ca-certificates 2024.7.2-haa95532_0 --> 2025.2.25-haa95532_0
certifi 2024.7.4-py312haa95532_0 --> 2025.1.31-py312haa95532_0
conda 24.7.1-py312haa95532_0 --> 24.11.3-py312haa95532_0
openssl 3.0.14-h827c3e9_0 --> 3.0.16-h3f729d1_0
Proceed ([y]/n)? y
Downloading and Extracting Packages:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
notebookから実行
下記のようにjupyter notebookを起動します。
(base) C:\Users\user>jupyter notebook
ここで認証情報を下記のjsonのように設定しています。
これはsnowflakeのアカウントのページの詳細から確認することができます。
{
"account" : "xxxxxxxxxxxxxxxx",
"user" : "xxxxxxx",
"password" : "xxxxxxxxxxxx",
"role" : "ACCOUNTADMIN"
}
上記のファイルを、notebookの同じフォルダに「cred.json」と指定して読み込みを実施します。
下記のようにsessionにデータフレームのオブジェクトを作成することができる。
tableName = "MY_DB.MY_SCHEMA.RECEIPT"
df = new_session.table(tableName).limit(10)
df.show()
下記のようにオブジェクトをjoinして、selectを実施することも可能です。
joined_df = df.join(df2, df["SALES_EPOCH"] == df2["SALES_YMD"])
joined_df.select("SALES_YMD").show()
最後に
今回は、snowparkのライブラリを使用してローカルの開発環境から、snowflakeのDWH上のテーブルにアクセスしてみました。もう少し今後はDataFrameの扱いを見ていきたいですね。