MDX: Totale Anno Precedente


A volte viene richiesto di calcolare una misura che mostri sempre il valore totale dell’anno precendete rispetto all’arco temporale indicato ad esempio nella pivot.

([Measures].[Nome Misura], Ancestor(
ParallelPeriod(
[Dim Tempo].[Gerarchia Tempo].[Anno], 1,[Dim Tempo].[Gerarchia Tempo].CurrentMember
), [Dim Tempo ].[Gerarchia Tempo].[Anno]))

Usando la gerarchia, a qualsiasi livello ci poniamo, la misura rappresenta il totale dell’anno precedente.

Annunci

, , , ,

  1. #1 di MAURO MARCHI il febbraio 19, 2012 - 8:08 pm

    Ciao complimenti per questo sito.
    Ho letto i vostri posts e visto che anche io all’interno dell’azienda in cui lavoro sto iniziando ad usare SSAS 2008 R2 e quindi MDX , trovo queso sito molto utile.

    In merito specificatamente a questo post, ho una domanda che forse mi puo’ aiutare a risolvere un problema reale che ho in questo momento.

    Sto usando una tabella pivot di Excel 2010 collegata ad un cubo denominato VENDITE.

    Ho una misura [Measures].[Importo Venduto] che contiene l’importo venduto
    Ho una domensione [Calendario] di tipo TIME che e’ fatta cosi:

    Nome dimensione [Calendario]
    Gerarchia [Gerarchia AAAAMMGG]
    AnnoVendita — Primo livello della gerachia che contiene l’anno
    MeseVendita —- Secondo livello della gerarchia che contiene il mese
    Giorno Vendita — Terzo livello della gerarchia che contiene il giorno

    Nella tabella Pivot per farla semplice, ho selezionato ANNO=2012 MESE=2 GIORNO=18
    Ogni giorno questo giorno verra’ cambiato dall’utente.
    Fin qui tutto okay , ed ottenere importo venduto e’ semplice.

    IL PROBLEMA per me E’ CREARE UNA MISURA CALCOLATA che calcoli ANNO=2011 (ovvero ANNO PRECEDENTE RISPETTO A QUELLO SELEZIONATO) MESE=2 (Quindi il mese lo stesso di quello selezionato) e CHE NON CONSIDERI IL GIORNO selezionato.
    Per semplicita’ vorrei calcolare l’importo del venduto dell’anno precedente mese attuale COMPLETO DI TUTTI I GIORNI, E NON CHE MI CALCOLI come fa la funzione PARALLELPERIOD esattamente lo stesso periodo dell’anno precedente…

    Vorrei appunto ANNO=2011 MESE=2 GIORNO=28 (ovvero tutti i gg) …

    Non ci sono riuscito , sara’ semplice, ma evidentemente la mia conoscenza di MDX NON e’ ottima, devo studiare ancora molto.

    Grazie se mi potete aiutare.
    Complimenti ancora per il sito.

    Mauro.

  2. #2 di blogchino il febbraio 20, 2012 - 11:36 am

    Ciao,
    grazie per i complimenti.

    Dovrebbe bastare fare cosi:

    ([Measures].[Nome Misura], Ancestor(
    ParallelPeriod(
    [Dim Tempo].[Gerarchia Tempo].[Anno], 1,[Dim Tempo].[Gerarchia Tempo].CurrentMember
    ), [Dim Tempo ].[Gerarchia Tempo].[Mese]))

    In pratica è come quella del totale anno precedente solo che invece che dirgli tutto l’anno, metti il membro Mese e quindi lui si ferma al mese del current member che è quello presente nel filtro.

    Io ho provato e mi funziona.

    Marco

    • #3 di MAURO MARCHI il febbraio 20, 2012 - 3:47 pm

      Ciao grazie mille per la risposta.

      Ho provato la tua espressione MDX ma correttamente funziona solo se seleziono l’ANNO ed il MESE, ma non funziona se seleziono nella dimensione [Dim Tempo] ANCHE il giorno che purtroppo mi chiedono…
      Il fattaccio infatti sta proprio li.
      Nello stesso foglio Excel richiedono il totale venduto per l’anno=2012 mese=2 giorno=oggi – 1
      ed a fianco un altro calcolo (che e’ quello di cui avevo inviato mail) che deve calcolare il venduto per ANNO=2011 Mese=2 completamente dal giorno 1 al giorno 31.

      Come posso fare ????
      Non vorrei abusare della tua disponibilita’…ma a volte cosi’ si imparano tante cose utili e nuove.

      Avevo pensato anche di calcolare questa misura usando un SET e sommando i valori di tale set,,,anche se ho solo letto qualcosa in merito…
      Dicevo un set perche’ cosi’ potevo ottenere delle tuple per quell’anno e mese ESCLUDENDO questo maledetto giorno….che sembra che faccia saltare questo tipo di espressioni…

      Ricordo che la mia dimensione Tempo ha una gerarchia che contiene 3 livelli.
      [AnnoVendita]
      [MeseVendita]
      [GiornoVendita]

      Nel BROWSER dell’editor CUBE appare in corrispondenza della misura calcolata l’errore:

      Funzione MDX CurrentMember non riuscita perche’ la coordinata per l’attributo GiornoVendita contiene un set.

      Come posso fare ? Cosa mi consigli ???

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: