MDX - TopCount плюс «Другое» или «Остальное» - PullRequest
2 голосов
/ 25 апреля 2009

Я создал запрос MDX, который вычисляет ТОП-10 почтовых индексов (в соответствии с моим показателем пребывания пациента) следующим образом:

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 )

Этот запрос используется для заполнения 100% столбчатой ​​диаграммы PerformancePoint. Клиент спросил, что поскольку это диаграмма на основе! 00%, мы объединяем оставшиеся почтовые индексы в поле «Другое», так что должно быть 11 значений: одно для каждой из первых 10 и одиннадцатое, которое сумма оставшихся почтовых индексов.

Я крайне новичок в MDX, но это не так, как должно быть невозможно. У кого-нибудь есть идеи или предложения?

1 Ответ

3 голосов
/ 25 апреля 2009

Я приложу все усилия с непроверенным кодом, так что вот так:

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 лучших почтовых кодов, а затем агрегирует (отличные от суммы !!!) все почтовые индексы, за исключением ваших лучших 10.

Кроме того, если это общий набор (10 лучших почтовых индексов), вы можете создать набор для куба, где вы можете использовать его до тошноты, не меняя каждый ваш запрос MDX.

Приветствия
Eric

...