1

我在 SSAS 中遇到了一个奇怪行为发生的问题。我有一个正在生产的立方体,但是,为了模拟问题,我创建了一个小立方体来隔离问题。我创建了一个模拟问题的小立方体。在这个多维数据集中,有一个维度和一个事实。在 [Sales Territory] ​​中,我将 UnknownMember 属性配置为 true。在立方体计算中,我在下面放了一个简单的范围代码:

SCOPE([Measures].[SalesAmountCustomValue]);
    THIS = [Measures].CurrentMember+10000000;
END SCOPE;

我在 SQL Server 2008 R2 中执行以下 MDX,使用和不使用 UnknownMember 和 Aggregate 函数有不同的结果。在 SQL Server 2012 中,结果与预期相同。

WITH 
MEMBER [Sales Territory].[Sales Territory Country].[Countries] AS
  Aggregate(
      {
        [Sales Territory].[Sales Territory Country].[All].UNKNOWNMEMBER,
        [Sales Territory].[Sales Territory Country].&[9],
        [Sales Territory].[Sales Territory Country].&[6]
      }
  )
MEMBER [Measures].[SalesAmountCustomValueWithAggregate] AS
  (
    [Sales Territory].[Sales Territory Country].[Countries],
    [Measures].[SalesAmountCustomValue]
  ),
FORMAT_STRING="0,000;-0,000"
SELECT {
      [Measures].[SalesAmount],
      [Measures].[SalesAmountCustomValue],
      [Measures].[SalesAmountCustomValueWithAggregate]
   } ON 0
FROM AdventureWorks
WHERE {
    [Sales Territory].[Sales Territory Country].[All].UNKNOWNMEMBER,
    [Sales Territory].[Sales Territory Country].&[9],
    [Sales Territory].[Sales Territory Country].&[6]
  }

结果是:

    销售额:11,038,845

    销售额自定义值:21,038,845

    SalesAmountCustomValueWithAggregate:41,038,845

去掉聚合函数的UnknownMember,结果为:

    销售额:11,038,845

    销售额自定义值:21,038,845

    SalesAmountCustomValueWithAggregate:21,038,845

MDX 引擎的行为是不同的。在第一个示例中,在聚合函数之前为每个成员执行范围计算。在这种情况下,范围计算会执行 3 次。将无效成员放入聚合函数中也会发生同样的情况,如 [Sales Territory].[Sales Territory Country].&[AAA],但在这种情况下,范围计算在 SQL 2008 R2 和 SQL 2012 中执行了两次。

去掉UnknownMember,执行一次范围计算,总计100亿。

对于相同的 MDX,我需要具有与 SQL 2012 中相同的行为:

    销售额:11,038,845

    销售额自定义值:21,038,845

    SalesAmountCustomValueWithAggregate:21,038,845

我测试了以下版本:

    SQL 2008R2 SP2 10.50.4279.0 x64

    SQL 2012 11.0.2100.60 x64

你对正在发生的事情有什么想法吗?

提前非常感谢。

保罗·科雷亚

4

1 回答 1

0

这看起来像是 SOLVE_ORDER 的情况,导致事物以错误的顺序计算。查看此链接了解详细信息:http: //msdn.microsoft.com/en-us/library/ms145539.aspx

于 2013-05-28T21:04:19.507 回答