我需要编写一个计算的度量,与任何给定维度的总和相比,显示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]
成员吗?
答案 0 :(得分:0)
如果您只显示一个度量,则可以重写第一个查询以避免错误:
SELECT [Measures].[Measure1] ON 0,
ORDER([Dimension1].MEMBERS) ON 1
FROM [MyCube]
WHERE ([Measures].[Test])