2013-04-12 2 views
2

MDX select 쿼리의 차원에서 일부 지점을 필터링하려고합니다. 필터 (,) 함수를 http://mondrian.pentaho.com/documentation/mdx.php에 문서화 된대로 사용했습니다.MDX 쿼리에서 NOT IN 사용

SELECT {[Measures].[AMOUNT]} on 0, 
     {Filter ([DIM1].MEMBERS, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1, 
     {[DIM2].[S]} on 2, 
     {[DIM3].[EFO]} on 3, 
     {[CURRENCY].[EUR]} on 4 
    from [CUBE] 

을 다음 그러나 Measures.AMOUNT 여전히 고려 Dim1.A, Dim1.B 및 Dim1.C 복용과 같이 MDX 실행되고있다. 친절한 분들은 제 문법에 잘못된 점을 지적 해주십시오. 나는 Except (,)도 시도했다.

최저

, 로한

UPDATE : 올바른 방향으로 날을 가리키는 마크에

감사합니다. 좀 더 테스트 해 보았을 때 Members 함수가 또한 내 차원의 모든 점을 포함하는 'All'점을 반환한다는 것을 알았습니다. 따라서 Filter() 또는 Except() 함수가 포인트를 올바르게 필터링하더라도 'All'포인트에는 여전히 모든 포인트의 값이 포함되어 있으므로 Measure.AMOUNT 계산에 포함되었습니다. 나는 대신 Children 함수를 사용했고 그것은 'All'포인트를 리턴하지 않으므로 원하는 결과를 볼 수 있습니다.

작업 MDX 아래 업데이트 MDX 년대 필터 및 NOT을 사용하여가 (WARN : NOT에 몬드리안 특정 작업입니다)

SELECT {[Measures].[AMOUNT]} on 0, 
     {Filter ([DIM1].Children, [DIM1].CurrentMember NOT IN {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1, 
     {[DIM2].[S]} on 2, 
     {[DIM3].[EFO]} on 3, 
     {[CURRENCY].[EUR]} on 4 
    from [CUBE] 

작업 MDX 사용이

SELECT {[Measures].[AMOUNT]} on 0, 
     {except ({[DIM1].Children}, {[DIM1].[A], [DIM1].[B], [DIM1].[C]})} on 1, 
     {[DIM2].[S]} on 2, 
     {[DIM3].[EFO]} on 3, 
     {[CURRENCY].[EUR]} on 4 
    from [CUBE] 

감사를 제외하고!

답변

4

대신 필터, 나는 다음과 같이 Except 기능을 사용 :

Except ([DIM1].MEMBERS, {[DIM1].[A], [DIM1].[B], [DIM1].[C]}) 
+0

내가 언급처럼, 그 시도했지만 그 힘 도움말 중 하나. –

+0

예외 ({[DIM1]. [A], [DIM1]. [B], [DIM1]. [C]}, {[DIM1]. [A]}))는 어떻게됩니까? 작동합니까 ? –

+0

예! 그게 효과가 있었어. 내가 [... DIM1]. 회원들을 모든 방법으로 참조하는 방식에 문제가 있습니까? 모든 도움에 감사드립니다. 마크. –