본문 바로가기

Analysis Services

Calculated Member를 사용해 누적 값 구할 때의 팁

AS2005에서 계산 멤버를 사용해 누적 값을 구할 경우 보통 Measures 차원에 계산 멤버를 두지만, 별도의 차원에서 누적 값을 구할 수도 있다.

다음과 같은, 해당 년도의 시작부터 특정일까지의 누적액을 구하는 [누적금액]이란 계산 멤버를 정의했을 경우를 생각해보자 :

aggregate(

  PeriodsToDate([기간].[기간].[년], [기간].[기간].CurrentMember),

  [Measures].[금액])

위와 같은 경우 계산이 올바로 이루어지게 하려면, 계산 멤버의 부모 멤버를 Measures 그룹으로 지정해야 한다. 하지만 이러한 누적 금액을 특정 일자의 실적과 비교하면서, 다수의 측정값이 있을 경우에는 각 측정값마다 누적 계산 멤버를 추가해줘야 한다. 이럴 경우, 별도의 차원(예를 들자면 [실적/연누계]과 같은 형태로)을 두어 누적 계산 멤버를 반복해서 만드는 작업을 피할 수 있다.

이러한 [실적], [연누계]라는 멤버를 가질 [실적누계구분]이라는 차원을 만들고, 해당 차원에 [실적]이라는 멤버를 생성한 후(ad-hoc 쿼리로 멤버를 만들면 된다), 다음과 같은 계산 멤버를 만들어 부모 멤버를 [실적누계구분].[All] 멤버로 지정하면 된다 (이 차원은 팩트 테이블과 관계를 맺지 않는다) :

aggregate(

  PeriodsToDate([발급일].[기간].[년], [발급일].[기간].CurrentMember),

  [실적누계구분].[실적누계구분].&[실적])

그러면 [실적], [연누계] 두 개의 멤버를 갖는 차원을 만들 수 있으며, 이 차원을 피벗팅해서 원하는 형태로 데이터를 조회할 수 있다.