2012-02-07 1 views
2

Я изо всех сил пытаюсь понять это и надеялся, что кто-то там сможет помочь.Параметрированный запрос MDX в SSRS 2008 с колонками с несколькими рангами

У меня есть отчет SSRS (2008), который подключается непосредственно к кубу SSAS OLAP. У меня есть 5 разных столбцов, каждый из которых показывает другую меру, выбитую из измерения «Менеджер». У меня также есть параметризованные выпадающие списки в SSRS, которые фильтруют данные на основе различных вещей.

Вот код, который получил меня к этой точке:

SELECT 
NON EMPTY{ 
[Measures].[Metric A] 
,[Measures].[Metric B] 
,[Measures].[TMetric C] 
,[Measures].[Metric D] 
,[Measures].[Metric E] 
} ON COLUMNS 
,NON EMPTY{ 
([Ops Hierarchy].[Manager].[Manager].ALLMEMBERS) 
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 

FROM 
(
    SELECT 
    (
     STRTOSET(@CompleteDateCalendar, CONSTRAINED)) ON COLUMNS 
     FROM 
     ( 
      SELECT 
      (
      STRTOSET(@City, CONSTRAINED)) ON COLUMNS 

      FROM 
      (
       SELECT 
       (
        STRTOSET(@Region, CONSTRAINED)) ON COLUMNS 
        FROM 
        (
         SELECT 
         (
         STRTOSET(@Country, CONSTRAINED)) ON COLUMNS 

         FROM 
         [CUBE] 
        ) 
       ) 
      ) 
     ) 

WHERE 
(
IIF(STRTOSET(@Country, CONSTRAINED).Count = 1, STRTOSET(@Country, CONSTRAINED) 
, [Ops Hierarchy].[Division Name].currentmember) 
, IIF(STRTOSET(@Region, CONSTRAINED).Count = 1, STRTOSET(@Region, CONSTRAINED) 
, [Ops Hierarchy].[Region Name].currentmember) 
, IIF(STRTOSET(@City, CONSTRAINED).Count = 1, STRTOSET(@City, CONSTRAINED) 
, [Ops Hierarchy].[System Name].currentmember) 
, IIF(STRTOSET(@CompleteDateCalendar, CONSTRAINED).Count = 1, STRTOSET(@CompleteDateCalendar, CONSTRAINED) 
, [CompleteDate].[Calendar].currentmember) 
) 
    CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

И, конечно же, SSRS автомагически созданы соответствующие выпадающие для каждого @parameter.

Теперь, вот где мне нужна помощь:

У меня есть новое требование, чтобы добавить столбец «Ранг» для каждого показателя. Так, например, рядом со столбцом «Метрика А» появится еще один столбец «Метрический ранг», который оценивает менеджера в этой строке против других менеджеров, отображаемых в отчете (на основе параметров, выбранных в выпадающие).

Теперь я знаю, что я могу добавить:

WITH 

SET [OrderedSet1] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS,[Measures].[Metric A] <> NULL),[Measures].[Metric A],BASC) 
MEMBER [Measures].[Metric A Rank] AS RANK([Ops Hierarchy].[Manager].CurrentMember,[OrderedSet1]) 

SET [OrderedSet2] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS,[Measures].[Metric B] <> NULL),[Measures].[Metric B],BASC) 
MEMBER [Measures].[Metric B Rank] AS RANK([Ops Hierarchy].[Manager].CurrentMember,[OrderedSet2]) 

и т.д., в верхней части запроса MDX, а затем ссылаться [Measures] [Метрика место] и [Measures] [Metric B.. Ранг] в моем заявлении select.

Что я не знаю, как это сделать, это отфильтровать наборы с выпадающими списками SSRS, чтобы я оценивал только то, что отображается в отчете.

Так, например, если у кого-то есть страна = «США», регион = «Юг», Город = «Атланта» и CompleteDate = «Янв 2012», выбранный в SSRS, и я оцениваю Метрику А против OrderedSet1, тогда я только хочу показать, как каждый менеджер входит в ряды других менеджеров в Атланте за январь 2012 года.

Как «параметризовать» наборы в предложении WITH с помощью выпадающих списков SSRS, чтобы я оценивал только подмножество, которое пользователь выбрал?

Заранее благодарим за вашу помощь!

ответ

1

в Set декларации вы можете использовать

SET [OrderedSet1] AS ORDER(FILTER([Ops Hierarchy].[Manager].MEMBERS* 
[Ops Hierarchy].[System Name].currentmember 
,[Measures].[Metric A] <> NULL),[Measures].[Metric A],BASC)