Compréhension de l'expression du filter MDX

J'ai du mal à comprendre comment fonctionne la fonction FILTER dans MDX.

Voici ma requête qui récupère toutes les valeurs du nombre de commands Internet non vides pour tous les pays du Territoire de vente pour toutes les années calendaires.

SELECT NON EMPTY { Filter ( {[Date].[Calendar].[Calendar Year].MEMBERS} , [Measures].[Internet Order Count] > 0 ) } ON COLUMNS ,[Sales Territory].[Sales Territory].[Country].MEMBERS ON ROWS FROM [Adventure Works] WHERE [Measures].[Internet Order Count]; 

Cela me donne toutes les commands que je filter par 0 et le résultat est comme indiqué ci-dessous

  CY 2010,CY 2011,CY 2012,CY 2013,CY 2014 France, 1 ,140 ,359 ,"1,917",67 Germany, ,175 ,339 ,"1,909",61 United Kingdom ,1 ,175 ,405 ,"2,377",73 Canada, 1 ,170 ,169 ,"2,856",179 United States, 5 ,770 ,867 ,"7,590",335 Australia, 6 ,786 ,"1,130","4,640",156 

Je suis en train de mettre les résultats au format csv car j'ai des ressortingctions pour download l'image actuellement. Je suis nouveau sur MDX et mon but est de filterr ce jeu de résultats où le nombre de commands Internet est supérieur à 180.

Par conséquent, j'ai maintenant modifié la requête à ceci –

 SELECT NON EMPTY { Filter ( {[Date].[Calendar].[Calendar Year].MEMBERS} , [Measures].[Internet Order Count] > 180 ) } ON COLUMNS ,[Sales Territory].[Sales Territory].[Country].MEMBERS ON ROWS FROM [Adventure Works] WHERE [Measures].[Internet Order Count]; 

Celui-ci m'a donné la sortie ci-dessous –

  CY 2011,CY 2012,CY 2013,CY 2014 France, 140 ,359 ,"1,917",67 Germany, 175 ,339 ,"1,909",61 United Kingdom ,175 ,405 ,"2,377",73 Canada, 170 ,169 ,"2,856",179 United States, 770 ,867 ,"7,590",335 Australia, 786 ,"1,130","4,640",156 

Fondamentalement, les inputs de CY 2010 sont filtrées alors que je ne m'attends pas à avoir des valeurs d'input / de blanc (France, CY 2011), (Allemagne, CY 2011), (UK, CY 2011), (Canada, CY 2011), etc. et bien sûr similaire pour certaines inputs appartenant à CY 2014 avec un résultat similaire.

J'utilise le cube AdventureWorksDW2014. Comment ferais-je cela?

Vous ne filterz que les années avec un nombre de commands Internet supérieur à 180, pas la taille du pays. essaye ça:

 SELECT NON EMPTY [Date].[Calendar].[Calendar Year].MEMBERS ON COLUMNS, [Sales Territory].[Sales Territory].[Country].MEMBERS ON ROWS FROM ( SELECT Filter ( ( [Date].[Calendar].[Calendar Year].MEMBERS , [Sales Territory].[Sales Territory].[Country].MEMBERS ), [Measures].[Internet Order Count] > 180 ) ON 0 FROM [Adventure Works] ) WHERE [Measures].[Internet Order Count] 

Votre tout premier script est en fait juste ce qui suit. Pas besoin de filter car c'est un count donc <0 n'arrivera jamais:

 SELECT NON EMPTY [Date].[Calendar].[Calendar Year].MEMBERS ON 0 ,[Sales Territory].[Sales Territory].[Country].MEMBERS ON 1 FROM [Adventure Works] WHERE [Measures].[Internet Order Count]; 

Dans mon ancienne version de AdvWrks cela se traduit par:

entrez la description de l'image ici

En fait, je pense que vous êtes plus après ce qui suit:

 WITH MEMBER [Measures].[transformToNull] AS IIF ( [Measures].[Internet Order Count] <= 180 ,null ,[Measures].[Internet Order Count] ) SELECT NON EMPTY {[Date].[Calendar].[Calendar Year].MEMBERS} ON COLUMNS ,[Sales Territory].[Sales Territory].[Country].MEMBERS ON ROWS FROM [Adventure Works] WHERE [Measures].[transformToNull]; 

Résultats dans les suivants:

entrez la description de l'image ici