MDX - TopCount plus 'Outro' ou 'The Rest'
-
16-09-2019 - |
Pergunta
Eu criei uma consulta MDX que calcula os TOP 10 Zipcodes (de acordo com meu paciente medida estadia) como tal:
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 )
Esta consulta é usado para preencher 100% gráfico empilhado Bar PerformancePoint. O cliente pediu que uma vez que este é um gráfico de 00% com base, que fixo o resto dos códigos postais em um campo "Outros", de modo que deve haver 11 valores: um para cada um dos top 10, e um décimo primeiro, que é uma soma dos restantes Zip Codes.
Eu sou um novato extremo para MDX, mas isso não souund como ele deve ser impossível. Alguém tem alguma idéia ou sugestão?
Solução
Eu vou fazer o meu melhor com código não testado, então aqui vai:
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 )
O que isto faz é cria um conjunto de seu top 10 ZIP códigos e, em seguida agregados (diferentes do que soma !!!) todos os códigos postais, com exceção de seu top 10.
Além disso, se este é um conjunto comum (top 10 ZIP códigos), você pode querer fazer um set no cubo, onde você pode reutilizá-lo ad nauseum, sem ter que mudar todas as consultas MDX que você tem.
Cheers,
Eric