割り当てと上限

このドキュメントでは、BigQuery に適用される割り当てと上限を説明します。

割り当ては、Cloud プロジェクトで使用できる特定の共有 Google Cloud リソース(ハードウェア、ソフトウェア、ネットワーク コンポーネントなど)の量を制限します。

割り当てはシステムの一部で、次の機能があります。

  • Google Cloud のプロダクトとサービスの使用量や消費量をモニタリングする。
  • 公平性の確保や使用量急増の抑制などのため、これらのリソースの消費量を制限する。
  • 規定の制限を自動的に適用する構成を維持する。
  • 割り当ての変更を実施またはリクエストする手段を提供する。

割り当てを超過すると、ほとんどの場合、システムは関連する Google リソースへのアクセスをすぐにブロックするため、ユーザーが試行しているタスクは失敗します。ほとんどの場合、割り当ては各 Cloud プロジェクトに適用され、その Cloud プロジェクトを使用するすべてのアプリケーションと IP アドレスで共有されます。

多くのプロダクトとサービスには、割り当てシステムとは無関係の上限も存在します。これらは制約(最大ファイルサイズやデータベース スキーマの制限など)であり、特に明記のない限り、通常は増減できません。

デフォルトでは、BigQuery の割り当てと上限はプロジェクト単位で適用されます。異なる上限に適用される割り当てと上限は、テーブルごとの最大列数やユーザーごとの同時 API リクエストの最大数などで示されます。具体的なポリシーは、リソースの可用性、ユーザー プロファイル、サービス使用量の履歴などの要因に応じて異なり、予告なく変更される場合があります。

割り当ての補充

毎日の割り当ては、レート制限動作をガイドするという意図を反映して、一日中一定の間隔で補充されます。割り当てを使い切った場合の分断が長時間にならないようにするためにも、断続的な更新が行われます。通常、割り当ては 1 日に 1 回全体的に補充されるのではなく、数分で割り当てが補充され利用可能になります。

割り当ての増加をリクエスト

大部分の割り当てを増減するには、Google Cloud Console を使用します。一部の割り当てはデフォルト値を超えて増やせません。

詳細については、以下の割り当ての操作セクションをご覧ください。

Cloud Console で割り当ての増加をリクエストするプロセスの詳細なガイドについては、[ガイドを表示] をクリックします。

ガイドを表示

権限

Cloud Console で BigQuery の割り当てを表示および更新するには、Google Cloud 割り当てと同じ権限が必要です。詳細については、Google Cloud の割り当て権限をご覧ください。

コピージョブ

テーブルのコピーに関する BigQuery ジョブには、次の上限が適用されます。各上限は、bq コマンドライン ツール、Cloud Console、または copy-type の jobs.insert API メソッドで作成されたジョブに適用されます。成功か失敗かに関係なく、すべてのコピージョブがこの上限にカウントされます。

上限 デフォルト
宛先テーブルごとの 1 日あたりコピージョブ数 1 日のテーブル オペレーションをご覧ください。
1 日あたりのコピージョブ数 100,000 個のジョブ プロジェクトで 1 日あたり最大 100,000 個のコピージョブを実行できます。
1 日あたりの宛先テーブルあたりのクロスリージョン コピージョブ数 100 個のジョブ プロジェクトでは、宛先テーブルに対して 1 日あたり 100 個までのクロスリージョン コピージョブを実行できます。
1 日あたりのクロスリージョン コピージョブ 2,000 個のジョブ プロジェクトで 1 日あたり最大 2,000 件のクロスリージョン コピージョブを実行できます。

データセットのコピーには、以下の上限が適用されます。

上限 デフォルト
コピー元データセット内のテーブルの最大数 20,000 個のテーブル コピー元データセットには、最大 20,000 個のテーブルを含めることができます。
実行ごとに同じリージョン内の宛先データセットにコピーできるテーブルの最大数 20,000 個のテーブル プロジェクトでは、同じリージョンにあるコピー先データセットに、実行あたり 20,000 個のテーブルをコピーできます。
実行間で別のリージョンの宛先データセットにコピーできるテーブルの最大数 1,000 個のテーブル 実行ごとに 1,000 個のテーブルを異なるリージョンの宛先データセットにコピーできます。8,000 個のテーブルを含むデータセットのリージョン間コピーを構成すると、BigQuery Data Transfer Service により 8 個の実行単位が順次自動的に作成されます。最初の実行で 1,000 個のテーブルがコピーされます。24 時間後の 2 回目の実行で 1,000 個のテーブルがコピーされます。このプロセスは、データセット内のすべてのテーブルがコピーされるまで(データセットあたり最大 20,000 個のテーブルがコピーされるまで)継続されます。

データ操作言語(DML)ステートメント

BigQuery のデータ操作言語(DML)ステートメントには、以下の上限が適用されます。

上限 デフォルト
1 日あたりの DML ステートメント数 無制限 DML ステートメントは、1 日あたりのテーブル オペレーションの数(またはパーティション分割テーブルの 1 日あたりのパーティション分割テーブル オペレーションの数)にカウントされます。 ただし、プロジェクトで 1 日に実行できる DML ステートメントの数は制限されません。テーブル オペレーション(またはパーティション分割テーブル オペレーション)の 1 日あたりの上限を使い切ると、DML 以外のテーブル オペレーションに対してエラーが発生します。ただし、エラーを発生させずに DML ステートメントを引き続き実行できます。
テーブルごとの同時変更 DML ステートメント 2 個のステートメント BigQuery は、テーブルごとに最大 2 つの同時変更 DML ステートメント(UPDATEDELETEMERGE)を実行します。テーブルに対する追加変更 DML ステートメントはキューに入れられます。
テーブルごとにキューに入れられる変更 DML ステートメント20 個のステートメント 1 つのテーブルには、実行待ちのキューで最大 20 個の変更 DML ステートメントを含めることができます。テーブルに追加の変更 DML ステートメントを送信すると、これらのステートメントは失敗します。
DML ステートメントの最大キュー時間 6 時間 インタラクティブに優先される DML ステートメントは、キューで最大 6 時間待機できます。ステートメントが 6 時間実行されていない場合、失敗します。

