MDX:Crossjoin并设置评估

时间:2013-02-12 22:38:14

标签: set mdx cross-join

我正在努力使用这个MDX,在行上应返回按日期排序的Date和Countries的交叉连接。显然,交叉连接期间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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这解决了我的问题,但我仍然想知道为什么[日期]。[财政年度] .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];