Problema relativo alle misure semi-additive: somma le istantanee per ogni mese, ma non tra i mesi
Domanda
Esperto di SQL ma nuovo di MDX, ho problemi a risolvere il problema:
Ho una tabella dei fatti che contiene snapshot dei saldi dei conti mensili. Devo arrotolare i saldi come misura semi-additiva - la somma semplice non funziona, ovviamente, per i saldi. Tuttavia, DEVO sommare tutti i saldi entro OGNI mese, separatamente, sommando i saldi per tutti i conti, quindi il "lastnonempty" nozione non funziona neanche per me. Esempio, se i fatti sembrano così:
Date AccountNo Balance
2009-01-31 1111 $100
2009-01-31 2222 $100
2009-01-31 4444 $100
2009-01-31 5555 $100
2009-02-28 1111 $100
2009-02-28 2222 $200
2009-02-28 3333 $500
2009-02-28 5555 $50
etc.
E ho una dimensione account che raggruppa gli account in una categoria principale / categoria secondaria / gerarchia di account, ho bisogno di un output come questo che somma i saldi di ogni mese per tutti gli account:
Month Total
January 09 $400
February 09 $850
E suddiviso per tipo di account:
Month Total
January 09 $400
Type 1 $200
1111 $100
2222 $100
Type 2 $200
February 09 $850
Type 1 $300
Type 2 $550
MA, i saldi NON devono essere sommati tra mesi, trimestri o anni, perché non ha senso e verrebbero conteggiati due volte. Qualsiasi intervallo di tempo più lungo dovrebbe mostrare la chiusura del periodo:
Quarter WRONG Correct
Q1 $1250 $850 // should be the sum of balances for the *last* month in Q1
Type 1 $500 $300
Type 2 $759 $550
Se utilizzo lo stock "lastnonempty" aggregazione, mi sembra di ottenere solo l'ultima riga letterale dell'account per un mese, non la somma dei saldi dell'account per l'ultimo mese. È come se il totale del mese mostrasse solo il saldo prelevato da un conto casuale presente in quel mese e non il totale. (Sono sicuro che non è davvero casuale, probabilmente ne sta scegliendo uno in base all'ordine di archiviazione o qualcosa del genere)
Sono sicuro di fare qualcosa di semplice, sbagliato ...
Soluzione
Penso di aver risolto questo: i miei dati di origine con i saldi erano molto scarsi - c'era una riga solo per i saldi diversi da zero e NESSUNA riga per i conti quando il saldo è zero. Ciò ha reso tutto stravagante (immagina come inventario, dove hai conteggi di parti e quei conteggi sono spesso zero, ma quando sono 0 la riga manca solo dalla tabella dei fatti)
Sono stato in grado di creare una vista sull'origine dati che "aggiungerebbe di nuovo in" tutte le righe aggiuntive, con saldo zero, e successivamente la funzione ClosingPeriod () ha iniziato a funzionare come previsto.