変更 DML ステートメントの詳細については、UPDATE, DELETE, MERGEDML の同時実行をご覧ください。

データセット

BigQuery データセットには以下の各上限が適用されます。

上限 デフォルト
データセットの最大数 無制限 1 つのプロジェクトで保持できるデータセットの数に上限はありません。
データセットあたりのテーブル数 無制限 API 呼び出しを使用する場合、データセット内のテーブル数が 50,000 件に近づくと、列挙のパフォーマンスが低下します。Cloud Console では、データセットごとに最大 50,000 件のテーブルを表示できます。
データセットのアクセス制御リストでの承認済みビューの数 2,500 個の承認済みビュー データセットのアクセス制御リストには、最大で 2,500 件の承認済みビューを含めることができます。
10 秒あたりのデータセットあたりデータセット更新オペレーションの数 5 個のオペレーション プロジェクトでは、10 秒ごとに最大 5 つのデータセット更新オペレーションを行うことができます。データセットの更新制限には、以下によって実行されるすべてのメタデータ更新オペレーションが含まれます。
データセットの説明の最大文字数 16,384 文字 データセットに説明を追加する場合、テキストは 16,384 文字以下で入力してください。

エクスポート ジョブ

次の割り当ては、bqコマンドライン ツール、Cloud Console、またはエクスポート タイプjobs.insert の API メソッドを使用してデータをエクスポートして BigQuery からデータをエクスポートするジョブに適用されます。

割り当て デフォルト
1 日あたりの最大エクスポート バイト数 50 TB プロジェクトで 1 日あたり最大 50 テラバイトをエクスポートできます。
1 日あたり 50 TB を超えるデータをエクスポートするには、Storage Read API または EXPORT DATA ステートメントを使用します。
Cloud Console で割り当てを表示

bq コマンドライン ツール、Cloud Console、またはエクスポート タイプ jobs.insert API メソッドを使用して BigQuery からデータをエクスポートするジョブには、以下の上限が適用されます。

上限 デフォルト
1 日あたりの最大エクスポート数 100,000 個のエクスポート プロジェクトは 1 日あたり最大 100,000 件のエクスポートを実行できます。
エクスポートあたりのワイルドカード URI 500 個の URI エクスポートには、最大 500 個のワイルドカード URI を含めることができます。

読み込みジョブ

Cloud Console や bq コマンドライン ツール、読み込みタイプの jobs.insert API メソッドを使用して、BigQuery にデータを読み込む際には、以下の制限が適用されます。

上限 デフォルト
1 日あたりのテーブルあたりの読み込みジョブ数 1 日あたりのテーブル オペレーションの最大数をご覧ください。読み込みに失敗したジョブは、この上限に対してカウントされます。 読み込みジョブ(失敗した読み込みジョブを含む)は、宛先テーブルでの 1 日あたりのテーブル オペレーションの最大数上限にカウントされます。
1 日あたりの読み込みジョブ 100,000 個のジョブ プロジェクトで 1 日あたり最大 100,000 個の読み込みジョブを実行できます。読み込みに失敗したジョブは、この上限に対してカウントされます。
テーブルあたりの最大列数 10,000 個の列 テーブルには最大 10,000 列を含めることができます。
読み込みジョブ 1 件あたりの最大サイズ 15 TB CSV、JSON、Avro、Parquet、ORC の各入力ファイルの合計サイズは 15 TB まで可能です。
ジョブ構成でのソース URI の最大数 10,000 個の URI 1 つのジョブ構成に最大 10,000 個のソース URI を含めることができます。
1 件の読み込みジョブあたりの最大ファイル数: 10,000,000 ファイル 読み込みジョブには、すべてのワイルドカード URI に一致するすべてのファイルを含め、合計 1,000 万ファイルを含めることができます。
読み込みジョブ実行時間の上限 6 時間 読み込みジョブが 6 時間以上実行されると失敗します。
Avro: ファイルデータ ブロックの最大サイズ 16 MB Avro ファイルデータ ブロックのサイズ上限は 16 MB です。
CSV: 最大セルサイズ 100 MB CSV セルの最大サイズは 100 MB です。
CSV: 行の最大サイズ 100 MB CSV 行の最大サイズは 100 MB です。
CSV: 最大ファイルサイズ - 圧縮 4 GB 圧縮 CSV ファイルのサイズ上限は 4 GB です。
CSV: 最大ファイルサイズ - 非圧縮 5 TB 非圧縮 CSV ファイルのサイズ上限は 5 TB です。
JSON: 行の最大サイズ 100 MB JSON 行のサイズは最大 100 MB です。
JSON: 最大ファイルサイズ - 圧縮 4 GB 圧縮 JSON ファイルのサイズの上限は 4 GB です。
JSON: 最大ファイルサイズ - 非圧縮 5 TB 非圧縮 JSON ファイルのサイズ上限は 5 TB です。

頻繁に更新されるため、読み込みジョブの制限を定期的に超える場合は、BigQuery へのデータのストリーミングを検討してください。

クエリジョブ

インタラクティブ クエリ、スケジュールされたクエリ、jobs.query とクエリタイプ jobs.insert API メソッドを使用して送信されたジョブによって自動的に作成されるクエリジョブには、以下の割り当てが適用されます。

