この記事は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に書き込む方法でした。
実装のご参考になれば幸いです。