雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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