割り当て デフォルト
1 日あたりのクエリ使用量 無制限 プロジェクトで 1 日に実行できるクエリの数は無制限です。
Cloud Console で割り当てを表示
ユーザーごとの 1 日あたりのクエリ使用量 無制限 ユーザーが 1 日に実行できるクエリ数は無制限です。
Cloud Console で割り当てを表示
クロスリージョンの Cloud SQL 連携クエリの 1 日あたりのバイト数 1 TB BigQuery のクエリ処理のロケーションと Cloud SQL インスタンスのロケーションが異なる場合、クエリはクロスリージョン クエリです。1 つのプロジェクトで、クロスリージョンのクエリを 1 日あたり 1 TB まで実行できます。詳しくは、Cloud SQL 連携クエリをご覧ください。
Cloud Console で割り当てを表示する

インタラクティブ クエリによって自動的に実行されるクエリジョブ、スケジュールされたクエリ、jobs.query とクエリタイプ jobs.insert API メソッドを使用して送信されるジョブには、以下の各上限が適用されます。

上限 デフォルト
インタラクティブ クエリの同時実行レート上限 クエリ 100 件 1 つのプロジェクトで最大 100 個の同時インタラクティブ クエリを実行できます。 結果がクエリ キャッシュから返されたクエリは、BigQuery がそれがキャッシュ ヒットであるかどうかを判断するのにかかる時間の間、この上限にカウントされます。ドライラン クエリは、この上限に対してカウントしません。ドライラン クエリを指定するには、--dry_run フラグを使用します。この上限内に収まる戦略については、割り当てエラーのトラブルシューティングをご覧ください。
Cloud Bigtable 外部データソースへのインタラクティブ クエリに対する同時実行レート上限 4 個のクエリ プロジェクトでは、Bigtable 外部データソースに対して最大 4 個のクエリを同時に実行できます。
1 日あたりのクエリサイズの上限 無制限 デフォルトでは、1 日あたりのクエリサイズの上限はありません。ただし、カスタム割り当てを作成することで、ユーザーがクエリできるデータ量に対する上限を設定できます。
UDF を含むレガシー SQL クエリに対する同時実行レート上限 6 個のクエリ プロジェクトで、ユーザー定義関数(UDF)を使用して最大 6 つのレガシー SQL クエリを同時に実行できます。この制限には、インタラクティブ クエリとバッチクエリの両方が含まれます。UDF を含むインタラクティブ クエリは、インタラクティブ クエリの同時実行レート上限に対してもカウントされます。この上限は標準 SQL クエリには適用されません。
宛先テーブルの日次更新回数上限 1 日あたりのテーブル オペレーションの最大数をご覧ください。 クエリジョブでの宛先テーブルの更新は、宛先テーブルごとの 1 日あたりのテーブル オペレーション数の上限にカウントされます。宛先テーブルの更新としてカウントされる対象としては、Cloud Console、bq コマンドライン ツールを使用したクエリ、または API の jobs.query メソッドや query-type jobs.insert メソッドの呼び出しによって実行される追加オペレーションや上書きオペレーションなどが挙げられます。
クエリ / スクリプト実行時間の上限 6時間 クエリまたはスクリプトは最大 6 時間実行でき、その後失敗します。 ただし、場合によってはクエリが再試行されます。クエリは 3 回まで試行でき、1 回につき最大 6 時間実行できます。結果として、クエリの合計ランタイムが 6 時間を超える可能性があります。
クエリあたりで参照できるテーブルの最大数 1,000 リソース 1 つのクエリで、一意のテーブル、一意のビュー、一意のユーザー定義関数(UDF)、および完全展開後に一意のテーブル値関数(TVF)(プレビュー)を合計 1,000 個まで参照できます。この上限には以下が含まれます。
  • クエリで直接参照されるテーブル、ビュー、UDF、テーブル関数。
  • クエリで参照される他のビュー、UDF、テーブル関数によって参照されるテーブル、ビュー、UDF、テーブル関数。
  • クエリで使用される他のワイルドカード テーブル、またはその他の参照されるビュー/ UDF / テーブル関数から展開されたテーブル。
未解決レガシー SQL クエリの最大長 256 KB 未解決レガシー SQL クエリは最大 256 KB までです。クエリが長い場合は、「The query is too large.」というエラーが表示されます。この上限内に収めるには、大規模な配列またはリストをクエリ パラメータに置き換えることを検討してください。
未解決標準 SQL クエリの最大長 1 MB 未解決標準 SQL クエリの最大長は 1 MB です。クエリが長い場合は、「The query is too large.」というエラーが表示されます。この上限内に収めるには、大規模な配列またはリストをクエリ パラメータに置き換えることを検討してください。
解決済みレガシー SQL クエリおよび標準 SQL クエリの最大長 12 MB 解決済みクエリの長さに対する上限では、クエリで参照しているすべてのビューとワイルドカード テーブルの長さも対象になります。
標準 SQL クエリ パラメータの最大数 10,000 個のパラメータ: 標準 SQL クエリには、最大 10,000 個のパラメータを指定できます。
最大応答サイズ 10 GB 圧縮 このサイズは、データの圧縮率によって異なります。レスポンスの実際のサイズは、10 GB よりも大幅に大きくなることがあります。大規模なクエリ結果を宛先テーブルに書き込む場合、最大レスポンス サイズに上限はありません。
最大行数 100 MB 行のサイズは行データの内部表現に基づくことから、その最大サイズは概算値です。行の最大サイズに対する上限は、クエリジョブ実行の特定の段階で適用されます。
テーブル、クエリ結果、ビュー定義での最大列数 10,000 列 テーブル、クエリ結果、ビュー定義には最大 10,000 列を含めることができます。
オンデマンド料金の同時実行最大スロット数 2,000 個のスロット オンデマンド料金では、プロジェクトに最大 2,000 個の同時実行スロットを設定できます。BigQuery スロットは、単一のプロジェクト内のすべてのクエリで共有されます。BigQuery が、クエリを高速化するためにこの上限を超えてバーストする場合があります。 現在使用しているスロットの個数を確認するには、Cloud Monitoring を使用した BigQuery のモニタリングをご覧ください。
オンデマンド料金における、スキャンデータあたりの最大 CPU 使用率 スキャンされる MiB あたり 256 CPU 秒 オンデマンド料金では、クエリで MiB あたり最大 256 CPU 秒ぐらいまでスキャンデータを使用できます。処理されるデータの量に対してクエリの CPU 使用率が高くなりすぎると、クエリは billingTierLimitExceeded エラーで失敗します。詳しくは、billingTierLimitExceeded をご覧ください。

