【正解】D
【0からの解説】
①前提知識
・BigQuery は、SQL で TB〜PB 規模のデータを分析できるサーバーレスのデータウェアハウスです。データを BigQuery の外に出さずに、その場で集計・変換できます。
・ウィンドウ関数(分析関数)は、AVG(sales) OVER (PARTITION BY store ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) のように、行ごとに一定範囲の行を参照して移動平均などを計算する SQL の機能です。EXTRACT(WEEK FROM date) や DATE_TRUNC で週単位の値を取り出し GROUP BY すれば週次集計もできます。CAST は型変換、つまりデータのクリーニングに使います。
・結果は CREATE TABLE ... AS SELECT(CTAS)や宛先テーブルの指定で新しいテーブルとして保存(マテリアライズ)できます。
・BigQuery ML の ML.TRANSFORM 関数は、CREATE MODEL の TRANSFORM 句で定義した前処理を、学習済みモデルを使って新しいデータに適用する関数です。モデルを作成していなければ使えません。
②要件と制約語の整理
・数 TB のデータがすでに BigQuery にある。
・「追加のデータ移動なし」で、移動平均・週次集計などを含むクリーンな新テーブルを作る。
・探索フェーズの予備分析用で、「最もシンプル」「オーバーヘッド最小」。
③正解がどう満たすか
BigQuery コンソールで標準 SQL(CAST・EXTRACT・ウィンドウ関数)を書いて結果を新しいテーブルにマテリアライズすれば、データは BigQuery 内から一切動かず、BigQuery の分散処理で数 TB でも高速に処理されます。追加のサービスやインフラ、コードは不要で、最もシンプルかつ低オーバーヘッドです。
【誤りの選択肢】
A:Agent Platform Pipelines(旧 Vertex AI Pipelines)のコンポーネントを作るには、コンポーネントの実装・パイプライン定義・実行環境の管理が必要です。本番の再現可能なワークフローには有用ですが、探索フェーズの一回限りの分析としてはオーバーヘッドが大きすぎます。
B:数 TB のデータを Agent Platform Workbench(旧 Vertex AI Workbench)の Dask DataFrame に読み込むと、BigQuery の外へ大量のデータ移動が発生し、「追加のデータ移動なし」に反します。メモリや計算リソースのサイジングも必要になり、BigQuery 内の SQL より手間とコストがかかります。
C:ML.TRANSFORM は、TRANSFORM 句付きで作成した BigQuery ML モデルの前処理を再適用する関数で、モデルなしで汎用的な移動平均計算に使うものではありません。モデルを作るという余計な手順が必要になり、ウィンドウ関数による移動平均の計算もこの関数の役割ではありません。
【参考】
TRANSFORM 句を使用して特徴量エンジニアリングを実行するデータ準備の概要