Snowflake

PandasのDataFrameをSnowflakeに書き込む方法

この記事はPythonでPandasのDataFrameをSnowflakeのテーブルに書き込んでみようという内容です。
Pythonで処理したデータを書き込む際の参考になればと思います。

事前準備

Pythonライブラリのインストール

snowflakeのPython用コネクタAPIは「snowflake-connector-python」という名前で公開されています。
pandasへの互換性をもたせる場合は次のように[pandas]を付けてインストールします。
pip install "snowflake-connector-python[pandas]"

この記事での使用環境は以下になります。

Python 3.10.6
snowflake-connector-python
2.7.12

テーブルの作成

この記事ではテーブルの作成部分は割愛します。以下では既存のテーブルにデータを書き込む内容となっています。
以下を参考に事前にテーブルを作成しておきましょう。

https://docs.snowflake.com/ja/sql-reference/sql/create-table.html

実装例

テーブルへDataFrameを書き込むためのスクリプトの例を以下に示しています。

import pandas as pd
import snowflake.connector
from snowflake.connector.pandas_tools import write_pandas

# DataFrameの作成
df = pd.read_csv('table.csv')

# Snowflakeへの接続
conn = snowflake.connector.connect(
    user='USER',
    password='PASSWORD',
    account='ACCOUNT',
    database='DATABASE',
    schema='SCHEMA'
)

# TABLEへのDataFrameの書き込み
success, nchunks, nrows, output = write_pandas(
    conn=conn,
    df=df,
    table_name='TABLE'
)​

DataFrameの作成

この例では、最初にcsvを読み込んで作成したDataFrameをdfという変数に保存しています。
もちろん、DataFrameの作成方法は自由です。ただし、カラムの型や値の欠損がテーブルの定義と矛盾しないように注意しましょう。

Snowflakeへの接続

この例では、パスワード認証により接続しています。
他の認証方法での接続など詳しくは以下をご確認ください。

https://docs.snowflake.com/ja/user-guide/python-connector-api.html#connect

TABLEへのDataFrameの書き込み

最後にDataFrameを書き込んでいます。ここではwrite_pandas関数により書き込みを行っています。
この関数では、DataFrameを適宜、複数のチャンクに分割してから挿入しているようです。
返り値は以下のようになっています。

success 処理の成否
nchunks チャンクの数
nrows 挿入した行数
output 内部で発行しているCOPY INTO <TABLE>の出力
詳細が知りたい方は以下をご参照ください。

おわりに

以上、PandasのDataFrameをSnowflakeに書き込む方法でした。
実装のご参考になれば幸いです。

Y.N
GRIでデータ分析やアルゴリズム開発、ForecastFlowの開発に携わっています。