2012-02-07 3 views
2

J'ai du mal à comprendre cela et j'espérais que quelqu'un là-bas pourrait être en mesure d'aider.Requête MDX paramétrée dans SSRS 2008 avec des colonnes à plusieurs rangs

J'ai un rapport SSRS (2008) qui se connecte directement à un cube OLAP SSAS. J'ai 5 colonnes différentes, chacune montrant une mesure différente, éclatée par la dimension "Manager". J'ai également des listes déroulantes paramétrées dans SSRS qui filtrent les données en fonction de diverses choses.

Voici le code qui m'a à ce point:

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 

Et bien sûr, SSRS créé automagiquement les menus déroulants correspondants pour chaque @parameter.

Maintenant, voici où je besoin d'aide:

J'ai une nouvelle exigence d'ajouter une colonne « Rank » pour chaque mesure. Ainsi, par exemple, à côté de la colonne "Métrique A", il y aura une autre colonne appelée "Metric A Rank" qui classe le gestionnaire sur cette ligne par rapport aux autres gestionnaires qui apparaissent sur le rapport (en fonction des paramètres sélectionnés dans le listes déroulantes).

Maintenant, je sais que je peux ajouter:

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]) 

etc, en haut de la requête MDX, puis référence [mesures] [métriques Classement] et [mesures] [métrique B.. Rank] dans mon instruction select. Ce que je ne sais pas comment faire est de filtrer les ensembles avec les listes déroulantes de SSRS de sorte que je me classe contre ce qui est montré sur le rapport. Ainsi, par exemple, si quelqu'un a Country = "USA", Region = "Sud", City = "Atlanta" et CompleteDate = "Jan 2012" sélectionné dans SSRS, et je classe Metric A contre OrderedSet1, alors je seulement Je veux montrer comment chaque manager se classe par rapport à d'autres gestionnaires à Atlanta pour Jan 2012.

Comment est-ce que je "paramétrer" les ensembles dans la clause WITH en utilisant les listes déroulantes SSRS de sorte que je ne fais que classer par rapport au sous-ensemble que l'utilisateur a choisi?

Merci d'avance pour votre aide!

Répondre

1

dans Set déclaration que vous pouvez utiliser

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