Calcolo errato colonna in matrice L’argomento è risolto

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

Kyros
Messaggi: 2 | Topic creati
Iscritto il: lun 29 gen 2024, 10:33

Calcolo errato colonna in matrice

Messaggio da Kyros »

Buongiorno a tutti,
premesso che sono alle prime armi con Power BI e ringrazio tutti per i preziosi argomenti che trovo su questo forum, ho un problema di calcolo con una matrice.
Ho necessità di calcolare una colonna "GiacenzaPrevista_Y" che riprenda il dato della riga precedente di una colonna calcolata "GiacenzaCalcolata_X" al verificarsi di una condizione [se ConsumiTotali <>0].

La formula è:
Se ConsumiTotali <>0, riprendi valore GiacenzaCalcolata_X riga precedente, [somma] colonna ArriviPrevisti, [sottrai] colonna ConsumiPrevisti, altrimenti riprendi GiacenzaCalcolata_X.

Allego l'immagine del calcolo risultante dalla matrice di Power BI, colonna "Giacenza_Prevista_Y" con i dati errati in rosso sbarrati e di fianco la colonna in azzurro "calcolo corretto" (purtroppo non riesco ad allegare l'immagine, il servizio risulta giù).
Allego anche file Power bI per le opportune verifiche.
Grazie a chi vorrà aiutarmi.
Saluti
Allegati
immagine.jpg
immagine.jpg (223.27 KiB) Visto 66 volte
Stock_Centrali_BL_forum.pbix
(107.16 KiB) Scaricato 4 volte


Avatar utente

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

Calcolo errato colonna in matrice

Messaggio da Andrea90 »

@Kyros,

Comincia con il rendere il tuo codice "leggibile".

Questa è la tua funzione attuale:

Codice: Seleziona tutto

GiacenzaPrevista_Y = if(sum(TotaleConsumi[ConsumoTotale]) <> 0, ([Sommatoria_X]-[ConsumoTotale_BLX]), ([GiacenzaCalcolata_X]-[ConsumiPrevisti_Y]))
Che può essere scritta come:

Codice: Seleziona tutto

Test =
VAR GiaCalcolata = [Sommatoria_X] - [ConsumoTotale_BLX]
VAR result =
    IF ( [TotConsumi] <> 0, GiaCalcolata, GiaCalcolata - [ConsumiPrevisti_Y] )
RETURN
    result
Dove [TotConsumi] è una misura che ho realizzato come:

Codice: Seleziona tutto

TotConsumi = sum(TotaleConsumi[ConsumoTotale])
Ora se metti sul piatto tutte le misure coinvolte ottieni una cosa simile, ed il primo errore lo trovi sulla riga del 19/01:

Immagine

Se è così, cerca quale delle n misure che hai creato è quella che si comporta in modo anomalo. Una volta corretta quella la misura finale si correggerà in automatico.

Evita di utilizzare tutte quelle misure implicite. In Power BI vanno scritte in linguaggio DAX, non prendendo il campo e trascinandolo nell'area valori come se fossimo in excel e stessimo lavorando con le pivot.
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

Autore del topic
Kyros
Messaggi: 2 | Topic creati
Iscritto il: lun 29 gen 2024, 10:33

Calcolo errato colonna in matrice

Messaggio da Kyros »

Ringrazio per la risposta immediata, ho cercato di seguire i consigli, ma ahimè essendo somaro non riesco a comprendere quale misura presenta l'anomalia.
Come già evidenziato al verificarsi della condizione ( se TotConsumi<>0 ) il calcolo funziona per la prima riga rientrante nella condizione, ma non per la successiva così come avevo evidenziato con i valori sbarrati in rosso.
AIUTO !!!
Avatar utente

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

Calcolo errato colonna in matrice

Messaggio da Andrea90 »

@Kyros,

Si tratta di eseguire una differenza tra due numeri, quindi nulla di terribilmente complicato.

Alla riga 18/01/2024 il valore non era indicato in rosso, il TotConsumi è = 0 dunque la formula deve eseguire la seconda espressione. Questa è GiaCalcolata - [ConsumiPrevisti_Y] dunque 10.920 - 540 ed infatti riporta 10.380

La riga 19/01/2024 ha la condizione Falsa (TotConsumi = 0), e la formula riesegue lo stesso calcolo che tu dici essere sbagliato. Poiché dici che deve venire 9.840. Quindi o 10.920 è sbagliato, oppure lo è 540.

Questo spetta a te dirlo sulla base delle logiche che vuoi applicare. Se è sbagliato il primo, allora dovrai correggere la misura
[Sommatoria_X] - [ConsumoTotale_BLX], altrimenti dovrai correggere [ConsumiPrevisti_Y].

Su come correggerle devi dircelo tu, non noi (noi possiamo eventualmente aiutare a tradurre la logica in linguaggio DAX).

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
Rispondi