inFablic | Fablic, inc. Developer's Blog.

フリマアプリ フリル (FRIL) を運営する Fablic の公式開発者ブログです。Fablic のデザイナー・エンジニア・ディレクターが情報発信していきます。

ColaboratoryをBigQueryと連携して分析を行う

こんにちは。shobyです。

皆さんは、業務での複雑なデータ分析にはどのようなツールをお使いでしょうか?

フリルでは、RedashのPython DataSourceを使用しており、Googleが新しく発表したColaboratoryへの移行を検討している最中です。 ColaboratoryをBigQueryと連携すると、大量のデータに対しても、便利に分析を行うことがわかったため、調査結果をまとめました。

概要

  • Colaboratoryとは
  • RedashのPython DataSourceの問題点
  • ColaboratoryとBigQueryの連携方法
  • RedashのPython DataSourceと比べたColaboratoryの欠点

Colaboratoryとは

Colaboratoryとは、Googleが提供を始めたJupyter Notebook互換のデータ分析ツールです。

Colaboratory – Google

Jupyter Notebookと比べ、以下のような特徴があります。

  • Google Drive上にJupyter Notebookが保存され、他のユーザーと共有ができる
  • BigQueryやスプレッドシートといったGoogle製サービスとの連携が容易

ファイルの共有に関してはGoogle Driveと同じアクセス権限を行うことができ、分析結果をread onlyで共有したり、共同編集を行うこともできます。

また、連携に関しては、ログイン済みのアカウントで認可を行うだけで、Colaboratory上からデータが参照できるようになります。

RedashのPython DataSourceの問題点

フリルでは、複雑な集計にはRedashのPython DataSourceを使っていたのですが、 試行錯誤がしづらく、データが増えるほど、コードの修正に時間がかかるという問題がありました。

RedashのPython DataSourceは、既存のRedashのDB接続設定をそのまま用いて分析を行えるのが便利で、SQLでは書きづらい集計処理も、Pythonで行えるため重宝しています。

しかし、集計対象のデータ量が増える場合、以下のような問題が発生していました。

  • 実行の度にデータ取得処理が走るので、集計コードの試行錯誤がしづらい
  • 改行が無効になるなど、デバッグログが見づらい

簡単な集計であれば便利だったPython DataSourceですが、データが増えれば増えるほど、集計コードが複雑になればなるほど、実行時間が増していき、コードを修正する難易度が上がっていくという状態でした。

そのため、Colaboratory導入の検討を始めました。

ColaboratoryとBigQueryの連携方法

上に書いた通り、ColaboratoryはBigQueryなどのGoogle製サービスと簡単に連携することができます。

BigQueryの連携に必要なのは以下の4ステップです。

  1. Code snippetsを探してINSERT
  2. Google Cloud ConsoleからBigQueryのproject_idをコピペ
  3. クエリを書き換えて実行
  4. 自分のGoogleアカウントで認可

このようにGoogle製のサービスであれば、とても簡単にデータを取得することができます。 Colaboratoryはデータベースへの接続が難しいというJupyter Notebookの欠点が改善できているように感じます。

実際のコードは以下の通りです。

from google.colab import auth
import pandas as pd

auth.authenticate_user()

project_id = 'your_project_id'
df = pd.io.gbq.read_gbq('''
SELECT *
FROM your_table_name
LIMIT 1000
''', project_id=project_id, verbose=False)

RedashのPython DataSourceと比べたColaboratoryの欠点

ColaboratoryはGoogle製サービスにあるデータは取得しやすいですが、やはりAWSなどにあるDBに接続するのは手間がかかります。

こちらに関しては、良い方法がないか調査中なため、情報があれば教えていただけると嬉しいです。

まとめ

ColaboratoryはGoogleが発表したJupyter Notebook互換の分析用サービスです。

Google Drive上にファイルが保存されるため、共有や共同編集が行いやすくなっており、 BigQueryなどのGoogle製のサービスとの連携も簡単です。

フリルでは現在、RedashのPython DataSourceを使っていますが、Colaboratoryへの移行を検討しています。