BigQuery Editionsとオンデマンドの課金を比較: INFORMATION_SCHEMAからコスト試算
IT技術
はじめに
BigQueryのクエリに対する課金は「スキャン量課金(オンデマンド)」と「スロット課金(Editions)」の2種類があります。
どちらを選ぶべきか迷う方のために、過去ジョブ実績からざっくり試算して比較してみました。
この記事では、クエリコストを算出してBigQuery Editionsに切り替えた場合の料金変化を確認します。
また、ここでは本番ワークロードで利用しやすいEnterpriseエディションを例にしています。
料金について
公式ドキュメントには以下のように書かれています。
BigQuery では、クエリの実行用に 2 種類のコンピューティング料金モデルが用意されています。
オンデマンド料金(TiB あたり)。この料金モデルでは、各クエリで処理されたバイト数に基づいて課金されます。処理されるクエリデータは毎月 1 TiB まで無料です。
容量料金(スロット時間単位)。この料金モデルでは、クエリの実行に使用されるコンピューティング容量に応じて課金されます。コンピューティング容量は、スロット(仮想 CPU)単位で時間経過とともに測定されます。この料金モデルでは BigQuery エディションの料金体系の利点を取り入れており、BigQuery オートスケーラーを使用するか、スロット コミットメント(ワークロードに対して常に利用可能な専用の容量)を低額で購入できます。
デフォルトではオンデマンド料金が適用されています。処理対象のデータ容量に対して課金される方式です。クエリ実行前に見積もりが出せます。
一方、容量料金はスロット時間単位(コンピューティング容量)で課金される方式で、BigQuery Editionsを利用する場合に適用されます。
BigQueryスタジオのUIから実行した時に、クエリ結果のジョブ情報のところでデータ容量・スロット時間のどちらの数字も確認できます。

たとえば、上のクエリ結果をもとに料金を計算すると次のように計算できます。
- オンデマンド料金
1処理されたバイト数: 4.92GB (= 4.92 / 1024 = 0.00493TB)
20.00493 (TB) × 7.5 (USD) * 150 (円/USD) = 5.54円- Enterpriseエディション
1スロット時間: 380497ms
20.1056936 (時間) × 0.0765 (USD) * 150 (円/USD) = 1.21円結構違いがありますね。
スキャン容量(処理されるデータ量)に対して複雑なクエリを実行する場合はオンデマンドのほうが安くなり、逆にシンプルなクエリを大量に実行するような場合はEditionのほうが安くなるようです。
INFORMATION_SCHEMAから過去ジョブのコストをざっくり計算しよう
INFORMATION_SCHEMA.JOBS_BY_PROJECT には、過去のクエリ実行に関する情報が格納されています。
この情報をもとにオンデマンド・Editionそれぞれの料金を計算してみましょう。
ここでは東京リージョンを例にし、EditionはEnterpriseエディションのDefault料金、1USDを150円して先月実行されたクエリの料金を計算しています。
1-- 為替レート・Enterprise Editionの料金・オンデマンドの料金
2declare usd_to_yen int64;
3declare slot_1hour_price float64;
4declare ondemand_1tb_price float64;
5set usd_to_yen = 150
6;
7set slot_1hour_price = 0.0765
8;
9set ondemand_1tb_price = 7.5
10;
11select
12 sum(total_slot_ms)
13 / 1000
14 / 60
15 / 60
16 * slot_1hour_price
17 * usd_to_yen as enterprise_cost_yen,
18 sum(total_bytes_billed)
19 / 1024
20 / 1024
21 / 1024
22 / 1024
23 * ondemand_1tb_price
24 * usd_to_yen as ondemand_cost_yen
25
26from `your-project.region-asia-northeast1.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
27where
28 date_trunc(date(creation_time), month)
29 = date_trunc(date_sub(current_date(), interval 1 month), month)
このプロジェクトではオンデマンド料金のほうがすこしだけ安いようだ、ということがわかりました。
まとめ
今回はクエリコストをオンデマンド・Enterpriseエディションそれぞれで計算して比較する方法をまとめてみました。
スロットのコミットメント(年間契約や3年間の確約利用)を利用するとさらにコストを抑えられる場合がありますがベースラインを設定する必要があり複雑なため今回は触れませんでした。
そのようなケースでは一度切り替えてみて様子を見るのも手かもしれません。
BigQuery Editionsは事前にかかるコストを把握したいようなケースや、過剰な料金がかかることを防ぎたいようなケースでも便利です。単にコストだけでなく処理時間やコスト上限なども考慮して切り替えを考えるべきですが、コスト面の調査について参考にしてみてください。
また、ストレージ料金のコストについてはこの記事にまとめました。参考にしてみてください。
2024.11.26BigQueryのストレージ課金モデルBigQueryデータセットのストレージ消費単位もともとは論理バイト単位で課金されていたのですが、2023年7月の料金...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
競馬が好きです。
おすすめ記事

CloudRunのネットワークエラーに遭遇
2025.11.25






