[파워피벗공부] PATH 기능으로 메뉴트리 정리하기

2020. 4. 9. 19:49엑셀/파워피벗 공부

728x90
반응형

데이터모델을 통해 얻을 수 있는 것들에는 꼭 데이터 분석, 즉 피벗기능만 있는 것이 아니다. 

오늘은 파워피벗에서 사용할 수 있는 DAX 함수인 PATH 함수로 메뉴트리를 예쁘게 만들어보자. 

시스템 메뉴를 설계하다보면 꼭 겪는일 메뉴트리.. TREE 구조로 된 화면 메뉴명을 내려받아 정리할 일이 생긴다.

바로 그때 사용하자. 

오늘 처리할 메뉴구조다.

오늘 처리할 데이터다. 메뉴코드와 메뉴명 그리고 상위 메뉴코드로 구성되어 있다. 

이걸 동일한 리스트 형태를 유지 하면서 들여쓰기된 예쁜 모양으로 정리할 것이다. 
물론 노가다 하면 된다. 하나 하나 셀을 편집해서 들여쓰기 서식을 적용해도 된다.
하지만... 집에 일찍가야지.. 이런거에 시간 쓰고 싶지 않다. 

1. 데이터모델로 PATH 만들기

 일단 몇번을 들여써야 하는지 알아야 한다. 
   그래서 PATH , PATHLENGTH  함수로 값을 구한다. 당연히 데이터모델부터 만들어야 한다.

  표로 만들고 데이터모델에 추가하자. 

2019/07/04 - [엑셀/파워피벗 연구] - [파워피벗 공부] 1. 데이터 모델 만들기

 

[파워피벗 공부] 1. 데이터 모델 만들기

계속 미루어 놓던 파워 피벗에 대한 공부 결과를 정리한다. 먼저 '데이터 모델' 만들기 부터 정리 해보자. 허나 아무것도 없다. 데이터 모델에 로드 해놓은 값이 하나도 없기 때문이다. Database나 파일에서 데..

myterraincognito.tistory.com

지난 포스팅 참조~~~ 

  먼저 함수 설명 

2019/07/16 - [엑셀/파워피벗 연구] - [DAX 함수] Path 함수

 

[DAX 함수] Path 함수

DAX 함수에는 모-자 관계를 이용하여 사용이 가능한 PATH 함수가 있다. From ~ To , 부모 ~ 자식 관계를 이용하여 경로를 뽑아내고 이를 이용하여 순위나 서열을 계산 할 수 있다. 관련 내용은 아래 링크를 참조 h..

myterraincognito.tistory.com

데이터 모델에 PATH , PATHLENGTH 를 사용하여 열 추가 된 모습

DAX 함수로 전체 PATH 와 PATH 의 길이를 만든다. 

수식은 다음과 같다. 

=PATH(m_tree[MENU_CODE],m_tree[PARENT_MENU_CODE])
=PATHLENGTH(m_tree[PATH])

먼저 PATH함수에 아들인 MENU_CODE 를 넣고, 엄마인 PARENT_MENU_CODE를 넣으면 전체 PATH 가 완성
그리고 PATHLENGTH 함수에 PATH 필드를 인수로 넣어주면 길이를 숫자로 뽑아준다. 

2. 들여쓰기 만들기 

들여쓰기는 조건식으로 만들어보자. 

새로 소개하는 SWITCH 함수 ! 이놈은 엑셀의 IFS와 같다고 생각하면 된다. 

우선 몇번이나 조건식을 써야하는지 알야아하니 PATHLENGTH 가 가장 긴 값을 확인하자... 
여기서는 4이다. 따라서 아래와 같이 쓰면 된다. 

=SWITCH(TRUE(),
m_tree[PATH_LENGTH]=1,m_tree[MENU_NAME],
m_tree[PATH_LENGTH]=2,"└"&m_tree[MENU_NAME],
m_tree[PATH_LENGTH]=3,"  └"&m_tree[MENU_NAME],
m_tree[PATH_LENGTH]=4,"    └"&m_tree[MENU_NAME])

조금길다. 하지만 식은 간단하다. 

첫번째 인수인 EXPERSSION 에 TRUE() 를 넣어주고 그 뒤로는 조건을 적어주고 TRUE 일 경우 리턴할 값을 넣어주면된다. 

여기서는 PATH_LENGTH 필드의 값(길이)이 1 이면 그냥 MENU_NAME 을 2부터는 "└ "  넣어주면서 앞에 공백을 2개씩 추가 하였다. 

조금 무식하지만 완성

이제 이결과를 엑셀에 옮기면 된다. 

데이터모델 창의 홈>피벗테이블>플랫피벗테이블 을 클릭하여 새 시트에 피벗테이블을 생성하고 아래와 같이 항목에 필드를 넣어주면 끝난다. 

메뉴명 필드 대신 새로 만든 SWITCH 필드를 추가하여 한방에 끝

일찍 퇴근합시다. 

Data_메뉴트리_PATH함수.xlsx
0.15MB

728x90
반응형