ここまでこのシリーズでSnowflakeについて調べてきましたが、私のメインツールはBigQueryです。両方を実務で使ってみて感じた正直な違いを、対立構造ではなく向き不向きで整理してみます。DWHそのものの役割から確認したい方は、 データウェアハウスって結局何なの? を先に読んでいただくと理解が早いはずです。

前提: 私のバックグラウンド

  • 私はBigQueryを数年使っています
  • クライアント案件の大半はBigQuery + dbt + Metabase構成です
  • Snowflakeはこのシリーズをきっかけに本格的に触り始めました

なので 私にはBigQuery寄りのバイアスがある 前提で読んでください。

設計思想の違い

観点BigQuerySnowflake
一言で全自動のデータ分析基盤ユーザーに選択肢を渡すプラットフォーム
インフラ管理完全サーバーレス仮想ウェアハウスの起動/停止を管理
チューニングほぼ不要(Google任せ)ウェアハウスサイズの選択で調整
マルチクラウドGCPのみ(BigQuery Omniで一部対応)AWS / Azure / GCP
データ共有Analytics HubData Sharing(ゼロコピー)
AI統合Vertex AI連携、BigQuery MLCortex AI、Cortex Code

BigQueryは「Google流の全自動」です。インフラのことは考えなくて済みます。一方のSnowflakeは「ユーザーが選べる」設計で、コンピュートリソースのサイズや数を自分で決められます。この選択肢を渡す姿勢がSnowflakeの一貫した思想であることは、 Snowflakeの設計思想 で詳しく書きました。

料金体系の違い

ここは経営者が一番気にするところです。

BigQuerySnowflake
課金モデルスキャン量課金(読んだデータ量)コンピュート時間課金(稼働時間)
わかりやすさ「どのくらいデータを読むか」で決まる「どのくらいの時間動かすか」で決まる
コスト予測クエリごとに変動。予測しにくいウェアハウスサイズ × 稼働時間で計算可能
無料枠月1TBのスキャン無料$400の無料クレジット(初回のみ)
定額プランあり(Flat-rate)なし(常に従量)

「月いくらかかるか」を聞かれたとき、Snowflakeの方が答えやすい印象です。ウェアハウスのサイズと稼働時間で試算できるので。BigQueryはクエリの書き方やデータ量で変動するので、事前見積もりが難しい。

使い分けの基準

BigQueryが向いている場面

  • GCPを既に使っている(Firebase、Cloud Runなど)
  • 完全サーバーレスがよく、インフラ管理をしたくない
  • データ量が小さめ(月のスキャン量が数TB以下)
  • シンプルな分析クエリが中心

Snowflakeが向いている場面

  • AWSやAzureをメインで使っている
  • 複数の組織間でデータ共有が必要
  • 非エンジニアもダッシュボードや分析を使う
  • コンピュートリソースの細かい制御がしたい

私の本音

私はBigQueryで育ったので愛着があります。サーバーレスの楽さは素晴らしく、何も考えなくてもスケールしてくれます。

でもSnowflakeの共有機能には感心しました。Data Sharingのゼロコピーは設計として美しく、複数組織でデータを共有する案件では、Snowflakeの方が適している場面があります。

Cortex Code CLIの体験も良かったです。自然言語でSQLを書ける感触は Cortex Code CLIを触ってみた に詳しく残しましたが、BigQueryにも同等の機能がほしいと感じました。

私はクライアントによって提案を変えています。GCPメインの環境ならBigQuery、AWSメインならSnowflakeも選択肢に入れます。

「どちらでもいい。大事なのはDWHを持つこと」 が私の本音です。Excelやスプレッドシートでデータをやりくりしている状態から、どちらかのDWHに移行するだけで世界が変わります。

まとめ

  • BigQueryもSnowflakeも、どちらも優秀なDWHです
  • 「どっちがいい?」より「どっちが合う?」で選ぶべきです
  • 迷ったら既に使っているクラウドに合わせるのが無難です
  • どちらを選んでも、今のExcel管理よりは確実に良くなります
  • 次は、もう一つ大事な「ベンダーロックイン」の話を Apache Icebergで実現する「やめられる自由」 に書きました