【正解】B
【0からの解説】
①前提知識
・BigQuery にデータを入れる最も基本的な方法は「バッチ読み込み(load ジョブ)」です。Cloud Storage(またはローカル)に置いたファイルを、BigQuery のテーブルに一括で取り込みます。読み込みに対応するファイル形式は CSV、改行区切り JSON、Avro、Parquet、ORC、Datastore / Firestore のエクスポートなど、オープンで汎用的な形式です。特定ベンダーのデータ ウェアハウス(DWH)が内部で使う独自形式のファイルは、そのままでは BigQuery が解釈できません。
・BigQuery Data Transfer Service(DTS)は、あらかじめ用意されたコネクタがあるソース(Teradata、Amazon Redshift、Snowflake などの特定の DWH / データベース、Cloud Storage、Amazon S3、SaaS など)から、マネージドにデータを転送するサービスです。
・Datastream は、データベースの変更データ キャプチャ(CDC)を使ってサーバーレスに継続レプリケーションを行うサービスです。
②問題文の要件の整理
・大規模なオンプレミス DWH を BigQuery へ移行する
・データは「独自のベンダー固有の形式」で保存されている(BigQuery が直接読めない、特定コネクタも前提にできない)
・「バッチ移行」である(一括移行。リアルタイム同期は求められていない)
③正解の理由
Google の移行ガイド「スキーマとデータ転送の概要」では、どのデータ ウェアハウスでもスキーマとデータをファイルとして抽出でき、多くのプラットフォームは Avro や CSV のようなベンダー非依存の形式にエクスポートするツールを備えている、と説明しています。そして、DTS で特定の DWH(Amazon Redshift / Teradata)から直接読み込む場合を除き、抽出したファイルを Cloud Storage のバケットにアップロードしてから BigQuery に読み込む、という流れを標準手順としています。
独自形式のままでは BigQuery が読めないため、①ソース DWH のエクスポート機能で汎用形式(CSV)に変換 → ②Cloud Storage にステージング → ③BigQuery の load ジョブで一括読み込み、という B がどのベンダーにも適用できるバッチ移行の基本パターンです。なお実務では、スキーマ(型情報)を保持できる Avro・Parquet・ORC が CSV よりも推奨されますが、選択肢の中で「独自形式 → 汎用形式への変換 → Cloud Storage 経由で読み込み」という正しい手順を示しているのは B だけです。
【誤りの選択肢】
A:bq コマンドライン ツールは BigQuery を操作する CLI で、bq load で読み込めるのは対応形式のファイルだけです。オンプレミスの DWH に接続してデータを引き出す機能はなく、ベンダー独自の形式を解釈することもできません。
C:DTS は、コネクタが用意された特定のソースからの転送を自動化するサービスで、任意のベンダー独自形式を読み取れるわけではありません。問題文のソースは特定されていない「独自形式」であり、DTS を指定するだけでは移行できません(DTS の Cloud Storage 転送を使う場合でも、まず対応形式のファイルにエクスポートする必要があり、それは B の手順そのものです)。
D:Datastream は CDC による継続的なリアルタイム レプリケーションのサービスで、対応ソースは主に Oracle・MySQL・PostgreSQL・SQL Server などの運用データベースです。要件は「バッチ移行」であり、独自形式の DWH はそもそも対応ソースではありません。
【参考】
スキーマとデータ転送の概要データのバッチ読み込みBigQuery Data Transfer Service とは