inFablic | Fablic, inc. Developer's Blog.

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

Googleスプレッドシートにある大量のデータをBigQuery経由で操作する

こんにちは、shobyです。

皆さんは、大量のデータが存在するGoogleスプレッドシートに対して集計を行い、固まった記憶はありませんか?

BigQueryのGoogle Drive Integrationを利用すると、Googleスプレッドシート上にある大量のデータを高速にフィルタリングすることができます。

Googleスプレッドシート上で大量のデータを扱う際の問題点

Google SpreadSheetを用いて大量のデータに対して複雑な集計を行う場合、実行と反映に時間がかかるという問題が発生します。これに対しては、BigQueryを用いることで改善ができます。

Googleスプレッドシートは、敷居が低く、エンジニアに限らず、ディレクターやマーケターも利用できる優れたツールです。そのため、CSVの受け渡しがある分析業務などに有効活用することができます。

in.fablic.co.jp

しかし、CSVのサイズが大きい場合などは、スプレッドシート上に大量のデータが生まれます。そのようなスプレッドシート上の大量のデータに対して、複雑な条件で集計をする場合などは、動作が重くなりがちです。

具体的には、20万件以上のデータに対して、Query関数を用いた集計を行う場合などに発生します。

Google スプレッドシートはデータに対してQuery関数を用いて、SQLのような文法で集計を行うことができますが、件数が多い場合は実行と反映に多くの時間がかかってしまいます。

そのため、BigQuery経由でGoogle SpreadSheetのデータを操作する必要が出てきます。

Google SpreadsheetのデータをBigQuery経由で操作する

BigQueryにはスプレッドシートを入力ソースとしてtableを作成する機能が存在します。 この機能を利用することで、スプレッドシート上の大量のデータに対して、高速に集計処理を行うことができるようになります。

設定方法に関しては、BigQueryでスプレッドシートのURLとスキーマを設定し、テーブルを作成するだけです。 通常のtableと同様に集計をすることができます。

設定例は以下のようになります。

f:id:shoby:20171108173757p:plain

LocationにスプレッドシートのURLを入力し、File formatをGoogle Sheetsにした上で、テーブル名や、Schemaを定義してください。

詳細な設定方法は公式のドキュメントをご覧ください。

cloud.google.com

フリルでの活用例

フリルでは、GoogleスプレッドシートとBigQueryを連携し、CSVでデータのやり取りがある分析業務の改善を行なっています。

また、Redash経由で結果の可視化も行なっています。

まとめ

大量のデータが存在するGoogleスプレッドシートにはBigQueryを利用することで、高速に集計を行うことができます。

Googleスプレッドシートが重くて固まるような場合にご活用ください。