BigQueryの「1日のクエリ上限」に達したときの対処法|使用量の確認と上限設定の手順
BigQueryで生成AI分析やSQLを触りはじめると、多くの人が最初に不安を感じるのが「知らないうちに高額な費用がかかったらどうしよう」という点です。
実はBigQueryには、1日に処理してよいクエリの量に上限を設けて、それを超えたら自動でクエリを止める「安全装置」が用意されています。この記事では、
- いま自分がどれくらいクエリ処理量を使っているかを確認する方法
- 「1日の上限」を自分で設定・変更する手順
を、はじめての方でも迷わないように順番に解説します。上限値は、「1日あたり最大でも約1ドルに抑える」設定 に合わせて説明します。
そもそもBigQueryの費用はどう決まる?
BigQueryの費用は、大きく次の2つで構成されています。
- クエリ(SQL文)の処理に対する費用
- 保存するデータに対する費用
多くの人が心配するのは(1)のクエリ処理の費用です。これは「クエリ実行時にスキャン(処理)したデータ量」に応じて課金される、いわゆるオンデマンド料金です。
ポイントは次の2つです。
- オンデマンド料金の単価は、1 TiB(テビバイト)あたり 6.25米ドル(US地域の標準単価。リージョンにより多少異なります)。
- さらに、毎月1 TiB分のクエリ処理は無料枠として付いています。
つまり、普段の分析でスキャンするデータ量はごくわずかなことが多く、無料枠に収まるケースも珍しくありません。それでも「設定ミスや巨大なクエリで一気に費用がかさむ事故」を防ぐために、上限を決めておくと安心です。
なぜ「1日のクエリ上限」に達するのか
BigQueryのプロジェクトには、「Query usage per day(1日あたりのクエリ使用量)」というカスタムクエリの割り当て(クォータ) が存在します。
- デフォルトは 200 TiB/日(=209,715,200 MiB)に設定されています。
- この割り当てはプロアクティブ(事前防御型)で、たとえば上限を10 TBに設定していると、11 TBを処理するクエリはそもそも実行できません(実行前にブロックされます)。
- 上限は毎日午前0時(太平洋時間)にリセットされます。
「1日のクエリ上限に達した」というエラーが出た場合、次のどちらかが原因です。
- デフォルトの200 TiB/日に達した(大量スキャンのクエリを繰り返した場合など)
- コスト管理のために自分で低い値を設定していて、そこに達した(例:後述の0.16 TiB/日など)
まずは今の使用量と設定値を確認しましょう。
① 現在のクエリ使用量を確認する方法
現在の上限と使用状況は、Google Cloud コンソールの割り当て画面で手軽に確認できます。
- Google Cloud コンソールで 「IAMと管理」→「割り当てとシステムの上限(Quotas & System Limits)」 を開きます。(URL:
https://console.cloud.google.com/iam-admin/quotas) - 画面上部のフィルタで「名前:Query usage per day」を指定します。
- 表示された行で、サービス「BigQuery API」/項目「Query usage per day」/値(上限)/現在の使用率 を確認できます。
ここで「値」が 209,715,200 MiB(200 TiB) になっていれば、まだデフォルトのままです。もっと小さな値になっていれば、過去に自分で上限を設定しています。現在の使用率もこの画面で分かるので、「あとどれくらい余裕があるか」を把握できます。
② 1日の上限(カスタムクエリの割り当て)を設定・変更する手順
ここからが本題です。「1日あたり最大でも約1ドルに抑えたい」場合の設定を行います。
なぜ「0.16 TiB」なのか
単価は 1 TiB あたり 6.25米ドルなので、
0.16 TiB × 6.25ドル = 約1ドル
となります。つまり上限を 0.16 TiB/日 にしておけば、1日あたり最大でも約1ドル、31日フル稼働しても月間最大で約31ドル を超えないように抑えられます(実際には毎月1 TiBの無料枠があるため、これより安くなるのが通常です)。
設定手順
- Google Cloud コンソールで 「IAMと管理」→「割り当てとシステムの上限」 を開きます。
- フィルタで サービス「BigQuery API」、名前「Query usage per day」 を選択します。
- 対象の行にチェックを入れ、ツールバーの 「割り当てを編集」 をクリックします。
- 「割り当ての編集」パネルが開きます。現在の値が 209,715,200 MiB(200 TiB) と表示されます。
- 「新しい値」に
0.16を入力し、単位のプルダウンで 「TiB」 を選択します(「Unlimited」のチェックは外したままにします)。 - 「完了」 をクリックし、続けて 「リクエストを送信」 をクリックします。
これで設定は完了です。上限を引き下げる場合は数分で反映されます。
⚠️ 注意:デフォルト(200 TiB)よりも高い値に引き上げる場合は、Google側(サービスプロバイダ)の承認が必要になり、即時には反映されません(画面上も「値が200 TiBを超える場合は承認が必要」と案内されます)。また、この操作には
serviceusage.quotas.update権限(roles/servicemanagement.quotaAdminロール)が必要です。
プロジェクト単位とユーザー単位
- Query usage per day:プロジェクト全体(そのプロジェクト内の全ユーザーの合計)の1日の処理量を制限します。
- Query usage per day per user:ユーザー1人あたりの1日の処理量を制限します。
チームで使う場合は、プロジェクト単位に加えてユーザー単位の割り当ても検討すると、特定の1人の巨大クエリが全体の上限を食い尽くすのを防げます。
あわせて設定したい「予算とアラート」
カスタムクエリの割り当て(カスタムクォータ)とは別に、「予算とアラート」 も設定できます。月額の予算を決めておき、一定額に近づいたらアラートメールを送る仕組みです。
2つは役割が違うので、併用するのがおすすめです。
| 機能 | カスタムクォータ | 予算アラート |
|---|---|---|
| 監視の対象 | クエリのスキャンデータ量(TiB) | 発生した実際の利用料金(金額) |
| 制御の単位 | プロジェクトごと(プロジェクト/ユーザーごとも可) | 請求先アカウント/プロジェクトごと |
| 上限時の挙動 | クエリを強制的に失敗(停止)させる | メール等で通知するのみ(停止はしない) |
| 主な用途 | 巨大クエリによる突発的な事故を防ぐ | 月の予算内に全体の支出を収める |
なお、予算とアラートは請求先アカウント(Cloud Billing アカウント)に対して作成するのが基本です。そのうえで、スコープを「請求先アカウント全体」だけでなく、「特定のプロジェクト(複数可)/フォルダ/組織」「特定のサービス(例:BigQueryだけ)」「特定のラベルが付いたリソース」に絞り込むこともできます。一方のカスタムクエリの割り当ては、プロジェクト単位(希望すればユーザー単位でも)で設定します。
カスタムクォータは「事故を物理的に止める」ブレーキ、予算アラートは「支出の見通しを知らせる」メーター、というイメージです。両方かけておけば、より安心してBigQueryを使えます。
まとめ
- BigQueryのクエリ費用は「スキャンしたデータ量 × 単価(1 TiBあたり約6.25ドル)」。毎月1 TiBは無料。
- 1日の上限は 「Query usage per day」というカスタムクエリの割り当てで、デフォルトは 200 TiB/日。
- 現在の使用量は、コンソールの割り当て画面(Query usage per day の使用率)で確認できる。
- 1日あたり約1ドルに抑えるなら、上限を 0.16 TiB/日 に設定する(引き下げは数分で反映/引き上げは承認が必要)。
- さらに 「予算とアラート」を併用すれば、事故防止と支出管理の両面で安心。
「変なことをしたら法外な費用がかかるかも」という不安は、この安全装置を一度セットしておけば大きく減らせます。まずは上限を設定して、安心してBigQueryを触ってみてください。
参考・出典
- BigQuery pricing(Google Cloud 公式)
- カスタムクエリの割り当てを作成する(Google Cloud 公式ドキュメント)
- 割り当てとシステムの上限(Google Cloud コンソール)

