2016-07-28 20 views
2

Ich habe eine Datumsdimension, die so aussieht [date].[date].[day].[yyyy-MM-dd] und ich würde gerne das Mitglied, das gestern vertreten, d. H. [date].[date].[day].[2016-07-27]. Wie kann ich das erreichen?
1. STRTOMEMBER("[date].[date].[day].["+ FORMAT(NOW()-1,"yyyy-MM-dd") +"]")
2. STRTOMEMBER("[date].[date].[day].["+ VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd") +"]")IcCube - Holen Sie sich das gestrige Mitglied in MDX Query

Die erste Lösung wirft einen Fehler, der besagt 'unbekannte Funktion FORMAT' und den Fehler:

In einigen Threads über MDX, aber nicht IcCube spezifisch, wird es wie folgt geschrieben in der zweiten Lösung liest "VBAMDX.NOW()" erwartet einen einzelnen Parameter "Index". Das gleiche gilt für VBAMDX.FORMAT, wenn ich VBAMDX.NOW nur ​​durch NOW ersetze. Aber alle Seiten erklären VBAMDX haben zwei Parameter für FORMAT und keine für NOW ...

+0

überprüfen LookupByKey Funktion, die eine bessere Alternative ist – ic3

Antwort

3

Ich denke, das liegt daran, dass Excel-Format nicht unterstützt wird (Fehlerberichterstattung ist in der neuesten Version von icCube verbessert). Stattdessen würde ich die Funktionen verwenden, wie sie in dieser page erwähnt:

StrToMember("[Time].[Calendar].[Day].&["+ DateToString(NOW()-1,"yyyy-MM-dd") +"]") 

Aber in icCube haben Sie LookupByKey Funktion, die eine robustere Lösung, wenn Sie Ihren Schlüssel ein Datum ist:

LookupByKey([Time].[Calendar].[Day], Now()) 

oder wenn Sie ein Datum benötigen:

LookupByKey([Time].[Calendar].[Day], Today()) 

Sie können einfach mit func Daten navigieren (doc).

Hoffe, dass hilft.

0

Ist die -1 verursacht den Fehler NOW?

Also vielleicht das Folgende, die die -1 gelöscht und fügt eine einzige LAG, würde funktionieren?

STRTOMEMBER("[date].[date].[day].["+ VBAMDX.FORMAT(VBAMDX.NOW(),"yyyy-MM-dd") +"]").LAG(1) 

Ich habe gerade bemerkt, dass Sie fehlen, im Code, ein kaufmännisches vor der eckigen Klammer des letzten Abschnitts des Namens Mitglied, so versuchen Sie bitte eine der folgenden Möglichkeiten:

STRTOMEMBER("[date].[date].[day].&["+ FORMAT(NOW()-1,"yyyy-MM-dd") +"]") 

oder

STRTOMEMBER("[date].[date].[day].&["+ VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd") +"]") 

Wenn Sie versuchen diese 3 Maßnahmen, scheitern beide?

WITH 
    MEMBER [Measures].[Today1] AS 
    VBAMDX.NOW() 
    MEMBER [Measures].[Today2] AS 
    VBAMDX.NOW()-1 
    MEMBER [Measures].[Today3] AS 
    VBAMDX.FORMAT(VBAMDX.NOW()-1,"yyyy-MM-dd") 
... 
+0

Immer noch der gleiche Fehler: "Syntaxfehler: der implizite Item() Funktionsaufruf (angewandt auf: Syntaxfehler: der implizite Item() Funktionsaufruf (angewandt auf: VBAMDX.NOW) erwartet einen einzelnen (Index-) Parameter: keinen Parameter erhalten.) erwartet einen einzelnen (Index-) Parameter: keinen Parameter erhalten. " - Und zusätzlich, wenn das heutige Mitglied nicht existiert, hilft Lag() nicht ... – UlrichWuenstel

+0

@UlrichWuenstel Ich denke, dass Sie ein '&' Symbol aus Ihrem Code vermissen können - siehe Zusatz zu meiner Antwort – whytheq

+0

Leider dies hat nichts mit dem Problem zu tun. Der Fehler besagt, dass die Funktion VBAMDX.JETZT() braucht einen Parameter, aber ich würde nicht wissen, was. Es scheint ein inhärentes Problem von IcCube zu sein. – UlrichWuenstel