calcolare valore unico di item ripetuti L’argomento è risolto

Non è propriamente un programma di BI, ma nelle sue versioni più recenti anche Excel può fare grandi cose!

Moderatore: Utilizzo_prof_Excel


LuigiS
Messaggi: 36 | Topic creati
Iscritto il: mer 15 giu 2022, 10:11
Luogo: Napoli
Ringraziato: 1 volta

calcolare valore unico di item ripetuti

Messaggio da LuigiS »

Ciao a voi tutti.
Ho un problema a calcolare nel file che ho allegato il totale dei prodotti consegnati.
Ho una tabella con codici ordine e codici consegna con rapporto 1: molti. A fronte di 1 ordine possono esserci anche più consegne.
La misura da me creata aggrega dati che non deve

Codice: Seleziona tutto

=CALCULATE(SUM([TotProdCons]);TabDB[AccodaCons.Stato POD]="ZCON")
Mi servirebbe riuscire a trovare una misura che, come ho inserito nella pivot del file, mi dia la possibilità di calcolarmi unicamente il totale dei singoli distinti prodotti dei codici consegna. Nel caso di specie aggregati per territorio e filtrati per mese ordine.
Spero di essere stato chiaro e resto a disposizione per eventuali chiarimenti. Un grazie in anticipo per l'aiuto.
L.
Allegati
ProvaGG.xlsx
(1021.99 KiB) Scaricato 83 volte


Avatar utente

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

calcolare valore unico di item ripetuti

Messaggio da Andrea90 »

@LuigiS,

Fai un esempio di calcolo prendendo dei codici presenti all'interno del file che hai allegato, così da riuscire a capire la logica che vorresti applicare.

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
LuigiS
Messaggi: 36 | Topic creati
Iscritto il: mer 15 giu 2022, 10:11
Luogo: Napoli
Ringraziato: 1 volta

calcolare valore unico di item ripetuti

Messaggio da LuigiS »

Buon pomeriggio.
Capisco che è sempre difficile riuscire a farsi capire nei ragionamenti applicati... e quindi ti ringrazio in anticipo per la pazienza!
Tabella ordini e tabella Consegne sono diverse ma ovviamente la consegna è legata ad un codice ordine.
Quindi quando con power query ho fatto il merge delle 2 tabelle, su quella ordini, a fronte di uno stesso codiceOrdine mi riporta il valore per quanti sono i codici consegna.
Nel caso che ti ho inserito come img, l'ordine è al 100% consegnato ma come vedi aggregando i dati con la misura che ti ho inserito nel primo post ottengo solo la somma dei valori e non 1 solo valore.
Nella colonna TotnumProd ci sono i singoli prodotti della tabella ordine, mentre nella AccodCons.QtaProdcons, il risultato dei prodotti consegnati facendo il merge con la tabella del Consegnato.
Es:
dato errato: Ordine tot 23 pz , consegnato 69pz( 23x3)
dato atteso: Ordine tot 23 pz , consegnato 23pz. -> 100%

In pratica io dovrei avere solo 1 dato del consegnato che dovrei sommare.
Ho provato anche a fare in un modo diverso, cioè dividendo il valore che ottengo ora del consegnato diviso il conteggio dei codici, che in pratica mi aiuterebbe... però poi il totale mi sballa.
Spero di essere stato chiaro.
Allegati
gg.JPG
gg.JPG (56.2 KiB) Visto 249 volte
Avatar utente

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

calcolare valore unico di item ripetuti

Messaggio da Andrea90 »

@LuigiS,

Se provo a filtrare la tabella presente nel file excel, per quello stesso doc.vendita ottengo una sola riga, e non 3 come da tua immagine. La tabella che fa da sorgente dati è in un file a parte a cui non abbiamo accesso dunque siamo limitati nei checks.

Se la tabella delle Consegne è una sorta di "dettaglio" della tabella ordini, perché non mantenere le due tabelle distinte e relazionarle tramite il codice Ordine ? In questo modo potrai utilizzare il dato dettaglio (della tabella Consegne) o aggregato (tabella Ordini) in maniera molto più semplice.

