cpu の決め手はデータ容量ではなく処理の性質。判定質問はひとつで済む。
「CPU を倍にしたら、この Job は速く終わるか?」
この Job は Cloud Storage ダウンロード待ち+ BigQuery ロード完了待ち(I/O 待ち)が支配的で、CPU が働く仕事(数MBの CSV パース)は一瞬。だから答えは No で、"1" でいい。課金は vCPU 数 × 実行秒数なので、増やしても料金だけ倍になる。
同じリポジトリでも 2 CPU の Job があるのは、大容量 CSV の変換処理=CPU が実際に働く仕事があるからで、容量が大きいからではない。
memory は逆に、扱うデータの実測から積み上げる。
map[string]any へのパース展開で 10〜20 倍に膨らむ(OOM 実績のある Job と同じ形式)→ 数十MB/ファイルOOM したら terraform で一時増強 → 手動実行で消化 → 戻す。ローカル実行での消化は環境差分・個人認証のリスクがあるので非推奨。
最小で始める前提が成立するのは、この「上げ方」が先に決まっているからだ。上げっぱなしにしないために、増強はコミットに理由を残して、消化後に戻すところまでを1セットにする。