Google スプレッドシートをBigQueryの外部テーブルとして使ってみたら便利だった

BigQueryにCSVからデータを取り込むと、データを変更するときに洗い替えが必要になって大変だなと感じたことはありませんか?

データの洗い替え作業を短縮したい方、スプレッドシートのデータをそのままBigQueryで扱いたい、という方は必見です!

今回は、GoogleスプレッドシートをBigQueryの外部テーブルとして使用する方法をご紹介します。

サンプルデータ

今回は以下のようなサンプルデータを準備してみました。
ヘッダーを英字で書いておくと、自動的にカラム名としてくれます。

*テーブル作成時に必要になるため、ここでスプレッドシートのURLをコピーしておきます。

BigQueryのテーブル作成

以下の内容でテーブルを作成しています。

⚫️ソース
 テーブルの作成元:「ドライブ」を選択
 ドライブのURIを選択:先ほどコピーしたスプレッドシートのURLを入力
 ファイル形式:「Google スプレッドシート」を選択

⚫️送信先
「データセット」「テーブル名」を入力

⚫️スキーマ
「自動検出」にチェック ※細かくスキーマを設定したい方は、個別に設定しましょう。

⚫️詳細オプション
「スキップするヘッダー行」に「1」を入力

「テーブルを作成ボタン」をクリックすると、
数秒でスプレッドシートを外部データソースとするテーブルが作成されました。

それでは、クエリを実行してデータを確認してみます。

スプレッドシートと同じデータが取得できました〜!

では、スプレッドシートにデータを追加&更新した場合は、BigQuery側のデータも更新されるのかチェックしてみたいと思います。

新たに色付けした行を追加しています。

実験も兼ねて、あえて日付の形式を他の行と違う形式で入力しています。
この場合はエラーになるのでしょうか?

BigQueryでクエリを実行してみます。

BigQueryのテーブルにもスプレッドシートのデータが反映されていることが確認できました。

※BigQueryでテーブルをクエリする際に、スプレッドシートを見に行く動きになっているので、スプレッドシートの変更内容がすぐに反映されます。

嬉しいことに、日付の入力形式がバラバラでも、空気を読んで登録してくれています!

今回はData型の入力形式を変えて試してみましたが、明らかにテーブルのデータ型と異なるデータをスプレッドシートに入力してクエリを実行するとエラーになってしまいます。

また、スプレッドシートの参照権限のない人が、クエリを実行してデータを参照しようとするとエラーになるので、ご注意ください。

まとめ

  • スプレッドシートをBigQueryの外部テーブルとして使用すれば、データ変更時の面倒なテーブルデータの洗い替え作業が不要!
  • スプレッドシートの変更内容がすぐにBiqQueryに反映されて超便利!