JOBS_BY_FOLDER 뷰
INFORMATION_SCHEMA.JOBS_BY_FOLDER
뷰는 현재 프로젝트의 상위 폴더에 제출된 모든 작업에 대한 거의 실시간 메타데이터를 포함하며, 그 아래의 하위 폴더에 있는 작업도 포함됩니다.
필요한 역할
INFORMATION_SCHEMA.JOBS_BY_FOLDER
뷰를 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 상위 폴더에 대한 BigQuery 리소스 뷰어(roles/bigquery.resourceViewer
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 INFORMATION_SCHEMA.JOBS_BY_FOLDER
뷰를 쿼리하는 데 필요한 bigquery.jobs.listAll
권한이 포함되어 있습니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
스키마
기본 데이터는 creation_time
열로 파티션을 나누고 project_id
및 user_email
로 클러스터링됩니다. query_info
열에는 쿼리 작업에 대한 추가 정보가 포함됩니다.
INFORMATION_SCHEMA.JOBS_BY_FOLDER
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
bi_engine_statistics |
RECORD |
프로젝트가 BI Engine SQL 인터페이스를 사용하도록 구성된 경우 이 필드에는 BiEngineStatistics가 포함됩니다.
그 외의 경우에는 NULL 입니다.
|
cache_hit |
BOOLEAN |
이 작업의 쿼리 결과가 캐시에서 제공되었는지 여부
멀티 쿼리 문 작업이 있는 경우 상위 쿼리의 cache_hit 는 NULL 입니다.
|
creation_time |
TIMESTAMP |
(파티션 나누기 열) 이 작업의 생성 시간입니다. 파티션 나누기는 이 타임스탬프의 UTC 시간을 기반으로 합니다. |
destination_table |
RECORD |
결과에 대한 대상 테이블입니다(해당하는 경우). |
end_time |
TIMESTAMP |
작업의 종료 시간입니다(에포크 이후의 경과 시간(밀리초)). 이 필드는 작업이 DONE 상태가 되는 시간을 나타냅니다. |
error_result |
RECORD |
ErrorProto 객체로서의 오류 세부정보입니다. |
folder_numbers |
REPEATED INTEGER |
프로젝트가 포함된 폴더의 번호 ID는 프로젝트가 포함된 폴더부터 시작하여 하위 폴더가 포함된 폴더 등의 순서로 표시됩니다.
예를 들어 folder_numbers 가 [1, 2, 3] 인 경우, 그런 다음 폴더 1 에는 프로젝트가 즉시 포함되고, 폴더 2 에는 1 이 포함되며, 폴더 3 에는 2 가 포함됩니다. 이 열은 JOBS_BY_FOLDER 에만 채워집니다.
|
job_creation_reason.code |
STRING |
작업이 생성된 대략적인 이유를 지정합니다. 가능한 값은 다음과 같습니다.
|
job_id |
STRING |
작업이 생성된 경우 작업의 ID입니다. 그렇지 않으면 짧은 쿼리 모드를 사용하는 쿼리의 쿼리 ID입니다. 예를 들면 bquxjob_1234 입니다. |
job_stages |
RECORD |
작업의 쿼리 단계입니다.
참고: 행 수준 액세스 정책이 적용되는 테이블에서 읽는 쿼리의 경우 이 열의 값이 비어 있습니다. 자세한 내용은 BigQuery의 행 수준 보안 권장사항을 참조하세요. |
job_type |
STRING |
작업의 유형. QUERY , LOAD , EXTRACT , COPY , NULL 일 수 있습니다. NULL 값은 스크립트 작업 문 평가 또는 구체화된 뷰 새로고침과 같은 내부 작업을 나타냅니다.
|
labels |
RECORD |
키-값 쌍으로 작업에 적용된 라벨의 배열 |
parent_job_id |
STRING |
상위 작업의 ID(있는 경우) |
priority |
STRING |
이 작업의 우선순위. 유효한 값은 INTERACTIVE 및 BATCH 입니다. |
project_id |
STRING |
(클러스터링 열) 프로젝트의 ID입니다. |
project_number |
INTEGER |
프로젝트의 번호입니다. |
query |
STRING |
SQL 쿼리 텍스트. JOBS_BY_PROJECT 뷰에만 쿼리 열이 있습니다. |
referenced_tables |
RECORD |
작업에서 참조하는 테이블의 배열입니다. 캐시 적중이 아닌 쿼리 작업만 채워집니다. |
reservation_id |
STRING |
이 작업에 할당된 기본 예약의 이름이며 RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME 형식입니다.이 출력에서 각 항목의 의미는 다음과 같습니다.
|
edition |
STRING |
이 작업에 할당된 예약과 연결된 버전입니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요. |
session_info |
RECORD |
이 작업이 실행된 세션에 대한 세부정보입니다(있는 경우). |
start_time |
TIMESTAMP |
작업의 시작 시간입니다(에포크 이후의 경과 시간(밀리초)). 이 필드는 작업이 PENDING 상태에서 RUNNING 또는 DONE 상태가 되는 시간을 나타냅니다. |
state |
STRING |
작업의 실행 상태. 유효한 상태에는 PENDING , RUNNING , DONE 이 있습니다.
|
statement_type |
STRING |
쿼리 문의 유형입니다. 예를 들면 DELETE , INSERT , SCRIPT , SELECT , UPDATE 입니다. 유효한 값 목록은 QueryStatementType을 참조하세요.
|
timeline |
RECORD |
작업의 쿼리 타임라인입니다. 쿼리 실행 스냅샷을 포함합니다. |
total_bytes_billed |
INTEGER |
프로젝트가 주문형 가격 책정을 사용하도록 구성된 경우 이 필드에는 작업에 대해 청구되는 총 바이트가 포함됩니다. 프로젝트가 정액제를 사용하도록 구성된 경우 바이트 요금이 청구되지 않으며 이 필드는 참고용이 됩니다.
참고: 행 수준 액세스 정책이 적용되는 테이블에서 읽는 쿼리의 경우 이 열의 값이 비어 있습니다. 자세한 내용은 BigQuery의 행 수준 보안 권장사항을 참조하세요. |
total_bytes_processed |
INTEGER |
작업에서 처리한 총 바이트 참고: 행 수준 액세스 정책이 적용되는 테이블에서 읽는 쿼리의 경우 이 열의 값이 비어 있습니다. 자세한 내용은 BigQuery의 행 수준 보안 권장사항을 참조하세요. |
total_modified_partitions |
INTEGER |
작업에서 수정한 총 파티션 수입니다. 이 필드는 LOAD 및 QUERY 작업에 채워집니다.
|
total_slot_ms |
INTEGER |
재시도를 포함하여 RUNNING 상태의 전체 기간 동안 작업의 슬롯 밀리초입니다. |
transaction_id |
STRING |
이 작업이 실행된 트랜잭션의 ID입니다(있는 경우). (미리보기) |
user_email |
STRING |
(클러스터링 열) 작업을 실행한 사용자의 이메일 주소 또는 서비스 계정입니다. |
query_info.resource_warning |
STRING |
쿼리 처리 중 리소스 사용이 시스템의 내부 기준점을 초과할 경우 표시되는 경고 메시지입니다. 성공적인 쿼리 작업에는 resource_warning 필드가 채워질 수 있습니다. resource_warning 의 경우 쿼리를 최적화하고 query_hashes 를 사용하여 동일한 쿼리 집합의 성능 추세를 모니터링을 설정하기 위한 추가 데이터 포인트가 제공됩니다.
|
query_info.query_hashes.normalized_literals |
STRING |
쿼리의 해시를 포함합니다. normalized_literals 는 주석, 매개변수 값, UDF, 리터럴을 무시하는 16진수 STRING 해시입니다.
기본 뷰가 변경되거나 쿼리가 SELECT * 와 같은 열을 암시적으로 참조하고 테이블 스키마가 변경되면 해시 값이 달라집니다.
이 필드는 캐시 적중이 아닌 성공한 GoogleSQL 쿼리에 표시됩니다. |
query_info.performance_insights |
RECORD |
작업에 대한 성능 통계. |
query_info.optimization_details |
STRUCT |
작업의 기록 기반 최적화. |
transferred_bytes |
INTEGER |
BigQuery Omni 교차 클라우드 전송 작업과 같은 교차 클라우드 쿼리를 위해 전송된 총 바이트 수입니다. |
materialized_view_statistics |
RECORD |
쿼리 작업에서 고려되는 구체화된 뷰 통계입니다. (미리보기) |
데이터 보관
이 뷰에는 현재 실행 중인 작업과 지난 180일 동안의 작업 기록이 포함되어 있습니다.
범위 및 문법
이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.
뷰 이름 | 리소스 범위 | 리전 범위 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_BY_FOLDER |
지정된 프로젝트가 포함된 폴더 | REGION |
(선택사항) PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다.
예를 들면 `region-us`
입니다.
예
다음 쿼리는 지정된 프로젝트의 폴더에 있는 모든 대화형 작업의 작업 ID, 생성 시간, 상태(PENDING
, RUNNING
, DONE
)를 표시합니다.
SELECT job_id, creation_time, state FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_FOLDER WHERE priority = 'INTERACTIVE';
결과는 다음과 비슷합니다.
+--------------+---------------------------+---------------------------------+ | job_id | creation_time | state | +--------------+---------------------------+---------------------------------+ | bquxjob_1 | 2019-10-10 00:00:00 UTC | DONE | | bquxjob_2 | 2019-10-10 00:00:01 UTC | DONE | | bquxjob_3 | 2019-10-10 00:00:02 UTC | DONE | | bquxjob_4 | 2019-10-10 00:00:03 UTC | RUNNING | | bquxjob_5 | 2019-10-10 00:00:04 UTC | PENDING | +--------------+---------------------------+---------------------------------+
내보내기 작업으로 처리된 바이트 가져오기
다음 예에서는 EXTRACT
작업 유형의 total_processed_bytes
값을 계산합니다. 내보내기 작업 할당량에 대한 자세한 내용은 내보내기 작업 할당량 정책을 참고하세요.
처리된 총 바이트를 사용하면 집계 사용량을 모니터링하고 내보내기 작업을 일일 50TB 한도 이하로 유지할 수 있습니다.
SELECT DATE(creation_time) as day, project_id as source_project_id, SUM(total_bytes_processed) AS total_bytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "EXTRACT" GROUP BY day, source_project_id ORDER BY day DESC;
복사 작업 사용량 가져오기
복사 작업에 대한 자세한 내용은 테이블 복사를 참고하세요. 다음은 복사 작업의 사용량을 가져오는 예시입니다.
SELECT DATE(creation_time) as day, project_id as source_project_id, CONCAT(destination_table.project_id,":",destination_table.dataset_id,".",destination_table.table_id) as destination_table, COUNT(job_id) AS copy_job_count FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" GROUP BY day, source_project_id, destination_table ORDER BY day DESC;
쿼리 성능 통계 보기
다음 예시에서는 Google Cloud 콘솔의 쿼리 실행 그래프에 연결되는 URL과 함께 지난 30일 동안 지정된 프로젝트 폴더의 성능 통계가 있는 모든 쿼리 작업을 반환합니다.
SELECT `bigquery-public-data`.persistent_udfs.job_url( project_id || ':us.' || job_id) AS job_url, query_info.performance_insights FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_FOLDER WHERE DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history AND job_type = 'QUERY' AND state = 'DONE' AND error_result IS NULL AND statement_type != 'SCRIPT' AND EXISTS ( -- Only include queries which had performance insights SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_standalone_insights ) WHERE slot_contention OR insufficient_shuffle_quota UNION ALL SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_change_insights ) WHERE input_data_change.records_read_diff_percentage IS NOT NULL );