2017-09-08 1 views
0

je la requête MDX suivante:....ParallelPeriod est-il à l'origine de problèmes avec mon MDX?

with 

    MEMBER [Measures].[Prior Week] 
AS AGGREGATE(ParallelPeriod([Date].[Sun Weeks], 1, [Date].[Sun Weeks].CURRENTMEMBER), [Measures].[Value Count]) 

SELECT 
NON EMPTY 
{ 
    [Measures].[Value Count], 
    [Measures].[Prior Week] 
} ON COLUMNS, 

NON EMPTY 
{ 
     ([Date].[Sun Weeks].[Day].ALLMEMBERS) 
} ON ROWS 
FROM [MyCube]; 

La hiérarchie soleil semaines est [Date] [Semaines Sun] [Sun Semaine Année] [Semaine Soleil] [Jour]

Quand je exécutez la requête ci-dessus la colonne [Semaine précédente] produit #Error

Est-ce que quelqu'un sait pourquoi? Comment je le répare? A-t-il quelque chose à voir avec ParallelPeriod?

+0

si vous double-cliquez sur la cellule avec '# Error', alors vous devriez recevoir le message d'erreur? (dans SSMS ou MDXStudio) – whytheq

Répondre

0

Vous pourriez avoir besoin de forcer explicitement le premier argument à un ensemble:

MEMBER [Measures].[Prior Week] AS 
    AGGREGATE(
     {ParallelPeriod(
     [Date].[Sun Weeks] 
     , 1 
     , [Date].[Sun Weeks].CURRENTMEMBER 
    )} 
    ,[Measures].[Value Count] 
    ) 

Mais le premier argument que vous avez donné est ParallelPeriod [Date].[Sun Weeks] ... est-ce un niveau dans votre cube? Cette fonction nécessite un niveau comme premier argument.

Si tout ce que vous voulez atteindre est de revenir 7 jours puis lag est plus facile:

MEMBER [Measures].[Prior Week] AS 
    (
     [Date].[Sun Weeks].CURRENTMEMBER.lag(7).item(0) 
    ,[Measures].[Value Count] 
    ) 

Ou vous pourriez retard de 7 jours, puis sauter un niveau à la semaine:

MEMBER [Measures].[Prior Week] AS 
    (
     [Date].[Sun Weeks].CURRENTMEMBER.lag(7).parent 
    ,[Measures].[Value Count] 
    )