我想在 SSAS Analysis Services 多维数据集(多维模型)中定义多维数据集度量,计算用户为预定义层次结构所做的选择的比率。以下示例说明了所需的行为:
|-City----|---|
| Hamburg | 2 |
| Berlin | 1 |
| Munich | 3 |
这是我的基表。我想要实现的是一个立方体度量,它根据用户的选择计算比率。例如,当用户查询时Hamburg (2)
,Berlin (1)
度量应返回值67%
(for Hamburg
) 和33%
(for Berlin
)。但是,如果Munich (3)
将其添加到同一查询中,则返回值将是33%
( Hamburg
)、17%
( Berlin
) 和50%
( Munich
)。100%
无论 MDX 查询中包含多少层次结构成员,值的总和都应始终等于。
到目前为止,我提出了不同的措施,但它们似乎都遇到了相同的问题,即似乎无法从单元格内访问整个 MDX 查询的上下文。
我的第一个方法是采取以下措施:
[Measures].[Ratio] AS SUM([City].MEMBERS,[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(Axis(1),[Measures].[Amount])/[Measures].[Amount]
连同这个 MDX 查询
SELECT {[Measures].[Ratio]} ON 0, {[City].[Hamburg],[City].[Berlin]} ON 1 FROM [Cube]
它会产生正确的结果。但是,这需要用户将此特定度量的正确层次结构放在特定轴上 - 非常容易出错,非常不直观,我不想这样做。
是否有任何其他想法或方法可以帮助我定义此度量?