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_iduser_email로 클러스터링됩니다. query_info 열에는 쿼리 작업에 대한 추가 정보가 포함됩니다.

INFORMATION_SCHEMA.JOBS_BY_FOLDER 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
bi_engine_statistics RECORD 프로젝트가 BI Engine SQL 인터페이스를 사용하도록 구성된 경우 이 필드에는 BiEngineStatistics가 포함됩니다. 그 외의 경우에는 NULL입니다.
cache_hit BOOLEAN 이 작업의 쿼리 결과가 캐시에서 제공되었는지 여부 멀티 쿼리 문 작업이 있는 경우 상위 쿼리의 cache_hitNULL입니다.
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 작업이 생성된 대략적인 이유를 지정합니다.
가능한 값은 다음과 같습니다.
  • REQUESTED: 작업 생성이 요청되었습니다.
  • LONG_RUNNING: 쿼리 요청이 QueryRequest의 timeoutMs 필드로 지정된 시스템 정의 제한 시간을 초과하여 실행되었습니다. 따라서 작업이 생성된 장기 실행 작업으로 간주되었습니다.
  • LARGE_RESULTS: 쿼리의 결과가 인라인 응답에 맞지 않습니다.
  • OTHER: 시스템에서 쿼리를 작업으로 실행해야 한다고 판단했습니다.
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 이 작업의 우선순위. 유효한 값은 INTERACTIVEBATCH입니다.
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 형식입니다.
이 출력에서 각 항목의 의미는 다음과 같습니다.
  • RESERVATION_ADMIN_PROJECT: 예약을 관리하는 Google Cloud 프로젝트의 이름입니다.
  • 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 작업에서 수정한 총 파티션 수입니다. 이 필드는 LOADQUERY 작업에 채워집니다.
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 해시입니다.
이 필드는 캐시 적중이 아닌 성공한 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-us`.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-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 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-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 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-us`.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
  );