Contents
1. BigQuery の料金構成(2024 年版)
| カテゴリ | 主な課金対象 | 代表単価 (USD)※ | 備考 |
|---|---|---|---|
| ストレージ | アクティブストレージ (90日未満) ロングタームストレージ (365日以上) |
$0.02 / GB‑month(アクティブ) $0.01 / GB‑month(ロングターム) |
公式料金ページの最新値を使用 |
| オンデマンド クエリ | データスキャン量 (TB) | $5.00 / TB | スキャンバイトは自動集計 |
| フラットレート スロット | コミットメント数(例:100、500) | 例: 100 スロット → $2,000 / 月 500 スロット → $9,800 / 月 |
スロットは処理能力の固定費 |
| ストリーミング挿入 | 挿入データ量 (GB) | $0.01 / GB | リアルタイム書き込み時のみ課金 |
| BI Engine | メモリ容量 (GB‑hour) | $0.25 / GB‑hour | ダッシュボード高速化向けオンデマンド課金 |
※単価は 2024 年 4 月時点の公式ページ(BigQuery の料金)から取得しています。Google Cloud Pricing Calculator は常に最新為替レートで JPY に換算します。
1‑1. 為替レートについての注意点
テーブル中の「日本円換算例」は 参考値(例: 1 USD = 150 JPY)です。実際の見積もりは Calculator がリアルタイムで取得する為替レートを使用します。
推奨運用:料金単価や為替レートが変わったら必ず
cloudbilling.googleapis.comのカタログ API で最新情報を取得し、社内スプレッドシートや自動化スクリプトに反映させましょう。
2. Google Cloud Pricing Calculator の使い方
2‑1. UI での手順(日本円表示設定含む)
| 手順 | 操作内容 |
|---|---|
| 1 | https://cloud.google.com/products/calculator?hl=ja にアクセス |
| 2 | 右上の Currency ドロップダウンから Japanese Yen (JPY) を選択 |
| 3 | 「Add estimate」 → BigQuery を選択し、各課金項目に実績値を入力 |
入力例(参考)
| 項目 | 入力値 | UI の設定場所 |
|---|---|---|
| アクティブストレージ | 1,200 GB | BigQuery → Storage (Active) |
| ロングタームストレージ | 800 GB | 同上、Long‑term storage |
| オンデマンドクエリ | 12 TB スキャン | Analysis → On‑Demand Query |
| フラットレートスロット | 100 スロット (1 ヶ月) | Flat‑Rate Slots → Number of slots |
| ストリーミング挿入 | 250 GB/月 | Streaming Inserts |
| BI Engine | 15 GB メモリ × 120 h | BI Engine → Memory (GB) と Hours per month |
ポイント:Calculator は入力ごとに単価を自動取得し、合計金額・項目別内訳をリアルタイムで表示します。為替レートは UI の右上にある「Currency」設定に依存するため、常に JPY が選択されているか確認してください。
2‑2. 見積もり結果の活用
- 合計金額:月間概算費用(JPY)
- 割引・クレジット:無料トライアルやプロモーションは下部に表示され、実際請求額から差し引かれます。
- エクスポート:CSV/JSON でダウンロード可能なので、社内承認フローや予算策定資料へそのまま貼り付けられます。
3. REST API による自動見積もり
3‑1. 正しいエンドポイントとリクエスト構造
|
1 2 3 4 |
POST https://cloudbilling.googleapis.com/v1/services/{serviceId}:estimateCost Authorization: Bearer <ACCESS_TOKEN> Content-Type: application/json |
- {serviceId} は
bigquery(固定) - 返却は
EstimateCostResponseにcost,currencyCode,skuCostEstimates[]が含まれます
3‑2. SKU ID の取得方法
SKU ID は手書きで覚えるのはミスが起きやすいので、Cloud Billing Catalog API を利用して動的に取得します。
|
1 2 3 4 |
# 例: BigQuery の全 SKU をリストアップ curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://cloudbilling.googleapis.com/v1/services/bigquery/skus |
取得した JSON から skuId と pricingInfo.unitPrice.nanos(単価)を抽出し、見積もりリクエストに組み込みます。
注意:SKU ID は予告なく変更される可能性があります。スクリプト実行時に必ず最新カタログを参照してください。
3‑3. Python サンプル(Google Auth ライブラリ使用)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import json, google.auth from google.auth.transport.requests import AuthorizedSession # 認証取得 credentials, _ = google.auth.default( scopes=["https://www.googleapis.com/auth/cloud-billing"] ) session = AuthorizedSession(credentials) # 料金見積もりペイロード(例: アクティブストレージ 1TB、オンデマンド 5TB) payload = { "serviceId": "bigquery", "skuQuantities": [ {"skuId": "SKU_ID_STORAGE_ACTIVE", "quantity": 1000, "unit": "GB"}, {"skuId": "SKU_ID_ON_DEMAND_QUERY", "quantity": 5, "unit": "TB"}, # 必要に応じて他 SKU を追加 ], "currencyCode": "JPY" } resp = session.post( "https://cloudbilling.googleapis.com/v1/services/bigquery:estimateCost", json=payload ) print(json.dumps(resp.json(), indent=2, ensure_ascii=False)) |
代表的なレスポンス例
|
1 2 3 4 5 6 7 8 9 |
{ "cost": "452300", "currencyCode": "JPY", "skuCostEstimates": [ {"skuId":"SKU_ID_STORAGE_ACTIVE","cost":"300000"}, {"skuId":"SKU_ID_ON_DEMAND_QUERY","cost":"152300"} ] } |
costが 月間概算金額(JPY)skuCostEstimates[]に項目別内訳が格納され、レポートやアラートに活用可能です。
4. BigQuery 内部 SQL で過去ジョブの費用を再計算
4‑1. INFORMATION_SCHEMA の利用例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-- 過去30日間のジョブ実績と USD → JPY 換算(レートは外部変数で管理) DECLARE usd_to_jpy FLOAT64 DEFAULT 150; -- 必要に応じて更新 SELECT job_id, creation_time, total_bytes_processed / (1024*1024*1024) AS processed_gb, total_bytes_processed / (1024*1024*1024*1024) AS processed_tb, job_cost, -- USD 表示 job_cost * usd_to_jpy AS cost_jpy FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE project_id = @project_id AND creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY) AND CURRENT_TIMESTAMP() AND state = 'DONE'; |
job_costは USD(Google が内部で計算)- 為替レートは Cloud Billing Calculator の現在レートと同一に保つことが望ましいので、スクリプト実行前に
usd_to_jpyを取得し直す。
4‑2. 集計クエリ例(月次コストの概算)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
DECLARE usd_to_jpy FLOAT64 DEFAULT (SELECT exchange_rate FROM `my_dataset`.exchange_rates WHERE currency='JPY' ORDER BY ts DESC LIMIT 1); WITH recent AS ( SELECT job_cost * usd_to_jpy AS cost_jpy, total_bytes_processed FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE project_id = @project_id AND creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP() AND state = 'DONE' ) SELECT COUNT(*) AS job_cnt, SUM(total_bytes_processed) / (1024*1024*1024) AS total_gb_scanned, ROUND(SUM(cost_jpy), 0) AS total_cost_jpy FROM recent; |
この結果を基に「1 TB のスキャンが自社で何円になるか」をシナリオ別に試算できます。
5. コスト最適化ベストプラクティス
| 手法 | 効果の目安 | 実装ポイント |
|---|---|---|
| パーティション(日付) | スキャン量平均 30 % 削減 | テーブル作成時に PARTITION BY DATE(timestamp) を指定 |
| クラスタリング(頻出フィルタ列) | 追加 10‑20 % 削減 | CLUSTER BY column1, column2 を併用 |
| クエリキャッシュ活用 | 同一結果はスキャンゼロ | キャッシュヒット率が高い場合はオンデマンド課金不要 |
| フラットレートへの切替基準 | 月間スキャン ≥ 2 TB → スロット 500 で約 30 % 削減 | 過去 30 日の平均スキャン量を Cloud Monitoring で監視 |
| 自動アラート | コスト超過防止 | Cloud Billing Export + Cloud Monitoring の予算アラート設定 |
5‑1. 定期的なモニタリングとレポーティング
- Billing Export を有効化 →
cloud_billing_export_v1_テーブルに課金データが毎日流入 - スケジュールクエリで月次集計(例は下記)を作成し、Looker Studio に接続
|
1 2 3 4 5 6 7 8 9 10 |
SELECT EXTRACT(YEAR FROM usage_start_time) AS year, EXTRACT(MONTH FROM usage_start_time) AS month, sku.description AS sku_name, SUM(cost) * (SELECT exchange_rate FROM `my_dataset`.exchange_rates WHERE currency='JPY' ORDER BY ts DESC LIMIT 1) AS cost_jpy FROM `billing-project`.cloud_billing_export_v1_* WHERE service.id = '6F81-5844-4567' -- BigQuery のサービス ID GROUP BY year, month, sku_name ORDER BY year DESC, month DESC; |
- 予算アラート:Cloud Monitoring → 「Billing Budget」→ 80 % 超過時に Slack/メール通知
6. まとめ(要点)
- 料金構成は5要素(ストレージ・オンデマンドクエリ・フラットレートスロット・ストリーミング挿入・BI Engine)で、単価は公式ページの最新値を使用。
- Pricing Calculator は UI でも API でも日本円換算が可能。為替レートはリアルタイム取得なので、テーブル中の「参考換算」はあくまで例示です。
- REST API を利用すれば見積もりを自動化できるが、SKU ID と単価は必ず Cloud Billing Catalog API で最新情報を取得すること。
- INFORMATION_SCHEMA に蓄積されたジョブ実績から SQL だけで費用再計算・シナリオテストが可能。為替レートは外部テーブル等で定期更新してください。
- 最適化策(パーティション、クラスタリング、キャッシュ活用)と フラットレート切替基準 を組み合わせることで、オンデマンド課金と固定費のバランスを客観的に判断できる。
- 定期モニタリング:Billing Export + スケジュールクエリ + Cloud Monitoring の予算アラートで継続的なコスト最適化を実現。
次のアクション
- 本稿のスクリプトと SQL を社内リポジトリに保存し、月初に為替レートと SKU カタログを自動取得する CI ジョブを作成。
- 主要プロジェクトごとに「オンデマンド vs フラットレート」シミュレーションを実施し、コスト削減の意思決定材料として活用してください。
本稿は執筆時点(2024 年 4 月)の情報に基づいています。Google Cloud の料金体系や為替レートは随時変更されるため、公式ドキュメントと API による最新取得を必ず行ってください。