Altrimenti con una tabella come quella che hai impostato è chiaro che la semplice somma del campo non funziona, essendo gli stessi valori dell'ordine ripetuti per ogni consegna che esso contiene.

Per tenere una struttura tale ed eseguire il calcolo dovresti utilizzare una tabella temporanea che calcoli il max per il campo AccodaCons e poi di questa tabella fare il SUMX().

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
LuigiS
Messaggi: 36 | Topic creati
Iscritto il: mer 15 giu 2022, 10:11
Luogo: Napoli
Ringraziato: 1 volta

calcolare valore unico di item ripetuti

Messaggio da LuigiS »

Se utilizzo poi la tabella consegnato per poi inserire il dato degli ordini avrei sempre un dato minore e quindi non avrei risolto il problema. il discorso della tabella temporanea forse sarebbe la soluzione migliore.
Onestamente non saprei come approcciare a qst tipo di soluzione all'interno di una stessa misura.
Io speravo in qlc soluzione... tipo MAX da poter applicare nella struttura che ho impostato.
Forse dovrei cambiare approccio alla struttura, nn saprei.
Grazie cmq del supporto
Avatar utente

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

calcolare valore unico di item ripetuti

Messaggio da Andrea90 »

@LuigiS

Come ti ho scritto prima l’immagine che mi hai mostrato non riesco a replicarla nel file che hai allegato, se ti serve ragionare su quella devi allegare un data set che contenga nella base dati quelle tre righe.

Sul rivedere il modello dati non capisco cosa tu intenda con “avrò sempre un dato minore”… quando scrivi cose riguardanti il tuo lavoro devi metterti nei panni di chi come noi non sa assolutamente nulla di quello che stai cercando di fare.. quindi o spieghi con dei numeri/dati sotto altrimenti è dura.

Per la misura come ti ho indicato di tratta di fare una tabella temporanea quindi un SUMX che esegua un calcolo iterativo sul campo doc vendita (tramite VALUES puoi crearti la tabella temporanea) e come espressione calcolare il Max del campo.

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
LuigiS
Messaggi: 36 | Topic creati
Iscritto il: mer 15 giu 2022, 10:11
Luogo: Napoli
Ringraziato: 1 volta

calcolare valore unico di item ripetuti

Messaggio da LuigiS »

ti ho allegato un file con un parte della base dati nella quale potrai evidenziare quanto ti scrivevo nei precedenti post.
In buona sostanza, ti dicevo del "dato minore" perchè la maggior parte delle informazioni principali ce l'ho nella tabella ordini mentre quella del consegnato è molto stringata quindi andando ad aggregare ho paura che non riesca a recuperare correttamente tutte le info che mi servono... sarà un mio limite, ma ho preferito fare così!
Cmq se vedi il file che ti ho allegato, troverai i dati di ordini e consegne di 1 anno per uno stesso partner... nella pivot ho creato 3 misure:

Codice: Seleziona tutto

QtaOrd = CALCULATE(DISTINCTCOUNT([Doc. vendita])),
che mi restituisce il conteggio degli ordini;

Codice: Seleziona tutto

QtaCons  =CALCULATE(DISTINCTCOUNT([Doc. vendita]);TabDB[AccodaCons.Stato POD]="ZCON")
, che mi restituisce il conteggio distinct dei numeri di consegna;

Codice: Seleziona tutto

=CALCULATE(
	SUMX(VALUES(TabDB[AccodaCons.Consegna]);[Somma di AccodaCons.QtaProdCons]);
	TabDB[AccodaCons.Stato POD]="ZCON")
- che non funziona - mi dovrebbe restituire il primo valore che rilevo dal campo QtaProdCons, che invece mi viene ripetuto, in quanto proviene dal merge tra le 2 tabelle, ordini e consegnato.
Nella pivot vedi come ho gestito i campi.
Mi ripeto forse e me ne scuso, ma a me serve solo che non venga ripetuto il valore del consegnato per quante sono le righe dei materiali presenti nell'ordine... campi che a me servono purtroppo così... ovviamente se è possibile avere una misura che faccia qst. Anche un suggerimento su una soluzione alternativa...
Grazie per la disponibilità
Allegati
dbAppo 2.xlsx
(325.11 KiB) Scaricato 88 volte
Avatar utente

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

