2015-10-27 1 views
0

J'ai un problème avec la requête suivante. Il renvoie à tort TOUTES les valeurs de niveau pour la dimension de l'agent. Mon exigence est d'obtenir la valeur ALL du niveau comme somme de toutes les valeurs sélectionnées pour la fonction TOPCOUNT. Merci.MDX: toute la valeur de niveau ne s'affiche pas correctement lorsque j'utilise TopCount

WITH 
    SET [0] AS 
    { 
     { 
     [Sum Assured Bucket].[Sum Assured Bucket].[Sum Assured Bucket].[> 1200000] 
     ,[Sum Assured Bucket].[Sum Assured Bucket].[Sum Assured Bucket].[> 1200000].Children 
     } 
    } 
    SET [1] AS 
    { 
     { 
     [Period].[Period].[Year].[2012] 
     ,[Period].[Period].[Year].[2012].Children 
     } 
    } 
    SET [Agent_Agent_Agent_1_ADV] AS 
    { 
     TopCount 
     (
     Order 
     (
      {AddCalculatedMembers([Agent].[Agent].[Agent])} 
     ,[Measures].[Count Of Leads] 
     ,BDESC 
     ) 
     ,5 
     ,[Measures].[Count Of Leads] 
    ) 
    } 
    SET [Agent_Agent_Agent_1_ADV_VISULATOTAL] AS 
    VisualTotals([Agent_Agent_Agent_1_ADV]) 
    SET [HIDDEN_TOTAL_0] AS 
    VisualTotals([Agent_Agent_Agent_1]) 
    SET [Agent_Agent_Agent_1] AS 
    { 
     {[Agent].[Agent].[All]} 
    ,Order 
     (
     { 
      AddCalculatedMembers 
      (
      Intersect 
      (
       [Agent_Agent_Agent_1_ADV_VISULATOTAL] 
      ,AddCalculatedMembers([Agent].[Agent].[Agent]) 
      ) 
     ) 
     } 
     ,[Measures].[Count Of Leads] 
     ,BDESC 
    ) 
    } 
    SET [HIDDEN_TOTAL_1] AS 
    VisualTotals([Sum Assured Bucket_Sum Assured Bucket_Sum Assured Bucket_1]) 
    SET [HIDDEN_TOTAL_2] AS 
    VisualTotals([0]) 
    SET [Sum Assured Bucket_Sum Assured Bucket_Sum Assured Bucket_1] AS 
    { 
     {[Sum Assured Bucket].[Sum Assured Bucket].[All]} 
    ,Hierarchize 
     (
     Intersect 
     (
      [0] 
     ,AddCalculatedMembers 
      (
      [Sum Assured Bucket].[Sum Assured Bucket].[Sum Assured Bucket] 
     ) 
     ) 
    ) 
    } 
SELECT 
    NON EMPTY 
    { 
     {[Agent].[Agent].[All]} 
    ,Order 
     (
     { 
      AddCalculatedMembers 
      (
      Intersect 
      (
       VisualTotals 
       (
       { 
        TopCount 
        (
        Order 
        (
         {AddCalculatedMembers([Agent].[Agent].[Agent])} 
        ,[Measures].[Count Of Leads] 
        ,BDESC 
        ) 
        ,5 
        ,[Measures].[Count Of Leads] 
       ) 
       } 
      ) 
      ,AddCalculatedMembers([Agent].[Agent].[Agent]) 
      ) 
     ) 
     } 
     ,[Measures].[Count Of Leads] 
     ,BDESC 
    ) 
    } 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON 0 
,NON EMPTY 
    [Sum Assured Bucket_Sum Assured Bucket_Sum Assured Bucket_1] 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON 1 
,{[MEASURES].[Count Of Leads]} ON 2 
FROM [New Policy Analysis]; 

Répondre

0

Ceci est un membre spécifique dans votre cube: [Agent].[Agent].[All] il ne sera pas égal au résultat de votre expression qui utilise TopCount.

Vous pouvez créer un membre calculé que les agrégats ou Sums l'ensemble de topCount:

... 
SET [Agent_Agent_Agent_1_ADV] AS 
    { 
     TopCount 
     (
     Order 
     (
      {AddCalculatedMembers([Agent].[Agent].[Agent])} 
     ,[Measures].[Count Of Leads] 
     ,BDESC 
     ) 
     ,5 
     ,[Measures].[Count Of Leads] 
    ) 
    } 
MEMBER [Agent].[Agent].[All_new] AS 
    Aggregate([Agent_Agent_Agent_1_ADV]) //<<<<Sum([Agent_Agent_Agent_1_ADV]) 
... 
... 
SELECT 
    NON EMPTY 
    { 
     {[Agent].[Agent].[All_new]} //<<<< 
    ,Order 
     (
     { 
... 
... 
+0

Merci pour votre réponse. Mais ça n'a pas marché pour moi. Cela a fonctionné après le déplacement des VISULATOTALS à la partie SELECT. Auparavant, j'ai utilisé VISULATOTALS dans le cadre de SET. – user1587872