GCP) 빅쿼리 - 테이블 크기 확인

GCP) 빅쿼리 - 테이블 크기 확인

빅쿼리(BigQuery)의 특정 테이블의 행 개수와 용량 산출에 대해 알아보자.


개요

빅쿼리(BigQuery)를 사용하면 용량 또는 쿼리가 선택하는 데이터 규모에 따른 비용 산출은 누구나 걱정하는 부분이다. GCP에서 비용 계산기를 제공하긴 하지만 특정 테이블의 행 개수와 용량을 직접 확인하는 것이 필요할 때가 있다. 그리고 단일 테이블이 아닌 다중 테이블을 한 번에 조회하는 방법도 알아보자.

상세 페이지 확인

특정 테이블을 클릭하게 되면 기본적으로 해당 테이블의 “스키마” 정보 탭이 자동 선택되는데 해당 탭 오른쪽 바로 옆에 “세부정보” 탭이 있다. 해당 탭 화면에서 스크롤을 조금만 내리면 “스토리지 정보” 항목에서 해당 테이블의 행 개수와 총 용량을 확인할 수 있다.
빅쿼리 테이블 상세

쿼리 기반 확인

특정 데이터셋의 “INFORMATION_SCHEMA.PARTITIONS”에 있는 테이블 정보를 조회하면 테이블의 행 개수와 용량을 확인할 수 있다. 해당 테이블의 각 필드에 대한 설명은 다음과 같다.

변수명 설명
table_catalog 프로젝트 명
table_schema 데이터셋 명
table_name 테이블 명
partition_id 파티션 식별자
total_rows 테이블 행 개수
total_logical_bytes 테이블 용량
total_billable_bytes 테이블 과금 용량
last_modified_time 최종 수정 시각
storage_tier 저장소 등급

단일 테이블 확인

프로젝트 내부의 특정 데이터셋의 특정 테이블 정보를 조회하고자 한다면 다음과 같은 쿼리를 작성하면 된다.

1
2
SELECT * FROM `{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS
WHERE table_name = "{테이블 명}";

만약 다른 프로젝트의 데이터셋에 있는 테이블 정보를 조회하고 싶다면 다음과 같이 쿼리를 수정하면 된다. 여기서 프로젝트 ID가 아닌 프로젝트 명을 사용하지 않도록 조심하자.

1
2
SELECT * FROM `{프로젝트 ID}.{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS
WHERE table_name = "{테이블 명}";

그리고 크기 확인에 도움이 되는 정보만 뽑자면 다음과 같이 쿼리를 작성하면 된다. 참고로 “total_logical_bytes”는 바이트 단위이며, 과금 계산은 테라바이트 단위로 하기 때문에 “pow(2, 40)”을 나누는 것도 좋다. 그리고 해당 필드 대신 “total_billable_bytes”를 사용하는 것도 좋다.

1
2
3
4
5
6
7
8
SELECT 
table_catalog,
table_schema,
table_name,
total_rows,
round(total_logical_bytes / pow(2, 40), 5) AS size_TB
FROM `{프로젝트 ID}.{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS
WHERE table_name = "{테이블 명}";

다중 테이블 확인

앞의 쿼리를 작성하면서 충분히 이해했겠지만, 특정 데이터셋의 모든 테이블 정보를 조회하고자 한다면 다음과 같은 쿼리를 작성하면 된다.

1
SELECT * FROM `{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS;

그리고 원하는 정보만 뽑자면 다음과 같이 쿼리를 작성하면 된다.

1
2
3
4
5
6
7
SELECT 
table_catalog,
table_schema,
table_name,
total_rows,
round(total_logical_bytes / pow(2, 40), 5) AS size_TB
FROM `{프로젝트 ID}.{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS;

특정 데이터셋의 모든 테이블의 크기를 취합하고자 한다면 다음과 같이 쿼리를 작성하면 된다.

1
2
3
4
5
6
7
SELECT
table_catalog,
table_schema,
sum(total_rows) AS nrows,
round(sum(total_logical_bytes) / pow(2, 40), 5) AS size_TB
FROM `{프로젝트 ID}.{데이터셋 명}`.INFORMATION_SCHEMA.PARTITIONS
GROUP BY table_catalog, table_schema;
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×