프로그래밍/SQL

파티션 테이블로 Big Query 쿼리 비용 대폭 절감하는 법 (Partitioned table)

Lou Park 2021. 5. 28. 10:24

Big Query에서 쿼리를 날릴때 처리되는 용량을 가지고 요금이 매겨지는데, 그래서 "실행시 이 쿼리가 xxbyte 를 처리합니다" 라는 곳을 유심히 지켜봐야한다. Big Query에서는 테이블을 날짜별, 시간별, 또는 정수 기준으로 나눈 파티션을 나눈 테이블을 지원하는데, 이를 이용하면 처리되는 데이터의 양을 대폭 줄일 수 있다.

 

파티션 테이블을 사용하지 않았을때

 

다음은 <프로젝트 아이디.테이블 명.*> 으로 집어서 쿼리를 날렸을때 처리되는 데이터 양이다.

SELECT event_timestamp, user_pseudo_id, param, user_id
        FROM `table-1605078626536.analytics_252952500.*`,
        UNNEST(event_params) as param
        WHERE event_name = 'full_banner'
        AND param.key = 'action_parameter'
        AND event_date = '20210525'

무려 30GB를 처리한다고한다. 

 

날짜 파티션 테이블을 사용했을때

 

이 쿼리는 어처피 21년 05월 25일의 데이터만을 조회할 것이므로 날짜 파티션 테이블을 이용하면 된다.

SELECT event_timestamp, user_pseudo_id, param, user_id
        FROM `table-1605078626536.analytics_252952500.events_20210525`,
        UNNEST(event_params) as param
        WHERE event_name = 'full_banner'
        AND param.key = 'action_parameter'

결과는 ?? 파티션 테이블을 사용하지 않았을때와 거의 1000배 비용 차이가난다.