티스토리 뷰

 

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를 씌어주면된다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함