[HADOOP] 몇 열에 대한 열을 번들 하이브 / SQL은 열 나머지는 풀을 기반으로하는 다른 열 최저 / 최고
HADOOP몇 열에 대한 열을 번들 하이브 / SQL은 열 나머지는 풀을 기반으로하는 다른 열 최저 / 최고
저는 아래 5 열 하이브 테이블이
name orderno productcategory amount description
KJFSFKS 1 1 40 D1
KJFSFKS 2 2 50 D2
KJFSFKS 3 2 67 D3
KJFSFKS 4 2 10 D4
KJFSFKS 5 3 2 D5
KJFSFKS 6 3 5 D6
KJFSFKS 7 3 6 D7
KJFSFKS 8 4 8 D8
KJFSFKS 9 5 8 D9
KJFSFKS 10 5 10 D10
productcategory 코드 양 필드를 추가 여러 행 같으면 동일한 제품 분류 코드에 기초하여 원하는 출력이 항상 picklowest 출력 아래 최고 orderno에 기초하여 설명을 골라 orderno
name orderno productcategory amount description
KJFSFKS 1 1 40 D1
KJFSFKS 2 2 127 D4
KJFSFKS 5 3 13 D7
KJFSFKS 8 4 8 D8
KJFSFKS 9 5 18 D10
위에서 말했듯이, 일부 필드는, 어떤 순서로 다른 순서로 다른있다
난으로 그룹을 사용하지만, 합계 (양),이 orderno 열을 기반으로 설명 필드에 대한 것, 또한 내가 주문 번호에 따라 선택해야 내 요구 사항의 다른 열이 미세하다
해결법
-
==============================
1.
select name, orderno, productcategory, amount, description from ( select name, orderno, productcategory, sum(amount) over(partition by name, productcategory) amount, first_value(description) over(partition by name, productcategory order by orderno desc) description, row_number() over (partition by name, productcategory order by orderno) rn from your_table )s where rn=1; --pick lowest orderno
OK KJFSFKS 1 1 40 D1 KJFSFKS 2 2 127 D4 KJFSFKS 5 3 13 D7 KJFSFKS 8 4 8 D8 KJFSFKS 9 5 18 D10 Time taken: 12.492 seconds, Fetched: 5 row(s)
-
==============================
2.
select name ,min(orderno) as orderno ,productcategory ,sum(amount) as amount ,max(named_struct('orderno',orderno,'description',description)).description from mytable group by name ,productcategory ;
from https://stackoverflow.com/questions/45328004/hive-sql-bundling-columns-for-few-columns-rest-of-the-columns-are-pull-based-low by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 어떻게 OutputCommitter의 설정을 설정하는 방법? (0) | 2019.10.05 |
---|---|
[HADOOP] 어떻게 .lzo_deflat 파일을 디코딩 할 수? (0) | 2019.10.05 |
[HADOOP] Dataproc에서 클러스터를 만들 때보고 데이타 노드 불충분 한 수 (0) | 2019.10.05 |
[HADOOP] 하이브 이전 타임 스탬프에서 일의 차이를 찾기 (0) | 2019.10.05 |
[HADOOP] 왜 RunJar는 jar 파일을 압축 해제합니까? (0) | 2019.10.05 |