JOBS_BY_ORGANIZATION 뷰
INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
뷰에는 현재 프로젝트와 연결된 조직에서 제출된 모든 작업에 대한 거의 실시간에 가까운 메타데이터가 포함됩니다.
필요한 역할
INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
뷰를 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 BigQuery 리소스 뷰어(roles/bigquery.resourceViewer
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
뷰를 쿼리하는 데 필요한 bigquery.jobs.listAll
권한이 포함되어 있습니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
스키마 테이블은 Google Cloud 조직이 정의된 사용자만 사용할 수 있습니다.
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
스키마
기본 데이터는 creation_time
열로 파티션을 나누고 project_id
및 user_email
로 클러스터링됩니다. query_info
열에는 쿼리 작업에 대한 추가 정보가 포함됩니다.
INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
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 객체로서의 오류 세부정보입니다. |
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_ORGANIZATION |
지정된 프로젝트가 포함된 조직 | REGION |
(선택사항) PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다.
예를 들면 `region-us`
입니다.
예
기본 프로젝트가 아닌 프로젝트에 대해 쿼리를 실행하려면 다음 형식으로 프로젝트 ID를 추가합니다.
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
PROJECT_ID
: 프로젝트 ID입니다.REGION_NAME
: 프로젝트 리전입니다.
예를 들면 `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
입니다.
오늘 가장 많은 바이트를 스캔한 상위 5개 작업
다음 예시에서는 오늘 날짜의 조직에서 가장 많은 바이트를 검색한 작업 5개를 찾는 방법을 보여줍니다. 로드, 내보내기, 쿼리와 같은 추가 정보를 쿼리하려면 statement_type
을 추가로 필터링할 수 있습니다.
SELECT job_id, user_email, total_bytes_billed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION WHERE EXTRACT(DATE FROM creation_time) = current_date() ORDER BY total_bytes_billed DESC LIMIT 5;
결과는 다음과 비슷합니다.
+--------------+--------------+---------------------------+ | job_id | user_email | total_bytes_billed | +--------------+--------------+---------------------------+ | bquxjob_1 | abc@xyz.com | 999999 | | bquxjob_2 | def@xyz.com | 888888 | | bquxjob_3 | ghi@xyz.com | 777777 | | bquxjob_4 | jkl@xyz.com | 666666 | | bquxjob_5 | mno@xyz.com | 555555 | +--------------+--------------+---------------------------+
쿼리 성능 통계 보기
다음 예시에서는 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_ORGANIZATION 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 );