2017-07-28 4 views
0

Je souhaite créer une requête dynamique qui se met à jour chaque jour.Calcul de la valeur de date dans la requête MDX

Donc, pour filtrer le rapport d'aujourd'hui j'utilise

[Report Date].[Report Date].&[4226] 

Le 4226 vient:

=DATEVALUE("28-07-2017")-38718 or =TODAY()-38718 (convert to number) 

38718 est juste un nombre arbitraire pour obtenir la date correcte du cube.

EDIT:

Voici ma requête en cours:

SELECT NON EMPTY { [Measures].[Price FC] } ON COLUMNS 
FROM (SELECT (-{ [Agency].[Nationality - Consortium - Agency].[Nationality].&[111], 
        [Agency].[Nationality - Consortium - Agency].[Nationality].&[116], 
        [Agency].[Nationality - Consortium - Agency].[Nationality].&[242], 
        [Agency].[Nationality - Consortium - Agency].[Nationality].&[134] }) ON COLUMNS 
FROM (SELECT ({ StrToMember("[Report Date].[Report Date].&[" + Str(DateValue(Format(Now(), "dd-MM-yyyy")) - 38718) + "]") }) ON COLUMNS 
FROM (SELECT ({ [Market].[Market].[Market].&[103] }) ON COLUMNS 
FROM (SELECT ({ [Travel Type].[Travel Type].&[101], 
        [Travel Type].[Travel Type].&[102], 
        [Travel Type].[Travel Type].&[103] }) ON COLUMNS 
FROM (SELECT ({ [Departure Date].[Year].&[2017] }) ON COLUMNS 
FROM [Booking]))))) 
WHERE ([Departure Date].[Year].&[2017], 
     [Travel Type].[Travel Type].CurrentMember, 
     [Market].[Market].[Market].&[103], 
     StrToMember("[Report Date].[Report Date].&[" + Str(DateValue(Format(Now(), "dd-MM-yyyy")) - 38718) + "]")) 

Mais il dit qu'il n'y a pas de colonne détectée dans la déclaration. J'ai aussi essayé différents formats de date, des idées?

+0

Pourriez-vous poster un message d'erreur exact? Pouvez-vous exécuter ce MDX dans SSMS? –

Répondre

1

Suivant les conseils de cette discussion:

VBA Date as integer

J'utilisé CDbl au lieu de DATEVAL, ce qui m'a donné le résultat souhaité!

StrToMember("[Report Date].[Report Date].&[" + Str(Int(CDbl(Now()) - 38718)) + "]")