2020. 5. 12. 00:08ㆍ엑셀/파워쿼리 공부
파워 쿼리는 다양한 전처리 기능을 가지고 있는데 그중 오늘은 "예제의 열" 기능을 소개한다.
"예제의 열" 기능은 엑셀에서 하나 하나 데이터를 정렬과 필터를 해가며 처리하던 그룹핑 작업을 손쉽게 처리해준다. 텍스트로 된 칼럼에 규칙을 부여하여 그룹핑하는 것을 파워 쿼리가 패턴을 인식해서 자동으로 채워 주는 데 직접 해보면 이해가 갈 것이다.
이번에는 지난번 IFS를 소개할때 사용했던 선별 진료소 Data로 IFS로 그룹핑했던 작업을 파워 쿼리로 수행해보자.
2020/04/06 - [엑셀/빠른 엑셀] - IFS 함수로 중첩 IF를 간단하게 사용하자.
1. 먼저 파워쿼리로 데이터를 처리하기 위한 작업이 필요하다.
"범위의 데이터를 표(Table)로 전환 > 파워 쿼리의 데이터로 쿼리 생성"
2. 열추가 > 예제의열을 클릭
클릭하면 아래 모양으로 '열1' 이라는 신규 열이 생성된다. 여기에 타이핑으로 그룹핑을 몇 개 해볼 것이다.
각 필드명에 체크 박스가 생겼다. "의료기관명" 필드만 체크 하고 나머지는 언체크 한다. 그리고 이 상태에서 '열 1' 필드에 값을 넣어보자. 그룹은 의료기관명을 기준으로 먼저 '보건소' 와 '병원'로 묶어 보자.
가장 위의 '강남보건소'에 행에 '보건소' 라고 입력해보자.
Text.AfterDelimiter라는 추출 함수로 '의료기관명' 열의 값에서 '구'라는 텍스트 뒤에 문자를 잘라내는 형식으로 '보건소' 값을 추출하자고 예시로 제안한다.
모든 분류 작업이 그렇듯 이것 역시 제법 시행착오가 필요하다. 데이터가 많으면 무엇이 들어 있는지 한눈에 파악하기가 어려우므로 분류 기준을 수정해가며 작업이 진행될 수밖에 없다.
계속 분류값을 입력하면 적용되는 함수가 변경되며 예시 값이 변경된다.
다음으로는 '구' 라는 텍스트가 없는 보건소를 하나 찾아 '보건소'를 입력해보자. 80번째 행의 '기장군 보건소'
함수가 Text.Middle로 변경되면서 자릿수를 잘라서 찾는 방식을 제안하는 것으로 변경된다. 자릿수를 이용하는 함수로 변경되었으니 이번에는 자릿수가 6개가 안되는 행에 입력을 해본다.
78행의 '세웅병원'에 '병원'이라고 입력한다.
이번에는 Text.Select 함수로 제시를 해준다. Text.Select 함수는 인수로 지정한 단어를 제외한 나머지 글자를 모두 없애는 함수다.
이렇게 해볼 생각은 미처 해본적이 없어서 새롭고 낯설다. 그런데 이후로 더 진행을 해보니 기준이 거의 하드 코딩에 가깝게 제시 된다. 사무실에서 일할때 사용한 Case 는 매우 명확한 기준이 있어서 딱 좋은 함수를 제시 해주었는데 이번에는 그렇지 못한가 보다. 결국 결론은 IF와 동일하다. 너무 복잡하면 안된다. 나도 틀릴 수 있고 이놈(파워쿼리)도 틀릴 수 있다는 것을 인정하고 단계를 나누어 가며 처리하는 것이 좋을 것 같다.
조금 구차한 방식일 수 있지만 나같이 처음 이것 저것 눌러보는 입장에서 이런 기능은 여러 측면에서 매우 고맙다. 첫째로 기능을 잘 쓸 수 있도록 궁리를 하게 만들고 둘째로 제시해주는 함수를 공부하게 해준다. 솔직히 Text.Selelct 는 충격이었다.
결국 한번더 '예제의 열' 을 사용해서 마무리함.
첫번째는 Text.Select 로 두번째는 if 로 처리하여 완성되었다.
허나 파워쿼리가 적용된 단계를 기록하면서 작업이 가능하다는 것을 고려하면 이 접근 방식은 나쁘지 않다. 파워 쿼리 스러운 기능이다. 만족한다.
정말 좋은 것 하나 배웠다. 1) 분류에 필요한 문자만 남기고 나머지는 삭제 2) 확 줄어든 단어를 가지고 조건식으로 재분류... 멋지네~
'엑셀 > 파워쿼리 공부' 카테고리의 다른 글
[파워쿼리] 조인 하자 - 쿼리 병합기능 (0) | 2020.06.08 |
---|---|
[파워쿼리] 카카오톡 대화내용 엑셀로 정리하기 (9) | 2020.05.13 |
[파워쿼리] JSON 파일을 데이터 가져오기 (0) | 2020.04.22 |
[파워쿼리설정] 파워쿼리의 고급편집기 사용을 위한 쿼리 단계 언어 설정 (2) | 2020.04.10 |
[파워쿼리] 텍스트 자르기-구분기호 사이 텍스트 (0) | 2019.07.26 |