BigQuery の料金

BigQuery はサーバーレスなデータ分析プラットフォームです。BigQuery を使用するために個々のインスタンスまたは仮想マシンをプロビジョニングする必要はありません。その代わりに、BigQuery は必要に応じて自動的にコンピューティング リソースを割り当てます。コンピューティング容量は、仮想 CPU を表すスロットの形式で事前に予約することもできます。BigQuery の料金体系はこの設計を反映しています。

BigQuery の料金の概要

BigQuery の料金には次の 2 つの主要な要素があります。

  • 分析料金は、クエリの処理にかかる費用です。SQL クエリ、ユーザー定義関数、スクリプト、テーブルをスキャンする特定のデータ操作言語(DML)とデータ定義言語(DDL)のステートメントなどが含まれます。

  • ストレージ料金は、BigQuery に読み込むデータを保存する費用です。

また、ストリーミング挿入や BigQuery Storage API の使用など、他の特定のオペレーションに対して課金されます。詳細については、データ取り込みの料金データ抽出の料金をご覧ください。

さらに、BigQuery には無料のオペレーション無料枠が用意されています。

作成する各プロジェクトには、請求先アカウントが関連付けられます。プロジェクトで実行されている BigQuery ジョブによって発生する費用は、関連付けられている請求先アカウントに請求されます。BigQuery のストレージ料金も、関連付けられている請求先アカウントに請求されます。 BigQuery の費用と傾向は、Cloud Console の Cloud Billing レポートページで確認できます。

分析料金モデル

BigQuery では、クエリ実行用の次の 2 種類の料金モデルが用意されています。

  • オンデマンド料金. この料金モデルでは、各クエリによって処理されたバイト数に基づいて課金されます。処理されるクエリデータは毎月 1 TB まで無料です。

  • 定額料金. この料金モデルでは、仮想 CPU であるスロットを購入します。スロットを購入すると、クエリの実行に使用できる専用の処理容量を購入したことになります。スロットは次のコミットメント プランで使用できます。

    • Flex Slots: 最初の 60 秒分のコミットメントを購入します。
    • 月間: 最初の 30 日分のコミットメントを購入します。
    • 年間: 365 日分のコミットメントを購入します。

    月間プランと年間プランでは、長期的な容量コミットメントと引き換えに割引が適用されます。

ニーズに合わせて両方のモデルを組み合わせることもできます。オンデマンド料金では、実際に使用した分だけを支払います。ただし、クエリはスロットの共有プールを使用して実行されるため、パフォーマンスは変わる可能性があります。定額料金では、長期的なコミットメントのために割引価格で保証された容量を購入します。自社のワークロードに適した料金の選択について詳しくは、Reservations を使用したワークロード管理をご覧ください。

オンデマンド分析の料金

デフォルトでは、クエリの料金はオンデマンド料金モデルを使用して請求されます。

オンデマンド料金では、BigQuery は、処理されたバイト数(読み取りバイト数とも呼ばれる)に基づいて課金します。データを BigQuery に保存するか、Cloud Storage、ドライブ、Cloud Bigtable などの外部データソースに保存するかに関係なく、処理されたバイト数に基づいて料金が請求されます。オンデマンド料金は、使用量のみに基づいて計算されます。

オンデマンド クエリの料金は次のとおりです。

大容量をご利用のお客様は、毎月の費用が一定の定額料金もご利用いただけます。

料金の詳細

