0

我正在学习《一步一步的MDX》这本书。我正在关注这些示例,并且对如何理解 EXISTING 有疑问。我理解(我认为)下面的 1 和 2,但不理解 3。

注意:屏幕截图不完整,但您可以理解。

1 它返回所有产品的前 5 名经销商销售额,并且只与 4 个类别交叉连接,这是不希望的。您可以看到排名前 5 位的产品在重复。

    SELECT
    {([Measures].[Reseller Sales Amount])} ON COLUMNS,      
    ([Product].[Category].[Category].Members) *
    Generate(
        {[Product].[Category].[Category].Members},
         TopCount(
             {[Product].[Product].[Product].Members},
            5,
            ([Measures].[Reseller Sales Amount])
        ),
        ALL
    ) ON ROWS
    FROM [Step-by-Step]

在此处输入图像描述

2 现在我添加 EXISTING,它返回四个类别中每个类别的前 5 名经销商销售额,这是正确的。

    SELECT
    {([Measures].[Reseller Sales Amount])} ON COLUMNS,      
    ([Product].[Category].[Category].Members) *
    Generate(
        {[Product].[Category].[Category].Members},
         TopCount(
             EXISTING {[Product].[Product].[Product].Members},
            5,
            ([Measures].[Reseller Sales Amount])
        ),
        ALL
    ) ON ROWS
    FROM [Step-by-Step]

在此处输入图像描述

3 现在这是我的问题。我把 EXISTING 放在 Topcount 上,怎么理解发生了什么?

    SELECT
    {([Measures].[Reseller Sales Amount])} ON COLUMNS,      
    ([Product].[Category].[Category].Members) *
    Generate(
        {[Product].[Category].[Category].Members},
        EXISTING TopCount(
            {[Product].[Product].[Product].Members},
            5,
            ([Measures].[Reseller Sales Amount])
        ),
        ALL
    ) ON ROWS
    FROM [Step-by-Step]

在此处输入图像描述

4

1 回答 1

0

MDX 运算符 Existing正在本地更改单元评估的上下文。它不会“深入”到功能或措施中。在您的最后一个场景中,它只对 TopCount 的结果有影响,因为没有什么要评估的,所以没有影响。

可惜不是改变元组上下文的函数,例如:

 CubeContext( ...)  -> where ... is evaluated witht the slicer.
于 2013-02-27T08:39:15.930 回答