2015-03-16 1 views
0

J'ai la requête suivante avec MDXerreur MDX avec un agrégat

CREATE 
    MEMBER CURRENTCUBE.[Measures].[Estimating Accuracy Labour Hours] AS 
    Sum 
    (
     CASE 
     WHEN 
       (1 
       - 
        [Measures].[Estimation Difference] 
       /
        Aggregate 
        (
        [Measures].[Actual Labour Hours] 
        ,[DISTRICTS D].[District] 
        ,[WORK D].[Work].[Work Description] 
       ) 
      ) 
      * 100 
      > 0 
     THEN 
      (1 
      - 
       [Measures].[Estimation Difference] 
      /
       Aggregate 
       (
        [Measures].[Actual Labour Hours] 
       ,[DISTRICTS D].[District] 
       ,[WORK D].[Work].[Work Description] 
       ) 
      ) 
      * 100 
     ELSE 0 
     END 
    ) 
    ,VISIBLE = 1 
    ,ASSOCIATED_MEASURE_ = 'WORK F' ; 

J'obtenu l'erreur suivante

MdxScript (TEST) (52, 71) Trop d'arguments ont été transmis à la AGGREGATE fonction. Le nombre maximal d'arguments pour la fonction est 2.

Comment le résoudre?

Répondre

1

L'erreur est plus facile à comprendre que la plupart des messages d'erreur MDX!

Vous avez trois arguments dans cet extrait:

Aggregate 
    (
     [Measures].[Actual Labour Hours] 
     ,[DISTRICTS D].[District] 
     ,[WORK D].[Work].[Work Description] 
    ) 

Voici la définition MSDN: https://msdn.microsoft.com/en-us/library/ms145524.aspx

Aggregate (Set_Expression [, Numeric_Expression])

Suite à cette définition, déplacez votre expression numérique jusqu'à la fin et les autres expressions devant:

Aggregate 
    ( 
     ,[DISTRICTS D].[District] 
     ,[WORK D].[Work].[Work Description] 
     ,[Measures].[Actual Labour Hours] 
    ) 

Toujours devrait être erroné. Vous devez ensuite faire un tuple mis sur les deux premiers arguments:

Aggregate 
    ( 
     {(
     [DISTRICTS D].[District] 
     ,[WORK D].[Work].[Work Description] 
     )} 
     ,[Measures].[Actual Labour Hours] 
    ) 

Votre message d'erreur devrait maintenant disparaître.