2015-02-19 2 views
0

У нас есть таблица с одной Мерой [Сумма скидки] на COLUMNS и CROSSJOIN [Product]. [Категории продуктов] и [География]. [География] на оси ROWS.Проблема с функцией заказа и кроссонами в MDX

Мы используем функцию 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 (как и раньше, но без одежды);
  • добавить новое крестное соединение для лица [Одежда] с расширением выбранного члена [Все категории];

новый 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

Таким образом, мы ищем решение, как сделать работу упорядочивание и расширение в таких таблицах.

спасибо.

+0

Если вы не привязаны к MDX только использовать OPENQUERY в SQL для извлечения сырого набора с помощью MDX и сортировать его по SQL ORDER BY – George

+0

@George - похоже, что они должны быть привязаны к некоторому инструменту MDX, так как, безусловно, никто не будет сознательно выбрасывать все эти «иерархизации»?! – whytheq

ответ

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]; 
Смежные вопросы