背景
定期的に変わるマスタデータをBigQueryで扱う場合、BigQueryにデータを取り込んでしまうと洗い替えが必要になる。
マスタデータを変更する際にはスプレッドシートで作業し、そのままデータをBigQueryで扱いたい。
方法
スプレッドシートをBigQueryの外部テーブルとしてBigQuery上に定義できる。
BigQueryでテーブルをクエリする際に、スプレッドシートを見に行く動きとなる。
サンプルデータ
スプレッドシートに文字、数値、日付の値を入れる。
ヘッダ部を英字で書いておくと、自動的にカラム名としてくれるので便利。
この例で試したところ、2行目に英字で書いておくとカラム名になった。1行目と2行目を逆にするとエラーだった。
テーブル作成
BigQueryのテーブル作成画面で、ソースをドライブ
にするとスプレッドシートのURIを指定できるようになる。
以下のように、スプレッドシートのfile_idまでを残して貼り付ける。
https://docs.google.com/spreadsheets/d/1OPvJyOVGuWyBGarRq4Nfww9GrRpr0iCTpSl2jZcXwC7/edit#gid=0
↓
https://docs.google.com/spreadsheets/d/1OPvJyOVGuWyBGarRq4Nfww9GrRpr0iCTpSl2jZcXwC7
今回の例では1シートのみなので、シートの指定や範囲は指定しない。
スキーマは自動検出
にチェックを入れる。これでカラム名と型を自動でセットしてもらえる。
ヘッダは2行あるので、スキップするヘッダー行
は2で設定する。
作成したテーブル
フィールド名がスプレッドシート2行目で指定したものになっている。
型も自動検出できている。
日付型のところは説明に日付フォーマットを付けてくれた。
データも検索できた。
注意点
型に合わないデータをスプレッドシートで入力すると、BigQueryでクエリする際にエラーとなる。
不正なデータが入らないようにするには、スプレッドシート側で工夫が必要。