데이터베이스/Big Data
[Big Data] Hive 날짜 계산 및 마지막 파티션 구하기
Reference M1
2019. 11. 4. 19:45
Hive를 사용하다 보면 전달 1일 또는 전달 마지막일을 구해야 할 때가 있다. 날짜 계산 함수를 사용하여 원하는 값을 구해보자.
#전월 1일
select add_months(trunc('2019-11-04', 'MM'), -1);
select add_months(trunc(current_date, 'MM'), -1);
select date_format(add_months(trunc(current_date, 'MM'), -1), 'yyyyMMdd');
trunc와 add_months를 통해 전월 1일을 구할 수 있다. 결과 값 format이 맞지 않다면 date_format을 통해
날짜 포멧을 변경하면 된다.
#전월 마지막 일자
select last_day(add_months(trunc('2019-11-04', 'MM'), -1));
select last_day(add_months(trunc(current_date, 'MM'), -1));
select date_format(last_day(add_months(trunc(current_date, 'MM'), -1)), 'yyyyMMdd');
역시 tunc와 add_months 통해 전월 1일을 구할 수 있으며, last_day는 손쉽게 마지막 날을 반환해준다. 필요에 따라 date_format을 사용하면 된다.
특정일 사이 마지막 파티션 구하기
#전월 마지막 파티션
select max(etl_dt)
from hive_table
where etl_dt between date_format(add_months(trunc(current_date, 'MM'), -1), 'yyyyMMdd')
and date_format(last_day(add_months(trunc(current_date, 'MM'), -1)), 'yyyyMMdd');
데이터를 수집하거나 제공할때 해당 월의 마지막 파티션이 필요로 할때가 있다. 파티션 단위가 데일리이면 상관없지만 특정요일 주 단위인 경우 마지막 파티션이 언제가 될지 모른다. 이런 경우 월의 첫일자와 마지막 일자를 구하여 파티션에 max를 씌어주면된다.