2013-01-10 1 views
7

날짜로 필터링 된 몬드리안에 대한 MDX 쿼리가 필요합니다. 단 하나 또는 둘 모두의 경계 날짜가 없을 수 있습니다. 2013-01-01 및 2013-01-08 크기가 모두 존재하는 한 아래 검색어를 사용하고 있습니다. 두 날짜 중 하나가 존재하지 않으면 중간에 차원이 존재하더라도 결과를 반환하지 않습니다. 경계 날짜 차원이없는 경우에도이 쿼리가 어떻게 작동합니까?한계 날짜가 누락 된 MDX 날짜 범위 쿼리

SELECT 
NON EMPTY {Hierarchize({[Measures].[Number of Something]})} ON COLUMNS, 
NON EMPTY {[Date].[2013-01-01]:[Date].[2013-01-08]} ON ROWS 
FROM [Users] 
+0

이 차원의 퇴화 또는 별도의 테이블인가? 그것은 별도의 테이블이 다음 보통은 미리 입력되어있을 것입니다 경우에 따라서 모든 차원이 존재하는지 확인할 수 있습니다 (연관된 사실이없는 경우에도). 날짜 차원을 생성하기 위해 샘플 폴더에 PDI 주전자 변환이 있습니다. – Codek

답변

1

MDX는 사용자가 참조하는 모든 구성원이 존재한다는 가정하에 작성되었습니다. 따라서 예상 가능한 모든 차원의 차원 멤버 과 일치하는지 확인한 다음이 값이 미리 계산 된 별도의 테이블을 작성하는 것이 가장 좋습니다.

이 테이블을 저장 프로 시저로 구현할 수는 있지만 날짜 차원은 사물의 거대한 계획에서 많은 공간을 차지하지 않으므로이 작업을 거의 수행 할 수 없습니다.

귀하의 문제를 해결할 다른 방법이 없습니다.

0

심지어 나는 아직이 논리를 구현하는 이유를 이해하지 않은 NON EMPTY

0

을 제거하려고하면 추가하여 숨길 수 있습니다. 몬드리안에서 맞춤 멤버를 추가하는 경우 사용해보십시오.

/* Exclude Missing Member */ 
Create Set CurrentCube.[MissingMemberSet] As 
iif(IsError(StrToMember("[Dimension].[Hierarchy].&[MEMBER]")), 
{}, {[Dimension].[Hierarchy].&[MEMBER]}); 

Create Member CurrentCube.Measures.[Calculation on Missing Member] 
AS 
IIF ([MissingMemberSet].Count > 0, 
([Dimension].[Hierarchy].&[MEMBER],Measures.[X Measure]), 
0 
) 
, 
FORMAT_STRING = "Currency", 
LANGUAGE = 1033, 
NON_EMPTY_BEHAVIOR = { [X Measure] }, 
VISIBLE = 1 , DISPLAY_FOLDER = 'Display Folder' ; 

은 또한 당신이 IIF (ISERROR 또는 IIF를 사용하여 구현할 수 있습니다 (MDX 기능을 존재.