다음과 유사한 테이블이 있습니다. 각 그룹에 대해 하이브 그룹화 된 결과의 각 그룹에 대해 그룹화되지 않은 열을 얻는 방법은 무엇입니까?
|name | grp | dt
------------------------------
|foo | A | 2016-01-01
|bar | A | 2016-01-02
|hai | B | 2016-01-01
|bai | B | 2016-01-02
|baz | C | 2016-01-01
, 나는
name
그
dt
가장 최근의 찾고 싶어요.
|name | grp | dt
------------------------------
|bar | A | 2016-01-02
|bai | B | 2016-01-02
|baz | C | 2016-01-01
오라클에서 다음 쿼리가 작동하고 매우 깨끗합니다 (에서 촬영 : 즉, MAX (DT), GRP에 의해 그룹 및 DT 이름을 연관 출력에 그룹의 최대이다 here) :
SELECT o.name, o.grp, o.dt
FROM tab o
LEFT JOIN tab b
ON o.grp = b.grp AND o.dt < b.dt
WHERE b.dt IS NULL
그러나 이것은 documentation을 인용 다른 question에서 [Error 10017]: Line 4:43 Both left and right aliases encountered in JOIN 'service_effective_from'
실패, 내가 조인 문에 비항 등 연산자를 사용할 수 없다는 것을 배울 :
하이브에서는 평등 조인, 외부 조인 및 왼쪽 세미 조인 만 지원됩니다. Hive는 map/reduce 작업과 같은 조건을 표현하기가 매우 어렵 기 때문에 평등 조건이 아닌 조인 조건을 지원하지 않습니다.
조인 조건에서 부등식 연산자를 사용할 수 없다는 가정하에 하이브에서이를 구할 수있는 깨끗한 해결책은 무엇입니까?
dt가 그룹당 가장 최근의 이름 인'name'을 찾고 싶다면'foo'가 반환되는 이유는 무엇입니까? 그룹'A'에서 가장 최근의 것이 아닌'2016-01-01'과 관련이 있습니다. – gobrewers14
@ GoBrewers14 내 사과; 당신이 올바른지; 나는 그것을 '바'로 편집했다. –