我创建了一个MDX查询,根据我的患者住院测量计算TOP 10 ZipCodes:
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的极端新手,但这并不是说它应该是不可能的。有没有人有任何想法或建议?
答案 0 :(得分:3)
我会尽力使用未经测试的代码,所以请点击:
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个邮政编码),您可能希望在多维数据集上创建一个集合,您可以在其中重复使用它,而无需更改您拥有的每个MDX查询。
干杯,
埃里克