RESERVATIONS 뷰

INFORMATION_SCHEMA.RESERVATIONS 뷰에는 관리 프로젝트 내의 모든 현재 예약에 대한 거의 실시간 목록이 포함됩니다. 각 행은 단일 현재 예약을 나타냅니다. 현재 예약은 삭제되지 않은 예약입니다. 예약에 대한 자세한 내용은 예약 소개를 참조하세요.

필요한 권한

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 사용 가능한 리소스로 제한되는 동시에 실행할 수 있는 대상 쿼리 수입니다. 0이면 사용 가능한 리소스를 기준으로 이 값이 자동으로 계산됩니다.
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_idreservation-admin-project:reservation-location.reservation-name 형식이 사용됩니다.

예약 뷰와 작업 뷰 사이를 조인하려면 작업 뷰 열 reservation_id와 예약 뷰 열 project_idreservation_name 사이를 조인할 수 있습니다. 다음 예시에서는 예약과 작업 뷰 사이에 JOIN 절을 사용하는 예시를 보여줍니다.

다음 예시에서는 지난 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와 조인하여 작업 시간 구획을 예약 정보와 연결합니다.