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

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

열 이름 데이터 유형
bi_engine_statistics RECORD 프로젝트가 BI Engine을 사용하도록 구성된 경우 이 필드에는 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 프로젝트의 번호입니다.
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 상태의 전체 기간 동안 작업의 슬롯 밀리초입니다.
total_services_sku_slot_ms INTEGER 외부 서비스에서 실행되고 서비스 SKU에 따라 청구되는 작업의 총 슬롯 밀리초입니다. 이 필드는 외부 서비스 비용이 있는 작업에만 채워지며 청구 방법이 "SERVICES_SKU"인 비용의 사용량 합계입니다.
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 작업의 기록 기반 최적화. JOBS_BY_PROJECT 뷰에만 이 열이 있습니다.
transferred_bytes INTEGER BigQuery Omni 교차 클라우드 전송 작업과 같은 교차 클라우드 쿼리를 위해 전송된 총 바이트 수입니다.
materialized_view_statistics RECORD 쿼리 작업에서 고려되는 구체화된 뷰 통계입니다. (미리보기)
metadata_cache_statistics RECORD 쿼리 작업에서 참조된 테이블의 메타데이터 열 색인 사용 통계입니다.
search_statistics RECORD 검색어 통계입니다.
query_dialect STRING 이 필드는 2025년 5월에 제공될 예정입니다. 작업에 사용된 쿼리 언어입니다. 유효한 값으로 다음이 포함되어 있습니다.
  • GOOGLE_SQL: GoogleSQL을 사용하도록 작업이 요청되었습니다.
  • LEGACY_SQL: LegacySQL을 사용하도록 작업이 요청되었습니다.
  • DEFAULT_LEGACY_SQL: 작업 요청에 쿼리 언어가 지정되지 않았습니다. BigQuery에서 LegacySQL 기본값을 사용했습니다.
  • DEFAULT_GOOGLE_SQL: 작업 요청에 쿼리 언어가 지정되지 않았습니다. BigQuery에서 GoogleSQL 기본값을 사용했습니다.

이 필드는 쿼리 작업에만 채워집니다. 구성 설정으로 쿼리 언어 기본 선택을 제어할 수 있습니다.
continuous BOOLEAN 작업이 연속 쿼리인지 여부입니다.
continuous_query_info.output_watermark TIMESTAMP 연속 쿼리가 데이터를 성공적으로 처리한 시점을 나타냅니다.
vector_search_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                 |
+--------------+--------------+---------------------------+

조직 수준에서 사용자별 연결된 시트 사용량 집계

다음 쿼리는 지난 30일 동안 조직에서 가장 많이 사용한 커넥티드 시트 사용자를 총 청구 데이터에 따라 순위를 매겨 요약합니다. 이 쿼리는 각 사용자의 총 쿼리 수, 청구된 총 바이트 수, 총 슬롯 밀리초를 집계합니다. 이 정보는 채택을 이해하고 리소스의 주요 소비자를 식별하는 데 유용합니다.

SELECT
  user_email,
  COUNT(*) AS total_queries,
  SUM(total_bytes_billed) AS total_bytes_billed,
  SUM(total_slot_ms) AS total_slot_ms
FROM
  `region-REGION_NAME.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION`
WHERE
  -- Filter for jobs created in the last 30 days
  creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
  -- Filter for jobs originating from Connected Sheets
  AND job_id LIKE 'sheets_dataconnector%'
  -- Filter for completed jobs
  AND state = 'DONE'
  AND (statement_type IS NULL OR statement_type <> 'SCRIPT')
GROUP BY
  1
ORDER BY
  total_bytes_billed DESC;

REGION_NAME을 프로젝트의 리전으로 바꿉니다. 예를 들면 region-us입니다.

결과는 다음과 유사합니다.

+---------------------+---------------+--------------------+-----------------+
| user_email          | total_queries | total_bytes_billed | total_slot_ms   |
+---------------------+---------------+--------------------+-----------------+
| alice@example.com   | 152           | 12000000000        | 3500000         |
| bob@example.com     | 45            | 8500000000         | 2100000         |
| charles@example.com | 210           | 1100000000         | 1800000         |
+---------------------+---------------+--------------------+-----------------+

조직 수준에서 연결된 시트 쿼리의 작업 로그 찾기

다음 쿼리는 커넥티드 시트에서 실행되는 모든 개별 쿼리의 자세한 로그를 제공합니다. 이 정보는 감사하고 비용이 많이 드는 특정 쿼리를 식별하는 데 유용합니다.

SELECT
  job_id,
  creation_time,
  user_email,
  project_id,
  total_bytes_billed,
  total_slot_ms,
  query
FROM
  `region-REGION_NAME.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION`
WHERE
  creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
  AND job_id LIKE 'sheets_dataconnector%'
  AND state = 'DONE'
  AND (statement_type IS NULL OR statement_type <> 'SCRIPT')
ORDER BY
  creation_time DESC;

REGION_NAME을 프로젝트의 리전으로 바꿉니다. 예를 들면 region-us입니다.

결과는 다음과 유사합니다.

+---------------------------------+---------------------------------+-----------------+------------+--------------------+---------------+--------------------------------+
| job_id                          | creation_time                   | user_email      | project_id | total_bytes_billed | total_slot_ms |  query                         |
+---------------------------------+---------------------------------+-----------------+------------+--------------------+---------------+--------------------------------+
| sheets_dataconnector_bquxjob_1  | 2025-11-06 00:26:53.077000 UTC  | abc@example.com | my_project | 12000000000        | 3500000       | SELECT ... FROM dataset.table1 |
| sheets_dataconnector_bquxjob_2  | 2025-11-06 00:24:04.294000 UTC  | xyz@example.com | my_project | 8500000000         | 2100000       | SELECT ... FROM dataset.table2 |
| sheets_dataconnector_bquxjob_3  | 2025-11-03 23:17:25.975000 UTC  | bob@example.com | my_project | 1100000000         | 1800000       | SELECT ... FROM dataset.table3 |
+---------------------------------+---------------------------------+-----------------+------------+--------------------+---------------+--------------------------------+