PARTITION BY
- PARTITION을 테이블 생성시 사용할 경우 특정 컬럼의 특정 값에 대해서만 불러온다.
- 생성하고자 하는 테이블의 용량이 클 경우 PARTITION을 활용하여 용량을 줄일 수 있다.
- WHERE 절과는 다르게 사용된다.
예시
CREATE TABLE T1(
COL_A STRING
, COL_B STRING
)
PARTITIONED BY (BASE_YM STRING)
-- HIVE 환경에서는 PARTITIONED BY를 사용한다.
-- MYSQL, ORACLE 환경에서는 다르게 작동한다.
;
- T1 이라는 빈 테이블을 생성한다.
- 이때 밑에 PARTITION BY 함수를 통해 지정하고자 하는 기준 BASE_YM을 설정한다.
INSERT OVERWRITE TABLE T1
PARTITION (BASE_YM = '202001')
SELECT
T2.COL_A
, T3.COL_B
FROM T2
LEFT JOIN T3
IN T2.NAME = T3.NAME
AND T2.AGE = T3.AGE
WHERE T2.BASE_YM = '202001'
;
- 처음에 사용된 INSERT OVERWRITE TABLE T1의 경우 T1 테이블에 덮어쓸 것이라는 문구를 나타낸다.
- PARTITION 구문을 통해 T1의 BASE_YM = '202001'값을 테이블 T1에다가 T2, T3에 있는 값들을 OVERWRITE한다.