2009-04-24 2 views
1

내가 같은 (내 환자 스테이 측정)에 따라 상위 10 된 우편 번호를 계산하는 MDX 쿼리를 만들었습니다MDX - 탑 카운트 플러스 '기타'또는 '나머지'

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10) 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

이 쿼리에 사용 PerformancePoint 100 % 누적 막대 차트를 채 웁니다. 클라이언트는! 00 % 기반 차트이기 때문에 나머지 우편 번호를 "기타"필드로 덩어리로 작성하여 11 개의 값이 있어야합니다 (각 상위 10 개 및 11 번째 값). 나머지 우편 번호의 합계입니다.

나는 MDX에게 극단적 인 초심자이지만, 이것은 불가능해야만한다. 누구든지 아이디어 나 제안이 있습니까?

답변

2

그래서 여기에 간다, 검증되지 않은 코드로 최선을 다하겠습니다 :

WITH 
MEMBER [Discharge Date].[Y-M-D].[ Aggregation] AS 'AGGREGATE(EXISTING { [Current Month] })', SOLVE_ORDER = 0 

SET [Top10ZipCodes] AS 
    (TOPCOUNT({ ORDER(HIERARCHIZE({ [Patient].[ByZipcode].[All].CHILDREN }), ([Measures].[Patient Stays]), BDESC) }, 10)) 

MEMBER [Patient].[ByZipCode].[OtherZipCodes] AS 
    (AGGREGATE({EXCEPT([Patient].[ByZipCode].Members, [Patient].[ByZipCode].[Top10ZipCodes])})) 

SELECT 
NON EMPTY { [Measures].[Patient Stays] } 
ON COLUMNS, 

{[Top10ZipCodes], [Patient].[ByZipCode].[OtherZipCodes]} 
ON ROWS 

FROM [Patient Stay] 

WHERE ([Discharge Date].[Y-M-D].[ Aggregation], [Facility].[ByAffiliation].CURRENTMEMBER, [Facility].[ByRegion].CURRENTMEMBER) 

이것이 않는 것은 당신의 상위 10 ZIP 코드 세트를 만든 다음 집계 (합계보다 다른!) 모든 상위 우편 번호를 제외하고 모든 우편 번호.

또한 공통 세트 (상위 10 개 우편 번호) 인 경우 큐브에 세트를 만들어 광고 nauseum을 다시 사용할 수 있습니다 모든 MDX 쿼리를 변경할 필요가 없습니다.

건배

+0


에릭은 SET [환자] 만드는 구문 오류가 발생했습니다. ByZipCode]. Top10ZipCodes]. 방금 치수 참조를 제거해야했습니다 (SET의 이름을 [Top10ZipCodes]로 바꿉니다).이 것은 100 % 나를 위해 일했습니다. 고맙습니다. 저는 배운 것 같은 느낌이 들었습니다. 이것은 질문에 대한 답변보다 훨씬 낫습니다. – Colin

+0

아, 네. 나는 멤버십 분위기에 있었다고 생각합니다. 어쨌든 도움이 되니 기쁩니다! – Eric