スケジュールされたクエリは、BigQuery Data Transfer Service の機能を使用しますが、このクエリは転送ではなく、読み込みジョブ上限の対象ではありません。

行レベルのセキュリティ

BigQuery の行レベルのアクセス ポリシーには、以下の上限が適用されます。

上限 デフォルト
テーブルごとの行アクセス ポリシーの最大数 100 個のポリシー テーブルでは、最大 100 個の行アクセス ポリシーを使用できます。
クエリごとの行アクセス ポリシーの最大数 100 個のポリシー 1 つのクエリは、最大で 100 個の行アクセス ポリシーにアクセスできます。
10 秒あたりの ポリシーごとの CREATE / DROP DDL ステートメントの最大数 5 個のステートメント 10 秒ごとに、行アクセス ポリシー リソースごとに最大 5 つの CREATE または DROP ステートメントを作成できます。
10 秒あたり 1 テーブルごとの DROP ALL ROW ACCESS POLICIES ステートメント 5 個のステートメント プロジェクトで、10 秒ごとにテーブルごとに最大 5 つの DROP ALL ROW ACCESS POLICIES ステートメントを作成できます。
rowAccessPolicies.list 呼び出しの最大数 すべての BigQuery API の制限をご覧ください。
rowAccessPolicies.getIamPolicy 呼び出しの最大数 IAM API の割り当てをご覧ください。

ストリーミング挿入

BigQuery へのデータのストリーミングには、以下の割り当てと上限が適用されます。これらの上限内に収まる戦略については、割り当てエラーのトラブルシューティングをご覧ください。

insertId フィールドのないストリーミング挿入

行の挿入時に insertId フィールドの値を設定しない場合、次の上限が適用されます。詳しくは、ベスト エフォート型の重複排除の無効化をご覧ください。 これは、ストリーミングの取り込み割り当て上限を引き上げるために BigQuery を使う場合に推奨される方法です。

上限 デフォルト
1 秒あたりの最大バイト数 1 GB 挿入される各行の insertId フィールドに値を設定しない場合、プロジェクトは 1 秒あたり最大 1 GB をストリーミングできます。この上限を超えると、quotaExceeded エラーが発生します。

insertId フィールドを使用したストリーミング挿入

行の挿入時に insertId フィールドの値を設定する場合、次の割り当てが適用されます。これらの割り当てを超えると、quotaExceeded エラーが発生します。

割り当て デフォルト
useu のマルチリージョンにおけるプロジェクトごと 1 秒あたりの最大行数 500,000 行

挿入される各行の insertId フィールドに値を設定する場合、米国と欧州のマルチリージョンでは、プロジェクトごとに 1 秒あたり 500,000 行に制限されます。この割り当ては、特定のマルチリージョン内で累積的に処理されます。つまり、マルチリージョン内にある特定のプロジェクトのすべてのテーブルにストリーミングされる 1 秒あたりの行の合計は 500,000 行に制限されます。また、各テーブルは 1 秒あたり 100,000 行に制限されます。

プロジェクトごとまたはテーブルごとの上限を超えると、quotaExceeded エラーが発生します。

他のすべてのロケーションにおけるプロジェクトごと 1 秒あたりの最大行数 100,000 行

挿入される各行の insertId フィールドに値を設定する場合、useu のマルチリージョン以外のすべてのロケーションでは、1 つのプロジェクトまたはテーブルにつき 1 秒あたり 100,000 行に制限されます。この割り当ては、特定のリージョン内で累積的に処理されます。つまり、リージョン内にある特定のプロジェクトのすべてのテーブルにストリーミングされる 1 秒あたりの行の合計は 100,000 行に制限されます。

この上限を超えると quotaExceeded エラーが発生します。

テーブルごと 1 秒あたりの最大行数 100,000 行

挿入される各行の insertId フィールドに値を設定する場合、テーブルごとに 1 秒あたり 100,000 行に制限されます。

この上限を超えると quotaExceeded エラーが発生します。

1 秒あたりの最大バイト数 100 MB

挿入される各行の insertId フィールドに値を設定する場合、1 つのテーブルにつき 1 秒あたり 100 MB に制限されます。

この上限を超えると quotaExceeded エラーが発生します。

すべてのストリーミング挿入

insertId フィールドに値を設定するかどうかに関係なく、次の追加のストリーミング割り当てが適用されます。

上限 デフォルト
最大行数 10 MB この値を超えると invalid エラーが発生します。
HTTP リクエストのサイズ上限 10 MB

この値を超えると invalid エラーが発生します。

内部的に、リクエストは HTTP JSON から内部データ構造に変換されます。変換されたデータ構造には、独自のサイズ上限が適用されます。変換後の内部データ構造のサイズを予測することは困難ですが、HTTP リクエストを 10 MB 以下に保つと、内部上限に達する可能性は低くなります。

