DAX: Filter+Calculate Engine 장착 - CALCULATE()
DAX 함수 - Filter Engine + Calculate Engine
CALCULATE()함수는 DAX의 대표선수이자, DAX의 특징을 한껏 담아낸 DAX에만 있는 함수입니다.
그림의 측정값 '제품번호1&판매채널번호1'은 이름에서 짐작할수 있듯 제품번호와 판매채널번호가 각각 '1'에 해당하는 자료들로 [총판매금액]을 구하려는 식입니다
필터 기능을 내장한 CALCULATE를 사용하면 필터와 계산을 한 번에 할 수 있습니다. CALCULATE함수의 첫 번째 인수는 계산에 사용할 측정값이나 측정식입니다. 두 번째 인수부터는 필터할 수 있는 구문으로 그림처럼 바로 비교 연산자를 이용하여 원하는 기준을 입력할 수 있습니다.(또는 필터 함수를 사용하기도 합니다)
참고.
여기 측정값 [총판매금액]은 정의되어 있는 측정식 '[총판매금액]:='사실판매수량'[판매금액]'을 사용한 것입니다.
CALCULATE함수의 결과는 하나의 값 '3,378,000'으로 [계산 영역]에 표시됩니다.
그리고 피벗 테이블에 '값' 영역에서 사용되며, 피벗 좌표에 따라 각각의 측정 셀 값을 만들어 냅니다.
비슷한 이름의 CALCULATETABLE()함수는 값이 아닌 하나의 테이블을 결과로 만들어 냅니다.
CALCULATETABLE(<expression>,<filter1>,<filter2>,…)
: CALCULATETABLE 함수는 데이터가 필터링되는 컨텍스트를 변경하고 지정한 새 컨텍스트에서 식을 계산합니다.
: 필터 인수에 사용 된 각 열에 대해서는 해당 열의 기존 필터가 제거되고 필터 인수에 사용 된 필터가 대신 적용됩니다.
: 이 함수는 RELATEDTABLE 함수와 동의어입니다.
=SUMX( CALCULATETABLE('InternetSales_USD', 'DateTime'[CalendarYear]=2006) , [SalesAmount_USD])
RELATEDTABLE()
RELATEDTABLE(<tableName>)
: RELATEDTETABLE 함수는 데이터가 필터링되는 컨텍스트를 변경하고 지정한 새 컨텍스트에서 식을 계산합니다.
: 이 함수는 논리 표현식이 없는 CALCULATETABLE 함수의 바로 가기입니다.
= SUMX( RELATEDTABLE('InternetSales_USD') , [SalesAmount_USD])