2010-03-18 4 views
0

Pourquoi les résultats de mon [Groupe Hiérarchie] ne sont-ils pas filtrés par l'intermédiaire de la déclaration filter() ci-dessous?MDX: le filtrage des problèmes entraîne une requête MDX utilisée dans la requête Reporting Services

SELECT 
    NON EMPTY {[Measures].[Group Count], [Measures].[Overall Group Count] } ON COLUMNS, 
    NON EMPTY { 
     [Survey].[Surveys By Year].[Survey Year].ALLMEMBERS * 
     [Response Status].[Response Status].[Response Status].ALLMEMBERS} 
    DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM (
    SELECT ({ [Survey Type].[Survey Type Hierarchy].&[9] }) ON COLUMNS 
    FROM (
     SELECT ({ [Response Status].[Response Status].[All] }) ON COLUMNS 
     FROM (
      SELECT (STRTOSET(@SurveySurveysByYear, CONSTRAINED)) ON COLUMNS 
      FROM (
      SELECT(filter([Group].[Group Hierarchy].members, instr(@GroupGroupFullName,[Group].[Group Hierarchy].Properties("Group Full Name")))) on columns 
      FROM [SysSurveyDW])))) 

CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

Répondre

1

Voici une solution qui fonctionne comme prévu. Déplacé le filtre dans la clause WHERE ... qui n'a pas fonctionné JUSQU'A ce que j'ai mis le "SELECT ({[Groupe]. [Groupe]. [Groupe]}) SUR COLONNES ..." code dans le FROM.

Quelqu'un peut-il voir un meilleur moyen d'accomplir cela? Certainement pas le gourou MDX ici :)

SELECT 
    NON EMPTY {[Measures].[Group Count], [Measures].[Overall Group Count] } ON COLUMNS, 
    NON EMPTY { 
     STRTOSET(@SurveySurveysByYear) * 
     [Response Status].[Response Status].[Response Status].ALLMEMBERS} 
    DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM (
    SELECT ({[Group].[Group].[Group]}) ON COLUMNS 
    FROM (
     SELECT ({ [Survey Type].[Survey Type Hierarchy].&[9] }) ON COLUMNS 
     FROM (
      SELECT ({ [Response Status].[Response Status].[All] }) ON COLUMNS 
      FROM [SysSurveyDW]))) 
where 
filter([Group].[Group Hierarchy].members - [Group].[Group Hierarchy].[All], 
instr(@GroupGroupFullName,[Group].[Group Hierarchy].Properties("Group Full Name"))) 


CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 
0

Je pense que vous pouvez avoir vos paramètres dans le mauvais sens. De la façon dont vous l'avez codé, il est effectivement à la recherche de noms de membres qui existent dans votre paramètre. Je ne suis pas sûr de ce que vous passez en paramètre, mais j'aurais pensé qu'il était plus probable que vous recherchiez des noms de membres qui contenaient la valeur du paramètre.

+0

Le filtre sur la hiérarchie de groupe fonctionne bien (par exemple renvoie un ensemble de groupes qui sont attendus) ... c'est juste qu'ils ne sont pas utilisés pour limiter les résultats à venir de retour pour une raison quelconque. – wgpubs

+0

Les sous-sélections fonctionnent comme des sous-cubes de requête, donc à moins que vos mesures ne soient des calculs qui dépendent du contexte actuel, ils devraient fonctionner correctement. Si vos mesures sont des mesures calculées, la meilleure solution serait de passer la requête à l'aide de la clause WHERE au lieu de sous-sélectionner. –

Questions connexes