3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VerticaのデータをPandasで処理し、Google スプレッドシートに自動で貼り付ける

Posted at

前提

vertica-python, pandas, gspread, oauth2clientをインストールしておくこと。
Verticaの接続情報を正しく設定すること。
Google APIのサービスアカウントを作成し、JSONキーを取得すること。
スプレッドシートの名前を正しく設定し、サービスアカウントに編集権限を付与すること。

Vertica とは

1.Verticaからデータを取得:

Pythonでvertica-pythonパッケージを使い、Verticaのデータベースからデータを取得する。

###2.Pandasでデータを処理:
取得したデータをPandas DataFrameに読み込み、必要な処理を行う。

3.Google APIの設定:

Google Developers Consoleでプロジェクトを作成し、Google Sheets APIを有効にする。サービスアカウントを作成してキーをダウンロードする。

4.gspreadを使ってスプレッドシートにアクセス:

gspreadパッケージとGoogle APIの認証情報を使って、PandasのデータをGoogle スプレッドシートに書き込む。

コードはこんな感じ

import vertica_python
import pandas as pd
import gspread
from oauth2client.service_account import ServiceAccountCredentials

# Verticaデータベース接続情報
conn_info = {'host': 'VERTICA_HOST',
             'port': 5433,
             'user': 'USERNAME',
             'password': 'PASSWORD',
             'database': 'DBNAME'}

# SQLクエリ
query = "SELECT * FROM your_table"

# Verticaからデータ取得し、Pandas DataFrameへ読み込み
with vertica_python.connect(**conn_info) as connection:
    df = pd.read_sql(query, connection)

# Pandasでのデータ処理(任意)

# Google Sheets APIとサービスアカウントの認証
scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('your-google-creds.json', scope)
client = gspread.authorize(creds)

# スプレッドシートを開く
sheet = client.open('your_spreadsheet_name').sheet1

# DataFrameからスプレッドシートへデータを書き込む関数
def df_to_sheet(df, sheet, clear=True):
    if clear:
        sheet.clear()
    cells = gspread.utils.dataframe_to_cells(df)
    sheet.update_cells(cells)

# 実行
df_to_sheet(df, sheet)

自動実行する場合、Linuxならcron、Windowsならタスクスケジューラを設定する。

ここではcronでの実行例を示す(毎事0分に実行)

0 * * * * /usr/bin/python3 /path/to/your_script.py

注意点

・大量のデータを扱う場合、Google Sheets APIのレートリミットに注意。APIの呼び出し回数の制限を超える可能性があるので、リアルタイムとかはあまりおすすめしない。(上の記載例で現状エラーは出ていないが)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?