【正解】B
【0からの解説】
①前提知識:
・BigQuery の外部テーブルは、データを BigQuery に取り込まずに、外部のデータソースを直接クエリできるテーブルです。Google ドライブ上の Google スプレッドシートもソースにでき、スプレッドシートの URI を指定して作成します。クエリのたびに最新のスプレッドシートの内容が読み込まれるため、スプレッドシートが毎日更新されても、手作業でデータを移す必要がありません。
・Connected Sheets(コネクテッド シート)は、Google スプレッドシートから BigQuery のデータに直接接続し、ピボット テーブル・グラフ・数式などで分析できる機能です。データの更新を手動または定期的なスケジュールで行えるため、BigQuery 側の最新の結果をスプレッドシート上で参照し続けられます。
②要件と制約語の整理:(a) 予算データは Google スプレッドシートで毎日更新される、(b) 実際のコストは BigQuery テーブル、(c) 日ごとの差額を計算する、(d) チームが Google スプレッドシートで「毎日更新される結果」にアクセスできる。
③正解の理由:スプレッドシートを外部テーブルとして BigQuery から参照すれば、予算データの最新版を手作業なしで実コストのテーブルと結合できます。その結果を Connected Sheets でスプレッドシートから開けば、チームは使い慣れた Google スプレッドシート上で BigQuery の結果を参照し、更新(スケジュール更新)によって毎日の最新結果を得られます。なお実務では、結合結果を「ビュー」として保存するか、スケジュールされたクエリで結合テーブルを毎日再作成すると、外部テーブルの最新データが確実に反映されます。手作業のエクスポートが一切ない点で、選択肢の中では B が要件に最も適しています。
【誤りの選択肢】
A:毎日 CSV をダウンロードして Cloud Storage にアップロードし、BigQuery テーブルを作り直すという手作業が必要で、予算データが毎日更新されるたびにこの作業を繰り返さなければなりません。外部テーブルを使えば不要な余計なデータ移動と手作業があり、「毎日更新される結果」を自動で提供できません。
C:CSV のダウンロード・アップロードという手作業に加えて、結合結果も CSV として保存しスプレッドシートで開くため、どちらの段階でも日次の自動更新ができません。毎日すべてを手で繰り返す必要があり、要件を満たしません。
D:外部テーブルによる結合までは適切ですが、結果を CSV ファイルとして保存して開くと、その時点の静的なコピーになり、BigQuery の結果が更新されてもスプレッドシートには反映されません。毎日 CSV を出力し直す手作業が必要になり、Connected Sheets のように最新結果へ接続し続けることができません。
【参考】
Google ドライブの外部テーブルを作成するコネクテッド シートの使用