SQL Server/SSAS 강좌

14 - SSAS 계산 작업

SungWookKang 2015. 7. 15. 16:42
반응형

계산 작업

 

안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com. http://jevida.blog.me)

이번 시간은 계산 작업에 대해서 알아 보도록 하겠습니다.

 

집합 함수 설정만을 통해서 원하는 측정값을 구하지 못하는 경우도 있습니다. 예를 들어 고객 1인당 평균 구매 금액은 집계 과정을 통해 값을 구할 수 없습니다. 단가나 성장률 등과 같이 비율을 구하는 측정값은 비가산(Non-additive) 측정값으로 집계 후에 계산을 해야 합니다.

SSAS에서는 계산 멤버나 MDX 스크립트 등을 통해서 집계 과정을 통해 어려운 값을 효과적으로 처리 할 수 있습니다.

 

(이번 시간에는 MDX에 대해서는 다루지 않습니다. 예제를 위한 코드만 언급합니다.)

 

큐브에 계산을 추가하여 원하는 결과를 얻고자 하는 경우 집계 전에 계산을 반영할 것인가 집계 후에 반영할 것인가를 고려해야 합니다.

데이터 원본 뷰에 명명된 계산(Named Calculation)을 추가한 후 큐브에 측정값으로 추가 할 수있습니다. 이는 집계 전에 계산을 반영하는 것으로 파생 측정값 (Derived Measure)이라 합니다. 즉 큐브에 적재되기 전에 계산된 값을 이용합니다. 만약 팩트 테이블에서 계산하여 큐브에 적재하는 경우 잘못된 결과를 얻을 수 있습니다.

 

예를 들어 큐브에 판매 수량과 판매 금액 측정값이 있다면 SUM 집계를 한 후에 판매 금액을 판매 수량으로 나누어 판매 단가를 구할 수 있습니다. 이 경우 리프 수준에서는 판매 단가, 상위 수준에서는 평균 단가로서의 의미를 가집니다. 이와 같이 집계를 한 후에 계산을 반영하고자 할 때 계산 멤버(Calculate Member)를 정의하여 반영 할 수 있습니다. 계산 멤버의 값은 파생 측정값과 달리 큐브에 저장되지 않고 조회시점에 실시간으로 계산 됩니다.

 

솔루션 탐색기에서 [Adventure Works.cube]를 더블 클릭 또는 [디저이너 보기]를 선택 합니다.

 

 

[계산]탭을 클릭합니다. [스크립트 구성 도우미]에서 마우스 오른쪽을 클릭하여 [새 계산 멤버]를 선택 합니다.

 

 

이름에 [Internet Sales Per Customer]를 입력합니다.

부모계층은 [Measures]를 선택 합니다.

식에는 다음과 같은 MDX 쿼리를 입력 합니다. (이때 오타 주의). 측정값 이름은 [큐브구조]탭에서 [측정값]에서 확인 할 수 있습니다.

(필자는 Distinct -> Dsitinct 로 Measure를 만들었네요 ㅠㅠ.)

[Measures].[Internet Sales Amount] / [Measures].[Customer Dsitinct Count]

 

 

프로젝트를 처리 합니다. 브라우저 탭을 클릭하여 다시 연결을 선택 합니다.

 

분석하고자 하는 차원별로 인터넷 판매 금액, 고객 수, 고객 1인당 평균 인터넷 판매액을 확인 할 수 있습니다.

 

1인당 평균 판매액을 확인하였는데 상태가 한 눈에 들어오지 않습니다. 이럴 때 값의 크기에 따라 전경색 및 배경색, 글꼴, 크기 등을 지정하면 쉽게 데이터를 파악 할 수 있습니다.

 

[계산]탭으로 이동 합니다. [Internet Sales Per Customer]를 더블 클릭 합니다.

[색 식]을 확장합니다.

 

 

 

전경색에 다음과 같은 스크립트를 입력 합니다.

CASE

WHEN [MEASURES].[INTERNET SALES PER CUSTOMER] > 2000

OR [MEASURES].[INTERNET SALES PER CUSTOMER] <= 1000

THEN 16777215/*WHITE*/

ELSE 0 /*BLACK*/

END

 

배경색에 다음과 같은 스크립트를 입력 합니다.

CASE

WHEN [MEASURES].[INTERNET SALES PER CUSTOMER] > 2000

THEN 32768/*GREEN*/

WHEN [MEASURES].[INTERNET SALES PER CUSTOMER] > 2000

THEN 65535/*YELLOW*/

ELSE 255 /*RED*/

END

 

 

프로젝트를 처리 하고 브라우저 탭을 클릭합니다. 다시 연결을 선택합니다.

그림에서 보듯이 [Internet Sales Per Customer]의 금액 크기에 따라서 배경색과 전경색이 다르게 처리 됩니다. 이와 같이 조건부 서식을 적용함으로써 사용자가 데이터를 보다 쉽게 파악할 수 있습니다.

 

 

반응형