2

上位 10 の郵便番号を計算する 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 のそれぞれに 1 つ、および 11 番目の値) が存在するようにすることを要求しました。残りの郵便番号の合計です。

私は MDX の初心者ですが、これは不可能ではないように思えます。アイデアや提案はありますか?

4

1 に答える 1

4

テストされていないコードで最善を尽くすので、次のようにします。

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 クエリをすべて変更することなく、再利用できるセットをキューブ上に作成することをお勧めします。

乾杯、
エリック

于 2009-04-25T03:27:21.210 に答える