[SQL] 하이브 - 하이브에서 피벗 기능
SQL하이브 - 하이브에서 피벗 기능
다음과 같이 저는 두 테이블이 있습니다 :
표 A
userid | code | code_name | property_id
0001 | 1 | apple_id | Y1234
0031 | 4 | mango_id | G4567
0008 | 3 | grape_id | H1209
00013 | 2 | peach_id | Z5643
표 2
apple_id | mango_id | grape_id | peach_id | new_id
Y1234 | R1890 | | | N456098
| G4567 | | B3490 | N002345
T3336 | | H1209 | F3467 | N129087
| D7865 | J6543 | Z5643 | N109876
원하는 결과 테이블
userid | new_id
0001 | N456098
0031 | N002345
0008 | N129087
00013 | N109876
표 A에서 CODE_NAME을 사용하여, 나는 기본적으로 표 B에 표 A에서 각각 PROPERTY_ID을 찾을 표 B. 목적의 열 이름과 일치하고 싶은 것은 해당 NEW_ID를 얻는 것입니다.
애플, 망고, 포도, 복숭아 ID는 동일 할 수 있습니다. 그러나 NEW_ID 값은 고유해야합니다.
이 하이브에서 수 있습니까? 하이브의 모든 UNPIVOT / 피벗 기능이있을 것 같지 않습니다.
어떤 도움이 정말 좋은 것입니다. 감사!
해결법
-
==============================
1.지도에 값 쌍 다음 새 열을 만들고, 다음 단계의 각 키를 참조 : 나는 하이브에서 테이블을 피벗 할 때마다, 나는 키를 수집합니다. 이것은 그 반대입니다.
지도에 값 쌍 다음 새 열을 만들고, 다음 단계의 각 키를 참조 : 나는 하이브에서 테이블을 피벗 할 때마다, 나는 키를 수집합니다. 이것은 그 반대입니다.
질문:
select a.userid, y.new_id from ( select new_id, fruit_name, fruit_code from ( select new_id, map("apple_id", apple_id , "mango_id", mango_id , "grape_id", grape_id , "peach_id", peach_id) as fruit_map from table_2 ) x lateral view explode(fruit_map) exptbl1 as fruit_name, fruit_code ) y join table_A a on (y.fruit_code=a.property_id)
산출:
0001 N456098 0031 N002345 0008 N129087 00013 N109876
-
==============================
2.결과를 얻을 수 UNPIVOT에 당신 실제로 해달라고해야합니다.
결과를 얻을 수 UNPIVOT에 당신 실제로 해달라고해야합니다.
SELECT * FROM ( SELECT userid, CASE WHEN property_id = apple_id THEN new_id WHEN property_id = mango_id THEN new_id WHEN property_id = grape_id THEN new_id WHEN property_id = peach_id THEN new_id END AS newid FROM (SELECT * FROM a FULL JOIN b) X ) y WHERE newid IS NOT NULL;
결과:
y.userid y.newid 1 N456098 31 N002345 8 N129087 13 N109876
from https://stackoverflow.com/questions/32621970/hive-unpivot-functionality-in-hive by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ADO.NET 매개 변수를 제공하는 방법 (0) | 2020.05.28 |
---|---|
[SQL] 부모와 무한 어린이를 반환하는 문을 선택 (0) | 2020.05.28 |
[SQL] 오라클 10g에 피벗 (0) | 2020.05.28 |
[SQL] 작은 따옴표로 묶인 변수에 SQL 주입을 방지하기 위해 반드시 htmlspecialchars의 부족인가? (0) | 2020.05.28 |
[SQL] MySQL의 - 장소 날짜 유형 변경 날짜 문자열? (0) | 2020.05.28 |