2010-03-03 7 views
2

저는 MDX에 비교적 익숙하며 쉬운 일이라고 생각하는 것을 달성하려고 노력하고 있지만 어떤 해결책도 찾지 못했습니다.계산 된 계수/치수

나는 판매 큐브를 가지고 있으며 측정 값 중 하나는 음수 또는 양수일 수있는 수익입니다. 나는 효과적으로 긍정적 인 이익의 합계 인 하나의 척도를 원합니다, 즉 새로운 척도에 긍정적 인 이익을 가진 이익을 포함시킵니다.

여기에 트릭이 IIF (Measures.PNL> 0, Measures.PNL, 0)

이 작동하지 않는 등 회원 Measures.PositivePNL 함께

같은 행 상세 수준 및 무언가이다 그게 합계 번호와 함께 작동

답변

1

행 세부 수준에서 MDX로 ​​작업하려면 사실 테이블의 ID를 포함하는 차원이 필요합니다 (따라서 차원의 각 멤버는 사실의 행을 나타냅니다) 표). 그런 다음 계산을 작성할 수 있습니다.

WITH MEMBER Measures.PositivePNL as 
' 
Sum([DimFactId].[DimFactId].Members, IIF(Measures.PNL > 0, Measures.PNL, 0)) 
' 

사실 테이블에 행이 많으면 속도가 느려질 수 있습니다. 또는 PNL의 양수 값만 포함하는 사실 테이블에 열을 추가하는 것입니다.

2

필자는 몬드리안/MySQL을 사용하고 있다고 언급 했어야합니다. 나는 유사한 결론에 도달하지만, SQL 키 표현 (그래서 실제로 테이블에 열을 추가 할 필요가 없습니다)를 사용하여 새로운 타락한 차원을 만드는 방법을 발견 : 지금은 쉽게된다

<Dimension name="PNLCategory"> 
    <Hierarchy hasAll="true"> 
     <Level name="PNLCategory" column="pnlCategory" uniqueMembers="true"> 
      <KeyExpression> 
       <SQL dialect="generic"> <![CDATA[IF(pnl >= 0,'Winner','Loser')]]></SQL> 
      </KeyExpression> 
     </Level> 
    </Hierarchy> 
</Dimension> 

는 계산 할을 회원 :

<CalculatedMember name="WinnersCountByPNL" aggregator="count" dimension="Measures"> 
    <Formula>([PNLCategory].[Winner], Measures.PNL)</Formula> 
    <CalculatedMemberProperty name="FORMAT_STRING" value="$#,###"/> 
    <CalculatedMemberProperty name="DATATYPE" value="Numeric"/> 
</CalculatedMember>  

을 그래서 여기가 난 단지 "승자"로 요약을 제한하고 이익은 몬드리안은 행 테이블에서 수 (사실) 항목을 검색 할 것입니다.