2011-08-08 5 views
0

현재 행을 기준으로 측정 값을 계산하고 싶습니다. 문제가 있는데 WITH MEMBER 부분에 현재 행을 가져 오는 방법을 찾을 수 없습니다.WITH MEMBER 계산에서 현재 행 값을 얻는 방법 MDX?

WITH MEMBER [Measures].[Test] AS AVG(
    NonEmptyCrossJoin(
       FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF), 
         [Exigences].CurrentMember.Name = 'Chemicals'), 
       DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)), 
    [Measures].[ProgressLevel]) 

SELECT {[Measures].[ProgressLevel], [Measures].[Test]} ON COLUMNS, 
DESCENDANTS([Exigences].[ENVGR].[ENVGR-01.001], [Levier], SELF) ON 
ROWS FROM [Exigences] 

화학 물질은 현재 하드 코딩되어 있습니다. 그것은 예를위한 것입니다. '화학 물질'대신 현재 행 값을 갖고 싶습니다.

그럼 행이 'Chemicals', 'Pharmacy', 'Test'를 반환하는 값이라고 가정 해 봅시다. [Measures]. [Test] 계산을 변경하고 싶습니다.

MDX로 ​​할 수 있습니까? 그렇다면 현재 값을 어떻게 얻을 수 있습니까?

[Levier] .CurrentMember.Name을 시도했지만 [Exigences] .CurrentMember.Name과 충돌합니다.

어떤 아이디어가 있습니까? 이 노력의 비트를 복용하고있다

+0

확실하지 것은 이해하기 현재 행에서 무엇을 의미합니까? 기본 테이블의 행? 그렇다면 어느 것입니까? (Rowid를 얻는 것은 OLAP이 아닙니다 :-)) – ic3

+0

ON ROWS를 선택하면, [Levier] 멤버 세트를 돌려 줄 수있는 DESCENDANTS를하고 있습니다. 이제 WITH MEMBER 위에 '화학 물질'문자열이 하드 코드 된 것을 볼 수 있습니다. 이 문자열을 내 [Levier] .CurrentMember.Name 값으로 지정합니다. 그러나 [Exigences] .CurrentMember.Name과 [Levier] .CurrentMember.Name 사이의 항등 테스트는 항상 충돌하는 [Exigences] 차원의 필터링 때문에 항상 필터로 필터링되므로 필터가 필터링되지 않습니다. – Spredzy

+0

나는 당신의 문제, 까다로운 것을 본다. icCube OLAP 서버는 문제를 해결할 기능 언어를 지원합니다. 죄송합니다, Axis() 또는 중복 된 계층 구조를 사용하여 뭔가를하지 않는 한 문제를 해결하는 방법을 볼 수 없습니다. 이 표준 MDX su..s에 대해 변수 uff를 만들어야합니다. – ic3

답변

2

는 감사하지만 좋은 골드 배지를 가지고있는 장점이다. 우리는 MDX Generate 기능과 명명 된 집합 (myCellSet link에서 & 2D 예)를 사용하는 :

하지 않음이 당신의 제공을 위해 일 것입니다하지만 당신이 하나의 시도 할 수 있는지 :

WITH MEMBER [Measures].[Test] AS AVG(
NonEmptyCrossJoin(
      Generate({[Exigences].CurrentMember} as MyCellSet, 
       FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF), 
        [Exigences].CurrentMember.Name = MyCellSet.CurrentMember.Name) 
      ) 
      , 
      DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)), 
[Measures].[ProgressLevel]) 
+0

도움을 주셔서 감사합니다. 나는 Generate가 왜, 왜 우리가 여기에서 그것을 사용하는지 이해하지만 AS MyCellSet은 Generate를 사용하는 표준 방법이다. 나는 어디에서나 의사를 찾을 수 없다. 그리고 이것이 이것을 구현하려고 할 때 작동하지 않는 것입니다. 오프 주제 : "멋진 금 배지"란 무엇을 의미합니까? – Spredzy

+0

928 점은 다른 사람들을 돕고 있다는 것을 의미합니다. 따라서 우리는 똑같은 일을합니다. – ic3

+0

ahha Thanks. 방금 Dimension을 복제하여 관리했습니다. 나는이 해결책을 좋아하지 않지만 더 나은 것을 찾을 수있는 자유 시간을 얻는다. Generate 함수에 대해 좀 더 자세히 알아 보겠다. icCube에서 도움을 주신 것에 감사드립니다. 매우 감사. – Spredzy

관련 문제