2014-11-11 5 views
1

MDX를 사용하여 사용자 지정 멤버를 사용할 수 있도록 셀프 서비스 BI 도구 (피라미드 분석이 도움이되는 경우) 내에서 작업하고 있습니다.MDX 계산 된 멤버 셋째 매개 변수

선택한 차원, 현재 주문 날짜에서 선택한 값을 기준으로 다른 차원 (예측 주에 연결된 예측 금액)에 연결된 측정 값을 찾으려고합니다.

linkmember 함수는 내가 사용하려고 생각한 것이며 우연히 현재 사용되고 있습니다.

<code> 
    (
     LINKMEMBER 
     ( 
      [Order Date].[Order Calendar].[[email protected] Order [email protected]!].PARENT 
      , [Forecast Date].[Order Calendar] 
     ) 
     ,[Measures].[Forecast Amount] 
     ,[Order Date].[Order Calendar].[All] 
    ) 
</code> 

나는 지금 내 질문이었다

이 쿼리에 (다른 측정 및 치수 등)을 더 변경하는 임무입니다 : 내 앞에 일한 사람은, 계산 된 구성원이 쿼리를 함께했다 위의 전반적인 질의, [Order Date]. [Order Calendar. [All], (그것이 작동하는 방법을 알고있는 linkmember 비트가 아님)의 세 번째 인수/매개 변수와 관련이있다.

위의 문장을 의사 영어로 해석하면 "첫 번째 인수 (LINKMEMBER 문)에 의해 생성 된 멤버 또는 멤버는 해당 측정 값 (Forecast Amount)을 반환하지만" , 나는 세 번째 논쟁이하는 것과 그것이 불필요한 것인지 이해할 수 없다. 쿼리는 현재 양식에서 작동하므로 삭제 여부와 상관없이 왜 내가 그렇게하는지 알고 싶습니다.

이 쿼리의 범위와 관련이 있는지 검색하려고했지만 SCOPE 키워드를 포함하지 않고 "세 번째 매개 변수"등에서 검색 결과를 찾지 못했습니다. 하위 큐브 등과는 관련이 없지만 수정 해 드리겠습니다.

내가 찾고 있어야하는 모든 입력 또는 포인터는 많은 도움이 될 것입니다.

감사합니다, S

(나는 다른 검색 기준을 놓친 경우 사과는)

편집은 FrankPI의 대답

감사 FrankPI을 테스트하는 동안 예를 추가했다. 잠시 시간을 들여 소화 할 수 있었지만 결국에는 의견을 읽고 예를 생각해 보았습니다.

세 번째 매개 변수없이 올바르게 이해하면 첫 번째 2 개의 인수의 결과로 반환 된 Measure가 현재 행에 나타나는 것과 같이 하위 집합 (/ 슬라이스)됩니다. 두 사람 사이에 관계가 있다면, 그 벌금.

<code> 
    with 
    member [measures].[x1] as 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].[Trading Week].&[2014]&[47] 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
     ) 
    select 
    { 
     [measures].[x1] 
    } 
    on 0, 
    { 
     [Forecast Date].[Order Calendar].[Trading Week].&[2014]&[47] 
    } 
    on 1 
    from [Cube] 
</code> 

그러나 아래 (아무 관계)이 발생하지 않을 때 컨텍스트가 설정되지 않은 경우는, null가 대답에 너무

<code> 
    with 
    member [measures].[y1] as 
     sum 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].currentmember 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
     ) 
    member [measures].[y2] as 
     (
      LINKMEMBER 
      ( 
       [Order Date].[Order Calendar].currentmember 
       , [Forecast Date].[Order Calendar] 
      ) 
      , 
      [Measures].[Forecast Amount] 
      , 
      [Order Date].[Order Calendar].[All] 
     ) 
    select 
    { 
     [measures].[y1] // returns null 
     , 
     [measures].[y2] // returns value 
    } 
    on 0, 
    { 
     [Order Date].[Order Calendar].[Trading Week].&[2014]&[47] 
    } 
    on 1 
    from [Cube] 
</code> 

감사합니다 같이 반환됩니다!

답변

0

세 번째 매개 변수는 Order Calendar 계층 구조의 컨텍스트를 변경하여 모든 주문 날짜를 현재 날짜 대신 사용합니다.

LinkMember는 계산이 일어나는위한 전류 Forecast Date 부재를 변경하지만, 환경 (예. g. 현재의 행/열 조건)에서 오는 어떤에서 Order Calendar currentMember을 변경하지 않는다.

+0

답변 해 주셔서 감사합니다. 다른 사람이 들러 본 경우 예를 들어 설명하기 위해 위에서 편집 한 원래 질문. –