Redshift から amazon-redshift-python-driver を使ってデータ取得し、Dataframe に取り込む

これはなに?

2020年11月にRedshiftのPythonドライバがOSSになったので使ってみた。
Redshiftから取得したデータをPandasのDataframeを使って分析することが多いので、取得してきたデータをDFに格納までしてみました。

GitHub - aws/amazon-redshift-python-driver: Redshift Python Connector. It supports Python Database API Specification v2.0.

やったこと

  • amazon-redshift-python-driver のインストール(pip)
  • RedshiftにSQLを発行し、データとカラムを取得
  • 取得したデータとカラムをPandasのDataframeに格納、出力

手順

1. amazon-redshift-python-driverのインストール

基本的には、pipを使ってレポジトリからインストールできます。

pip install redshift_connector

↑が実行できない場合は、ドライバをローカルに落としてpipでインストールしてください。

git clone https://github.com/aws/amazon-redshift-python-driver.git
cd redshift_connector
pip install .

2. サンプルスクリプト

ドライバをインストールすれば、Pythonスクリプトでimportできるようになります。

gist.github.com

information_schema.columnsからカラム情報を取得してくると2次元になってDFにしたときにカラムが崩れるので、itertools.chain.from_iterableを使って1次元に平坦化しています。

Redshiftへのコネクション(redshift_connector.connect)で最低限必要な項目は以下です。

項目 説明
host_name RedshiftのDNS名
db_name DB名
db_user_name DBユーザー名
db_user_password DBユーザー パスワード

その他、パラメータを指定したい場合は以下を参照してください。
GitHub - aws/amazon-redshift-python-driver: Redshift Python Connector. It supports Python Database API Specification v2.0.

動作確認

サンプルスクリプトを実行してみた結果です。pg_user テーブルをクエリしてその情報をDFに格納、出力できました。

f:id:ykoomaru:20201225164358p:plain