オンデマンド クエリの料金については、次の点に注意してください。

  • BigQuery ではカラム型データ構造が使用されています。選択した列で処理されたデータの合計容量に応じて課金されます。列ごとの合計データは、その列のデータ型に基づいて計算されます。データサイズの計算方法の詳細についてはデータサイズの計算をご覧ください。
  • エラーが返されたクエリまたはキャッシュから結果が取得されたクエリに対しては料金が発生しません。 スクリプト ジョブでは、これと同じことがステートメント単位で考慮されます。
  • 料金は MB 単位のデータ処理容量(端数は四捨五入)で決まります。クエリが参照するテーブルあたりのデータ最小処理容量は 10 MB、クエリあたりのデータ最小処理容量は 10 MB とします。
  • 実行中のクエリジョブをキャンセルすると、そのクエリが完了した場合に発生する料金が全額課金される可能性があります。
  • クエリを実行するときは、結果に LIMIT を明示的に設定している場合でも、選択した列にある処理されたデータに応じて課金されます。
  • テーブルのパーティショニングクラスタ化により、クエリで処理されるデータ量を削減できます。ベスト プラクティスとして、可能な限りパーティショニングとクラスタ化を行ってください。
  • オンデマンド クエリの料金は、Google Cloud SKU ページに分析料金として記載されています。
  • クラスタ化テーブルにクエリを実行するときに、そのクエリにクラスタ化された列のフィルタが含まれている場合、BigQuery はフィルタ式を使用して、クエリでスキャンされたブロックをプルーニングします。これにより、スキャンされるバイト数を減らすことができます。
  • 外部データソースに対してクエリを実行する場合、クエリによって読み取られたバイト数に基づいて料金が請求されます。外部データが Cloud Storage などの別の Google Cloud プロダクトに保存されている場合は、そのプロダクトのストレージ料金も適用されます。詳細については、Google Cloud の料金をご覧ください。

BigQuery のコスト管理メカニズムを使用すると、クエリ料金に上限を設定できます。設定には次の方法があります。

処理されるバイト数を計算する方法の詳細な例については、クエリサイズの計算をご覧ください。

定額料金

BigQuery では、処理データの TB あたりオンデマンド料金よりもクエリの固定料金をご希望のお客様向けに定額料金をご用意しています。

定額料金を有効にするには、BigQuery Reservations を使用します。

定額料金プランに加入する場合は、専用のクエリ処理容量(BigQuery スロットの割り当て数)を購入します。クエリでこの容量を使用しても、処理されたバイト数に対しては請求されません。容量の需要がコミット済み容量を超過すると、BigQuery はスロットをキューに入れます。追加の料金はかかりません。BigQuery がクエリ処理でスロットをどのように活用しているかについては、スロットをご覧ください。

定額料金

  • BigQuery ML、DML、DDL ステートメントなどのクエリ費用に適用されます。
  • ストレージ費用や BI Engine コストには適用されません。
  • 購入した容量はリージョン リソースとなります。あるリージョンまたはマルチリージョンで購入したスロット コミットメントは、別のリージョンまたはマルチリージョンで使用することも、移行することもできません。
  • プロジェクトあたりの同時割り当て数を増やすことができます。Google Cloud サポートにお問い合わせください。
  • コミットメントは秒単位、月額、年額からお選びいただけます。
  • 組織全体での共有が可能です。プロジェクトごとにスロット コミットメントを購入する必要はありません。
  • 最小スロット数は 100 で、100 スロット単位で購入可能です。
  • コミットメントをキャンセルするまで、秒単位で課金されます。このキャンセルはコミットメント終了日以降はいつでも行えます。

月定額契約

次の表に、月間スロット コミットメントの費用を記載します。 詳しくは、月間コミットメントをご覧ください。

年定額契約

次の表に、年間スロット コミットメントの費用を記載します。 詳細については、年間コミットメントをご覧ください。

Flex Slots: 短期間のコミットメント

Flex Slots は特殊なコミットメント タイプです。

  • コミット期間は 60 秒のみです。
  • その後はいつでも Flex Slots をキャンセルできます。
  • コミットメントがデプロイされた期間に対してのみ、秒単位で課金されます。

Flex Slots は容量の可用性の影響を受けます。Flex Slots を購入しようとするとき、その購入が確実に成功するとは限りません。ただし、コミットメントの購入が成功すると、確保した容量はキャンセルするまで保証されます。詳細については、Flex Slots をご覧ください。

次の表に、Flex Slots コミットメントの費用を記載します。

ストレージの料金

