RESERVATIONS ビュー

INFORMATION_SCHEMA.RESERVATIONS ビューには、管理プロジェクト内の現在のすべての予約のリストが含まれます。各行は、現在の 1 つの予約を表します。現在の予約とは、削除されていない予約です。予約の詳細については、予約の概要をご覧ください。

必要な権限

INFORMATION_SCHEMA.RESERVATIONS ビューをクエリするには、プロジェクトの bigquery.reservations.list Identity and Access Management(IAM)権限が必要です。次に示す各 IAM の事前定義ロールには、必要な権限が含まれています。

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

BigQuery の権限の詳細については、IAM でのアクセス制御をご覧ください。

スキーマ

INFORMATION_SCHEMA.RESERVATIONS ビューのスキーマは次のとおりです。

列名 データ型
ddl STRING この予約の作成に使用される DDL ステートメント。
project_id STRING 管理プロジェクトの ID。
project_number INTEGER 管理プロジェクトの番号。
reservation_name STRING ユーザー指定の予約名。
ignore_idle_slots BOOL false の場合、この予約を使用するクエリで、他の容量コミットメントの未使用のアイドル スロットを使用できます。
slot_capacity INTEGER 予約のベースライン。
target_job_concurrency INTEGER 同時に実行できるクエリのターゲット数。使用可能なリソースによって制限されます。ゼロの場合、この値は使用可能なリソースに基づいて自動的に計算されます。
autoscale STRUCT

予約の自動スケーリング容量に関する情報。次のようなフィールドが含まれます。

  • current_slots: 自動スケーリングによって予約に追加されるスロットの数。
  • max_slots: 自動スケーリングによって予約に追加できるスロットの最大数。
edition STRING この予約に関連付けられているエディション。エディションの詳細については、BigQuery エディションの概要をご覧ください。

スコープと構文

このビューに対するクエリでは、リージョン修飾子を指定する必要があります。リージョン修飾子を指定しない場合、メタデータはすべてのリージョンで取得されます。次の表で、このビューのリージョン スコープを説明します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] プロジェクト レベル REGION
次のように置き換えます。

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
  • REGION: 任意のデータセット リージョン名。例: region-us

予約ビューとジョブビューの結合

ジョブビューには、reservation_id 列が含まれています。ジョブが予約を割り当てられているプロジェクトで実行された場合、reservation_id の形式は reservation-admin-project:reservation-location.reservation-name になります。

予約ビューとジョブビューを結合するには、ジョブビュー列 reservation_id と予約ビュー列 project_id および reservation_name の間で結合を行います。予約ビューとジョブビューの間で JOIN 句を使用する例を次に示します。

次の例は、直近 1 時間に予約割り当てのあるプロジェクトのスロット使用量、スロット容量、割り当て済み予約を示しています。スロット使用量は 1 秒あたりのスロットミリ秒で示されます。

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

出力は次のようになります。

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

このクエリは、RESERVATIONS ビューを使用して予約情報を取得します。予約に対して過去 1 時間に変更が加えられた場合、reservation_slot_capacity 列は正確でない可能性があります。

このクエリは、RESERVATIONSJOBS_TIMELINE と結合し、ジョブのタイムスライスを予約情報に関連付けます。