2

我创建了一个 MDX 查询,它计算 TOP 10 ZipCodes(根据我的 Patient Stay 衡量标准),如下所示:

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 的新手,但这听起来应该是不可能的。有没有人有任何想法或建议?

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 回答