Vendite cumulate anno corrente e precedente L’argomento è risolto

Il software per la BI di Microsoft, leader nel mercato
Rispondi
Avatar utente

alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Vendite cumulate anno corrente e precedente

Messaggio da alex77 »

Buongiorno a tutti,
vorrei calcolare i volumi di vendita cumulati dell'anno corrente e di quello precedente (alla stessa data) e mostrarli in un grafico. Ho usato queste formule

DAX.Volume Vendite Cumulato Anno Corrente = CALCULATE('Misure DAX'[DAX.Volume Vendite],DATESYTD(dimCalendario[Data]))

DAX.Volume Vendite Cumulato Anno Precedente = CALCULATE([DAX.Volume Vendite Cumulato Anno Corrente],dateadd(dimCalendario[Data],-1,YEAR))

Tutto bene, ma io ho i dati dal 2002 ad oggi. Nel grafico vorrei vedere, se nessun filtro presente, 2021 vs 2020, se invece filtro qualche anno precedente, tipo il 2018, 2018 vs 2017 e così via
Il grafico invece mi riporta (direi giustamente) tutti gli anni, se non filtro nulla.
Mi sono arrovellato con un po' di funzioni, ma non ne esco.

Grazie per un eventuale aiuto

Alessandro


Avatar utente

Andrea90
Messaggi: 2240 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 672 volte
Contatta:

Vendite cumulate anno corrente e precedente

Messaggio da Andrea90 »

Ciao alex77,

Ti devi costruire manualmente la formula in modo tale che lui prenda sempre l’ultimo anno (se non filtri nulla sarà il 2021, se invece hai un filtro attivo ti prenderà quello selezionato).
Poi fai in modo di calcolarti l’anno precedente a quello selezionato, e da lì ti filtri le date della calendar table del solo anno che ti interessa.

Fatto questo le passi come argomento filtro dentro al Calculate.

A presto,
Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Avatar utente

Autore del topic
alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Vendite cumulate anno corrente e precedente

Messaggio da alex77 »

Grazie mille Andrea90 , come sempre!
Devo dire che all'inizio mi sono detto "ma io volevo la formula" :D (non proprio "pappa pronta", ma magari qualche indicazione sulle funzioni da usare) , poi mi sono letto con calma i tuoi consigli, e dopo qualche errore, (specialmente su quella per l'anno precedente, ho fatto dei pastrocchi inenarrabili e poi era una banalità) sono arrivato al dunque. Quindi meglio così, che un po' di sforzo fa imparare di più! Perché, tra l'altro, forse avevo saltato un passaggio abbastanza rilevante nella domanda: nel grafico voglio mostrare i mesi e questo mi creava qualche problemino.
Ho risolto così:

Codice: Seleziona tutto

DAX.Volume Vendite Cumulato Anno Corrente = 

VAR vAnnoCorrente = Year(maxx(ALLSelected(dimCalendario),dimCalendario[Data]))

VAR vResult = CALCULATE('Misure DAX'[DAX.Volume Vendite],DATESYTD(dimCalendario[Data]),dimCalendario[Anno]=vAnnoCorrente)

RETURN
vResult

Codice: Seleziona tutto

DAX.Volume Vendite Cumulato Anno Precedente = 

VAR vAnnoPrecedente = Year(maxx(ALLSelected(dimCalendario),dimCalendario[Data]))-1

VAR vResult =CALCULATE('Misure DAX'[DAX.Volume Vendite Cumulato Anno Corrente],dateadd(dimCalendario[Data],-1,YEAR),dimCalendario[Anno]=vAnnoPrecedente)

RETURN vResult

Alexia
Messaggi: 33 | Topic creati
Iscritto il: mer 29 lug 2020, 9:59
Ringraziato: 2 volte

Vendite cumulate anno corrente e precedente

Messaggio da Alexia »

Ciao alex77

in merito al tuo problema io ho risolto in questo modo:

ho aggiunto la seguente colonna Confronto_Spend nella Fact_Table, che prende i soli valori di spend per i mesi del 2021 di cui ho i dati disponibili (gen-feb-mar) con i dati degli stessi mesi per gli anni precedenti (2020,2019,....)

