DAX - Calculate 함수 정리 1편

2021. 1. 7. 19:59엑셀/파워피벗 공부

728x90
반응형

Calculate 는 이미 한번 포스팅 한적이 있었는데요. 그때는 DAX를 이해하는 수준이 지금보다는 한참 떨어지던 시기 였죠. 당연히 포스팅의 내용도 내 생각 대로만 정리가 된 것 같아서 몹시 불만 스럽던 차에 개념을 이해하기 아주 좋은 동영상이 있어서 그 내용을 직접 따라 하면서 정리 해보려 합니다. 

이건 부족한 지난 포스팅 링크 : 

 

[파워피벗] DAX 함수- CALCULATE

마치 마법과도 같은 함수이다. 파워 피벗을 사용하는 가장 큰 보람을 주고 있는 함수이다. MS 사이트에서 찾아보면 다음과 같이 소개되어 있다. "지정된 필터로 수정된 컨텍스트에서 식을 평가합

myterraincognito.tistory.com

그리고 이건 SQLBI 의 유튜브 링크 입니다.  youtu.be/Tk-7gBt9CDE 

 

YouTube 동영상은 10개로 구성되어 있습니다. 그리고 그 목차는 아래와 같습니다. 

CALCULATE in DAX #01: Filters are tables
CALCULATE in DAX #02: Add single column filter
CALCULATE in DAX #03: Remove single column filters
CALCULATE in DAX #04: Add table filter (and difference with column filters)
CALCULATE in DAX #05: Remove table filters
CALCULATE in DAX #06: Using ALLSELECTED
CALCULATE in DAX #07: Add multicolumn filters
CALCULATE in DAX #08: Add filters using IN
CALCULATE in DAX #09: VALUES vs. KEEPFILTERS
CALCULATE in DAX #10: Using TREATAS

이 동영상에서 사용된 함수 예시를 제가 사용하는 예시 데이터를 가지고 정리 해보려 합니다. 다만 저 동영상과 동일한 진행은 아니고 내용만 공유하고 순서는 제가 이해하는 수준으로 재구성하여 정리 할 계획입니다. 

먼저 데이터 소개 ~ 

계속 사용하게 될 기본 데이터는 일단 이놈입니다. 일별 매출 실적 데이터이고 제품/매장/고객유형/결재방식 별로 판매수량과 금액으로 구성되어 있습니다. 

기본 측정 값인 매출액은 

매출액:=SUM( fSales[매출금액] )

입니다. 그리고 여기서 "fSales" 가 위 데이터의 테이블 이름입니다. 

이제부터 1편 시작 입니다.

1. Calculate 와 Filter & ALL 

 1) 피벗 테이블에서 어떤 항목을 넣더라도 고객유형이 '개인' 인 매출액이 나오도록 해보죠~ 

CALCULATE 함수의 작성식은 아래 그림과 같이 표현(Expression)에 측정값을 지정하고 필터값을 정해주면 됩니다. 

먼저 위의 식의 결과를 보겠습니다. 

측정값 "개인매출액" 은 "매출액" 과 달리 행항목인 "고객유형"에 관계 없이 "개인"의 매출액 '96,900' 으로 계산됩니다. Calculate 함수 안의 필터 부분에 지정된
 -->  FILTER( ALL( fSales[고객유형] ) , fSales[고객유형] = "개인" )  
때문이죠.

풀이하자면 고객유형 필드의 현재 피벗 테이블에서 어떤 상태이던지 다 무시하고 => ALL 
고객유형 필드의 값이 "개인" 인 측정값 매출액을 출력하라는 의미로 볼 수 있습니다. 

 2) 여기서 FILTER 함수의 ALL 을 빼면 어떻게 될까요?

피벗테이블에 고객유형 필드가 "개인" 인 경우에만 출력됩니다. 

자 그럼 여기서 측정값 "개인매출액"은 어떻게 활용하면 좋을 까요? 

개인매출액을 기준으로 다른 고객 유형의 비율을 산정하는 경우... 즉, "개인매출액 대비 기타법인의 매출액" 계산이 가능하겠네요. 

 

 3) 피벗 테이블에 "제품코드"를 행 항목으로 추가 해보죠.

이제는 제품코드가 추가 되었으니 "개인매출액" 은 제품코드별 개인매출액이 됩니다. 측정값 "개인매출액"은 ALL 함수로 무시할 필드를 "고객유형"으로 지정했기 때문에 제품코드는 영향을 받지 않습니다. 따라서 제품코드,매장 등 다른 필드가 항목으로 피벗테이블에 추가되면 "매출액"과 동일한 영향을 받습니다. 

여기서 ALL 로 무시할 대상을 "고객유형" 필드가 아니라 테이블 전체로 하면 어떻게 될까요? 

이제는 어떠한 필드가 피벗테이블에 들어오더라도 단순 개인매출액만 출력하게 됩니다. 

예제 파일 첨부합니다.

파워피벗_CALCULATE DAX 함수 1편.xlsx
0.16MB

 

 

728x90
반응형