2012-11-15 2 views
2

저는 MDX에 비교적 익숙합니다 (지금 책을 주문하는 과정에서). 계산 된 측정 값을 만들 때 균열이 있습니다. 계산 된 측정 값을 만드는 데 균열이 있습니다.이 값은 설정된 날짜 범위를 기반으로하는 내 Fact 테이블 중 하나에서 값을 합산해야합니다 내 시간 차원에서) 다른 차원의 특성으로 필터링해야합니다. 불행히도, 나는 약간의 상황에서 나 자신을 얻은 것처럼 보이고 명확한 탈출구를 볼 수 없습니다. 다른 비슷한 질문을 살펴 보았지만이 같은 일을하려고하는 것을 보지 못했으며 단 하나의 차원 만 측정했습니다.필터링 된 측정 기준을 기반으로 계산 된 측정 값을 만들려면 어떻게해야합니까?

신체 측정 값 SourceMeasure을 포함하는 측정 값 그룹이 있습니다.

계산 범위를 지정하는 데 사용하려는 [Time]이라는 시간 차원이 있습니다. 이것은 내 날짜 키에 의해 위의 측정 값 그룹과 관련이 있습니다.

이라는 계정 차원에 [Account Start Date][Account End Date]의 두 가지 날짜 속성이 있습니다. 이것은 계정 ID를 통해 위의 측정 값 그룹과 관련됩니다. 내가 할 노력하고있어

[Account Start Date][Account End Date]에 기초 범위에 [Time] 차원을 필터링하고, 해당 계정에 지정된 기간 동안 [SourceMeasure]의 합계를 반환합니다.

분명히 이것은 계정마다 다를 수 있으므로 [Dim Account] 크기 (0을 반환하거나 적용되지 않으면 null)를 제외하고는 집계하지 말아야합니다.

아래 예제 테스트 표현식은 MDX Studio에 따라 FORMAT_STRING 구문 오류로 인해 현재 작동하지 않습니다.

WITH 
    MEMBER [Measures].[LifetimeMeasure] AS 
    Sum 
    (
     { 
      StrToMember 
      (
     "[Time].[Date].&[" 
      + Format([Dim Account].[Account Start Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss") 
      + "]" 
     ) 
     : 
      StrToMember 
      (
      "[Time].[Date].&[" 
      + Format([Dim Account].[Account End Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss") 
      + "]" 
     ) 
     } 
    ,[Measures].[SourceMeasure] 
    ) 
SELECT 
{ 
    [Measures].[LifetimeMeasure] 
    ,[Measures].[SourceMeasure] 
} 
ON COLUMNS 
,{ 
    [Dim Account].[Account].[AccountName] 
} 
ON ROWS 
FROM 
    [MyCube] 

나는 (범위, 필터, IIF) 몇 가지 다른 방법을 시도했지만 때마다 나는 같은 난제로 돌아갈 것 -의 값을 기준으로 [시간] 차원을 필터링하는 방법 [Dim Account] 시작일과 종료일.

이제 SSAS에 의해 계산 된 측정 값이 계산되는 방법 및/또는 차원 사이의 관계가 어떻게 작동하는지 완전히 오해하고있는 것일 수 있습니다. 그러나 나는 아직 찾을 수있는 수준에 있지 않습니다. , 그래서 나는 동그라미에 갈거야.

내가 할 수있는 일이 무엇인지, 그렇다면 내가 잘못 가고있는 부분을 파악하는 데 도움이되는 곳을 가리키는 포인터가 있습니까? 대신 계산 차원을 대신 사용해야할까요?

나는이 모든 것이 의미가 있기를 바라며, 내가 무엇이든 놓치거나 더 자세한 내용이 필요한지 알려주 길 바란다. MDX Studio을 사용하여 테스트하고 있습니다.

답변

0

StrToMember 함수에 CONSTRAINED 플래그를 추가하여 오류를 발견했습니다.

내 [시간] 측정 기준의 날짜 입력이 기본값 "12:00:00"인 동안 my [시간] 측정 기준의 날짜 입력이 기본적으로 시간 "00:00:00"으로 설정되어있는 것으로 보입니다. 24 시간 및 12 시간 시계가 일치하지 않는 것 같습니다. [Dim Account] 차원의 내 날짜 필드는 차원이 자연 시간 차원이 아니기 때문에 "Date"가 아닌 "Regular"로 표시됩니다. 잠재적으로 이것이 불일치의 원인이라고 생각합니다.

지금 당장은이 문제를 해결하기 위해 형식 표현에서 시간 형식을 제거하고 근본 원인을 검색하는 동안 "00:00:00"을 문자열에 추가했습니다. 일단 해결하면 다시 알려 드리겠습니다.

업데이트 : 불일치의 원인이 치수에 없지만 StrToMember 표현에 사용 된 형식 문자열에 있습니다. 그것은 MSDN에 문서화되어 있지만 다음 문자열은 12 시간 형식 출력 아니에요 :

"yyyy-mm-ddThh:mm:ss" 

을하는 동안이 문자열 출력을 24 시간 형식 :

"yyyy-mm-ddTHH:mm:ss"