INFORMATION_SCHEMA.SHARED_DATASET_USAGE 뷰

INFORMATION_SCHEMA.SHARED_DATASET_USAGE 뷰에는 공유 데이터 세트 테이블의 소비에 대한 실시간에 가까운 메타데이터가 포함됩니다. 조직 간 데이터 공유를 시작하려면 Analytics Hub를 참조하세요.

필요한 역할

INFORMATION_SCHEMA.SHARED_DATASET_USAGE 뷰를 쿼리는 데 필요한 권한을 얻으려면 관리자에게 소스 프로젝트에 대한 BigQuery 데이터 소유자(roles/bigquery.dataOwner) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 INFORMATION_SCHEMA.SHARED_DATASET_USAGE 뷰를 쿼리하는 데 필요한 bigquery.datasets.listSharedDatasetUsage 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

스키마

기본 데이터는 job_start_time 열로 파티션을 나누고 project_iddataset_id로 클러스터링됩니다.

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

열 이름 데이터 유형
project_id STRING (클러스터링 열) 공유 데이터 세트가 포함된 프로젝트의 ID입니다.
dataset_id STRING (클러스터링 열) 공유 데이터 세트의 ID입니다.
table_id STRING 액세스된 테이블의 ID입니다.
data_exchange_id STRING 데이터 교환의 리소스 경로입니다.
listing_id STRING 목록의 리소스 경로입니다.
job_start_time TIMESTAMP (파티션 나누기 열) 이 작업의 시작 시간입니다.
job_end_time TIMESTAMP 이 작업의 종료 시간입니다.
job_id STRING 작업 ID입니다. 예: bquxjob_1234
job_project_number INTEGER 이 작업이 속한 프로젝트의 수입니다.
job_location STRING 작업의 위치입니다.
linked_project_number INTEGER 구독자 프로젝트의 프로젝트 번호입니다.
linked_dataset_id STRING 구독자 데이터 세트의 연결된 데이터 세트 ID입니다.
subscriber_org_number INTEGER 작업이 실행된 조직 번호입니다. 구독자의 조직 번호입니다. 조직이 없는 프로젝트의 경우 이 필드는 비어 있습니다.
subscriber_org_display_name STRING 작업이 실행된 조직을 참조하는 인간이 읽을 수 있는 문자열입니다. 구독자의 조직 번호입니다. 조직이 없는 프로젝트의 경우 이 필드는 비어 있습니다.
num_rows_processed INTEGER 작업으로 이 테이블에서 처리한 행 수입니다.
total_bytes_processed INTEGER 이 테이블에서 작업으로 처리한 총 바이트입니다.

데이터 보관

INFORMATION_SCHEMA.SHARED_DATASET_USAGE 뷰에는 실행 중인 작업과 지난 180일 동안의 작업 기록이 포함됩니다.

범위 및 구문

이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 리전 한정자를 지정하지 않으면 미국 리전에서 메타데이터가 검색됩니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]INFORMATION_SCHEMA.SHARED_DATASET_USAGE 프로젝트 수준 미국 리전
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE 프로젝트 수준 REGION
다음을 바꿉니다.

  • (선택사항) PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
+ REGION: 모든 데이터 세트 리전 이름입니다. 예를 들면 region-us입니다.

예시

기본 프로젝트가 아닌 프로젝트에 대해 쿼리를 실행하려면 다음 형식으로 프로젝트 ID를 추가합니다.

PROJECT_ID.region-REGION_NAME.INFORMATION_SCHEMA.SHARED_DATASET_USAGE

예를 들면 myproject.region-us.INFORMATION_SCHEMA.SHARED_DATASET_USAGE입니다.

모든 공유 테이블에서 실행된 총 작업 수 가져오기

다음 예시에서는 프로젝트의 구독자가 실행하는 총 작업 수를 계산합니다.

SELECT
  COUNT(DISTINCT job_id) AS num_jobs
FROM
  `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE

결과는 다음과 비슷합니다.

+------------+
| num_jobs   |
+------------+
| 1000       |
+------------+

구독자가 실행하는 총 작업 수를 확인하려면 WHERE 절을 사용합니다.

  • 데이터 세트의 경우 WHERE dataset_id = "..."를 사용합니다.
  • 테이블의 경우 WHERE dataset_id = "..." AND table_id = "..."를 사용합니다.

처리된 행 수를 기반으로 가장 많이 사용된 테이블 가져오기

다음 쿼리는 구독자가 처리한 행 수를 기반으로 가장 많이 사용된 테이블을 계산합니다.

SELECT
  dataset_id,
  table_id,
  SUM(num_rows_processed) AS usage_rows
FROM
  `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
GROUP BY
  1,
  2
ORDER BY
  3 DESC
LIMIT
  1

출력은 다음과 비슷합니다.

+---------------+-------------+----------------+
| dataset_id    | table_id      | usage_rows     |
+---------------+-------------+----------------+
| mydataset     | mytable     | 15             |
+---------------+-------------+----------------+

테이블을 소비하는 상위 조직 찾기

다음 쿼리는 테이블에서 처리된 바이트 수를 기준으로 상위 구독자를 계산합니다. num_rows_processed 열을 측정항목으로 사용할 수도 있습니다.

SELECT
  subscriber_org_number,
  ANY_VALUE(subscriber_org_display_name) AS subscriber_org_display_name,
  SUM(total_bytes_processed) AS usage_bytes
FROM
  `region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
GROUP BY
  1

출력은 다음과 비슷합니다.

+--------------------------+--------------------------------+----------------+
|subscriber_org_number     | subscriber_org_display_name    | usage_bytes    |
+-----------------------------------------------------------+----------------+
| 12345                    | myorganization                 | 15             |
+--------------------------+--------------------------------+----------------+

조직이 없는 구독자의 경우 subscriber_org_number 대신 job_project_number를 사용할 수 있습니다.

데이터 교환의 사용량 측정항목 가져오기

데이터 교환 및 소스 데이터 세트가 서로 다른 프로젝트에 있는 경우 다음 단계에 따라 데이터 교환의 사용량 측정항목을 확인합니다.

  1. 데이터 교환에 속하는 모든 목록을 찾습니다.
  2. 목록에 연결된 소스 데이터 세트를 검색합니다.
  3. 데이터 교환의 사용량 측정항목을 보려면 다음 쿼리를 사용합니다.
SELECT
  *
FROM
  source_project_1.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
WHERE
  dataset_id='source_dataset_id'
AND data_exchange_id="projects/4/locations/us/dataExchanges/x1"
UNION ALL
SELECT
  *
FROM
  source_project_2.`region-us`.INFORMATION_SCHEMA.SHARED_DATASET_USAGE
WHERE
  dataset_id='source_dataset_id'
AND data_exchange_id="projects/4/locations/us/dataExchanges/x1"