Ssas 对于MDX,是否有一种通用的方法来计算单元格相对于特定层次结构中选定成员的比率?
我想在SSAS Analysis Services多维数据集(多维模型)中定义一个多维数据集度量,用于计算用户为预定义层次结构所做选择的比率。以下示例说明了所需的行为:Ssas 对于MDX,是否有一种通用的方法来计算单元格相对于特定层次结构中选定成员的比率?,ssas,mdx,analysisservices,Ssas,Mdx,Analysisservices,我想在SSAS Analysis Services多维数据集(多维模型)中定义一个多维数据集度量,用于计算用户为预定义层次结构所做选择的比率。以下示例说明了所需的行为: |-City----|---| | Hamburg | 2 | | Berlin | 1 | | Munich | 3 | 这是我的基本桌子。我想要实现的是一个立方体度量,它根据用户的选择计算比率。例如,当用户查询汉堡(2)和柏林(1)时,度量值应返回67%(对于汉堡)和33%(对于柏林)。但是,如果将Munich(3)添
|-City----|---|
| Hamburg | 2 |
| Berlin | 1 |
| Munich | 3 |
这是我的基本桌子。我想要实现的是一个立方体度量,它根据用户的选择计算比率。例如,当用户查询汉堡(2)
和柏林(1)
时,度量值应返回67%
(对于汉堡
)和33%
(对于柏林
)。但是,如果将Munich(3)
添加到同一查询中,返回值将是33%
(Hamburg
)、17%
(Berlin
)和50%
(Munich
)。无论MDX查询中包含多少层次结构成员,值的总和应始终等于100%
到目前为止,我提出了不同的措施,但它们似乎都面临着相同的问题,即似乎不可能从一个单元格中访问整个MDX查询的上下文
我的第一个方法是采取以下措施:
[Measures].[Ratio] AS SUM([City].MEMBERS,[Measures].[Amount])/[Measures].[Amount]
[Measures].[Ratio] AS SUM(Axis(1),[Measures].[Amount])/[Measures].[Amount]
然而,无论用户选择什么,这都会汇总所有城市的数量,尽管它总是返回一个城市相对于整个城市层次结构的比率
我还试图通过添加EXISTING
关键字将成员限制在查询上下文中
[Measures].[Ratio] AS SUM(EXISTING [City].MEMBERS,[Measures].[Amount])/[Measures].[Amount]
但这似乎将上下文限制在单元格中,这意味着每个单元格的结果都是100%
(因为EXISTING[City]。MEMBERS
现在被限制在一个单元格中,它只返回当前单元格的城市)
我还在谷歌上搜索是否可以添加一列或一行的总计,但这在MDX中似乎也是不可能的
我得到的最接近的测量值如下:
[Measures].[Ratio] AS SUM([City].MEMBERS,[Measures].[Amount])/[Measures].[Amount]
[Measures].[Ratio] AS SUM(Axis(1),[Measures].[Amount])/[Measures].[Amount]
与此MDX查询一起使用
SELECT {[Measures].[Ratio]} ON 0, {[City].[Hamburg],[City].[Berlin]} ON 1 FROM [Cube]
这将产生正确的结果。然而,这需要用户将这个特定度量的正确层次放在一个特定的轴上——非常容易出错,非常不直观,我不想这样做
有没有其他想法或方法可以帮助我定义这一衡量标准?我将首先定义一组选定的城市
[GeoSet] AS {[City].[Hamburg],[City].[Berlin]}
然后是比率
[Measures].[Ratio] AS [Measures].[Amount]/SUM([GeoSet],[Measures],[Amount])
获取该城市与城市集合的比率。最后
SELECT [Measures].[Ratio] ON COLUMNS,
[GeoSet] ON ROWS
FROM [Cube]
无论何时选择城市列表,只要不选择2个重叠值([City].[Hamburg]和[Region].[DE6]),即可将[GeoSet]更改为城市列表或层次结构中的其他级别