1 リクエストあたりの最大行数 50,000 行 最大行数は 500 行をおすすめします。一括処理することでパフォーマンスとスループットをある程度向上させることはできますが、リクエストごとのレイテンシは高くなります。 リクエストごとの行数が少なく、各リクエストにオーバーヘッドがあると取り込みの効率が下がります。また、リクエストごとの行数が多すぎるとスループットが下がります。代表的なデータ(スキーマとデータサイズ)を試して、データに最適なバッチサイズを決定します。
insertId フィールドの長さ 128 文字 この値を超えると invalid エラーが発生します。

プロジェクトでより多くのストリーミング割り当てが必要になった場合は、ベスト エフォート型の重複排除を無効にできます。追加のストリーミング割り当てについては、割り当ての増加をリクエストするをご覧ください。

テーブル関数

BigQuery のテーブル関数には次の上限が適用されます。

上限 デフォルト
テーブル関数名の最大文字数 256 文字 テーブル関数名は半角 256 文字まで指定できます。
引数名の最大文字数 128 文字 テーブル関数の引数の名前は、最大 128 文字です。
引数の最大数 256 個の引数 テーブル関数には最大 256 個の引数を指定できます。
テーブル関数参照チェーンの最大深度 16 個の参照 テーブル関数参照チェーンは最大 16 個の参照レベルにできます。
STRUCT 型の引数または出力の最大深度 15 レベル テーブル関数の STRUCT 引数の最大深度は 15 レベルです。同様に、テーブル関数の出力に含まれる STRUCT レコードの最大深度は 15 レベルです。
STRUCT 型の引数または戻りテーブルに含まれるフィールドの 1 テーブル関数あたりの最大数 1,024 個のフィールド テーブル関数の STRUCT 引数には、最大 1,024 個のフィールドを指定できます。同様に、テーブル関数の出力に含まれる STRUCT レコードには、最大 1,024 個のフィールドを含めることができます。
戻りテーブルの列の最大数 1,024 個の列 テーブル関数によって返されるテーブルには、最大 1,024 個の列があります。
戻りテーブルの列名の最大文字数 128 文字 返されるテーブルの列名は、最大 128 文字です。
10 秒あたりのテーブル関数ごとの更新の最大数 5 回更新 プロジェクトでは、テーブル関数を 10 秒ごとに最大 5 回更新できます。

すべてのテーブル

すべての BigQuery テーブルには次の上限が適用されます。

上限 デフォルト
列の説明の最大文字数 1,024 文字 列に説明を追加する場合、テキストは 1,024 文字以下で入力してください。
ネストされたレコードの最大深度 15 レベル RECORD 型の列には、ネストされた RECORD 型(子レコード)を含めることができます。ネストの深さは最大 15 レベルに制限されます。この上限は、レコードがスカラーか配列ベース(繰り返し)かに依存しません。

外部テーブル

データが Parquet、ORC、Avro、CSV、または JSON 形式で Cloud Storage に保存される BigQuery テーブルには、以下の上限が適用されます。

上限 デフォルト
外部テーブルごとのソース URI の最大数 10,000 個の URI 各外部テーブルには最大 10,000 個のソース URI を含めることができます。
外部テーブルごとのファイルの最大数 10,000,000 ファイル 外部テーブルには最大 1,000 万個のファイルを含めることができます。これには、すべてのワイルドカード URI に一致するすべてのファイルが含まれます。
外部テーブルごとの Cloud Storage に格納されるデータの最大サイズ 600 TB 外部テーブルは、すべての入力ファイルで最大 600 テラバイトになります。この上限は、Cloud Storage に保存されているファイルサイズに適用されます(このサイズはクエリの料金設定式で使用されるサイズとは異なります)。外部のパーティション分割テーブルの場合、この上限はパーティションのプルーニング後に適用されます。

分割テーブル

パーティション分割テーブルには以下の各上限が適用されます。

パーティションの上限は、読み込みジョブコピージョブクエリジョブ コピー先パーティションに対して追加または上書きを行う、または DML を使用する DELETEINSERTMERGETRUNCATE TABLE、または UPDATE ステートメントを使用してテーブルにデータを書き込むことができます。

DML ステートメントはパーティション上限までカウントされますが、それによって制限されません。つまり、上限までカウントされる 1 日あたりのオペレーション合計数には DML ステートメントが含まれますが、DML ステートメントがこの上限により失敗することはないということです。 たとえば、mytable$20210720 にデータを追記する 500 件のコピージョブと mytable$20210720 にデータを追記する 1,000 件のクエリジョブを実行すると、パーティション オペレーションに対する 1 日あたりの上限に達します。

1 つのジョブが複数のパーティションに影響する場合があります。たとえば、DML ステートメントは(取り込み時間と分割テーブル両方の)複数のパーティションでデータを更新できます。クエリジョブと読み込みジョブは、複数のパーティションに書き込みを行うこともできますが、対象は分割テーブルのパーティションに限定されます。

BigQuery では、ジョブで消費される割り当て量を決定する際に、ジョブの対象であるパーティションの数を使用します。ストリーミング挿入はこの割り当てに影響しません。

パーティション分割テーブルの制限内に収まる戦略については、割り当てエラーのトラブルシューティングをご覧ください。

