業務効率化|簡単!GoogleColaboでBigQueryのデータ更新をDX

Google Colabotoryを利用して外部から簡単にBigQueryテーブルのデータ更新する方法をご紹介

BigQuery業務効率化の動機
弊社では、Data Driven Knowledgebaseという自社メディアを運用しており、パフォーマンス可視化のためにLooker Studio上で上記のようなダッシュボードを管理しています。
著者ごとの記事パフォーマンスを可視化するためには、著者データと記事データを取得しなければなりません。
スプレットシートに記入してそれを反映する方法もありますが弊社では工数削減を目的として、Pythonプログラムでサイト上から情報を自動取得(スクレイピング)しています。
しかし、取得したデータをBigqueryにアップロードしてテーブルを更新する作業をローカルから実行しており、作業する人や環境が限られることやデータ取得から更新作業に10分ほどかかっていました。
そこでGoogle Colaboratoryを用いて、以下のコードによりデータ取得からBQテーブル更新までを自動化しました。
その結果作業時間を10分から5秒まで削減できました。

if_existsによるテーブル作成方法の指定について
if_existsの指定次第で、テーブルが既に存在している場合の挙動を制御できます。
具体的には、
‘fail’
pandas_gbq.gbq.TableCreationError を発生。
'replace'
テーブルを削除して再作成し、データを挿入。
'append'
テーブルが存在する場合、データを挿入します。存在しない場合はテーブル作成。
時系列データや更新履歴を残したい際にはこちらの方が適しているかもしれません。
ただし、記事データだとGoogleSearchConsoleなどとの結合キーやデータの持ち方を工夫しないと適切に集計されない可能性があります。
pandas公式ドキュメント
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_gbq.html
完全な自動化について
Pythonなどのプログラムを利用することでBigQueryのコンソールを開かなくても、テーブル作成やデータ挿入などの更新作業ができることは魅力的です。
今回では、プログラムの実行待ち含め10分近くかかっていた作業時間を5秒にできたこと、作業者が私以外でも可能になったことが業務効率化につながりました。
方法はいくつかありますが、私が最も簡単だと思うのはGoogleColaboratoryを利用すれば環境変数の書き換えなども要らず、権限を作業者に付与するか権限付き共用アカウントを利用すれば、簡単に運用できます。
今回の方法ではトリガー部分、つまりGoogleColaboratoryのスクリプト実行開始は手動で行なう必要があります。
トリガーを含めて完全に自動化するのであれば、Colabo Pro+ やCloud Functionなどの使用を検討した方がいいかもしれませんが、1日1回や週1回程度の頻度で実行する場合は、GoogleColaboratoryで実行するだけで十分かと思います。