티스토리 뷰
21. Unpivot
요즘 하둡(hadoop)을 공부하며 사용해보고 있다. 조만간 블로그에도 올리겠지만
공부하면 할수록 데이터 분석가는 SQL의 기초를 탄탄히 다져야 한다는 생각이 든다.
하둡 생태계중에서 hive, Tajo 등 SQL을 기반으로 하는 것들이 많고,
NoSQL 중 하나인 Pig도 어렵지 않게 사용할 수 있다.
다시 본론으로 돌아와서, 오늘은 Excel에서도 흔히 쓰이면서 SQL의 유용한 장점이자
pivot 함수의 반대인 unpivot을 정리하자.
pivot이 세로 데이터 → 가로 컬럼명으로 이동하는 느낌이라면, unpivot은 가로 컬럼명 → 세로 데이터로 이동하는 느낌이다.
→ pivot에 대한 설명 다시 보기 <링크>
unpivot의 사용 방법은
unpivot ( 새로운컬럼명 for 지금 컬럼명이 데이터로 들어갈 컬럼명 in ( 컬럼명 입력 ) ) ; 이다.
쉬운 이해를 위해 예제로 사용할 table을 만들어보자.
ⓐ 구매 관련 데이터가 들어가는 buy 테이블을 만든다.
create table buy
( ename varchar2(10),
bicycle number(10),
camera number(10),
notebook number(10) );
ⓑ '철수', '영희', '민석'이의 구매 데이터를 insert한다.
insert into buy values('철수',2,3,1);
insert into buy values('영희',1,2,3);
insert into buy values('민석',3,2,2);
select * from buy;
ⓒ buy 테이블의 컬럼인 BICYCLE, CAMERA, NOTEBOOK이 데이터로 들어가는 buy2 테이블을 unpivot을 통해 만든다.
create table buy2
as
select *
from buy
unpivot( cnt for item in (BICYCLE, CAMERA, NOTEBOOK) );
select * from buy2;
본인도 공부를 하면서 알게 되었는데 pivot/unpivot의 개념은 R의 reshape 패키지의 melt, cast 함수로 이어진다.
특히 ADSP(데이터분석 준전문가)를 공부하시는 분들이라면 직접 사용해보시길 권장한다.
▼참고 그림
혹은 R의 패키지인 sqldf를 통해 R에서 sql 명령어를 사용하여 처리해도 된다.
사실상 SQL에서 unpivot을 사용하는 것도 중요하지만,
R, Python에서의 데이터 정제를 위한 개념정리를 위해서, 그리고 Hadoop,hive 등에서 대용량 데이터를 다룰 때 효율적인 분석을 위해서
pivot/unpivot은 필히 제대로 알고 넘어가야한다.
=================이 글은 Markdown을 활용해 작성하였습니다=================
'SQL' 카테고리의 다른 글
[SQL] 23. range(rows) between .. and .. (3) | 2018.03.15 |
---|---|
[SQL] 22. Data Set의 Sample 확인 방법 (0) | 2018.02.28 |
[SQL] 20. With절, 임시 테이블 (3) | 2018.02.19 |
[SQL] 19. 제약(Constraint) (0) | 2018.02.17 |
[SQL] 18. 정규식 함수 (0) | 2018.02.14 |
- Total
- Today
- Yesterday
- 데이터 분석
- 하둡 설치 가이드
- hadoop setup
- hadoop 2.7 install
- Big Data
- hadoop2.7
- Data Analysis
- hadoop
- hadoop install
- data
- 하둡2.7
- 빅데이터
- 하둡설치
- 하둡
- 하둡설치가이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |