0

我需要编写一个计算的度量来显示与Measure1任何给定维度的总和相比的份额。我设法这样做:

CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS
  [Measures].[Measure1] / ( AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ), [Measures].[Measure1] )

但是由于 的通用性[Test],不可能通过这种度量来对维度进行排序。

SELECT [Measures].[Measure1] ON 0,
ORDER( [Dimension1].MEMBERS, [Measures].[Test] ) ON 1
FROM [MyCube]

执行上述代码会导致以下错误:

检测到无限递归。依赖循环是:测试 -> 测试。

这是相当合乎逻辑的——要获得AXIS( 1 ).ITEM( 0 ),我们需要轴 1 上的一组维度成员,但在成员按 排序之前无法获得该集合[Test]

另一方面,如果我定义[Test]为特定于某个维度,它会按预期工作:

CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS
  [Measures].[Measure1] / ( [Dimension1].[All], [Measures].[Measure1] )

它之所以有效,是因为它[Dimension1].[All]针对特定成员,而不需要轴 1 首先评估其成员集。

有没有办法使这个计算的度量通用?也许,有可能以[All]另一种方式获取当前维度的成员?

4

1 回答 1

0

如果您只显示一个度量,您可以重写您的第一个查询以避免错误:

SELECT [Measures].[Measure1] ON 0,
ORDER([Dimension1].MEMBERS) ON 1
FROM [MyCube]
WHERE ([Measures].[Test])
于 2012-10-01T12:21:58.143 回答