ストレージ料金は、BigQuery に読み込むデータを保存する費用です。アクティブ ストレージ長期ストレージのお支払いが発生します。

  • アクティブ ストレージには、過去 90 日間で変更されたテーブルまたはテーブル パーティションが含まれます。

  • 長期保存には、90 日間連続して変更されていないテーブルまたはテーブル パーティションが含まれます。そのテーブルのストレージの料金は自動的に約 50% 値引きされます。アクティブ ストレージと長期保存のパフォーマンス、耐久性、可用性に違いはありません。

ストレージは毎月 10 GB まで無料です。

料金の詳細

ストレージの料金は、テーブルに格納されているデータの量(非圧縮状態でのデータ量)に基づいて計算されます。データのサイズは、個々の列のデータ型に基づいて計算されます。データサイズの計算方法の詳細については、データサイズの計算をご覧ください。

ストレージの料金は、MB あたり、秒あたりで案分されます。例を示します。

  • 100 MB を半月格納した場合、支払い額は $0.001(1/10 セント)です
  • 500 GB を半月格納した場合、支払い額は $5 です
  • 1 TB を 1 か月格納した場合、支払い額は $20 です

ストレージの使用量はギガバイト(GB)単位で計算されます。1 GB は 230バイトで、ギビバイト(GiB)ともいいます。同様に、1 TB は 240 バイト(1,024 GB)です。

テーブルが 90 日間連続して編集されていない場合、長期保存レートで請求されます。テーブルを長期にわたって保存していても、パフォーマンス、耐久性、可用性などの各種機能性が損なわれることはありません。

分割テーブルの各パーティションは、長期保存の料金がそれぞれに適用されます。90 日間変更されなかったパーティションのデータは長期保存の料金の対象となり、割引価格で課金されます。

そのテーブルを編集すると、価格は通常のストレージ価格に戻り、90 日間の無編集日数計数タイマーがゼロから始まります。次のようなテーブルのデータを変更する操作を行った時点で、このタイマーはリセットされます。

操作 詳細
テーブルへのデータの読み込み 宛先テーブルへのデータの追加や、宛先テーブルの上書きを行う読み込みまたはクエリジョブ。
テーブルへのデータのコピー 宛先テーブルへのデータの追加や、宛先テーブルの上書きを行うコピージョブ。
テーブルへのクエリ結果の書き込み 宛先テーブルへのデータの追加や、宛先テーブルの上書きを行うクエリジョブ。
データ操作言語(DML)の使用 DML ステートメントによるテーブルデータの変更。
データ定義言語(DDL)の使用 CREATE OR REPLACE TABLE ステートメントによるテーブルの置換。
テーブルへのデータのストリーミング tabledata.insertAll API 呼び出しを使用するデータの取り込み。

上記以外の次のような操作では、タイマーはリセットされません。

  • テーブルのクエリ
  • テーブルクエリのビューの作成
  • テーブルからのデータのエクスポート
  • テーブルのコピー(別の宛先テーブルへ)
  • テーブル リソースのパッチ適用または更新

請求期間内に 90 日間のしきい値に達したテーブルの料金は、日割りで計算されます。

長期保存の料金が適用されるのは BigQuery ストレージのみです。Cloud Bigtable、Cloud Storage、ドライブなどの外部データソースには適用されません。

データサイズの計算

BigQuery にデータを読み込むとき、またはデータのクエリを実行するときに、データサイズに応じて料金が発生します。データサイズは、各列のデータ型のサイズに基づいて計算されます。

保存されたデータのサイズとクエリで処理されたデータのサイズは、ギガバイト(GB)単位で計算されます。1 GB は 230 バイトで、ギビバイト(GiB)ともいいます。同様に、1 TB は 240 バイト(1,024 GB)です。

BigQuery のデータ型のサイズは次のとおりです。

