[파워피벗] DAX 함수- CALCULATE

2020. 6. 18. 00:35엑셀/파워피벗 공부

728x90
반응형

마치 마법과도 같은 함수이다. 

파워 피벗을 사용하는 가장 큰 보람을 주고 있는 함수이다. 

MS 사이트에서 찾아보면 다음과 같이 소개되어 있다. 

"지정된 필터로 수정된 컨텍스트에서 식을 평가합니다."
Evaluates an expression in a context that is modified by the specified filters.
CALCULATE(<expression>,<filter1>,<filter2>…)

 

내 나름대로 쉽게 표현하자면

"현재 파워 피벗테이블에 걸려 있는 필터가 아닌 CALCULATE 함수에서 지정된 필터를 기준으로 측정값이 계산되어 출력된다."

라고나 할까? 

역시 직접 써봐야 이해가 된다. 엑셀과 프로그램밍은 글로 배울 수 없어요. 손으로 배워야 합니다. ^^; 

예를 들어보자. 

예제데이터

위와 같은 매출실적 데이터에서 매출실적의 전체 합계 값을 각 항목별에 다 띄울 수 있을까? 

노란색 박스 부분에 전체의 총계인 127,500을 표현 할 경우가 필요한데... 그냥 피벗테이블에서는 불가능하다. 무조건 화면에 표시된대로만 구성되기 때문이다. 

하지만 파워피벗에서는 이게 가능하다. 아마 다른 포스팅에서 이미 예시로 소개된적이 있을 것이다. 하지만 오늘 DAX 함수에 대해 소개 포스팅이므로 젤 빈도가 높은 CALCULATE 를 잘 정리해보자. 

먼저 위 테이블을 데이터 모델로 구성하고 측정값을 다음과 같이 만들면된다.

Sales amount:=SUM(fSales[매출금액])
먼저 매출금액의 측정값을 만든다. 
Total Amount:=
(fSales[Sales amount],ALL(fSales))

* ALL 함수는 적용되었을 수 있는 필터를 무시하고 테이블의 모든 행 또는 열의 모든 값을 반환한다. 현재 걸린 필터를 지우고 원본 데이터의 모든 항목에 대한 계산을 만들어주는 조건이라고 생각하면 이해하기 쉽다. 

다시 설명하자면

  • '매출금액'의 합계로 계산된 측정값 => Sales amount
  • 그리고 이 측정값에 걸린 필터를 무시하는 측정값 => Total Amount

인 것이다. 아래 그림을 보면 이해가 쉬울 것이다. 

측정값 Total Amount는 현재 피벗 테이블의 상태를 무시하고 전체의 합계로 각 항목별로 출력되었다. 

측정값 등록 내용

측정값 관리

이것을 이용하면 많은 것을 할 수 있다. 일단 총계를 필터에 영향없이 표현이 가능하니 전체 비중을 보는 것도 가능하다. 물론 일반 피벗 테이블에서도 가능하지만 필터가 걸렸을때의 문제가 해결된다. 

그 외에도 특정 값을 필터 하여 기준값 대비 계산도 가능하다. 이게 아주 중요하다. 이 부분은 작업 사례를 별도로 포스팅을 할 계획이다.  

일찍 퇴근합시다. 

 

728x90
반응형