본문 바로가기

Analysis Services

계산 멤버로 LastNonEmpty 값 구하기 집계 함수 중 LastNonEmpty라는 집계 함수가 있다. 이것이 무엇인고하니 .. 다음과 같이 재고 데이터가 있는 경우를 생각해보자 : 재고량 2009년 1월 2일 20,000 7일 19,000 그럼 재고량을 표현할 때, 2009년 1월의 재고량은 얼마일까? 당연하지만 재고량은 가장 마지막 일자의 데이터를 기준으로 하게 된다. (마지막 일자 이후에 재고량의 변동이 없었다면 말이다) 이런 집계 패턴을 나타내기 위해 사용하는 것이 LastNonEmpty 집계 함수로써, 값이 있는(위 경우에는 '재고량'이 있는) 가장 마지막 멤버의 값을 상위의 멤버(=1월, 혹은 2009년)에 보여줄 수 있게 해 준다. 이것으로 끝난다면 좋겠으나 .. 다른 차원이 있을 경우에는? 재고량 재고량 제품A 제품B 2009년 1.. 더보기
Calculated Member를 사용해 누적 값 구할 때의 팁 AS2005에서 계산 멤버를 사용해 누적 값을 구할 경우 보통 Measures 차원에 계산 멤버를 두지만, 별도의 차원에서 누적 값을 구할 수도 있다. 다음과 같은, 해당 년도의 시작부터 특정일까지의 누적액을 구하는 [누적금액]이란 계산 멤버를 정의했을 경우를 생각해보자 : aggregate( PeriodsToDate([기간].[기간].[년], [기간].[기간].CurrentMember), [Measures].[금액])위와 같은 경우 계산이 올바로 이루어지게 하려면, 계산 멤버의 부모 멤버를 Measures 그룹으로 지정해야 한다. 하지만 이러한 누적 금액을 특정 일자의 실적과 비교하면서, 다수의 측정값이 있을 경우에는 각 측정값마다 누적 계산 멤버를 추가해줘야 한다. 이럴 경우, 별도의 차원(예를 들자.. 더보기
drillthrough 구문 예제 DRILLTHROUGH SELECT ([Date].[Calendar].[Month].[July 2003]) ON 0 FROM [Adventure Works] WHERE [Geography].[Country].[Australia] RETURN [$Date].[Date] ,KEY([$Product].[Model Name]) ,NAME([$Employee].[Employee]) ,[Reseller Sales].[Reseller Sales Amount] ,[Reseller Sales].[Reseller Tax Amount] ,[Reseller Sales].[Reseller Standard Product Cost]기본적으로 큐브를 쿼리할 때의 MDX 구문과 비슷하지만, 끝의 Return 구문에서 row 형태로 가.. 더보기
현재 기간의 이전 년도, 이전 년도의 특정 월 참조 다음 MDX 문은 선택된 해당 기간에 관계 없이 전년도 기간 멤버를 반환한다. ex) 2008년 1월 30일 -> 2007년, 2007년 3월 -> 2006년 Ancestor([기간].[기간].CurrentMember,[기간].[기간].[년]).PrevMember이렇게 얻는 전년도 멤버의 1월 기간에 대한 값을 구하려면? Descendants(Ancestor([조회일].[기간].CurrentMember, [조회일].[기간].[년]), [조회일].[기간].[월]).Item(0)* Item(0)는 멤버 집합에서 첫번째 항목을 얻는 함수이다. 0으로 시작한다는 점에 유의하자. 더보기
MDX Studio v0.4.8 업데이트 Mosha Pasumansky의 MDX Studio가 업데이트를 거듭하여, 최근 0.4.8 버전까지 릴리즈되었다 : 예전 버전에 비해서 팩트-차원 간 Dependencies 체크 기능이라든가, 성능 검사 도구 등 다채로운 기능이 추가된 듯 하지만, 여전히 한글 메타데이터(큐브명이나 차원명 기타등등)의 처리에 애로점이 있는 듯. SSMS로는 일말의 아쉬움이 있는 AS 쿼리 환경을, 좀 더 꾸며봅시다. MDX Studio : http://www.mosha.com/msolap/mdxstudio.htm 다운로드 링크 : http://cid-74f04d1ea28ece4e.skydrive.live.com/browse.aspx/MDXStudio/v0.4.8 더보기
원단위(원/만원/억원) 차원 계산 멤버 생성하기 큐브에서 특정 금액을 원단위로 끊어서 조회하고자 할 때, 정석대로라면 팩트 테이블에 특정 원단위(만원, 억원 등)에 해당하는 금액을 나타내는 컬럼을 추가해야겠지만, 이런 작업을 계산 멤버를 사용해서 수행할 수도 있다 : 1. DSV에 테이블을 추가한다. 실제 물리적 테이블을 생성할 필요도 없다. 다음과 같은 명명된 쿼리를 사용해도 된다 : SELECT '1원' AS UNIT 2. 차원을 추가한다. 1.에서 추가한 테이블을 가지고 차원을 만든다. 위의 경우라면 '1원'이라는 멤버 하나만 나타나도록 만들면 된다. 3. 큐브에 차원을 추가한다. 2.에서 생성된 차원을 큐브에 추가한다. 이 차원은 차원 용도를 설정할 필요가 없다. (측정값 그룹과 특정 키를 연결해 줄 필요가 없다는 뜻) 4. 계산 멤버를 추가한.. 더보기
0으로 출력되는 Measures를 빈 셀로 표시하고 싶을 경우 AS2005에서 차원 멤버가 null 값을 갖고 있을 경우에는, 이를 오류로 처리하지 않고 강제로 처리하면 Unknown 멤버에 속하게 되지만, 측정값Measure 멤버가 null 값을 가지고 있을 경우에는 내부적으로 0으로 처리된다. 이 경우에 약간 곤란한 것이, 예를 들어 드릴스루 작업으로 실제 값을 가진 멤버들을 조회하고 싶을 경우에 0으로 표시되는 항목들을 직접 제거하지 않고서는, 필요한 멤버들만 조회하는 일이 어려워진다. 이럴 경우에, 측정값의 MeasureExpression 속성을 수정하거나 새로운 계산 멤버를 추가하는 방법으로 측정값 멤버의 값을 null로 만들 수 있다 : iif(( [Measures].[_mem] = 0), null, [Measures].[mem] )AS2005 Stand.. 더보기
Analysis Services 업그레이드/마이그레이션 Analysis Services의 경우 2000 버전과 2005 버전은 개념적인 부분만이 아니라 그 기반 구조부터 다르기 때문에, 단순 이전의 경우에도 SQL Server의 RDB 엔진보다는 좀 더 고려해야 할 사항이 많다. 기본적으로 업그레이드 관리자가 제공되고 있으므로 대부분의 경우에는 업그레이드 관리자만으로 업그레이드/마이그레이션 작업을 수행할 수 있지만, 이것만으로 안 되는 경우에는 직접 큐브 작성을 해야할 경우도 있다. 물론 그 경우에도 AS2005에서 새롭게 변한 개념들에 대한 선행 학습이 필요하지 않을까 싶다. 일반적인 고려사항에 대해서는 다음 문서를 참조하는 것이 도움이 될 듯 : - SQL Server 2005 온라인 설명서 : Analysis Services 업그레이드 또는 마이그레이션.. 더보기
Analysis Services 2005의 Standard/Enterprise Edition 가격 및 기능 차이 Analysis Services 2005 구매를 고려하는 클라이언트 중 간혹 가격 문제 때문에 고민하는 케이스가 있어서 잠깐 정리해놓은 내용 : # 가격 SQL Server 2005 가격 비교: 소매 가격 대 예시 가격 프로세서 라이선스 Server plus User/Device CAL 소매 가격* 예시 가격** 소매 가격* 예시 가격** Express Edition 무료 무료 무료 무료 Standard Edition $5,999 $5,737 $1,849(5개의 CAL 포함) $885(서버당 가격) $162(CAL당 가격) Enterprise Edition $24,999 $23,911 $13,969(25개의 CAL 포함) $8,487(서버당 가격) $162(CAL당 가격) *모든 가격은 미국 지역에서의 .. 더보기
가상 머신에서의 Analysis Services 2005 배포 성능 비교 그동안 Virtual Server 2005 R2 버전을 사용해 오다가, VMWare 쪽은 어떤가 싶어 VMWare Server를 테스트해보고 있는 중입니다. 하지만 일반적인 성능에서는 그다지 차이가 나질 않아서, 그나마 제가 업무적으로 많이 사용하고 있는 Analysis Services 2005의 배포 성능을 기준으로 성능을 테스트해보기로 했습니다. 테스트 환경은 다음과 같습니다 : Host : Pentium D930 (Dual Core, 3.0Ghz, 2GB RAM), Windows 2003 Srv std. VM Host : Virtual Server 2005 R2 Enterprise, VMWare Server 1.0.2 Guest : Windows 2003 Srv std., 768MB RAM, Ana.. 더보기