报告操作条件似乎间歇性地评估错误

时间:2015-07-13 17:18:34

标签: sql-server sql-server-2012 ssas mdx

我有一个SSAS 2012多维数据集,它有一个报告操作。根据用户需要选择特定的Scenario

,此操作应有条件地提供

动作本身运作正常,我遇到的问题是我为动作定义的条件只能在大部分时间

在Excel中浏览多维数据集时,如果我向“值”添加“活动”(度量),并且我将方案放在列之间,只要我右键单击一个活动单元格(不包括“总计”),该操作就可以按预期方式使用。会出现几列示例数据:

            2010 Actuals    2011 Actuals
Activity    -13,812,430     11,938,733

在浏览多维数据集时,如果除了上述配置之外,我在行上放置了一个帐户层次结构,并展开了最低级别,那么对于某些单元格,该操作将不可用,而对于大多数其他单元格则可用。会出现几列示例数据:

Row Labels  2010 Actuals    2011 Actuals
123 - ABC   -1,889          41,251
456 - DEF   -562,243       -2,053,282
789 - GHI   -25,000        -12,454

由于操作条件仅要求选择特定方案(2010 Actuals,2011 Actuals,ect),我希望右键单击示例数据中的任何度量值都可以使用该操作。该操作适用于6个单元格中的5个,但不适用于456 - DEF 2011 Actuals导致这种情况的原因是什么?

行动中的条件MDX是:

[Scenario].[SA - Scenario].CurrentMember <> [Scenario].[SA - Scenario].[All]

在运行SQL事件探查器时,如果我右键单击行为正常的单元格,然后单击“显示详细信息”,则发送的MDX为:

    DRILLTHROUGH MAXROWS 
    1000 SELECT FROM [SomeName] WHERE 
    ([Measures].[Activity]
    ,[Account].[A1 - Level 1].[Level 1].&[Balance Sheet].&[Assets].&[Current Assets].&[Cash].&[Cash in Bank].&[456 - DEF]
    ,[Scenario].[SA - Scenario].[Scenario].&[79])

如果我点击的单元格可以执行此操作,则发送的MDX为:

    DRILLTHROUGH MAXROWS 
    1000 SELECT FROM [SomeName] WHERE 
    ([Measures].[Activity]
    ,[Account].[A1 - Level 1].[Level 1].&[Balance Sheet].&[Assets].&[Current Assets].&[Cash].&[Cash in Bank].&[456 - DEF]
    ,[Scenario].[SA - Scenario].[Scenario].&[80])

为单元格发送的MDX之间的唯一区别似乎是Scenario值,我认为这是正确的,因为我们从Account中选择了相同的成员,只是一个不同的场景。在一种情况下,条件似乎评估为真,而在第二种情况下,它似乎评估为假,因为该操作不可用。

不可否认,我对MDX不太满意。但是,由于大部分时间该操作都可用,我相信该表达式有效且有效,否则,该操作永远不可用。 (当我处于伪造状态时就是这种情况)。

作为一个完整性检查,如果我将MDX条件设置为TRUE,则该操作始终可用。如果我为另一个维度切换Account并钻取到最低级别,我无法重现这一点。对于某些情况,在最低帐户级别下,它似乎与某些成员有关。

我已经看过如何设置帐户维度,与其他维度相比,我没有看到任何因为结构不同而跳出来的东西。

还有什么可能导致我尚未研究过这种行为?

1 个答案:

答案 0 :(得分:1)

您的表达式将评估当前场景和总计的度量,并比较两个数字:

[Scenario].[SA - Scenario].CurrentMember <> [Scenario].[SA - Scenario].[All]

尝试以下方法:

Not ([Scenario].[SA - Scenario].CurrentMember Is [Scenario].[SA - Scenario].[All])