0

我正在为这个 MDX 苦苦挣扎,它在行上应该返回按值排序的日期和国家/地区的交叉连接。显然,交叉连接期间 Order 函数中的“[Date].[Fiscal Year].CurrentMember”仍在返回默认成员,而不是来自交叉连接上下文的当前成员。也许我对交叉连接期间评估集合的方式和时间的理解不正确?

WITH 
  SET [DATE_main] AS 
    {
      [Date].[Fiscal Year].&[2002],
      [Date].[Fiscal Year].&[2003]
    } 
  SET [CUSTOMER_ordered] AS 
    {
      Order
      (
        [Customer].[Customer Geography].[Country].Members,
        (
          [Customer].[Customer Geography].CurrentMember,
          [Date].[Fiscal Year].CurrentMember,
          [Measures].[Internet Sales Amount]
        ),
        BDESC
      )
    } 
SELECT 
  {[Measures].[Internet Sales Amount]} ON COLUMNS,
  CrossJoin
  (
    [DATE_main],
    [CUSTOMER_ordered]
  ) ON ROWS
FROM [Adventure Works];

感谢您的任何建议,Endokr

4

2 回答 2

0

要获得预期的结果,您必须将交叉连接放在订单中。

于 2013-02-12T23:54:12.507 回答
0

这解决了我的问题,但我仍然想知道为什么 [Date].[Fiscal Year].CurrentMember 在交叉连接中无法按预期工作:

WITH 
  SET [DATE_main] AS 
    {
      [Date].[Fiscal Year].&[2002],
      [Date].[Fiscal Year].&[2003]
    } 
  SET [CUSTOMER_ordered] AS 
    {
      Order
      (
        [Customer].[Customer Geography].[Country].MEMBERS,
        (
          [Customer].[Customer Geography].CurrentMember,
          [Date].[Fiscal Year].CurrentMember,
          [Measures].[Internet Sales Amount]
        ),
        BDESC
      )
    } 
SELECT 
  {[Measures].[Internet Sales Amount]} ON COLUMNS,
  Generate
  (
    [DATE_main],
    Order
    (
      CrossJoin
      (
        [Date].[Fiscal Year].CurrentMember,
        [Customer].[Customer Geography].[Country].MEMBERS
      ),
      (
        [Measures].[Internet Sales Amount]
      ),
      BDESC
    )
  ) ON ROWS
FROM [Adventure Works];
于 2013-02-13T08:53:16.213 回答