[HADOOP] 피벗 및 합계를 높이십시오.
HADOOP피벗 및 합계를 높이십시오.
두 번째 열의 값을 기준으로 피벗 및 합계를 계산하는 표가 있습니다.
입력 예 :
|own|pet|qty|
|---|---|---|
|bob|dog| 2 |
|bob|dog| 3 |
|bob|dog| 1 |
|bob|cat| 1 |
|jon|dog| 1 |
|jon|cat| 1 |
|jon|cat| 1 |
|jon|cow| 4 |
|sam|dog| 3 |
|sam|cow| 1 |
|sam|cow| 2 |
예제 출력 :
|own|dog|cat|cow|
|---|---|---|---|
|bob| 6 | 1 | |
|jon| 1 | 2 | 4 |
|sam| 1 | | 3 |
해결법
-
==============================
1.동적 데이터의 경우 MAP를 사용할 수 있습니다.
동적 데이터의 경우 MAP를 사용할 수 있습니다.
select own ,str_to_map(concat_ws(',',collect_list(concat(pet,':',cast(qty as string))))) as pet_qty from (select own,pet ,sum(qty) qty from mytable group by own,pet ) t group by own ;
+-----+---------------------------------+ | own | pet_qty | +-----+---------------------------------+ | bob | {"cat":"1","dog":"6"} | | jon | {"cat":"2","cow":"4","dog":"1"} | | sam | {"cow":"3","dog":"3"} | +-----+---------------------------------+
-
==============================
2.사용 사례 및 sum () :
사용 사례 및 sum () :
select own, sum(case when pet='dog' then qty end) as dog, sum(case when pet='cat' then qty end) as cat, sum(case when pet='cow' then qty end) as cow from your_table group by own;
from https://stackoverflow.com/questions/44770037/hive-pivot-and-sum by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] API를 통해 Hadoop 카운터 값에 액세스하는 방법은 무엇입니까? (0) | 2019.06.30 |
---|---|
[HADOOP] 쉘 스크립트를 사용하여 hadoop에서 마지막 5 분 동안 생성 된 파일 얻기 (0) | 2019.06.30 |
[HADOOP] 실행시 Hadoop 오류 : 키의 유형이 일치하지 않습니다. 예상되는 org.apache.hadoop.io.Text, 수신 된 org.apache.hadoop.io.LongWritable (0) | 2019.06.30 |
[HADOOP] Mahout rowSimilarity (0) | 2019.06.30 |
[HADOOP] Hadoop 및 Python : 정렬 비활성화 (0) | 2019.06.30 |