Hive파티션 yymmdd=20210407
주별로 그룹핑하기 위해서 yyyy-mm-dd형식의 데이터 포맷이여야한다.
아래 함수를 써 변경
from_unixtime(unix_timestamp(orr.yymmdd,'yyyymmdd'),'yyyy-mm-dd')
WEEKOFYEAR(yyyy-mm-dd value) 를 사용해 주별로 그룹핑을 한다
Ex )
SELECT
WEEKOFYEAR(from_unixtime(unix_timestamp(yymmdd,'yyyymmdd'),'yyyy-mm-dd')) as week,
sum(col1) as `컬럼1`,
sum(col2) as `컬럼2`,
WEEKOFYEAR(from_unixtime(unix_timestamp(yymmdd,'yyyymmdd'),'yyyy-mm-dd')) as week,
sum(col1) as `컬럼1`,
sum(col2) as `컬럼2`,
sum(col3) as `컬럼3`
FROM test_db
GROUP BY
FROM test_db
GROUP BY
WEEKOFYEAR(from_unixtime(unix_timestamp(yymmdd,'yyyymmdd'),'yyyy-mm-dd'))
;
;
week라는 컬럼이 현재 년도에서 몇번째 주인지를 나타내는 int값으로 리턴을 하기에,
특정주의 특정요일로 날짜를 표시하려면 아래와 같은 쿼리를 Group by절에 사용한다.
(일요일 기준)
...
GROUP BY
date_sub(from_unixtime(unix_timestamp(yymmdd,'yyyymmdd'),'yyyy-mm-dd'), pmod(datediff(from_unixtime(unix_timestamp(yymmdd,'yyyymmdd'),'yyyy-mm-dd'),'1900-01-07'),7))
댓글 없음:
댓글 쓰기