PARTITIONS 뷰

INFORMATION_SCHEMA.PARTITIONS 뷰는 각 파티션에 대해 하나의 행을 포함합니다.

INFORMATION_SCHEMA.PARTITIONS 뷰의 쿼리는 테이블 1,000개로 제한됩니다. 프로젝트 수준에서 파티션에 대한 데이터를 가져오려면 쿼리를 여러 쿼리로 분할한 후 결과를 조인하면 됩니다. 이 한도를 초과하면 다음과 비슷한 오류가 발생할 수 있습니다.

INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.

필수 권한

INFORMATION_SCHEMA.PARTITIONS 뷰를 쿼리하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.list

다음과 같이 사전 정의된 각 IAM 역할에는 위의 권한이 포함되어 있습니다.

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.dataViewer

BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

스키마

INFORMATION_SCHEMA.PARTITIONS 뷰를 쿼리하면 일반적으로 각 파티션당 하나의 행이 쿼리 결과에 포함됩니다. 단, __UNPARTITIONED__ 파티션에 장기 스토리지 계층 데이터와 활성 스토리지 계층 데이터가 조합된 경우는 예외입니다. 이 경우 뷰는 __UNPARTITIONED__ 파티션에 대해 스토리지 계층별로 하나씩 행 2개를 반환합니다.

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

열 이름 데이터 유형
TABLE_CATALOG STRING 데이터 세트가 포함된 프로젝트의 프로젝트 ID
TABLE_SCHEMA STRING 테이블이 포함된 데이터 세트 이름(또는 datasetId라고 함)
TABLE_NAME STRING 테이블 이름(또는 tableId라고 함)
PARTITION_ID STRING 단일 파티션의 ID. 파티션을 나누지 않은 테이블의 경우 값은 NULL입니다. 파티션 나누기 열의 NULL 값이 포함된 행이 있는 파티션을 나눈 테이블의 경우에는 값이 __NULL__입니다.
TOTAL_ROWS INTEGER 파티션의 총 행 수
TOTAL_LOGICAL_BYTES INTEGER 파티션에 있는 논리적 총 바이트 수
LAST_MODIFIED_TIME TIMESTAMP 데이터가 파티션에 최근에 기록된 시간
STORAGE_TIER STRING 파티션의 스토리지 계층:

범위 및 구문

이 뷰에 대한 쿼리에는 데이터 세트 한정자가 있어야 합니다. 데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 자세한 내용은 구문을 참조하세요. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 설명합니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS 데이터 세트 수준 데이터 세트 위치
다음을 바꿉니다.

  • (선택사항) PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.

예시

예시 1

다음 예시에서는 이름이 mydataset인 데이터 세트의 모든 테이블에서 각 스토리지 계층이 사용하는 논리적 바이트 수를 계산합니다.

SELECT
  storage_tier,
  SUM(total_logical_bytes) AS logical_bytes
FROM
  `mydataset.INFORMATION_SCHEMA.PARTITIONS`
GROUP BY
  storage_tier;

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

+--------------+----------------+
| storage_tier | logical_bytes  |
+--------------+----------------+
| LONG_TERM    |  1311495144879 |
| ACTIVE       |    66757629240 |
+--------------+----------------+

예시 2

다음 예시에서는 partition_id 필드에서 파티션 유형을 추출하고 공개 bigquery-public-data.covid19_usafacts 데이터 세트의 테이블 수준에서 파티션 정보를 집계하는 열을 만듭니다.

SELECT
  table_name,
  CASE
    WHEN regexp_contains(partition_id, '^[0-9]{4}$') THEN 'YEAR'
    WHEN regexp_contains(partition_id, '^[0-9]{6}$') THEN 'MONTH'
    WHEN regexp_contains(partition_id, '^[0-9]{8}$') THEN 'DAY'
    WHEN regexp_contains(partition_id, '^[0-9]{10}$') THEN 'HOUR'
    END AS partition_type,
  min(partition_id) AS earliest_partition,
  max(partition_id) AS latest_partition_id,
  COUNT(partition_id) AS partition_count,
  sum(total_logical_bytes) AS sum_total_logical_bytes,
  max(last_modified_time) AS max_last_updated_time
FROM `bigquery-public-data.covid19_usafacts.INFORMATION_SCHEMA.PARTITIONS`
GROUP BY 1, 2;

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

+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+
| table_name      | partition_type | earliest_partition | latest_partition_id | partition_count | sum_total_logical_bytes | max_last_updated_time          |
+--------------+-------------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+
| confirmed_cases | DAY            | 20221204           | 20221213            | 10              | 26847302                | 2022-12-13 00:09:25.604000 UTC |
| deaths          | DAY            | 20221204           | 20221213            | 10              | 26847302                | 2022-12-13 00:09:24.709000 UTC |
| summary         | DAY            | 20221204           | 20221213            | 10              | 241285338               | 2022-12-13 00:09:27.496000 UTC |
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+