SETS上的MDX计算

时间:2017-08-02 09:34:30

标签: set mdx

我有一个MDX查询,其中我使用的是Parent-Child层次结构,其中任何级别的属性都具有特定值。

现在我想创建一个具有这些特定值的集合并将它们相互减去

我的查询看起来像这样:

    WITH 
    SET [OMS] AS
    {
    DESCENDANTS(
        FILTER([ReportHierarchy].[Hierarchy].MEMBERS,
            [ReportHierarchy].[Hierarchy].Properties( "Sum Code" )="OMS")
        ,,SELF)
    }
    SET [VF] as {
    DESCENDANTS(
        FILTER([ReportHierarchy].[Hierarchy].MEMBERS,
            [ReportHierarchy].[Hierarchy].Properties( "Sum Code" )="VF")
        ,,SELF)
    }
    SELECT 
{
    [Measures].[Amount],
    [Measures].[Budget Amount]
}    ON COLUMNS,
{
    [OMS],
    [VF]

}
on ROWS
    FROM 
Finance
    WHERE
[ReportHierarchy].[Hierarchy Name].&[Income and Balance]

返回此结果:

                Amount           Budget Amount
    Nettoomsætning  -126418831.1    -308192540.75
    Vareforbrug 65415924.25 159307880.45

现在我想做一个从集合[OMS]中减去SET [VF]的计算...

有人有任何建议吗?

1 个答案:

答案 0 :(得分:0)

您需要WITH MEMBER在最左侧的列中创建新项目。可以设置此新项目以计算一个项目的值减去另一个项目。这与我多年前写的一个旧查询的情况类似:

    WITH MEMBER [Actual Time].[MySubtraction] 
    AS '[Actual Time].[Week].[Week 5] - [Actual Time].[Week].[Week 4]', SOLVE_ORDER=80 
    SELECT {
        [Location].[All Location].[Blah Blah]
    } ON ROWS,{
        [Actual Time].[Week].members,
        [Actual Time].[MySubtraction] 
    } 
    ON COLUMNS FROM [CubeName] 
    WHERE ([Measures].[Whatever])

我的MDX现在变得生疏了,所以我没有试图给你所需的确切查询,抱歉。请查看WITH MEMBER的文档以了解详情。