Ssas 按一般计算度量排序会导致无限递归吗?(MDX)

Ssas 按一般计算度量排序会导致无限递归吗?(MDX),ssas,mdx,olap,ssas-2008,Ssas,Mdx,Olap,Ssas 2008,我需要编写一个计算出的度量,它将显示Measure1与任何给定维度的总和的份额。我是这样做的: CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS [Measures].[Measure1] / ( AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ), [Measures].[Measure1] ) 但由于[Test]的通用性,无法通过此度量来订购维度 SELECT [Measures].[Mea

我需要编写一个计算出的度量,它将显示
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]
执行上述代码会导致以下错误:

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

这是相当合乎逻辑的-要获取轴(1)。项(0),我们需要轴1上的一组维度成员,但在成员按
[Test]
排序之前,无法获取此集合

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

CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS
  [Measures].[Measure1] / ( [Dimension1].[All], [Measures].[Measure1] )
它可以工作,因为
[Dimension1].[All]
可以寻址特定的成员,而无需axis 1首先计算其成员集


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

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

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

我想,
ORDER
需要第二个参数?正确。我不记得三年前我为什么省略了这个!有关语法,请参见。我假设OP希望按[Measures].[Measure1]订购,并使用第5个参数“BASC”。