2017-09-06 3 views
0

Vous recherchez de l'aide sur celui-ci. Je travaille sur un rapport dans le Générateur de rapports qui utilise les données du cube Analysis Services et il me pose beaucoup de problèmes en ce qui concerne les données de date/heure. J'essaie de créer un rapport dynamique qui permettra au rapport de se mettre à jour en fonction du moment où il sera visionné. Je fais cela en réglant les paramètres (@FromDateDate et @ToDateDate). Malheureusement, MDX semble détester les dates qui n'ont aucun sens pour moi.Date dynamique à l'aide d'Analysis Services dans Générateur de rapport

Mon but est d'obtenir des données sur une période de trois mois avec le @ToDateDate étant Today() et le @FromDateDate étant de 3 mois dans le passé que je suis en mesure de réaliser avec cette fonction (=DateAdd(DateInterval.Day,-90,Today())). Cependant, ceux-ci ne vont pas bien avec MDX.

Ma requête ressemble à ceci:

SELECT 
    NON EMPTY 
    {[Measures].[Work Item Count]} ON COLUMNS 
,NON EMPTY 
    { 
     [Date].[Year - Month - Date Hierarchy].[Date].ALLMEMBERS* 
     [Work Item].[System_State].[System_State].ALLMEMBERS* 
     [Work Item].[Microsoft_VSTS_Common_Severity].[Microsoft_VSTS_Common_Severity].ALLMEMBERS 
    } 
    DIMENSION PROPERTIES 
    MEMBER_CAPTION 
    ,MEMBER_UNIQUE_NAME 
    ON ROWS 
FROM 
(
    SELECT 
     StrToMember 
     (@FromDateDate 
     ,CONSTRAINED 
    ) 
    : 
     StrToMember 
     (@ToDateDate 
     ,CONSTRAINED 
    ) ON COLUMNS 
    FROM 
    (
    SELECT 
     {[Work Item].[System_WorkItemType].&[Bug]} ON COLUMNS 
    FROM 
    (
     SELECT 
     { 
      [Team Project].[Team Project Hierarchy].&[{6F43CBFD-2E98-4CA7-B428-0B732603517A}] 
     } ON COLUMNS 
     FROM [Work Item] 
    ) 
) 
) 
WHERE 
    (
    [Team Project].[Team Project Hierarchy].&[{6F43CBFD-2E98-4CA7-B428-0B732603517A}] 
    ,[Work Item].[System_WorkItemType].&[Bug] 
) 
CELL PROPERTIES 
    VALUE 
,BACK_COLOR 
,FORE_COLOR 
,FORMATTED_VALUE 
,FORMAT_STRING 
,FONT_NAME 
,FONT_SIZE 
,FONT_FLAGS; 

j'ai pu comprendre comment injecter essentiellement il format approprié en réglant mes valeurs des paramètres dans les Propriétés du dataset à cette -

="[Date].[Date].&["+format(Parameters!FromDateDate.Value,"yyyy-MM-ddThh:mm:ss")+"]" 

Mon deux paramètres ont des valeurs par défaut de:

=DateAdd(DateInterval.Day,-90,Today()) and =Today() 

Lorsque j'exécute mon rapport, je reçois l'erreur suivante:

The restrictions imposed by the CONSTRAINED flag in the STRTOMEMBER function were violated.

Maintenant, si je retire CONSTRAINED de la fonction STRTOMEMBER je reçois une autre erreur. J'ai également essayé de supprimer toute la fonction STRTOMEMBER et d'utiliser simplement les paramètres que je peux utiliser dans Management Studio mais pas dans le Générateur de rapports. S'il vous plaît aidez! J'ai essayé tant de façons différentes et toujours pas de succès. Faites-moi savoir quelles informations supplémentaires sont nécessaires.

Une autre chose -

Si je supprime le T dans le format de la date de la valeur du paramètre dans le dataset propriété à ressembler à ceci:

="[Date].[Year - Month - Date Hierarchy].[Date].&["+format(Parameters!FromDateYearMonthDateHierarchy.Value,"yyyy-MM-dd hh:mm:ss")+"]" 

Je reçois l'erreur ci-dessous:

The '2017-06-08 12:00:00' string cannot be converted to the date type.

+0

également pour des informations supplémentaires c'est la recherche que je l'ai fait pour me faire autant que je suis devenu: http://blog.datainspirations.com/2010/10/07/using-dynamic-mdx-in-reporting- services partiel 1/ – dougie88

+0

Croisons les doigts je pense avoir résolu celui-ci !!! Mon format "injection" pour le type de date était mauvais - il devait ressembler à ceci: Format et "T00: 00: 00]" I (CDate (Paramètres FromDateYearMonthDateHierarchy.Value), "aaaa-MM-dd"!) Je continuerai à tester et mettre à jour si le correctif est valide. – dougie88

Répondre

1

Donc voici la solution si quelqu'un est intéressé. Je l'ai vu une tonne de messages du forum en ligne sans que personne ayant une réponse concrète que je puisse voir c'est un problème commun - la solution de contournement à ce lien est valide et fonctionne:

Using Dynamic MDX in Reporting Services

Ma question était le format de ma date "injectée". Lors de l'exécution de la requête générée par mes paramètres @ToDateDate et @FromDateDate ...

(note: after changes I made my parameters are now @FromDateYearMonthDateHierarchy and '@ToDateYearMonthDateHierarcy` which you will notice in my Parameter Value function)

Mes valeurs des paramètres est apparu dans le format suivant:

[Date].[Year - Month - Date Hierarchy].[Date].&[2010-12-31T00:00:00] 

Afin de résoudre le problème pour moi ma "déclaration d'injection" devait ressembler à ceci:

"[Date].[Year - Month - Date Hierarchy].[Date].&[" & Format(CDate(Parameters!FromDateYearMonthDateHierarchy.Value),"yyyy-MM-dd") & "T00:00:00]" 

Avec la mise en forme de date réelle de "yyyy-MM-dd") & "T00:00:00]" alors à la fin des heures, minutes et secondes était ce qui me donne le mal de tête. L'injection fonctionne parfaitement, mais il suffit de faire attention à la mise en forme de la date et l'heure. J'espère sincèrement que cela aidera quelqu'un!

+0

merci de prendre le temps d'ajouter votre solution – whytheq