Codice: Seleziona tutto

Confronto_Spend = 
var maxdate=CALCULATE(MAX(Fact_Table[Data]),ALL(Fact_Table))
var _maxmonth= MONTH(maxdate)
Return
IF(MONTH(Fact_Table[Data])<=_maxmonth,Fact_Table[Spend],BLANK())
​
In un grafico a colonne raggruppate ho messo:

Asse: nome mese
Legenda: Anno
Valori: Confronto_Spend
Avatar utente

Andrea90
Messaggi: 2240 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 672 volte
Contatta:

Vendite cumulate anno corrente e precedente

Messaggio da Andrea90 »

Ciao ad entrambi :wave:,

Intanto volevo ringraziare Alexia per essere aver condiviso la sua soluzione (ci teniamo a creare con il tempo una community attiva) :clap:

Poi riguardo la richiesta volevo provare ad allegare questo file (a me piace avere una demo sotto da testare), che ho provato a realizzare sulla base di ciò che ho capito dal primo messaggio di alex77.

Se la soluzione proposta non fosse in linea con il problema originale fate sapere :thumbup:

#TotAmt

Codice: Seleziona tutto

=
IF (
    NOT HASONEVALUE ( 'Calendar'[Year] );
    CALCULATE ( SUM ( 'Fact'[Amount] ); 'Calendar'[Year] = 2021 );
    SUM ( 'Fact'[Amount] )
)
#Amt YTD

Codice: Seleziona tutto

=IF (
    ISBLANK ( [#TotAmt] );
    BLANK ();
    CALCULATE ( [#TotAmt]; DATESYTD ( 'Calendar'[Date] ) )
)
#Amt YTD PY

Codice: Seleziona tutto

=VAR TempTablePY =
    SAMEPERIODLASTYEAR ( DATESYTD ( 'Calendar'[Date] ) )
VAR Result =
    CALCULATE ( [#TotAmt]; TempTablePY )
RETURN
    Result
A presto,
Andrea
Allegati
TestData.xlsx
(369.96 KiB) Scaricato 46 volte
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Avatar utente

Autore del topic
alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Vendite cumulate anno corrente e precedente

Messaggio da alex77 »

Ciao,
grazie Alexia e Andrea90 .
Dunque:
1. Come detto da Andrea, sono felice che il mio post non sia solo per "risolvere il mio problemino", ma possa aiutare altri a fare prove, imparare...
2. Alexia grazie della proposta, l'ho provata, ho trovato anche interessante l'uso della colonna calcolata dax (perchè finora mai usata, sono alle prime/seconde armi con Power BI :D ). Se l'ho implementata giusta però non mi va bene il fatto che mostri tutti gli anni, a meno di filtri. Come spiegavo nel primo post io voglio vedere, se non ci sono filtri, solo l'ultimo anno confrontato con il penultimo, se filtro un anno precedente voglio vedere quell'anno confrontato con quello che, a sua volta, lo precede. Però interessante nella tua soluzione il fatto che si vedano solo i mesi già passati dell'anno corrente (2021 al momento)
3. Andrea90 alcune domande:
- volevo chiederti innanzitutto se mi spieghi meglio le tue formule. Mi sono anche letto per esempio a cosa serve HASONEVALUE, che non conoscevo (come tante altre :D ), ma mi sfugge un po' la logica in particolare della formula #TotAmt
- sempre in #TotAmt hai forzato un filtro a "2021". Presumo però che il valore "secco" poi lo debba trasformare in una formula che mi dia, genericamente, l'anno corrente, giusto?
- con le mie formule vedo il 2020 fino ad aprile (ora maggio) come il 2021 e a me va bene così. Però potenzialmente utile la tua soluzione, che mostra il 2020 fino a dicembre; perchè non è detto che poi, discutendo con chi utilizzerà il report, non voglia vedere l'andamento di tutto il 2020 e vedere a mano a mano "crescere" il 2021.
- feedback sulle mie formule: ti parevano comunque "sensate" o ritieni che possano avere problemi (di performance, di effetti indesiderati...) ?

Penso di aver detto tutto :wave:
Rispondi