MDX – TopCount плюс "Другое" или "Остальное"
-
16-09-2019 - |
Вопрос
Я создал запрос 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 )
Этот запрос используется для заполнения гистограммы PerformancePoint со 100% накоплением.Клиент попросил, чтобы, поскольку это диаграмма на основе !00%, мы объединили остальные почтовые индексы в поле «Другое», чтобы там было 11 значений:по одному на каждый из 10 крупнейших и одиннадцатый, который представляет собой сумму оставшихся почтовых индексов.
Я новичок в MDX, но это не кажется невозможным.Есть ли у кого-нибудь идеи или предложения?
Решение
Я сделаю все возможное с непроверенным кодом, поэтому вот:
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.
Ваше здоровье,
Эрик