컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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 예약과 관련된 슬롯 용량입니다.

범위 및 구문

이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 리전 한정자를 지정하지 않으면 모든 리전에서 메타데이터가 검색됩니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] 프로젝트 수준 REGION
다음을 바꿉니다.

  • 선택사항: PROJECT_ID: 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와 조인하여 작업 시간 구획을 예약 정보와 연결합니다.