上限 デフォルト
パーティション分割テーブルごとのパーティション最大数 4,000 個のパーティション 各分割テーブルには、最大 4,000 個のパーティションを設定できます。この上限を超える場合は、パーティショニングに加えて、またはパーティショニングの代わりにクラスタリングを使用することを検討してください。
1 つのジョブで変更される最大パーティション数 4,000 個のパーティション ジョブ オペレーション(クエリまたは読み込み)ごとに対象にできるパーティション数は最大 4,000 です。BigQuery は、4,000 を超えるパーティションを変更しようとするクエリまたは読み込みジョブを拒否します。
1 日あたりの取り込み時間パーティション分割テーブルあたりのパーティション変更数 5,000 件の変更 プロジェクトで 1 日あたり取り込み時間パーティション分割テーブルに対して最大 5,000 件のパーティション変更を行うことができます。
1 日あたりの列パーティション分割テーブルあたりのパーティション変更 30,000 件の変更

プロジェクトでは、列パーティション分割テーブルに対して 1 日あたり最大 30,000 件のパーティション変更を行うことができます。

テーブルごとの 10 秒あたりのパーティション オペレーション数 50 回のオペレーション プロジェクトでは、パーティション分割テーブルごとに 10 秒ごとに最大 50 個のパーティション オペレーションを実行できます。
範囲パーティショニングが可能な範囲の数 10,000 個の範囲 範囲パーティション分割テーブルには、最大 10,000 個の範囲を設定できます。 この上限は、テーブルの作成時にパーティションの設定に適用されます。この上限は、テーブルの作成後に実際のパーティション数にも適用されます。

標準テーブル

BigQuery 標準テーブルには以下の各上限が適用されます。

上限 デフォルト
1 日あたりのテーブル オペレーション 1,500 回のオペレーション

オペレーションがデータをテーブルに追加するか、テーブルを切り捨てるかにかかわらず、プロジェクトは 1 日あたりテーブルごとに 1,500 回までオペレーションを作成できます。この上限は、宛先テーブルへのデータの追加や上書き、または DMLDELETEINSERTMERGETRUNCATE TABLEUPDATE ステートメントを使用したテーブルへのデータの書き込みを実行するすべての読み込みジョブコピージョブクエリジョブを合わせた合計数が対象です。

DML ステートメントはこの上限までカウントされますが、それに制限されません。つまり、上限までカウントされる 1 日あたりのオペレーション合計数には DML ステートメントが含まれますが、DML ステートメントがこの上限により失敗することはないということです。 たとえば、mytable にデータを追記する 500 件のコピージョブと mytable にデータを追記する 1,000 件のクエリジョブを実行すると、この上限に達します。

パーティション分割テーブルに対する 1 日あたりのテーブル オペレーションについては、1 日あたりのパーティション分割テーブル オペレーションをご覧ください。

テーブルあたりのテーブル メタデータ更新オペレーションの最大レート 10 秒あたり 5 回のオペレーション プロジェクトでは、テーブルごとに 10 秒あたり最大 5 つのテーブル メタデータ更新オペレーションを作成できます。この上限は、以下によって実行されるすべてのテーブル メタデータ更新オペレーションに適用されます。この上限には、宛先テーブルに追加または上書きするすべての読み込みジョブ、コピージョブ、クエリジョブを合わせた合計数も含まれます。この上限は、DML オペレーションには適用されません。

この上限を超えると、Exceeded rate limits: too many table update operations for this table のようなエラー メッセージが表示されます。このエラーは一時的なものです。指数バックオフで再試行できます。

この上限にカウントされるオペレーションは、ログの検査で確認できます。

テーブルごとの最大列数 10,000 列 テーブル、クエリ結果、ビュー定義にはそれぞれ最大 10,000 列を含めることができます。

テーブル スナップショット

BigQuery のテーブル スナップショットには次の上限が適用されます。

上限 デフォルト
同時テーブル スナップショット ジョブの最大数 100 個のジョブ プロジェクトで最大 100 個のテーブル スナップショット ジョブを同時に実行できます。
1 日あたりのテーブル スナップショット ジョブの最大数 50,000 件のジョブ プロジェクトでは、1 日に最大 50,000 件のテーブル スナップショット ジョブを実行できます。
1 日あたりのテーブル スナップショットごとの最大ジョブ数 50 件のジョブ プロジェクトでは、テーブル スナップショットごとに 1 日あたり 50 件のジョブを実行できます。
10 秒あたりのテーブル スナップショットごとのメタデータ更新の最大数 5 回の更新 プロジェクトでは、テーブル スナップショットのメタデータを 10 秒ごとに最大 5 回更新できます。

UDF

BigQuery SQL クエリに含まれる一時的および永続的両方のユーザー定義関数(UDF)には、次の上限が適用されます。

上限 デフォルト
1 行あたりの最大出力 5 MB 単一行の処理時に JavaScript UDF が出力できるデータの最大量は約 5 MB です。
JavaScript UDF を使用した同時実行レガシー SQL クエリの最大数 6 個のクエリ プロジェクトには、JavaScript で UDF を含むレガシー SQL クエリを同時に 6 個まで設定できます。この上限は、インタラクティブ クエリとバッチクエリの両方に適用されます。UDF を含むインタラクティブ クエリは、インタラクティブ クエリの同時実行レート上限に対してもカウントされます。この上限は標準 SQL クエリには適用されません。
クエリあたりの JavaScript UDF リソースの最大数 50 個のリソース クエリジョブには、インライン コード blob や外部ファイルなど、最大 50 個の JavaScript UDF リソースを含めることができます。
インライン コード blob の最大サイズ 32 KB UDF のインライン コード blob のサイズは最大 32 KB です。
各外部コードリソースの最大サイズ 1 MB 各 JavaScript コードリソースの最大サイズは 1 MB です。

永続的な UDF には次の上限が適用されます。

