MDX는

2013-09-25 1 views
0

안녕하세요이 필터 조건과 내가하려고 코드로 쿼리 멤버를 넣어 노력하고있다 :MDX는

Member [ThisMonth] as VBAMDX.Format(VBAMDX.Now(),"yyyyMM") 

    SET [currentdays] AS filter([D Date].[DAY ID].Members, 
[D Date].[MONTH ID]=[ThisMonth]) 

그러나 쿼리는 조건을 인식하지 않았다

Member [ThisMonth] as VBAMDX.Format(VBAMDX.Now(),"yyyyMM") 

     SET [currentdays] AS filter([D Date].[DAY ID].Members, 
    [D Date].[MONTH ID].&[201309]) 

따라서 쿼리는 원하는 결과를 반환합니다. 나는이 일을하는 더 이상 역동적 인 방법이 궁금하다.

대단히 감사합니다!

답변

1

VBAMDX.Format(VBAMDX.Now(),"yyyyMM")은 구성원 식별자가 아닌 문자열을 반환합니다. 이것은 SQL select 'myColumn' from myTable에서와 같이 리터럴 문자열 'amyColumn'을 반환하고 mycolumn 열의 내용은 반환하지 않습니다.

Member [ThisMonth] as '[D Date].[MONTH ID].&[' 
         + VBAMDX.Format(VBAMDX.Now(),"yyyyMM") 
         + ']' -- this returns a string! 

    SET [currentdays] AS filter([D Date].[DAY ID].Members, 
     StrToMember([ThisMonth])) 

을 그건 그렇고 : 당신이 Format 기능을 사용하려면

는, 당신은 첫째로 StrToMember를 사용하여 회원의 전체 고유 이름을 구성하고, 두 번째 멤버 식별자로 문자열을 변환해야합니다 : 여기에 Filter이 필요하지 않으며 쿼리 속도가 크게 저하 될 수 있습니다.

SET [currentdays] AS { StrToMember([ThisMonth]) } 
관련 문제