Ssas 在计算的度量定义内部切片?(MDX)

Ssas 在计算的度量定义内部切片?(MDX),ssas,mdx,olap,Ssas,Mdx,Olap,在维度D和度量M之间有一个多对多的关系 我需要创建一个通用的计算度量,它将具有以下公式:∑M/其中∑表示与给定维度的至少一个成员关联的所有度量事实的总和 对于其他(一对多)维度来说很容易,但是在多对多维度中获得∑。。。好吧,如果它只是一个常规的MDX查询,那也很容易。我可以切一个维度的所有子对象: SELECT [Measures].[M] ON 0 FROM [MyCube] WHERE [D].[All].CHILDREN 但是,如何在计算的度量值中进行切片呢 我期望工作的一个简化示例:

在维度D和度量M之间有一个多对多的关系

我需要创建一个通用的计算度量,它将具有以下公式:∑M/其中∑表示与给定维度的至少一个成员关联的所有度量事实的总和

对于其他(一对多)维度来说很容易,但是在多对多维度中获得∑。。。好吧,如果它只是一个常规的MDX查询,那也很容易。我可以切一个维度的所有子对象:

SELECT [Measures].[M] ON 0
FROM [MyCube]
WHERE [D].[All].CHILDREN
但是,如何在计算的度量值中进行切片呢

我期望工作的一个简化示例:

当然,MDX不支持
成员定义中的
WHERE
子句

请告诉我如何处理这个问题。

使用这个方法怎么样


最后,我得到的是:

CREATE HIDDEN [Total M] =
  AGGREGATE(
    DESCENDANTS(
      AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ),
      AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS.COUNT
    ) - AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ),
    [Measures].[M]
  );

简而言之,我从维度的成员集中减去了根成员。对剩余的集合进行聚合可以在多对多关系中提供适当的值。现在,我可以在其他度量中使用此度量来计算M/∑(M)等。

这是一个多对多关系。这样求和是没有意义的,因为它可能把一个事实求和多次。但是谢谢你的努力!:)我很感激
CREATE MEMBER [Measures].[Calc] AS
  [Measures].[M] / Aggregate( DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ).CHILDREN, [Measures].[M] )
CREATE HIDDEN [Total M] =
  AGGREGATE(
    DESCENDANTS(
      AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ),
      AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS.COUNT
    ) - AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ),
    [Measures].[M]
  );