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