계산 작업

 

안녕하세요 강성욱 입니다.(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]의 금액 크기에 따라서 배경색과 전경색이 다르게 처리 됩니다. 이와 같이 조건부 서식을 적용함으로써 사용자가 데이터를 보다 쉽게 파악할 수 있습니다.

 

 

고유 카운트 측정값

 

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

이번 시간에는 고유 카운트 측정값에 대해서 알아 보도록 하겠습니다.

 

많은 분석에서 고유 카운트 측정값을 사용 합니다. 이때 판매 건수가 10건이라고 하여 10명의 고객이 1건씩 구매한 경우와 1명의 고객이 10건의 구매를 한 경우가 구분되지 않습니다. 이런 경우 DistinctCount 집계 함수를 이용하여 실제로 몇 명의 고객이 물건을 구매하였는지 쉽게 알 수 있습니다.

 

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

 

 

측정값 창에서 마우스 오른쪽을 클릭하여 [새 측정값]을 선택 합니다.

 

 

새 측정값 창에서 아래 그림과 같이 설정 합니다.

  • 사용법 – 행 수
  • 원본 테이블 – FactInternetSales

(사용법을 [행 수] 선택시 [원본 열] 선택이 되지 않습니다.)

 

 

[Internet Sales 카운트] 측정값을 [Internet Sales Count]로 이름을 변경합니다. 속성에서 AggregateFunction 속성을 Count로 설정합니다.

 

 

측정값 창에서 마우스 오른쪽을 클릭하여 [새 측정값]을 선택 합니다.

 

 

새 측정값 창에서 아래 그림과 같이 설정 합니다.

  • 사용법 – 고유 카운트
  • 원본 테이블 – FactInternetSales
  • 원본 열 - CustomerKey

 

 

[Customer Key 고유 카운트]의 측정값을 [Customer Distinct Count]로 이름을 변경합니다. 속성에서 AggregateFunction 속성을 [Distinct Count]로 설정 합니다.

프로젝트를 처리 합니다.

 

 

[브라우저]탭을 선택하고 [다시 연결]을 클릭 합니다.

 

제품 카테고리별로 판매 건수와 구매를 한번이라도 한 고객을 고유하게 카운트 값을 확인 할 수 있습니다.

'SQL Server > SSAS 강좌' 카테고리의 다른 글

15 - SSAS 차원관계 - (1)참조 관계 유형  (0) 2015.07.15
14 - SSAS 계산 작업  (0) 2015.07.15
13 - SSAS 고유 카운트 측정값  (0) 2015.07.15
12 - SSAS 반가산 측정값 집계  (0) 2015.07.15
11 - SSAS 측정값 그룹의 세분성  (0) 2015.07.15
10 - SSAS 차원용도  (0) 2015.07.15

반가산 측정값 집계

 

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

이번 시간에는 반가산 측정값 집계에 대해서 알아보도록 하겠습니다.

 

반가산(Semi-additive) 측정값은 일반 차원들에 대한 Sum 집계는 의미 있지만 시간 차원에 대한 Sum 집계는 의미 없는 측정값 입니다.

AggregateFunction 속성을 이용하여 반가산 측정값을 처리할 수 있습니다. 참고로 측정값의 AggregateFunction 속성은 기본적으로 Sum으로 설정되어 있습니다.

 

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

 

 

측정값 창에서 마우스 오른쪽을 클릭하여 [새 측정값]을 선택 합니다,.

 

 

새 측정값 창에서 아래 그림과 같이 설정 합니다.

사용법 – 비어 있지 않은 마지막 값

원본 테이블 – FactInternetSales

원본 열 - OrderQuantity

 

 

추가된 측정값의 이름을 Internet Inventory Quantity로 변경합니다.

속성 창에서 Internet Inventory Quantity의 AggregateFunction 속성이 LastNonEmpty로 설정된 것을 확인 합니다.

프로젝트를 처리 합니다.

 

집계 함수

설명

ByAccount

멤버의 계정 유형(Account Type)에 지정돈된 집계 함수 적용(Account 차원 사용)

AverageOfChildren

값이 존재하는 리프 수준 자손 멤버들의 평균값을 계산

FirstChild

첫 번째 자식 멤버의 값을 롤업

LastChild

마지막 자식 멤버의 값을 롤업

FirstNonEmpty

자식 멤버 중 값이 존재하는 첫번째 멤버의 값을 롤업

LastNonEmpty

자식 멤버 중 값이 존재하는 마지막 멤버의 값을 롤업

 

 