calcolare valore unico di item ripetuti

Messaggio da Andrea90 »

LuigiS ha scritto: gio 24 ago 2023, 10:25 In buona sostanza, ti dicevo del "dato minore" perchè la maggior parte delle informazioni principali ce l'ho nella tabella ordini mentre quella del consegnato è molto stringata quindi andando ad aggregare ho paura che non riesca a recuperare correttamente tutte le info che mi servono... sarà un mio limite, ma ho preferito fare così!
Secondo me ha poco senso questo ragionamento, ma contento tu contenti tutti... ti dico solo che in Power BI lavorare sulla buona struttura del modello dati semplifica di molto i calcoli in DAX, e la maggior parte delle complicazioni che vedo nelle formule in DAX deriva da modelli dati mal costruiti.

Per quanto riguarda la tua formula ti avevo suggerito di:

1) doveva eseguire il calcolo iterativo su Doc Vendita, mentre tu hai fatto il VALUES() del campo AccodaCons.Consegna
2) come espressione doveva calcolare il MAX del campo di tuo interesse, tu hai invece preso "[Somma di AccodaCons.QtaProdCons]" che è una misura implicita (che è un errore e non devono essere utilizzate).

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
LuigiS
Messaggi: 36 | Topic creati
Iscritto il: mer 15 giu 2022, 10:11
Luogo: Napoli
Ringraziato: 1 volta

calcolare valore unico di item ripetuti

Messaggio da LuigiS »

Andrea90 ha scritto: gio 24 ago 2023, 15:26 Secondo me ha poco senso questo ragionamento, ma contento tu contenti tutti... ti dico solo che in Power BI lavorare sulla buona struttura del modello dati semplifica di molto i calcoli in DAX, e la maggior parte delle complicazioni che vedo nelle formule in DAX deriva da modelli dati mal costruiti.
Per quanto riguarda la tua formula ti avevo suggerito di:

1) doveva eseguire il calcolo iterativo su Doc Vendita, mentre tu hai fatto il VALUES() del campo AccodaCons.Consegna
2) come espressione doveva calcolare il MAX del campo di tuo interesse, tu hai invece preso "[Somma di AccodaCons.QtaProdCons]" che è una misura implicita (che è un errore e non devono essere utilizzate).

Andrea
Onestamente non ho capito dove avrei sbagliato a considerare gli ordini e non il consegnato ma accetto volentieri i tuoi suggerimenti frutto di sicura esperienza. Proverò cmq a fare come mi dici.
Per quanto riguarda l'uso di "Somma di AccodaCons.QtaProdCons", hai ragione ho sbagliato io ad inviarti il file con la modifica non fatta e che avevo anche modificato...

per la formula ho provato anche a fare la mofica come mi hai suggerito ma cmq mi riporta un dato sbagliato..

Codice: Seleziona tutto

ProdCons=CALCULATE(
	SUMX(VALUES(TabDB[Doc. vendita]);
	MAX(TabDB[AccodaCons.QtaProdCons]));
      TabDB[AccodaCons.Stato POD]="ZCON")
mi dovrei aspettare un totale di 128 consegnati e non 300...
Grazie
L.
Allegati
gg1.JPG
gg1.JPG (26.5 KiB) Visto 228 volte
Avatar utente

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

calcolare valore unico di item ripetuti

Messaggio da Andrea90 »

@LuigiS,

Ti consiglio di studiare bene le basi di calcolo del DAX prima di cimentarti nella creazione di formule.

Perché scrivere:

Codice: Seleziona tutto

=
SUMX ( 
	VALUES ( TabDB[Doc. vendita] ); 
	MAX ( TabDB[AccodaCons.QtaProdCons] ) 
)
e scrivere:

Codice: Seleziona tutto

SUMX (
    VALUES ( TabDB[Doc. vendita] ),
    CALCULATE ( MAX ( TabDB[AccodaCons.QtaProdCons] ) )
)
Sono due cose molto diverse.

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