2008-10-29 5 views
1

MDX의 내 제한된 지식이 잘못된 방향으로 날 밀어 경우이 가능 여부, 또는 경우 몰라요 ...MDX : 계산 된 치수?

나는 날짜에 대한 두 가지 차원이 취급하고있어 큐브, [Statement Dates][Premium Dates]. 내가 사용하는 어떤 차원 구별 할 필요 그래서

select 
    ({ [Measures].[Commission] }) on columns, 
    ({[Products].[Product Category]}) on rows 
from [Cube] 
where 
(
    IIF([Products].[Product Category].CurrentMember.Name = "Some Category", 
     [Statement Dates].[Statement Year].[2008], 
     [Payment Dates].[Payment Year].[2008]) 
) 

: 나는 같은 것을 할 필요가 구현하고있어 비즈니스 로직에 대한

[Statement Dates].[Statement Year].[2008] 
[Payment Dates].[Payment Year].[2008] 

: 또한 각각의 계층 구조는 다음과 같습니다 어떤 제품 범주가 사용되는지에 따라 연도를 필터링합니다.

이 구문 분석은 성공하지만 쿼리는 실행되지만 IIF 문은 항상 false를 반환합니다.

답변

3

WHERE 절이 먼저 평가되므로 IIF의 .CurrentMember 함수는 "모든 제품 범주"만 볼 수 있습니다. 이 경우 [제품]. [제품 범주]. CurrentMember.Name은 컨텍스트에서 유일한 제품 범주가 "모든 제품 범주"이므로 절대로 "일부 범주"와 같지 않습니다.

한 가지 가능한 해결책은 다음과 같이 계산을하는 것입니다 : 당신은 또한 이런 종류의 작업을 수행하는 큐브의 계산 스크립트의 범위 assignement을 할 수

WITH MEMBER Measures.Commission2 as 
SUM(
{[Products].[Product Category].[Product Category].Members} 
, IIF([Products].[Product Category].CurrentMember.Name = "Some Category" 
    , ([Statement Dates].[Statement Year].[2008],[Measures].[Commission]) 
    , ([Payment Dates].[Payment Year].[2008].[Measures].[Commission])) 
) 
select 
    ({ [Measures].[Commission2] }) on columns 
, ({[Products].[Product Category]}) on rows 
from [Cube] 

.