LoginSignup
1
1

More than 1 year has passed since last update.

Google Spread SheetとBigQueryの同期(スプレッドシート→BQ)

Posted at

はじめに

Googleドライブに作ったGoogleスプレッドシートをBigQueryに同期させて、スプレッドシートが更新されるとBQにも反映されるという状態を作ります。

注意:BigQueryから更新はできない

この方法で作ったBigQueryのテーブルは、クエリで更新できません。Selectのみです。
↓こういうエラーが出ます。

DML statements are only supported over tables that have data stored in BigQuery. Unsupported table: bigquery-nlp:spread_sheet_test.sp_sync

BigQueryにあるものしか更新できませんよ、ということ。つまりBigQueryとしては、Googleドライブ上にあるデータのショートカット的なイメージ。

ちなみにSelectするときの見積もりもよく見ると、、、費用かからないのかも。これって、そこそこのシステムだったらGoogleドライブを利用すれば、BQ料金をかけずにBQを使えるということか。
image.png

スプレッドシートは更新できますよ。

手順

1. Googleドライブにスプレッドシートを作る

image.png
適当ですみませんw

ここで、URLをコピーしておきます。

2. BigQueryでテーブル作成

テーブルを作成するときに、「ソース」をドライブ、「ドライブのURI」にスプレッドシートのURL、「ファイル形式」にGoogleスプレッドシートを入れます。
テーブル名は適当に、あとスキーマは自動検出でもいけるし、指定もできます。

詳細オプションで、「スキップするヘッダー行」は、1とかに変更します。これはデータの始まりの行、と読み替えてもいいです。データに使わない行をスキップするという意味で、これをデフォルトの0のままにしておくと、列名としているidとかもデータとして入っちゃいます。

3. 完成

image.png

クエリも普通に書けます。
image.png

スプレッドシートを更新すると、勝手にBigQueryのテーブルも更新されます。というか、二重に持っているわけではなく、スプレッドシートのデータをBigQueryが見に行っているから、当たり前なんですが。

スピードはわかりません。さすがにBigQueryにある状態よりは遅いんじゃないかなぁ。

おわりに

わかってれば特に難しいことはないです。

注意点①:BigQueryで更新できない

最初に書いた通り、このテーブルをSQLで更新することはできません。スプレッドシートからBigQueryの一方通行です。

まったく別の方法ですが反対に、BigQueryのデータをGoogleスプレッドシートで表示することはできます。これも一方通行です。

注意点②:遅いかも

スピードは遅いかもしれません。でもスプレッドシートで管理するようなデータ量なので、スピードは求めるようなものではないとは思います。

1
1
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
1
1