2013-01-10 24 views
7

Ho bisogno di una query MDX per Mondrian filtrata per data, in cui una o entrambe le varie date potrebbero non esistere. Sto utilizzando la query di seguito che funziona fintanto che esistono entrambe le dimensioni 2013-01-01 e 2013-01-08. Se una delle due date non esiste, non restituisce alcun risultato, anche se esistono le dimensioni intermedie. Come faccio a far funzionare questa query anche nel caso di una dimensione di data di consegna mancante?Interrogazione dell'intervallo di date MDX con data di rimborso mancante

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

È il vostro degenerato quota o una tabella separata? Se si tratta di una tabella separata poi di solito sarebbe essere pre-popolato, quindi, puoi assicurarti che tutte le dimensioni esistano .. (Anche se non ci sono fatti associati). C'è una trasformazione di KI PDI nella cartella degli esempi per generare una dimensione di data. – Codek

risposta

1

MDX è costruito con l'assunto che ogni membro a cui si fa riferimento esiste; è meglio quindi assicurarsi che tutti i membri della dimensione data concepibile do esistano disponendo di una tabella separata con questi valori precalcolati.

Potresti diventare complicato e implementare quella tabella come una stored procedure, ma le dimensioni della data non occupano molto spazio nel grande schema delle cose, quindi non lo faresti quasi mai.

Non conosco altri modi per risolvere il problema.

0

cercare di eliminare il NON EMPTY

0

Anche io non ho ancora capire il motivo di attuare questa logica, è possibile nascondere questo con l'aggiunta. Se aggiungi membro personalizzato in Mondrian, provalo.

/* 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' ; 

Inoltre è possibile implementare nella utilizzando IIF (IsError o IIF (esiste funzioni MDX.