2013-01-10 7 views
7

Ich brauche eine MDX-Abfrage für Mondrian gefiltert nach Datum, wobei eines oder beide der Grenzdaten möglicherweise nicht existieren. Ich verwende die unten stehende Abfrage, solange die Dimensionen 2013-01-01 und 2013-01-08 vorhanden sind. Wenn eines der beiden Datumsangaben nicht existiert, gibt es keine Ergebnisse zurück, obwohl die Dimensionen dazwischen existieren. Wie würde ich diese Abfrage auch im Fall einer fehlenden Boundry-Datumsdimension ausführen?MDX-Datumsbereichsabfrage mit einem fehlenden Grenzdatum

SELECT 
NON EMPTY {Hierarchize({[Measures].[Number of Something]})} ON COLUMNS, 
NON EMPTY {[Date].[2013-01-01]:[Date].[2013-01-08]} ON ROWS 
FROM [Users] 
+0

Ist Ihre Dimension degeneriert oder eine separate Tabelle? Wenn es eine separate Tabelle ist dann in der Regel würde es vorgefüllt werden, damit Sie können sicherstellen, dass alle Dimensionen vorhanden sind. (Auch wenn keine Fakten vorhanden sind.) Es gibt eine PDI-Kettle-Umwandlung im Ordner samples zum Generieren einer Datumsdimension. – Codek

Antwort

1

MDX mit der Annahme aufgebaut, dass jedes Element, das Sie beziehen sich auf existiert; Am besten stellen Sie dann sicher, dass alle denkbaren Termindimensionselemente do vorhanden sind, indem Sie eine separate Tabelle mit diesen Werten vorberechnet haben.

Sie könnten es schwierig finden und implementieren Sie diese Tabelle als eine gespeicherte Prozedur, aber Datumsdimensionen nehmen nicht viel Platz in der Gesamtstruktur der Dinge, so dass Sie kaum jemals dies tun würde.

Ich kenne keinen anderen Weg, um Ihr Problem zu lösen.

0

versuchen, das NON

0

Auch der Grund, warum ich verstehen, von der Umsetzung dieser Logik noch nicht zu beseitigen, können Sie dies, indem verstecken. Wenn Sie ein benutzerdefiniertes Mitglied in Mondrian hinzufügen, versuchen Sie es.

/* Exclude Missing Member */ 
Create Set CurrentCube.[MissingMemberSet] As 
iif(IsError(StrToMember("[Dimension].[Hierarchy].&[MEMBER]")), 
{}, {[Dimension].[Hierarchy].&[MEMBER]}); 

Create Member CurrentCube.Measures.[Calculation on Missing Member] 
AS 
IIF ([MissingMemberSet].Count > 0, 
([Dimension].[Hierarchy].&[MEMBER],Measures.[X Measure]), 
0 
) 
, 
FORMAT_STRING = "Currency", 
LANGUAGE = 1033, 
NON_EMPTY_BEHAVIOR = { [X Measure] }, 
VISIBLE = 1 , DISPLAY_FOLDER = 'Display Folder' ; 

auch Sie sich mit der IIF (IsError oder IIF implementieren können (Exists MDX-Funktionen.