上限 デフォルト
UDF 名の最大文字数 256 文字 UDF 名は最長 256 文字です。
引数の最大数 256 個の引数 UDF には最大 256 個の引数を指定できます。
引数名の最大文字数 128 文字 UDF の引数名は、最大 128 文字です。
UDF 参照チェーンの最大深度 16 個の参照 UDF 参照チェーンは、最大 16 個の参照深度にすることができます。
STRUCT 型の引数または出力の最大深度 15 レベル STRUCT 型の UDF 引数または出力の最大深度は 15 です。
UDF あたりの STRUCT 型の引数または出力の最大フィールド数 1,024 個のフィールド UDF の STRUCT 型の引数と出力には、最大 1,024 個のフィールドを指定できます。
CREATE FUNCTION ステートメント内の JavaScript ライブラリの最大数 50 個のライブラリ CREATE FUNCTION ステートメントには、最大 50 個の JavaScript ライブラリを含めることができます。
含まれる JavaScript ライブラリパスの最大文字数 5,000 文字 UDF に含まれる JavaScript ライブラリのパスは、最大 5,000 文字です。
10 秒あたりの UDF あたりの最大更新レート 5 回の更新 プロジェクトは 10 秒ごとに最大 5 回、UDF を更新できます。

ビュー

BigQuery ビューには以下の各上限が適用されます。

上限 デフォルト
ネストしたビューレベルの最大数 16 レベル BigQuery は最大 16 レベルまでのネストビューをサポートします。ネストレベルが 16 を超えると、INVALID_INPUT エラーが返されます。
ビューの定義に使用される標準 SQL クエリの最大長 256,000 文字 ビューを定義する標準 SQL クエリのテキストは、最大 256,000 文字です。
データセットあたりの承認済みビューの最大数 2,500 個の承認済みビュー データセットのアクセス制御リストには、最大 2,500 件の承認済みビューを含めることができます。

BigQuery API

このセクションでは、BigQuery API のすべてのリクエストに適用される割り当てと上限、および特定のタイプの API リクエストに適用される割り当てと上限について説明します。

すべての BigQuery API

すべての BigQuery API リクエストには、次の割り当てが適用されます。

割り当て デフォルト
1 日あたりのリクエスト数 無制限 プロジェクトでは、1 日に無制限の数の BigQuery API リクエストを行うことができます。
Cloud Console で割り当てを表示

すべての BigQuery API リクエストには、以下の各上限が適用されます。

上限 デフォルト
メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト ユーザーは 1 つの API メソッドに対して 1 秒あたり最大 100 件の API リクエストを行えます。ユーザーが 1 秒あたり 100 件を超えるリクエストをメソッドに送信すると、スロットリングが発生する可能性があります。この上限はストリーミング インサートには適用されません。
ユーザーごとの同時 API リクエストの最大数 300 件のリクエスト ユーザーが 300 件を超えるリクエストを同時に発行すると、スロットリングが発生する可能性があります。この上限はストリーミング インサートには適用されません。
リクエスト ヘッダーの最大サイズ 16 KiB BigQuery API リクエストの最大サイズは 16 KiB でり、リクエスト URL とすべてのヘッダーを含みます。この上限は、POST リクエストなどのリクエスト本文には適用されません。

jobs.get リクエスト

jobs.get API リクエストには、次の上限が適用されます。

上限 デフォルト
1 秒あたりの最大 jobs.get リクエスト数 1,000 件のリクエスト プロジェクトは 1 秒あたり最大 1,000 件の jobs.get リクエストを作成できます。

jobs.query リクエスト

jobs.query API リクエストには、次の上限が適用されます。

上限 デフォルト
最大 jobs.query 応答サイズ 10 MB デフォルトでは、結果のページあたりに jobs.query によって返されるデータ行の最大行数は設定されていません。ただし、レスポンスの最大サイズは 10 MB に制限されています。返される行数は maxResults パラメータを使用して変更できます。

projects.list リクエスト

projects.list API リクエストには、次の上限が適用されます。

上限 デフォルト
1 秒あたりの最大 projects.list リクエスト数 2 件のリクエスト プロジェクトは 1 秒あたり最大 2 つの projects.list リクエストを行えます。

tabledata.list リクエスト

tabledata.list リクエストには、以下の割り当てが適用されます。その他の API(jobs.getQueryResultsjobs.queryjobs.insert からの結果の取得など)でも、この割り当てが消費されることがあります。

割り当て デフォルト
1 分あたりのテーブルデータ リストのバイト数 3.6 GB プロジェクトでは、1 分あたり最大 3.6 GB のテーブル行データを返すことができます。この割り当ては、読み取られるテーブルを含むプロジェクトに適用されます。
Cloud Console で割り当てを表示

tabledata.list リクエストには、以下の上限が適用されます。

上限 デフォルト
1 秒あたりの最大 tabledata.list リクエスト数 1,000 件のリクエスト プロジェクトは 1 秒あたり最大 1,000 件の tabledata.list リクエストを作成できます。
1 秒あたり tabledata.list リクエストによって返される最大行数 150,000 行 プロジェクトは、tabledata.list リクエストを使用して 1 秒あたり最大 150,000 行を返すことができます。この上限は、読み取られるテーブルを含むプロジェクトに適用されます。
tabledata.list レスポンスあたりの最大行数 100,000 行 tabledata.list 呼び出しでは、最大 100,000 のテーブル行を返すことができます。詳細については、API を使用した結果のページ分割をご覧ください。

tables.insert リクエスト

tables.insert メソッドは、空のテーブルをデータセットに新規作成します。tables.insert リクエストには、次の上限が適用されます。この上限には、CREATE TABLE などのテーブルを作成する SQL ステートメントと、宛先テーブルに結果を書き込むクエリが含まれます。

上限 デフォルト
1 秒あたりの最大 tables.insert リクエスト数 10 件のリクエスト プロジェクトは 1 秒あたり最大 10 件の tables.insert リクエストを作成できます。

