Come spevice e filtrare sulla stessa dimensione in MDX
Domanda
Voglio creare un barChart con una barra per ogni mese e qualche misura.
Ma voglio anche filtrare su un intervallo di giorno che potrebbe non sovrapporsi completamente un po 'del mese.
Quando ciò accade vorrei che il conteggio aggregato per quei mesi sia solo aggregata nei giorni che rientrano nel mio intervallo di date non ottenere l'aggregato per tutto il mese.
è possibile con MDX e se è come dovrebbe essere la richiesta?
Soluzione
Creare una seconda dimensione temporale, utilizzando una dimensione virtuale della dimensione originale.Utilizzare una dimensione nel dove e nell'altro nella selezione.
Questo accade spesso comunque se alcune persone vogliono "tempo lavorativo" di alloggi e periodi, e altri preferiscono mesi.O se hai un anno finanziario che funziona ad aprile-aprile.
Altri suggerimenti
Puoi usare la sottoselezione. Puoi trovare maggiori informazioni su questo Pagina e questo Pagina :
.Quando un membro è specificato nella clausola AXIS quindi quel membro con I suoi ascendenti e discendenti sono inclusi nello spazio del sub Cube la sottolenco; Tutti i membri del fratello non menzionati, nell'asse o La clausola di affettatrice e i loro discendenti vengono filtrati dal sottospazio. In questo modo, lo spazio della selezione esterno è stato limitato al Membri esistenti nella clausola AXIS o della clausola di affettatrice, con il loro Ascendenti e discendenti come menzionato prima.
Ecco un esempio:
.SELECT { [Customer].[Customer Geography].[Country].&[Australia] , [Customer].[Customer Geography].[Country].&[United States] } ON 1 , {[Measures].[Internet Sales Amount], [Measures].[Reseller Sales Amount]} ON 0 FROM ( SELECT {[Customer].[Customer Geography].[Country].&[Australia] , [Customer].[State-Province].&[WA]&[US]} ON 0 FROM [Adventure Works] )
Il risultato conterrà una riga per
Autralia
e un altro per ilUnited States
. Con la sottoselezione, ho limitato il valore delUnited Stated
allo statoWashington
.
Un modo in cui ho trovato farlo con Mondrian è come segue
WITH MEMBER [Measures].[Units Shipped2] AS
SUM
(
{
exists([Store].[Store Country].currentmember.children,{[Store].[USA].[WA],[Store].[USA].[OR]})
},[Measures].[Units Shipped]
)
MEMBER [Measures].[Warehouse Sales2] AS
SUM
(
{
exists([Store].[Store Country].currentmember.children,{[Store].[USA].[WA],[Store].[USA].[OR]})
},[Measures].[Warehouse Sales]
)
SELECT
{[Measures].[Units Shipped2],[Measures].[Warehouse Sales2]} ON 0,
NON EMPTY [Store].[Store Country].Members on 1
FROM [Warehouse]
.
Non sono sicuro se il filtraggio verrà eseguito in SQL come sotto e dare buone prestazioni o eseguire localmente
select Country, sum(unit_shipped)
where state in ('WA','OR' )
group by Country
.