在MDX中使用Order函数和Crossoins发出问题

时间:2015-02-19 16:10:01

标签: mdx hierarchy saas cross-join

我们在[产品]的COLUMNS和CROSSJOIN上有一个表格[折扣金额]。[产品类别]和[地理]。[地理]在ROWS轴上。

我们使用ORDER函数按[折扣金额]对实体进行排序,选项为" BDESC"。

MDX:

SELECT 
  NON EMPTY 
    {[Measures].[Discount Amount]} ON COLUMNS
 ,NON EMPTY 
    Order
    (
      {
        Hierarchize
        (
          {
            CrossJoin
            (
              {
                Hierarchize
                (
                  {
                    [Product].[Product Categories].[All Products]
                   ,[Product].[Product Categories].[All Products].Children
                  }
                )
              }
             ,{Hierarchize({[Geography].[Geography].[All Geographies]})}
            )
          }
        )
      }
     ,[Measures].[Discount Amount]
     ,BDESC
    ) ON ROWS
FROM [Adventure Works];

表格看起来不错,并按我们的意愿显示信息。

然后我们要扩展实体[服装]的[所有类别]元素。为此,我们需要做出一些改变:

  • 修改现有的Crossjoin(如前所述,但没有服装);
  • 为[服装]实体添加新的Crossjoin,扩展所选成员[所有类别];

新MDX:

SELECT 
  NON EMPTY 
    {[Measures].[Discount Amount]} ON COLUMNS
 ,NON EMPTY 
    {
      Order
      (
        {
          Hierarchize
          (
            {
              CrossJoin
              (
                {
                  Except
                  (
                    {
                      Hierarchize
                      (
                        {
                          [Product].[Product Categories].[All Products]
                         ,[Product].[Product Categories].[All Products].Children
                        }
                      )
                    }
                   ,{[Product].[Product Categories].[Category].&[3]}
                  )
                }
               ,{Hierarchize({[Geography].[Geography].[All Geographies]})}
              )
            }
          )
         ,CrossJoin
          (
            {[Product].[Product Categories].[Category].&[3]}
           ,{
              Hierarchize
              (
                {
                  [Geography].[Geography].[All Geographies]
                 ,[Geography].[Geography].[All Geographies].Children
                }
              )
            }
          )
        }
       ,[Measures].[Discount Amount]
       ,BDESC
      )
    } ON ROWS
FROM [Adventure Works];

和SQL Server Management Studio中的结果表: Table with BDESC sorting

正如您所看到的,[服装]实体的所有孩子都失去了他们的等级,并在表格中显示为单独的实体。

但我们希望这些元素属于[服装]的[所有地理位置]。

如果我们尝试将排序类型更改为" DESC" (分层)然后儿童正确显示,但在表格中排序不起作用:

Table with DESC sorting

因此,我们正在寻找解决方案如何在这些表中进行工作排序和扩展。

谢谢。

1 个答案:

答案 0 :(得分:0)

你走了 - 我拿出了很多Hierarchize的实例来试图看到树木的木材。我没有使用度量来订购,而是使用了添加[Product].[Product Categories].[Product Categories]

的元组
SELECT 
  NON EMPTY 
    {[Measures].[Discount Amount]} ON COLUMNS
 ,NON EMPTY 
    {
      Order
      (
        {
            Except
            (
              {
                [Product].[Product Categories].[All Products]
               ,[Product].[Product Categories].[All Products].Children
              }
             ,[Product].[Product Categories].[Category].&[3]
            )
          * 
            [Geography].[Geography].[All Geographies]
         ,
            [Product].[Product Categories].[Category].&[3]
          * 
            {
              [Geography].[Geography].[All Geographies]
             ,[Geography].[Geography].[All Geographies].Children
            }
        }
       ,([Measures].[Discount Amount],[Product].[Product Categories].[Product Categories])
       ,BDESC
      )
    } ON ROWS
FROM [Adventure Works];