BigQuery Connection API

以下の割り当てが BigQuery Connection API 呼び出しに適用されます。

割り当て デフォルト
1 分あたりの読み取りリクエスト数 1,000 件のリクエスト プロジェクトは、接続データを読み取る BigQuery Connection API メソッドに、1 分あたり最大 1,000 件のリクエストを行えます。
Cloud Console で割り当てを表示
1 分あたりの書き込みリクエスト数 1 分あたり 100 回のリクエスト プロジェクトは、接続を作成または更新する BigQuery Connection API メソッドに、1 分あたり最大 100 件のリクエストを行えます。
Cloud Console で割り当てを表示

BigQuery Reservation API

以下の割り当てが BigQuery Reservation API に適用されます。

割り当て デフォルト
1 リージョン 1 分あたりのリクエスト数 100 件のリクエスト プロジェクトは、リージョンごとに 1 分あたり合計 100 回まで BigQuery Reservation API メソッドを呼び出すことができます。
Cloud Console で割り当てを表示
1 リージョン、1 分あたりの SearchAllAssignments 呼び出しの数 100 件のリクエスト プロジェクトは、リージョンごとに 1 分あたり最大 100 回 SearchAllAssignments メソッドを呼び出すことができます。
Cloud Console で割り当てを表示
1 リージョン、1 ユーザー、1 分あたりの SearchAllAssignments リクエスト数 10 件のリクエスト 各ユーザーは、リージョンごとに 1 分あたり SearchAllAssignments メソッドを 10 回まで呼び出すことができます。
Cloud Console で割り当てを表示する
(Google Cloud Console の検索結果で、/ユーザーを検索)。
各リージョン(米国リージョンと EU リージョンを除く)のスロットあたりの合計スロット数 0 スロット Google Cloud Console を使用して各リージョンで購入できる BigQuery スロットの最大数。
Cloud Console で割り当てを表示
EU リージョンのスロットの合計数 1,000 スロット Google Cloud Console を使用して EU マルチリージョンで購入できる BigQuery スロットの最大数。
Cloud Console で割り当てを表示
米国リージョンのスロットの合計数 4,000 スロット Google Cloud Console を使用して米国マルチリージョンで購入できる BigQuery スロットの最大数。
Cloud Console で割り当てを表示

IAM API

以下の割り当ては、BigQuery で Identity and Access Management 機能を使用して IAM ポリシーの取得と設定を行い、IAM の権限をテストする場合に適用されます。

割り当て デフォルト
1 分あたりの IamPolicy リクエスト数 3,000 件のリクエスト プロジェクトは 1 秒あたり最大 3,000 件の IAM リクエストを行えます。
Cloud Console で割り当てを表示
1 分あたりのユーザーごとの IamPolicy リクエスト数 1,500 個のリクエスト 各ユーザーは、プロジェクトごとに 1 分あたり最大 1,500 件の IAM リクエストを行えます。
Cloud Console で割り当てを表示

Storage Read API

以下の割り当てが BigQuery Storage Read API リクエストに適用されます。

割り当て デフォルト
1 ユーザー、1 分あたりの読み取りデータプレーン リクエスト数 5,000 件のリクエスト 各ユーザーは、プロジェクトごとに 1 分あたり最大 5,000 回の ReadRows 呼び出しを行えます。
Cloud Console で割り当てを表示
ユーザーごとの 1 分あたりの読み取りコントロール プレーン リクエスト数 5,000 件のリクエスト 各ユーザーは、プロジェクトごとに 1 分あたり最大 5,000 件の Storage Read API メタデータ オペレーション呼び出しを行えます。メタデータ呼び出しには、CreateReadSession メソッドと SplitReadStream メソッドが含まれます。
Cloud Console で割り当てを表示

BigQuery Storage Read API リクエストには、以下の上限が適用されます。

上限 デフォルト
行とフィルタの最大長 1 MB Storage Read API の CreateReadSession 呼び出しを使用する場合、各行またはフィルタの最大長は 1 MB に制限されます。

Storage Write API

以下の割り当てが、Storage Write APIプレビュー)リクエストに適用されます。

割り当て デフォルト
1 分あたりの CreateWriteStream リクエスト数 100 件のリクエスト プロジェクトで CreateWriteStream に対して 1 分あたり最大 100 回の呼び出しを行えます。この上限を超えたためにエラーが発生した場合は、指数バックオフでこのオペレーションを再試行してください。また、CreateWriteStream の呼び出しを、一定の間隔で試行します。デフォルトのストリームはこの割り当ての対象になりません。コミットモードで 1 回限りのセマンティクスが不要な場合は、デフォルトのストリームの使用を検討してください。
Cloud Console で割り当てを表示
1 分あたりの FlushRows リクエスト数 10,000 件のリクエスト プロジェクトでは FlushRows メソッドを 1 分あたり最大 10,000 回呼び出すことができます。
Cloud Console で割り当てを表示
保留中のバイト数 100 GB プロジェクトは、ストリームをコミットする前に最大 100 GB を保留中モードで書き込めます。
Cloud Console で割り当てを表示

Storage Write APIプレビュー)リクエストには、以下の上限が適用されます。

上限 デフォルト
同時接続数 1,000 件の接続 1 つのプロジェクトで最大 1,000 件の同時接続が可能です。

割り当て使用量の上限

特定のリソースの使用量をデフォルトの割り当て量よりも少なく指定して制限する方法については、使用量の上限を設定するをご覧ください。

トラブルシューティング

割り当てと上限に関連するエラーのトラブルシューティングについては、BigQuery の割り当てエラーのトラブルシューティングをご覧ください。