如果您想将它用于所有度量,您可以将您的calcTest
成员放入查询中未使用的另一个层次结构,可能是实用程序层次结构(见下文),然后引用Measures.CurrentMember
而不是Axis(0).Item(0)
.
要将计算推广到除度量之外的所有层次结构是很困难的,因为您必须在某个地方告诉计算要使用哪个层次结构。而在定义查询之前在多维数据集中执行此操作是无法完成的。因此,可以更改在问题中使用的行 ( Axis(1).Item(0)
) 中最左边的层次结构的方法以引用查询中的不同内容,但不能完全灵活。当然,一种方法可以是在行中定义三个相似的成员,一个用于第一个,一个用于第二个,一个用于第三个层次结构。
对于实用程序层次结构,您将创建一个只有一行和一列的维度表。假设单行中该列的数据内容是"-standard-"
并从附加外键引用所有事实表中的该单个成员。然后使用来自所有度量值组的引用将维度构建到多维数据集中。假设属性层次结构被称为[Utility].[Utility]
。使属性层次不可聚合,并将默认成员设置为"-standard-"
成员。在计算脚本中,您可以将成员添加到此实用程序维度,例如
CREATE MEMBER [Utility].[Utility].StdDevRows1 // StdDev for leftmost hierarchy in the rows
AS StdDev(Axis(1).Item(0).Item(0).Dimension.Children, Measures.CurrentMember),
FORMAT_STRING = "#,##0.00;-#,##0.00",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'TestMeasure' ;
CREATE MEMBER [Utility].[Utility].StdDevRows2 // StdDev for second hierarchy in the rows
AS StdDev(Axis(1).Item(1).Item(0).Dimension.Children, Measures.CurrentMember),
FORMAT_STRING = "#,##0.00;-#,##0.00",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'TestMeasure' ;
CREATE MEMBER [Utility].[Utility].StdDevRows3 // StdDev for third hierarchy in the rows
AS StdDev(Axis(1).Item(2).Item(0).Dimension.Children, Measures.CurrentMember),
FORMAT_STRING = "#,##0.00;-#,##0.00",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'TestMeasure' ;
单独的实用程序层次结构的优点是您可以将它与所有度量、时间等结合起来,因为它本身不是这些的成员。