我在维度D和度量M之间存在多对多的关系。
我需要创建一个具有以下公式的通用计算度量:M /Σ(M),其中Σ代表与给定维度的至少一个成员相关联的所有度量事实的总和。
对于其他(一对多)维度来说很容易,但是在多对多中获得Σ...好吧,如果它只是一个常规的MDX查询,那也很容易。我可以对所有维度的孩子进行切分:
SELECT [Measures].[M] ON 0
FROM [MyCube]
WHERE [D].[All].CHILDREN
但是如何切换计算出的度量?
我期望工作的简化示例:
CREATE MEMBER [Measures].[Calc] AS
[Measures].[M] / ( DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ), [Measures].[M] )
WHERE DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ).CHILDREN
但是,当然,MDX不支持WHERE
定义中的MEMBER
子句。
请告诉我如何处理此事。
答案 0 :(得分:0)
如何使用aggregate方法?
CREATE MEMBER [Measures].[Calc] AS
[Measures].[M] / Aggregate( DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ).CHILDREN, [Measures].[M] )
答案 1 :(得分:0)
最后,这就是我得到的:
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)等。