브라우저 탭을 선택하고 측정값과 차원을 끌어다 놓습니다,

기간별로 Internet Order Quantity는 Sum으로 집계가 된 것을 보여 줍니다. 반면에 Internet Inventory Quantity는 데이터가 존재하는 가장 최근의 자식 멤버의 값을 롤업하고 있음을 보여줍니다.

'SQL Server > SSAS 강좌' 카테고리의 다른 글

14 - SSAS 계산 작업  (0) 2015.07.15
13 - SSAS 고유 카운트 측정값  (0) 2015.07.15
12 - SSAS 반가산 측정값 집계  (0) 2015.07.15
11 - SSAS 측정값 그룹의 세분성  (0) 2015.07.15
10 - SSAS 차원용도  (0) 2015.07.15
09 - SSAS 측정값 그룹  (0) 2015.07.15

측정값 그룹의 세분성

 

측정값 그룹의 세분성은 차원들과의 관계에 의해 결정되며 큐브 디자이너의 차원 용도 작업창에서 확인 할 수 있습니다. 하나의 큐브에 여러 개의 측정값 그룹에 속해 있는 경우 측정값 그룹마다 관계를 맺고 있는 차원들의 구성이 다르고 관계 설정시 사용된 세분성 특성이 다를 수 있습니다. 세분성 특성으로 키 특성이 아닌 특성이 사용되면 세분석 특성이상의 수준 데이터는 의미를 가지지만 아래 수준의 데이터는 의미가 없습니다. 예를들어 Sales Amount Quota는 분기가 세분성 수준이므로 분기, 년도별 데이터는 의미를 가지지만 월, 일별 데이터는 의미가 없습니다. 주의할 점은 년도 특성과 분기 특성 사이에 특성 관계가 존재하지 않으면 분기 데이터로부터 년도 데이터를 집계하지 못하므로 관계가 존재하지 않으면 특성 관계를 설정해 주어야 합니다. 참고로 차원에 특성을 추가하면 자동으로 키 특성에 특성 관계가 추가 됩니다.

 

솔루션 탐색기에서 Adventure Works.cube를 더블클릭 합니다.

브라우저 탭을 클릭하여 측정값 그룹에서 Due Date.Calendar를 행 필드로 끌어다 놓아 아래 그림과 같은 데이터 뷰를 만듭니다.

이전 실습에서 Sales Quota 측정값 그룹과 Time(Order Date)를 관계지을 때 세분성 특성을 Calendar Quarter로 설정하였습니다. 하지만 아래 그림을 보면 Amount Quota가 분기 수주에서는 분기별로 제대로 데이터를 보여주지만 년도 수준은 년도별로 제대로 데이터를 보여주지 못하고 있습니다.

 

솔루션 탐색기에서 Time.Dim을 더블 클릭 또는 [디자이너 보기]를 선택 합니다.

 

 

 

[특성 관계] 탭을 선택 합니다. 키 특성인 Time Key에 Calendar Quarter와 Calendar Year에 대한 특성 관계가 설정 되어 있는 것을 확인 할 수 있습니다. 이런 경우 키 특성 수준의 데이터를 이용하여 Calendar Quarter와 Calendar Year 수준의 데이터를 집계할 수 있습니다. 그러나 Calendar Quarter 특성이 Calendar Year 특성과 관계를 가지고 있지 않기 때문에 Calendar Year 수준의 데이터를 집계할 수 없습니다.

 

 

Calendar Year 특성을 마우스를 이용하여 Calendar Quarter 특성에 끌어다 놓습니다.

 

만약 특성 관계가 잘 만들어 지지 않는다면 화살표에서 마우스 오른쪽을 클릭하여 삭제를 선택하고 빈 공간에서 [새 특성 관계]를 이용하여 특성 관계를 생성 합니다.

 

 

프로젝트를 처리 하고 큐브 디자이너의 브라우저 탭을 클릭하고 다시 연결을 클릭 합니다.

Sales Amount 데이터가 년도별로 정상적으로 집계된 값을 보여주는 것을 확인 할 수 있습니다.

'SQL Server > SSAS 강좌' 카테고리의 다른 글

13 - SSAS 고유 카운트 측정값  (0) 2015.07.15
12 - SSAS 반가산 측정값 집계  (0) 2015.07.15
11 - SSAS 측정값 그룹의 세분성  (0) 2015.07.15
10 - SSAS 차원용도  (0) 2015.07.15
09 - SSAS 측정값 그룹  (0) 2015.07.15
08 - SSAS 넌-리프 수준의 멤버  (0) 2015.07.15

+ Recent posts