2014-04-26 1 views
0

하이브 맵 - 감소 함수 (UDF) 정의, 사용자, 아이템, 타입, 시간I 4 <strong>문자열 하이브 테이블 A에게 이름</strong> 열이

샘플 입력은 다음과 같다 :

user item type time 
1  101 0  06-16 # June 16, 2013 , all dates are in the same year 
2  101 0  09-04 
1  102 1  07-03 

가중치 (각각 1,2,3,4)가있는 4 가지 유형 (0,1,2,3)이 있습니다. 로 정의 된 각 행에 대해 한 번에 점수가 다음과
tScore = (time - 06-01-2013)/7
즉,
fScore = weight of type * time score
은 내가 키로 (사용자 항목)에 따라 fScore를 집계하고 테이블을 정렬 할 필요가 얼마나 많은 주 6 월 1 일부터 내림차순 fScore에 따라

내가 명확하게하려는 것을 설명했는지 알 수 없습니다. 불명확 한 점이 있으시면 언제든지 말씀해주십시오.

답변

1
select user, item, (type + 1) * datediff(concat('2013-', time), '2013-06-01')/7 as fScore 
from A 
order by fScore desc; 

모든 내장 기능에 대해 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF을 확인하십시오.

또한 무게가 단지 (유형 + 1) 경우가 아니라면 해당 부분을 case 문으로 대체 할 수 있습니다. 예 :

select user, item, case type when 0 then 1 when 1 then 2 when 2 then 3... 
관련 문제