【发布时间】:2015-07-13 17:18:34
【问题描述】:
我有一个 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 年实际情况、2011 年实际情况等),我希望右键单击示例数据中的任何度量值都会有可用的操作。该操作适用于 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 切换到另一个维度,并钻到最低级别,我将无法重现这一点。在某些情况下,它似乎以某种方式与最低帐户级别下的成员相关。
我查看了 Account 维度的设置方式,与其他维度相比,我没有发现任何让我觉得结构不同的地方。
还有什么可能导致我尚未调查的这种行为?
【问题讨论】:
标签: sql-server sql-server-2012 ssas mdx