我需要编写一个计算的度量来显示与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]
另一种方式获取当前维度的成员?