빅쿼리(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 타입의 컬럼으로 정의합니다.
bq 명령어로 테이블, 파티션 유효기간 설정

* 참고로 테이블 스키마(schema)를 정의할 때 공백이 있으니 Too many positional args 란 에러가 나서 수정하였습니다. 저 에러를 보시면 오타나 공백을 찾아 수정하세요.  
** mk 명령어는 데이터셋, 테이블을 만들 때 사용합니다. 

  • 빅쿼리 콘솔에서 테이블 유효기간과 파티션 유효기간이 적용되어 테이블이 생성되었는지 확인합니다. 
bq 명령어로 테이블, 파티션 유효기간 설정

Comments