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 |
예약의 자동 확장 용량에 대한 정보입니다. 필드에는 다음이 포함됩니다.
|
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시간 동안 예약 할당이 있는 프로젝트의 슬롯 사용량, 슬롯 용량, 할당된 예약을 보여줍니다. 슬롯 사용량은 초당 슬롯 밀리초 단위로 제공됩니다.
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
와 조인하여 작업 시간 구획을 예약 정보와 연결합니다.