BigQuery のコストと仕組み 入門 ── DWH の速さと料金を表裏で理解する
BigQuery の速さは無料ではありません。カラム型ストレージとスキャン量課金の関係、東京リージョンの単価、無料枠、SELECT * フルスキャンなどの落とし穴を、コスト視点で整理します。安心して使い始める判断材料を提供します。
目次
BigQuery の速さは、無料ではありません。本記事では、なぜ高速なのかという設計の核心と、その設計が料金 (スキャン量課金) として現れる仕組み、東京リージョンでの単価感、コストが膨らむ書き方の落とし穴を順に整理します。設計と料金の関係を理解して、安心して BigQuery を使い始める判断材料を揃えましょう。
BigQuery の位置付け ── サーバーレス DWH とは
BigQuery は、Google Cloud が提供するフルマネージドのデータウェアハウス (DWH) サービスです。DWH とは、大量のデータを蓄積・分析するための専用データベース基盤のことを指します。
「フルマネージド」とは、サーバーの調達・設定・スケールアップをすべて Google 側が担う、という意味です。また「サーバーレス」とも呼ばれますが、実際にはサーバーが存在しないわけではなく、利用者がサーバーを意識しなくてよい設計になっています。
従来の DWH では、クラスター規模の見積もりや定期メンテナンスが必要でした。BigQuery ではそれらが不要で、SQL を記述するだけで大規模な分析を開始できます。
このフルマネージドな振る舞いは、内部の 「列指向ストレージ + ストレージとコンピュートの分離 + スキャン量課金」という設計選択 から来ています。後述する高速性もコスト制御も、同じ設計の表裏として現れます。
BigQuery と主要な類似サービスの位置付け
| サービス | 提供クラウド | 管理形態 | 主な特徴 |
|---|---|---|---|
| BigQuery | Google Cloud | サーバーレス | 設定ゼロで即利用可。Google 全サービスと連携 |
| Redshift | AWS | クラスター型 | クラスター設計が必要。AWS エコシステム向け |
| Redshift Serverless | AWS | サーバーレス | RPU 単位で自動スケール。クラスター管理不要だが AWS エコシステム前提 |
| Athena | AWS | サーバーレス | S3 上のデータに直接クエリ。設定は軽量 |
| Snowflake | マルチクラウド | サーバーレス | クロスクラウド対応。データ共有機能が強力 |
BigQuery の最大の差別化点は、Google Analytics・Looker・Vertex AI などの Google Cloud サービスとネイティブに統合されている点です。Google Analytics 4 のデータを BigQuery に直接エクスポートして分析できるため、広告・マーケティング用途との親和性が高いサービスです。
仕組みの核心 ── カラム型ストレージと分散実行エンジン
BigQuery の高速性とコスト制御は、「カラム型ストレージ」「分散実行エンジン」「ストレージとコンピュートの分離」という 3 つの設計が組み合わさって生まれます。順に見ていきます。
カラム型ストレージとは
一般的なデータベースは行単位でデータを格納します。例えば「ユーザー ID、購入日、金額」という 3 列のテーブルがあれば、1 行分 (1 ユーザーの購入レコード) をひとかたまりとして保存します。これを行指向ストレージと呼びます。
BigQuery は異なるアプローチを採用しています。カラム型ストレージ (列単位でデータを格納する方式) では、「金額」列のデータはすべて一箇所にまとめて保存されます。
-- 行指向: [U001, 2026-04-01, ¥3,000] [U002, 2026-04-02, ¥1,500] ...
-- 列指向: [U001, U002, ...] [2026-04-01, 2026-04-02, ...] [¥3,000, ¥1,500, ...]
「先月の売上合計を出したい」というクエリでは「金額」列だけを読めば十分です。行指向では全列を読み込んでから集計しますが、列指向では必要な列だけを読み込むため、読み込むデータ量が大幅に減ります。これが BigQuery の高速性と低コストの源泉です。
分散実行エンジン
BigQuery は、1 つのクエリを受け取ると内部で処理を細かく分割し、多数のサーバーに並列で割り当てます。各サーバーが担当分を処理して結果を集約するため、数 TB のデータでも数秒〜数十秒で結果が返ります。
また、データの保管場所(ストレージ)とクエリを処理するコンピュートが独立した構造になっているため、クエリ実行量が増えてもデータの保管コストは変わりません。
この 3 つは独立した機能ではなく、「読み込むデータ量を最小化し、コンピュートとストレージを独立にスケールさせる」という同じ設計思想の派生です。次のセクションで見るスキャン量課金は、その自然な帰結として現れます。
代表的なユースケース ── どんな場面で使われるか
BigQuery は以下のようなシナリオで特に力を発揮します。
| ユースケース | 概要 |
|---|---|
| マーケティング分析 | Google Analytics 4 や広告データを集約し、施策効果を SQL で集計 |
| 売上・KPI レポート | 数百万行規模の注文データを集計し、BI ツールに接続してダッシュボード化 |
| ログ分析 | アプリケーションのアクセスログやエラーログを蓄積して傾向を把握 |
| 機械学習の前処理 | Vertex AI や BigQuery ML と組み合わせ、特徴量生成や学習データ抽出 |
| データ共有 | Analytics Hub を通じてデータセットを社内外と安全に共有 |
特に Google Analytics 4 のデータエクスポート連携は追加費用なく設定でき、BigQuery に生データを取り込めます。ページビューや購入イベントを SQL で集計・加工できるため、Google Analytics の標準レポートでは出せない分析が実現します(BigQuery 側のストレージ・クエリ料金は別途発生します)。
請求書を見て驚かないために
仕組みのセクションで見た列指向ストレージは速さの源泉ですが、スキャン量に比例した課金 とセットで動きます。BigQuery のコストが膨らむのは、この設計の利点を活かす書き方ができていない時です。クエリの課金単位は結果の行数や実行時間ではなく、スキャンしたデータ量である点に注意します。
1. SELECT * は使わない
全列を取得する SELECT * は、テーブルのすべての列を読み込みます。カラム型ストレージの利点を完全に無効化するため、コストが最大化します。必要な列だけを明示的に指定しましょう。
-- NG: テーブル全列をスキャン
SELECT * FROM `project.dataset.orders`
-- OK: 必要な列だけ指定
SELECT order_id, amount, created_at FROM `project.dataset.orders`
2. LIMIT は課金を減らさない
LIMIT 10 と書いても、スキャンするデータ量は変わりません。BigQuery は結果を返す前にテーブル全体 (またはパーティション全体) を読み込むためです。探索目的で動作確認したい場合は、コンソールの「クエリ検証」機能でスキャン量を事前に確認する習慣をつけましょう。
3. 大きなテーブルにはパーティションを検討する
パーティション (特定の列でデータを区切る機能) を設定すると、WHERE created_at >= '2026-04-01' のような日付絞り込みで該当期間だけを読み込めます。またクラスタリング (よく使うフィルタ列でデータを物理的にソートする機能) も合わせて設定するとさらに効果的です。
パーティションはテーブル作成後に付与するのが困難なため、日付列があるテーブルはデータ量の大小に関わらず作成時点で設定しておくのが定石です。スキャン量削減の効果はデータが増えるにつれて継続的に得られます。
コスト感 ── 東京リージョンの料金と無料枠
BigQuery の料金は大きく「クエリ料金」と「ストレージ料金」に分かれます。
東京リージョン (asia-northeast1) の主な料金
| 種別 | 料金 | 補足 |
|---|---|---|
| オンデマンドクエリ | $7.50 / TiB | スキャンしたデータ量に応じた従量課金 |
| アクティブ論理ストレージ | $0.023 / GiB / 月 | 過去 90 日以内に変更があったデータ |
| 長期論理ストレージ | $0.016 / GiB / 月 | 90 日以上変更がないデータに自動適用 |
※ 米国リージョン (US) のクエリ料金は $6.25 / TiB。東京は約 20% 高い設定です。料金単位は公式表記に合わせて TiB (テビバイト = 約 1.1 TB) を採用しています。ストレージ料金は GiB (ギビバイト = 約 1.07 GB) 単位の課金で、GB 表記との換算差が生じる場合があります。最新値は 公式料金ページ で asia-northeast1 を選択して確認してください。
毎月の無料枠
| 種別 | 無料枠 |
|---|---|
| クエリ処理 | 1 TiB / 月 |
| ストレージ | 10 GiB / 月 |
Google Analytics 4 のエクスポートデータを少量集計する程度であれば、無料枠内に収まるケースがほとんどです。まずはコンソールの「クエリ検証」でスキャン量を確認しながら、使用感を把握する習慣をつけましょう。
まとめ
BigQuery のサーバーレス・高速性・コスト制御は、すべて同じ設計 ── 列指向ストレージ + ストレージとコンピュートの分離 + スキャン量課金 ── から派生しています。仕組みを理解すれば、利点 (なぜ速い・なぜ手間が要らない) もリスク (なぜ課金が膨らみうるか) も同じ思想の表裏として読めます。
Google Analytics・Looker・Vertex AI など Google Cloud サービスとのネイティブ統合は、この基盤の上に乗っているからこそ実現します。まずは毎月 1 TiB の無料枠と「クエリ検証」によるスキャン量確認を活用し、SELECT * を避けて必要な列だけを指定する習慣から始めましょう。
次に読む
BigQuery は DWH としての高速性とコスト管理だけでなく、SQL ひとつで非構造化データ・機械学習・生成 AI まで扱える設計を持っています。SQL がどこまで届くのか、Object Tables や AI 関数群を含めた世界観を概観したい場合は、続編記事をご覧ください。
参考文献
- BigQuery の概要 | Google Cloud 公式ドキュメント
- BigQuery の料金 | Google Cloud 公式ドキュメント
- クエリのベスト プラクティス (コスト最適化) | Google Cloud 公式ドキュメント
- BigQuery ストレージの概要 | Google Cloud 公式ドキュメント