データ型 サイズ
INT64/INTEGER 8 バイト
FLOAT64/FLOAT 8 バイト
NUMERIC 16 バイト
BIGNUMERIC 32 バイト
BOOL/BOOLEAN 1 バイト
STRING 2 バイト + UTF-8 エンコードされた文字列のサイズ
BYTES 2 バイト + 値のバイト数
DATE 8 バイト
DATETIME 8 バイト
TIME 8 バイト
TIMESTAMP 8 バイト
INTERVAL 16 バイト
STRUCT/RECORD 0 バイト + 含まれているフィールドのサイズ
GEOGRAPHY 16 バイト + 24 バイト × GEOGRAPHY 型の頂点の数。頂点の数を確認するには、ST_NumPoints 関数を使用します。

どのデータ型でも、null 値は 0 バイトとして計算されます。

繰り返し列は配列として格納され、サイズは値の個数に基づいて計算されます。たとえば、整数列(INT64)で繰り返しがあり(ARRAY<INT64>)、4 個のエントリを含む場合、32 バイト(4 エントリ × 8 バイト)として計算されます。

データ取り込みの料金

BigQuery には次の 2 種類のデータ取り込みモードがあります。

  • バッチ読み込み. 単一のバッチ オペレーションでソースデータを 1 つ以上の BigQuery テーブルに読み込みます。

  • ストリーミング。一度に 1 レコードずつ、または小さいバッチ単位でデータをストリーミングします。

選択するモードの詳細については、データの読み込みの概要をご覧ください。

料金の詳細

デフォルトでは、クラウド ストレージから、またはローカル ファイルから BigQuery にデータを一括で読み込んでも料金は発生しません。デフォルトでは、読み込みジョブはスロットの共有プールを使用します。BigQuery は、この共有プールの使用可能容量や、表示されるスループットを保証しません。または、読み込みジョブを実行するための専用スロットを購入することもできます。専用スロットを購入すると、定額料金が発生します。読み込みジョブは、予約に割り当てられると無料のプールにアクセスできなくなります。詳しくは、割り当てをご覧ください。

BigQuery に読み込んだデータは、BigQuery のストレージの料金の対象となります。Cloud Storage からデータを読み込む場合は、Cloud Storage へのデータの保存に対して料金が発生します。詳細については、Cloud Storage の料金ページのデータ ストレージをご覧ください。

ターゲット データセットが US マルチリージョンに配置されている場合、他のリージョンの Cloud Storage バケットからの読み込み時にネットワーク(下り、外向き)トラフィックに対して課金されません。詳しくは、ロケーションに関する留意事項をご覧ください。

データ抽出の料金

BigQuery には次の 2 種類のデータ抽出モードがあります。

  • バッチ エクスポート。テーブルデータを Cloud Storage にエクスポートします。

  • ストリーミング読み取り。Storage Read API を使用して、テーブルデータをストリーミング読み取りします。

料金の詳細

データのエクスポート

デフォルトでは、BigQuery からのデータのエクスポートに対しては課金されません。デフォルトでは、エクスポート ジョブはスロットの共有プールを使用します。BigQuery は、この共有プールの使用可能容量や、表示されるスループットを保証しません。または、エクスポート ジョブを実行するための専用スロットを購入することもできます。専用スロットを購入すると、定額料金が発生します。エクスポート ジョブは、予約に割り当てられると無料のプールにアクセスできなくなります。詳しくは、割り当てをご覧ください。

Storage Read API の料金

Storage Read API にはオンデマンド料金モデルがあります。読み取ったデータに対して料金が発生します。定額料金に登録されているお客様は、Storage Read API を使用して、請求先アカウントごとに 1 か月あたり最大 300 TB のデータを無料で読み取ることができます。1 か月あたりの読み取りが 300 TB を超えた場合は、オンデマンド料金で課金されます。

オンデマンド料金では、Storage Read API は ReadRows の呼び出しによって BigQuery ストレージから読み取ったバイト数に基づいて料金を課金します。

読み取られたバイト数には、フィルタリングのために使用されたものの、ReadRows からの出力としては返されないデータが含まれます。一時テーブルから読み取られたデータには課金されません。

