빅쿼리(BigQuery)에서 테이블 및 파티션 유효기간(expiration) 설정 및 변경하기
빅쿼리에서 테이블 유효기간을 설정하고 변경하는 방법과 파티션 유효기간을 설정하고 변경하는 방법을 알아보겠습니다.
- 빅쿼리 콘솔 UI에서 데이터셋을 만들 때 테이블 유효기간을 정할 수 있습니다. 7일로 정하면, 해당 데이터셋 아래에 생성되는 모든 테이블은 유효기간이 7일이고 7일 이후는 삭제됩니다.
![]() |
- 만들어진 데이터셋을 자세히 보시면 table expiration 이 설정된 것을 확인할 수 있습니다.
- 아무 테이블이나 만들어보면 유효기간이 7일 적용된 것을 알 수 있습니다. 문제는 위와 같이 설정하면 만드는 모든 테이블에 유효기간이 적용됩니다.
- 파티션을 가진 테이블을 만들어 보겠습니다. 파티션 방법에는 3가지가 있지만 UI에서는 한가지만 가능합니다. Partitioning filter를 체크합니다. 일자별로 파티션할지 시간별로 할지 선택합니다.
- 생성한 테이블의 파티션 설정을 확인합니다.
- 파티션 필터를 체크했기 때문에 쿼리를 할 때는 항상 WHERE 절에 쿼리할 파티션을 명시해야 합니다. 이렇게하면 쿼리사이즈가 줄어들어 돈도 절약하고 쿼리성능도 향상됩니다.
* 빅쿼리 콘솔에서 파티션을 생성할 때 단점은 파티션(partition) 유효기간을 설정할 수가 없습니다. (일단 2020년 9월 1일 자로는 UI에서 불가능합니다. 하지만 콘솔에서 테이블과 파티션 유효기간을 변경하는 인터페이스가 생길 수도 있지 않을까 생각합니다.)
** 테이블 유효기간 변경과 파티션 유효기간 변경은 DDL이나 bq 커맨드를 통해 가능합니다.
- DDL인 ALTER TABLE로 파티션 유효기간을 변경하겠습니다. 기간을 10일로 했습니다.
- 테이블의 상세정보(Details)를 보면 파티션 유효기간이 설정된 것을 알 수 있습니다.
- 위의 이미지를 보시면 데이터셋 만들 때 테이블 유효기간을 7일로 설정한 것을 볼 수 있습니다. 아래의 DDL 구문을 실행해 테이블 유효기간을 변경하겠습니다.
- 실행을 하면 아래와 같이 테이블 유효기간이 변경된 것을 확인할 수 있습니다. 여기서 질문! 파티션은 10일 뒤 사라지고 테이블은 5일 뒤 사라진다고 설정되어 있으면 어떻게 될까요? 테이블과 파티션은 5일 뒤 동시에 먼지가 되어 날아갑니다.
- 데이터셋에서 테이블 유효기간을 설정하지 말고 (모든 테이블에 적용되니) 파티션을 만든 뒤 파티션 유효기간을 적용하지 말고 테이블을 만들 때 한 번에 테이블과 파티션 유효기간을 적용하는 방법을 알려드리겠습니다. GCP콘솔에서 클라우드 쉘(Cloud Shell)을 엽니다. 그리고 아래와 같이 bq 명령어를 사용합니다. (bq = BigQuery) jin_test 데이터셋 아래에 partiton1이란 테이블을 만듭니다. 테이블 유효기간은 2592000초 (30일) 파티션을 일별로, 파티션 유효기간은 2592000초 (30일)로 설정합니다. 스키마는 name이란 string 타입의 컬럼과 address란 string 타입의 컬럼으로 정의합니다.
* 참고로 테이블 스키마(schema)를 정의할 때 공백이 있으니 Too many positional args 란 에러가 나서 수정하였습니다. 저 에러를 보시면 오타나 공백을 찾아 수정하세요.
** mk 명령어는 데이터셋, 테이블을 만들 때 사용합니다.
- 빅쿼리 콘솔에서 테이블 유효기간과 파티션 유효기간이 적용되어 테이블이 생성되었는지 확인합니다.
Comments
Post a Comment