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 |
予約の自動スケーリング容量に関する情報。次のようなフィールドが含まれます。
|
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
列は正確でない可能性があります。
このクエリは、RESERVATIONS
を JOBS_TIMELINE
と結合し、ジョブのタイムスライスを予約情報に関連付けます。