Storage Read API の料金については、次の点に注意してください。

  • 課金は読み取られた合計データ量に基づいて行われます。1 列あたりの読み取られた合計データ量は、列内のデータ型に基づいて計算され、データのサイズは列のデータ型に基づいて計算されます。データサイズの計算方法の詳細については、データサイズの計算をご覧ください。
  • ReadRows の呼び出しが失敗した場合でも、読み取りセッションで読み取られたデータに対して料金が発生します。
  • ストリームの終わりに達する前に ReadRows の呼び出しをキャンセルした場合、キャンセル前に読み取られたデータに対して料金が発生します。ReadRows の呼び出しをキャンセルする前に読み取られたものの返されていないデータが、請求金額に含まれる可能性があります。
  • ベスト プラクティスとして、可能な限りパーティション分割テーブルやクラスタ化テーブルを使用してください。WHERE 句を使用してパーティションをプルーニングすることによって、読み取るデータ量を減らすことが可能です。詳細については、パーティション分割テーブルのクエリをご覧ください。
  • Storage Read API は Google Cloud の無料枠に含まれません。

無料のオペレーション

次の BigQuery オペレーションは、どのロケーションでも無料でご利用いただけます。これらのオペレーションには割り当てと上限が適用されます。

オペレーション 詳細
データの読み込み 共有スロットプールの使用は無料。定額料金を選択すると、保証された容量を獲得できます。データが BigQuery に読み込まれると、ストレージの料金が発生します。詳細については、データ取り込みの料金をご覧ください。
データのコピー テーブルのコピーは無料ですが、新しいテーブルやコピーしたテーブルの保存には料金が発生します。詳しくは、既存のテーブルのコピーをご覧ください。
データのエクスポート 共有スロットプールの使用は無料ですが、Cloud Storage へのデータの保存に対して料金が発生します。詳細については、データのエクスポートをご覧ください。
データセットの削除 データセットの削除は無料です。
テーブル、ビュー、パーティション、関数の削除 テーブルの削除、ビューの削除、個々のテーブル パーティションの削除、ユーザー定義関数の削除は無料です。
メタデータ オペレーション list、get、patch、update、delete の呼び出しは無料です。たとえば、データセットの一覧取得、データセットのアクセス制御リストの更新、テーブルの説明文の更新、データセット内のユーザー定義関数の一覧取得などが該当します(ただし、これらに限定されません)。
疑似列の読み取り 次の疑似列の内容を照会しても料金はかかりません。

_TABLE_SUFFIX
_PARTITIONDATE
_PARTITIONTIME
_FILE_NAME
メタテーブルの読み取り 次のメタテーブルのコンテンツに対するクエリは無料です。

__PARTITIONS_SUMMARY__
__TABLES_SUMMARY__
ユーザー定義関数(UDF) 永続的な UDF の作成、置換、呼び出しは無料です。

無料枠

Google Cloud の無料枠の一部として、BigQuery では特定の上限まで無料でリソースを使用できるようになっています。これらの無料使用量上限は、無料トライアル期間中だけでなく、期間終了後も適用されます。使用量上限を超え、かつ無料トライアル期間を過ぎている場合は、このページで説明する料金体系に沿って課金されます。

リソース 1 か月あたりの無料使用量上限 詳細
ストレージ 毎月 10 GB まで無料。 BigQuery に格納されている BigQuery ML モデルとトレーニング データは BigQuery ストレージの無料枠に含まれます。
クエリ(分析) 処理されるクエリデータは毎月 1 TB まで無料。

BigQuery ML の予測関数、検査関数、評価関数を使用するクエリは BigQuery 分析の無料枠に含まれます。CREATE MODEL ステートメントを使用する BigQuery ML クエリは無料枠に含まれません。

大容量をご利用のお客様は、毎月の費用が一定の BigQuery 定額料金もご利用いただけます。

BigQuery ML の CREATE MODEL クエリ CREATE MODEL ステートメントを使用するクエリで処理されるデータは、毎月 10 GB まで無料。 BigQuery ML の CREATE MODEL クエリは BigQuery 分析の無料枠の対象外であり、BigQuery ML の組み込みモデル(BigQuery 内でトレーニングされるモデル)にのみ適用されます。

次のステップ