2016-04-29 12 views
0

Kann mir bitte jemand sagen, wie man Datum in MDX-Abfragen formatiert? Wir verwenden SSRS nicht, um einen Bericht zu erstellen, wir haben unser eigenes angepasstes Berichtstool, das auf SSAS basiert. Der Datenfilter sendet das Datum im JJJJ/MM/TT-Format. Ab sofort haben wir keine Datumsdimension. Mein Datumsmitglied sieht wie folgt aus:MDX Datumsformatierung

[CNB_DimSampleInfo].[COAReleasedON].&[2013-01-02T03:20:00]. 

Wie kann ich Datum in STRTOmember formatieren? Ich habe es versucht. Meine Frage ist, wie wird der Wert, der vom Benutzer kommt, meinem Mitgliedsformat wie unten entsprechen. Ich weiß, SSRS macht es leicht, aber wir verwenden SSRS nicht. Unten ist mein Code

meinen Code

SELECT 
    [Measures].[Result] ON COLUMNS 
,NON EMPTY 
    { 
     [CNB_DimProduct].[ProductUcode].[ProductUcode].ALLMEMBERS* 
     [CNB_DimProduct].[ProductDesc].[ProductDesc].ALLMEMBERS* 
     [CNB_DimTest].[TestUcode].[TestUcode].ALLMEMBERS* 
     [CNB_DimTest].[TestName].[TestName].ALLMEMBERS* 
     [CNB_DimSampleInfo].[LotNo].[LotNo].ALLMEMBERS* 
     [CNB_DimSampleInfo].[BatchNo].[BatchNo].ALLMEMBERS* 
     [CNB_DimSampleInfo].[COAReleasedBy].[COAReleasedBy].ALLMEMBERS* 
     [CNB_DimSampleInfo].[COAReleasedON].[COAReleasedON].ALLMEMBERS* 
     [CNB_DimSampleInfo].[SampleReferenceNo].[SampleReferenceNo].ALLMEMBERS* 
     [CNB_DimSampleInfo].[AnalysedBy].[AnalysedBy].ALLMEMBERS* 
     [CNB_DimSampleInfo].[AnalysedOn].[AnalysedOn].ALLMEMBERS 
    } ON ROWS 
FROM 
(
    SELECT 
    StrToMember 
    (
      "[CNB_DimSampleInfo].[COAReleasedON].[" + Format("2013-01-02","yyyy MM") 
      + "]:STRTOMember([CNB_DimSampleInfo].[COAReleasedON].[" 
     + 
      Format 
      ("2013-01-02" 
      ,"yyyy MM" 
     ) 
     + "]" 
    ) ON COLUMNS 
    FROM Cube001 
); 

Antwort

0

Es gibt auch StrToSet, die besser in der Umstand ist, wie Sie den : Operator verwenden, die einen Satz zurück:

... 
... 
FROM 
(
    SELECT 
    StrToSet 
    (
      "[CNB_DimSampleInfo].[COAReleasedON].[" + Format("2013-01-02","yyyy MM") 
      + "]:[CNB_DimSampleInfo].[COAReleasedON].[" 
     + 
      Format 
      ("2013-01-02" 
      ,"yyyy MM" 
     ) 
     + "]" 
    ,CONSTRAINED 
    ) ON COLUMNS 
    FROM Cube001 
); 

führt folgende Geben Sie auf jeden Fall das Datum zurück, das genauso formatiert ist wie Ihre Schlüsselwerte?

Format("2013-01-02","yyyy MM") 

Sie Ihre Schlüsselwerte für Termine wie folgt aussehen? ...

[CNB_DimSampleInfo].[COAReleasedON].[2013 01] 
0

Ihr Datum Mitglied

[CNB_DimSampleInfo].[COAReleasedON].&[2013-01-02T03:20:00] 

sieht aus wie ein schlechter Kandidat für einen Parameter Benutzerdaten, wie es ist präzise bis auf die Minute (vielleicht die Sekunde). Wenn der Benutzer die Zeit nicht genau übereinstimmt, erhalten sie nichts. Aber vielleicht erzwingen Sie exakte Übereinstimmungen, indem Sie eine LimitToList-Auswahlliste in der Benutzeroberfläche verwenden.

diesem Mitglied Namen zu erhalten, können Sie die Eingabezeichenfolge wie folgt formatiert:

Format ([Ihr Input Parameter], 'yyyy-MM-ddThh: mm: ss')

0

ich versucht habe, Verwendung von Filter wie unten

SELECT 
[Measures].[Result] ON COLUMNS 
,NON EMPTY 
{ 
    filter([CNB_DimSampleInfo].[COAReleasedON].members,instr([CNB_DimSampleInfo].[COAReleasedON].currentmember.member_caption,"2013-01-02")>0 or instr([CNB_DimSampleInfo].[COAReleasedON].currentmember.member_caption, "2013-04-01")>0) 

    *[CNB_DimProduct].[ProductUcode].[ProductUcode].ALLMEMBERS* 
    [CNB_DimProduct].[ProductDesc].[ProductDesc].ALLMEMBERS* 
    [CNB_DimTest].[TestUcode].[TestUcode].ALLMEMBERS* 
    [CNB_DimTest].[TestName].[TestName].ALLMEMBERS 
} ON ROWS 

FROM Cube002