Colonna calcolata

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

emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Colonna calcolata

Messaggio da emme1010 »

Buonpomeriggio,
vorrei sottoporvi questo problema:
ho due tabelle relazionate
tabella Stock
Immagine

tabella Costi

Immagine

il mio obiettivo sarebbe riportare nella tabella stock nella colonna costo, il costo che ha la data più recente per entry

Esempio

Immagine

ogni suggerimento è ben accetto


Avatar utente

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

Colonna calcolata

Messaggio da Andrea90 »

Ciao emme1010,

Come primo suggerimento direi di verificare di aver inserito correttamente le immagini, poiché io non riesco a vederle, ecco il link per il tutorial:

viewtopic.php?f=4&t=12

Secondo aspetto, con le immagini ci si fa pochissimo, meglio allegare un file con qualche riga demo di dati ed il risultato desiderato scritto a mano.
Altrimenti costringi gli utenti a dover replicare le tue immagini in un file di esempio per mostrarti i possibili calcoli da utilizzare.

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

Autore del topic
emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Colonna calcolata

Messaggio da emme1010 »

ops, le immagini le vedo perfettamente!
in allegato stock.xlsx

Foglio Stock (anagrafica Item)
Foglio Entry (movimenti sugli item)

Foglio Risultato, è ciò che mi aspetto nella colonna Costo.

Grazie anticipatamente
Allegati
Stock.xlsx
(14.19 KiB) Scaricato 13 volte
Avatar utente

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

Colonna calcolata

Messaggio da Andrea90 »

Ciao emme1010,

Se vuoi farlo come colonna calcolata in DAX allora devi costruirti una misura che contenga:

1) Var MinDate che altro non è che il MAX del posting date, il tutto racchiuso dentro ad un calculate così da beneficiare del context transition
2) Una seconda variabile chiamata Result che contenga il calcolo di un SUMX della RELATEDTABLE(Entry) che calcoli la somma del campo Cost per Unit, questo perché stai creando una colonna calcolata dentro alla tabella stock. Anche questa racchiusa dentro ad un calculate dove il valore del PostingDate è uguale a quello della variabile al punto 1.
3) chiudi la misura con RETURN Result

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

Autore del topic
emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Colonna calcolata

Messaggio da emme1010 »

grazie innanzitutto.

questo il costrutto:

Codice: Seleziona tutto

costo_ultimo =
VAR datamax =
    MAXX ( RELATEDTABLE ( Entry ), Entry[Posting Date] )
VAR result =
    CALCULATE (
        SUMX ( RELATEDTABLE ( Entry ), Entry[Cost per Unit] ),
        Entry[Posting Date] = datamax
    )
RETURN
    result

non ho ben capito l'utilizzo del Calculate nella var datamax. sembra funzionare lo stesso
:D
Avatar utente

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

Colonna calcolata

Messaggio da Andrea90 »

Ciao emme1010,

Il codice va inserito nei tagcode, per questa volta l'ho fatto io al tuo posto.

Tornando alla tua richiesta, il motivo per il quale ti funziona comunque è perché hai utilizzato RELATEDTABLE anche dentro MAXX, se lo togli vedrai che ricevi un valore BLANK.

Se al posto di:

Codice: Seleziona tutto

MAXX ( RELATEDTABLE ( Entry ), Entry[Posting Date] )
scrivi:

Codice: Seleziona tutto

CALCULATE(MAXX (  Entry ; Entry[Posting Date] ))
Otterrai lo stesso risultato, il motivo risiede che CALCULATE, quando utilizzato dentro ad un contesto riga (come quello delle colonne calcolate), attiva il context transition, e pertanto il contesto riga (ovvero il singolo stock) diventa un contesto filtro in grado di filtrare la tua tabella entry per solo quelle righe relative al codice di stock che stai analizzando.

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

Autore del topic
emme1010
Messaggi: 17 | Topic creati
Iscritto il: mer 28 lug 2021, 16:40

Colonna calcolata

Messaggio da emme1010 »

ancora grazie, per il prezioso aiuto.
Rispondi