- BigQuery が「サーバーレス・フルマネージド」であることの意味と、ストレージ層・コンピュート層が分離されたアーキテクチャ
- BigQuery Studio でクエリエディタ・エクスプローラ・ジョブ履歴を使いこなす基本操作
- クレジットカード不要の BigQuery サンドボックスを、制限とセットで正しく理解する
- クエリ・ストレージの無料枠の正確な範囲と、課金プロジェクトに切り替える際の予算アラート
- dry run で処理バイト量を事前確認する、本書全体を通じて使う習慣
前提: ハンズオン 1-1〜1-3 はサンドボックスで完走可(無料)。ハンズオン 1-4(予算アラート設定)のみ課金プロジェクト必須(アラート設定自体は無料、課金アカウントの有効化が前提)
BigQuery とは何か — サーバーレス DWH/レイクハウスの正体
BigQuery は Google Cloud が提供する、フルマネージドで AI 対応のデータプラットフォームです。serverless architecture を持つため、サーバーやクラスタのサイジング・容量計画を行わずに、SQL(GoogleSQL)や Python で数千億行規模のデータを分析できます。
「データウェアハウス」という呼び方が定着していますが、実態はロードしたデータだけでなく Cloud Storage 上のファイルまで SQL で横断できる「レイクハウス」に近づいています(外部データの扱いは第 10 章)。本書で繰り返し登場する現行の製品名を整理しておきます。
| 名称 | 位置づけ |
|---|---|
| BigQuery Studio | クエリエディタ・ノートブック・パイプラインを統合したコンソール(本章で詳しく歩きます) |
| BigQuery editions | Standard・Enterprise・Enterprise Plus の 3 段階。容量ベース(スロット時間)課金の土台(第 7 章) |
| Gemini in BigQuery | SQL 生成やデータインサイトなどの AI 支援機能群(第 14 章) |
| BI Engine | インメモリでダッシュボードクエリを高速化するサービス(第 8 章) |
| BigQuery DataFrames | pandas 互換の Python API(第 15 章) |
アーキテクチャの核心 — ストレージとコンピュートの分離
BigQuery を理解する最初の鍵は、ストレージ層とコンピュート層の分離です。読み書きと分析クエリが同じリソースを奪い合いがちな従来型データベースと異なり、BigQuery はストレージとコンピュートを独立にスケールし、Google 社内のペタビット級ネットワークで両者を結びます(公式ドキュメント: 「separation of compute and storage layers lets each layer dynamically allocate resources」)。
ストレージ層はカラムナ(列指向)形式でデータを保持します。行ではなく列ごとにまとめて保存するため、分析クエリが特定の列だけをスキャンする場合に高い効率が出ます(SELECT * を避けるべき理由の 1 つです)。コンピュート層は「スロット」という仮想 CPU 単位で構成され、クエリはジョブ化されたのちステージに分割されて並列実行され、ステージ間の中間データは高速なシャッフルティアでやり取りされます。
BigQuery Studio を歩く
BigQuery Studio は BigQuery のメインコンソールです。左側のペインに Explorer(テーブル・ビュー・ルーティンの操作とジョブ履歴の確認)、Classic Explorer、Files、Repository の各タブがあり、クエリを実行すると Explorer の Job history に履歴が残ります。BigQuery はクエリ・ロード・エクスポート・コピーのたびに自動でジョブを作成・実行するため、いつ何をしたかを後から追跡できます。
クエリエディタでは対話的にクエリを実行でき、実行前に Edit > Query settings から宛先テーブル・ジョブの優先度(対話型かバッチか)・クエリキャッシュの利用可否・maximum bytes billed(課金される最大バイト数の上限)・実行ロケーションを設定できます。特に maximum bytes billed は、大きすぎるクエリを実行前に止める安全弁として第 7 章でも繰り返し使います。
サンドボックスと無料枠、dry run という習慣
BigQuery サンドボックスは、クレジットカード登録や課金アカウント作成なしで BigQuery を体験できるモードです。プロジェクト作成時に課金を有効化しなければ、自動的にサンドボックスとして扱われます。
サンドボックスの無料利用枠は BigQuery の無料枠と同一で、有効ストレージ月 10 GB・処理クエリデータ月 1 TB(2026-08 時点)です。加えて、サンドボックスには機能面の制限があります。
- ストリーミングデータの取り込みは利用不可
- DML(
INSERT/UPDATE/DELETE/MERGE)は利用不可 - BigQuery Data Transfer Service は利用不可
- すべてのデータセットにテーブル有効期限が設定され、テーブル・ビュー・パーティションは作成から 60 日で自動的に失効する
課金プロジェクトへの切り替えは、対象プロジェクトで課金を有効化し BigQuery editions を選ぶだけです。切り替え後は自動失効に頼らず、データセットの既定有効期限を見直すことが推奨されています。
課金プロジェクトのオンデマンドクエリ料金は月 1 TiB まで無料で、超過分は US ロケーションで1 TiB あたり 10.00 米ドル(2026-08 時点)です。ストレージも月 10 GiB まで無料で、以降 1 GiB 時間あたり 0.000031507 米ドル(US マルチリージョン)が加算されます。料金モデルの選び方は第 7 章で扱います。
課金を有効化したら、まず予算アラートを設定してください。Cloud Billing の予算はしきい値(既定で実績支出の 50%・90%・100%)に達すると請求管理者へ通知しますが、支出を自動的に止めるものではありません。停止まで含めた制御はカスタムクォータで行います(第 7 章)。
本書全体を通じて習慣化してほしいのが dry run です。クエリを実行せず検証だけ行う機能で、コンソールのクエリエディタでは有効なクエリに処理予定バイト数付きのチェックマークが、無効なクエリには感嘆符とエラーメッセージが自動表示されます。bq CLI では --dry_run フラグを付けます。
bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
start_station_name,
COUNT(*) AS num_trips
FROM
`bigquery-public-data.new_york.citibike_trips`
GROUP BY
start_station_name'
クエリが妥当であれば、次の形式の応答が返ります。
Query successfully validated. Assuming the tables are not modified,
running this query will process N bytes of data.
N には処理予定バイト数が入ります。この値はスキャン対象列(ここでは start_station_name 列 1 本)の合計サイズで決まり、テーブルの現在の中身に応じて変わります。dry run は何度実行しても無料なので、「実行前に必ずこの値を見る」を習慣にしてください。
クレジットカードなしで BigQuery を使える状態にし、コンソールの基本操作を確認します。所要 5 分・無料(サンドボックス)。
- ブラウザで BigQuery コンソールを開き、Google アカウントで認証します。
- 国を選択して利用規約に同意し、新しいプロジェクトを作成します(課金を有効化しなければ自動的にサンドボックスになります)。
- 左側の Explorer から
bigquery-public-dataを検索し、new_yorkデータセット配下のcitibike_tripsテーブルのスキーマを確認します。 - Explorer の Job history タブを開き、実行履歴が空であることを確認します(次のハンズオンで埋まります)。
クエリエディタと公開データセットにアクセスできる状態になれば完了です。
本書共通の演習用データセットを US ロケーションに作成し、公開データセットへの最初のクエリを dry run で確認してから実行します。所要 10 分・サンドボックスで可・無料枠内(処理量は手順内の dry run で実測します)。
- BigQuery Studio の Explorer でプロジェクトを選び、データセット ID
handson_ch01、ロケーションUS (multiple regions in United States)で演習用データセットを作成します。公開データセットは US マルチリージョンにあり、クエリは同じロケーションでしか実行できないため、本書は演習用データセットを一貫して US に作ります(理由は第 2 章)。 - NYC Citi Bike の乗車データから、出発ステーションごとの利用回数を集計するクエリをクエリエディタに入力します。列を絞り、
SELECT *は使いません。SELECT start_station_name, COUNT(*) AS num_trips FROM `bigquery-public-data.new_york.citibike_trips` GROUP BY start_station_name ORDER BY num_trips DESC LIMIT 10; - 実行する前に、クエリエディタに自動表示されるチェックマークと処理予定バイト数を確認します(dry run の自動表示)。
- Edit > Query settings で宛先テーブルを
handson_ch01.top_stationsに設定してから実行します。
結果には、利用回数が多い順に出発ステーション名トップ 10 が表示されます。Explorer で確認すると handson_ch01.top_stations テーブルも作成されているはずです。
後片付け: このデータセットはハンズオン 1-3 でも使うため、1-3 の末尾でまとめて削除します。
コンソールで作った演習用テーブルに対し、Cloud Shell から bq コマンドで dry run と実行を再現します。所要 10 分・サンドボックスで可・無料枠内。
- Cloud Shell を開き、プロジェクトを設定します。
gcloud config set project PROJECT_ID - 作成済みのリソースを確認します。
bq ls handson_ch01 bq show handson_ch01.top_stationsbq showの出力で、テーブルのスキーマ・行数・保存バイト数を確認できます。 - 1-2 で作った
top_stationsテーブルに対する集計クエリを、まず--dry_runで検証します。bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNT(*) AS num_popular_stations FROM `PROJECT_ID.handson_ch01.top_stations` WHERE num_trips > 1000'「Query successfully validated. Assuming the tables are not modified, running this query will process N bytes of data.」という応答で処理量を確認します。
- 問題なければ
--dry_runを外して実行します。bq query \ --use_legacy_sql=false \ 'SELECT COUNT(*) AS num_popular_stations FROM `PROJECT_ID.handson_ch01.top_stations` WHERE num_trips > 1000'
利用回数が 1,000 回を超えるステーション数が表示されれば成功です。今回実行したクエリジョブは Job history にも記録されています。
後片付け: ハンズオン 1-2・1-3 で作成した演習用データセットをまとめて削除します。
bq rm -r -f -d PROJECT_ID:handson_ch01
課金プロジェクトに切り替えた場合の必須設定です。所要 5 分・課金プロジェクト必須(アラート設定自体は無料)。
- 対象プロジェクトで課金を有効化します(コンソールの通知バナー、または請求関連のメニューから)。
- Cloud Billing コンソールで予算とアラートの管理画面を開き、新しい予算を作成します。
- 予算スコープとして対象プロジェクトを選び、予算額(例: 月 1,000 円)を指定します。
- しきい値ルールを確認します。既定では実績支出の 50%・90%・100% に達すると請求管理者へ通知が届く設定になっています。必要に応じて Pub/Sub 連携を追加すれば、しきい値超過時の自動処理も組めます。
保存すれば設定完了です。しきい値到達で通知メールが届きますが、予算アラートは支出を自動的に止めません。止めたい場合はカスタムクォータ(第 7 章)と組み合わせます。
後片付け: 学習用に一時的に作った予算は、Cloud Billing の予算とアラートの管理画面から削除しておきます。
つまずきポイント
bigquery-public-data は US マルチリージョンにあります。演習用データセットを US 以外(例: asia-northeast1)に作ると、同じクエリで参照できずエラーになります。本書は演習用データセットを常に US に統一します(理由は第 2 章)。
maximum bytes billed も併用し安全弁を二重にしましょう。
理解度チェック
Q1. BigQuery がストレージ層とコンピュート層を分離している最大の利点は何ですか?
ストレージとコンピュートを独立にスケールできる点です。従来型データベースは読み書きと分析処理でリソースを共有しがちですが、BigQuery はネットワークで両層を結び、負荷に応じて別々に拡張します。
Q2. BigQuery サンドボックスで実行できない操作を 2 つ挙げてください。
DML(INSERT / UPDATE / DELETE / MERGE)の実行、ストリーミングデータの取り込み、BigQuery Data Transfer Service の利用のうち 2 つが該当します。
Q3. bq CLI で dry run を行うにはどのフラグを付けますか?また何がわかりますか?
--dry_run フラグです。クエリを実際には実行せず検証だけを行い、テーブルが変更されない前提で処理される見込みのバイト数を確認できます。
Q4. クエリの無料枠(オンデマンド課金)は月にどれだけ処理できますか?
月 1 TiB までの処理データが無料です(2026-08 時点)。それを超えた分は US ロケーションで 1 TiB あたり 10.00 米ドルが課金されます。
Q5.(シナリオ)社内で BigQuery を試したいが、クレジットカード登録の稟議に時間がかかる。想定クエリは公開データセットへの集計で、月間処理量は数百 MB 程度の見込み。最初の一歩として最も適切なのは?
A. 課金アカウントを先に作ってから始める B. クレジットカードなしでプロジェクトを作りサンドボックスとして使い始める C. BigQuery editions を購入してから試す D. ストリーミング取り込みで試験データを流し込む
B。 サンドボックスはクレジットカード不要で、月 1 TB のクエリ処理・月 10 GB のストレージの無料枠がそのまま使え、数百 MB 程度の検証には十分です。A は稟議待ちで本末転倒、C は小規模検証に過剰投資、D はサンドボックス非対応の機能です。
まとめと次章へ
- BigQuery はストレージ層とコンピュート層を分離したサーバーレスのデータプラットフォームで、コンピュートはスロット単位で動的に割り当てられる
- BigQuery Studio の Explorer・クエリエディタ・Job history で、テーブルの探索からクエリ実行・履歴確認までを一通り操作できる
- サンドボックスはクレジットカード不要で、無料枠(クエリ月 1 TiB・ストレージ月 10 GiB 相当)の範囲内かつ DML やストリーミングを使わない検証に向く。60 日で自動失効する点に注意する
- 課金プロジェクトに切り替えたら、予算アラートで支出を監視する(ただし自動停止はしない)
- dry run(コンソールの自動見積もり・bq の
--dry_run)で処理バイト数を確認する習慣は、本書全体で使い続ける
次章では、この章で作った演習用データセットを土台に、リソースモデル(プロジェクト → データセット → テーブル)とロケーションの制約、GoogleSQL のデータ型を扱います。