복붙노트

[HADOOP] HIVE에서 Date Series를 생성하는 방법은 무엇입니까? (테이블 만들기)

HADOOP

HIVE에서 Date Series를 생성하는 방법은 무엇입니까? (테이블 만들기)

현재 각 계정에 대해 1 행이있는 표가 있고 표의 데이터가 다음과 같다고 가정 해 보겠습니다.

이제는 계정이 열려있는 매일 1 행 (예 : 각 계정의 시작일과 종료일 사이의 각 행에 대해 1 일) 인 새로운 표를 만들고 싶습니다.

1 번 테이블

Account Number    Start Date    End Date
123               1-Jan-17      1-Jul-17
456               1-Feb-17      4-May-17

표 2 (원하는 테이블)

Account Number    Day
123               1-Jan-17
123               1-Jan-17
     ...
123               1-Jul-17
456               1-Feb-17
456               2-Feb-17
     ...
456               4-May-17

Postgresql에는 'generate series'라는 함수가 있는데, 그렇게하면 쉽게 할 수 있습니다. 나는 HIVE에도 비슷한 기능이 있다면 그렇게 할 수 있을지 궁금합니다.

감사!

해결법

  1. ==============================

    1.

    select  t.AccountNumber
           ,date_add (t.StartDate,pe.i)   as Day
    
    from    Table1 t
            lateral view 
            posexplode(split(space(datediff(t.EndDate,t.StartDate)),' ')) pe as i,x
    
  2. from https://stackoverflow.com/questions/45278300/how-to-generate-date-series-in-hive-creating-table by cc-by-sa and MIT license