JOBS_TIMELINE_BY_ORGANIZATION 뷰
INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
뷰에는 현재 프로젝트와 연관된 조직에 제출된 모든 작업의 시간 구획별 거의 실시간 BigQuery 메타데이터가 포함됩니다.
이 뷰에는 현재 실행 중인 작업과 완료된 작업이 포함됩니다.
필수 권한
INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
뷰를 쿼리하려면 조직에 대한 bigquery.jobs.listAll
Identity and Access Management(IAM) 권한이 필요합니다.
사전 정의된 다음 IAM 역할에는 각각 필수 권한이 포함되어 있습니다.
- 조직 수준의 BigQuery 리소스 관리자
- 조직 소유자
- 조직 관리자
JOBS_BY_ORGANIZATION
스키마 테이블은 Google Cloud 조직이 정의된 사용자만 사용할 수 있습니다.
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
스키마
INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*
뷰를 쿼리하면 쿼리 결과에는 모든 BigQuery 작업 실행 내역(초 단위)에 대한 행 하나가 포함됩니다. 각 기간은 1초 간격으로 시작하고 정확히 1초 동안 지속됩니다.
INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
period_start |
TIMESTAMP |
이 기간의 시작 시간 |
period_slot_ms |
INTEGER |
이 기간 동안 사용된 슬롯(밀리초) |
project_id |
STRING |
(클러스터링 열) 프로젝트의 ID |
project_number |
INTEGER |
프로젝트의 번호 |
folder_numbers |
REPEATED INTEGER |
프로젝트가 포함된 바로 위 폴더, 하위 폴더가 포함된 폴더 등 프로젝트가 포함된 폴더의 번호 ID입니다. 예를 들어 `folder_numbers`가 `[1, 2, 3]`이면 `1` 폴더 바로 밑에 프로젝트가 포함되며, `2` 폴더에는 `1`이 포함되고 `3` 폴더에는 '2'가 포함되는 식입니다. |
user_email |
STRING |
(클러스터링 열) 작업을 실행한 사용자의 이메일 주소 또는 서비스 계정 |
job_id |
STRING |
작업의 ID. 예를 들면 bquxjob_1234 입니다. |
job_type |
STRING |
작업의 유형. QUERY , LOAD , EXTRACT , COPY , null 일 수 있습니다. 작업 유형 null 은 스크립트 작업 문 평가 또는 구체화된 뷰 새로고침과 같은 내부 작업을 나타냅니다. |
statement_type |
STRING |
유효한 경우 쿼리 문의 유형. 예시: SELECT , INSERT , UPDATE , DELETE . |
priority |
STRING |
이 작업의 우선순위 유효한 값은 INTERACTIVE 및 BATCH 입니다. |
parent_job_id |
STRING |
상위 작업의 ID입니다(있는 경우). |
job_creation_time |
TIMESTAMP |
(파티션 나누기 열) 이 작업의 생성 시간 파티션 나누기는 이 타임스탬프의 UTC 시간에 따릅니다. |
job_start_time |
TIMESTAMP |
이 작업의 시작 시간 |
job_end_time |
TIMESTAMP |
이 작업의 종료 시간 |
state |
STRING |
이 기간이 끝날 때 작업 실행 상태 유효한 상태에는 PENDING , RUNNING , DONE 이 있습니다. |
reservation_id |
STRING |
이 기간이 끝날 때 이 작업에 할당된 기본 예약의 이름(해당되는 경우) |
edition |
STRING |
이 작업에 할당된 예약과 연결된 버전입니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요. |
total_bytes_billed |
INTEGER |
프로젝트가 주문형 가격 책정을 사용하도록 구성된 경우 이 필드에는 작업에 대해 청구되는 총 바이트가 포함됩니다. 프로젝트가 정액제를 사용하도록 구성된 경우 바이트 요금이 청구되지 않습니다. 이 필드는 구성할 수 없습니다. |
total_bytes_processed |
INTEGER |
작업에서 처리한 총 바이트 |
error_result |
RECORD |
ErrorProto.
로서 오류 세부정보(해당되는 경우) |
cache_hit |
BOOLEAN |
이 작업의 쿼리 결과가 캐시에서 제공되었는지 여부 |
period_shuffle_ram_usage_ratio |
FLOAT |
선택한 기간의 셔플 사용량 비율 |
period_estimated_runnable_units |
INTEGER |
이 기간에 즉시 예약할 수 있는 작업 단위입니다. 이러한 작업 단위의 추가 슬롯은 예약에 있는 다른 쿼리에 추가 슬롯이 필요하지 않은 한 쿼리를 가속화합니다. |
데이터 보관
이 뷰에는 현재 실행 중인 작업과 지난 180일 동안의 작업 기록이 포함되어 있습니다.
범위 및 문법
이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 리전 한정자를 지정하지 않으면 모든 리전에서 메타데이터가 검색됩니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.
뷰 이름 | 리소스 범위 | 리전 범위 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION |
지정된 프로젝트가 포함된 조직 | REGION |
(선택사항) PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다.
예를 들면 `region-us`
입니다.
예
예시: 분당 총 슬롯 사용량 보기
기본 프로젝트가 아닌 프로젝트에 대해 쿼리를 실행하려면 다음 형식으로 프로젝트 ID를 추가합니다.
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
`myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
입니다.
다음 예시에서는 모든 작업에서 YOUR_RESERVATION_ID
에 할당된 프로젝트의 분당 슬롯 사용량을 보여줍니다.
SELECT res.period_start, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slot_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND res.reservation_id = 'YOUR_RESERVATION_ID' AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start ORDER BY period_start DESC;
결과는 다음과 비슷합니다.
+-----------------------+---------------------+---------------+-------------------+ | period_start | period_slot_minutes | slots_assigned| slots_max_assigned| +-----------------------+---------------------+---------------+-------------------+ |2021-06-08 21:33:00 UTC| 100.000 | 100 | 100 | |2021-06-08 21:32:00 UTC| 96.753 | 100 | 100 | |2021-06-08 21:31:00 UTC| 41.668 | 100 | 100 | +-----------------------+---------------------+---------------+-------------------+
예시: 예약별 슬롯 사용량
다음 예시에서는 마지막 날짜의 각 예약에 대한 분당 슬롯 사용량을 보여줍니다.
SELECT res.period_start, res.reservation_id, SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes, ANY_VALUE(res.slots_assigned) AS slots_assigned, ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned, FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL) -- Avoid duplicate byte counting in parent and children jobs. GROUP BY period_start, reservation_id ORDER BY period_start DESC, reservation_id;
결과는 다음과 비슷합니다.
+-----------------------+----------------+---------------------+---------------+--------------------+ | period_start | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned | +-----------------------+----------------+---------------------+---------------+--------------------+ |2021-06-08 21:33:00 UTC| prod01 | 100.000 | 100 | 100 | |2021-06-08 21:33:00 UTC| prod02 | 177.201 | 200 | 500 | |2021-06-08 21:32:00 UTC| prod01 | 96.753 | 100 | 100 | |2021-06-08 21:32:00 UTC| prod02 | 182.329 | 200 | 500 | +-----------------------+----------------+---------------------+---------------+--------------------+