2014-11-14 2 views
0

다음 스크립트는 원하는 결과를 정확하게 제공합니다.임의로 구성원을 추가 할 차원을 선택하십시오.

사용자 지정 멤버 VALUEVALUE_MTD을 계층 구조 [Customer].[Country]에 추가 했으므로 해킹 된 것처럼 느껴집니다. 이 계층 구조를 임의로 선택했습니다. 이미 사용중인 [Measures] 또는 [Date].[Calendar]으로 사용되지 않았습니다.

똑같은 셀 집합을 반환하는 표준 접근법이 있습니까?

WITH 
    MEMBER [Customer].[Country].[VALUE] AS 
    Aggregate([Customer].[Country].[(All)].MEMBERS) 
    MEMBER [Customer].[Country].[VALUE_MTD] AS 
    Aggregate 
    (
     PeriodsToDate 
     (
     [Date].[Calendar].[Month] 
     ,[Date].[Calendar].CurrentMember 
    ) 
    ,[Customer].[Country].[VALUE] 
    ) 
SELECT 
    { 
    [Customer].[Country].[VALUE] 
    ,[Customer].[Country].[VALUE_MTD] 
    } ON 0 
,NON EMPTY 
     { 
     [Measures].[Internet Sales Amount] 
     ,[Measures].[Internet Order Quantity] 
     } 
    * 
     Descendants 
     (
     { 
      [Date].[Calendar].[Month].&[2007]&[12] 
      : 
      [Date].[Calendar].[Month].&[2008]&[01] 
     } 
     ,[Date].[Calendar].[Date] 
    ) ON 1 
FROM [Adventure Works]; 

답변

1

표준 접근 방식은 유틸리티 차원이라고합니다. Google에이 용어를 사용하면이 접근법에 대한 여러 가지 설명을 찾을 수 있습니다. "유틸리티 차원"은 데이터를 참조하지 않지만 큐브에 추가되어 계산을 위해 다른 모든 차원과 조인 할 수 있습니다. 당신은 그들 중 하나 이상을 가질 수 있습니다.

따라서 대부분의 경우 물리적으로 차원에는 아무 것도 없습니다. 계산 된 멤버에 사용됩니다. 구현에 따라 일부 속성을 사용하려는 경우 특성 멤버를 실제로 정의 할 수 있지만 사실 테이블의 기본 스키마에서는 기본 멤버 만 참조되며 특성 멤버 값은 덮어 쓰여집니다

일반적인 응용 프로그램은 YTD, MTD, MAT (이동 일수, 즉 선택한 날짜로 끝나는 전체 데이터) 또는 이전 기간과 비교 한 비교 등의 시간 계산입니다 .

+0

ok - 나는 우리가 다음과 같이 그것을 사용할 수 있도록 약간의 시간 계산을한다고 생각한다 : 내일 시도 할 것이다. – whytheq

관련 문제