MDX-запрос к порядку (и topfilter) результатов после / с перекрестным соединением

Я хотел бы заказать набор результатов в запросе MDX, который также включает перекрестное соединение.

У меня есть следующие меры и размеры:

  • [Меры]. [начинается]
  • [Framework]. [Framework Name]
  • [Framework]. [Имя пути]

Я хотел бы создать список (соответствующих) имен Framework и Pathway, которые соответствуют 25 верхним числам [Measures].[Starts].

Мне удалось вывести полный список результатов, используя:

select [Measures].[Starts] on COLUMNS,
NON EMPTY CrossJoin(
Hierarchize({DrilldownLevel({[Framework].[Pathway Name].Children})}), 
Hierarchize({DrilldownLevel({[Framework].[Framework Name].Children})})
) on ROWS
from [DataCube] 

создать следующий пример вывода: требуется пример таблицы

Тем не менее, мне нужно, чтобы он сортировался по стартам в порядке убывания (и желательно, чтобы сохранялись только первые 25 результатов). Я перепробовал почти все и потерпел неудачу. Поиск в Google не нашел результатов.

2 ответа

Для эффективности лучше заказать набор перед использованием TopCount функция:

WITH 
SET [SetOrdered] AS
  ORDER(
     {DrilldownLevel([Framework].[Pathway Name].Children)} 
    *{DrilldownLevel([Framework].[Framework Name].Children)}
    ,[Measures].[Starts]
    ,BDESC
  )
SET [Set25] AS
  TOPCOUNT(
     [SetOrdered]
    ,25
  )
SELECT 
  [Measures].[Starts] on 0,
NON EMPTY 
  [Set25] on 1
FROM [DataCube]; 

Вы наткнулись на TopCount функционировать?

select [Measures].[Starts] on COLUMNS,
NON EMPTY 
    TopCount
        (
        CrossJoin
            (
            Hierarchize({DrilldownLevel({[Framework].[Pathway Name].Children})}), 
            Hierarchize({DrilldownLevel({[Framework].[Framework Name].Children})})
            ), 
        25, 
        [Measures].[Starts]
        ) on ROWS
from [DataCube] 

Вот ссылка MSDN.

H2H

Другие вопросы по тегам