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입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
DATASET_ID
: 데이터 세트의 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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+