Pivot di Pivot ? 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


Master
Messaggi: 46 | Topic creati
Iscritto il: sab 4 set 2021, 19:13
Ringraziato: 2 volte

Pivot di Pivot ?

Messaggio da Master »

Buonasera,

scrivo per chiedere cortesemente un'indicazione su come risolvere situazioni simili a quelle del file in allegato.

Nello specifico, ho un dataset di clienti descritto dall'area geografica e dal numero del DDT, quantità e prezzo.
Il mio obiettivo è in primis sommare il fatturato per cliente e se supera il valore 200 applicare un aumento del 25%.
Ho raggiunto il risultato con PowerPivot, creando una misura.

Fatto questo dovrei però riutilizzare il campo "misura 1" con l'incremento, per riaggregare l'incremento per area.

E' come se dovessi trasformare / bloccare il risultato ottenuto nel campo "misura 1" per poterlo risfruttare in un'altra elaborazione.
Avete cortesemente suggerimenti su come dovrei procedere in questi casi ?

Grazie in anticipo !
Allegati
Esempio_Pivot.xlsx
(125.55 KiB) Scaricato 8 volte


Avatar utente

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

Pivot di Pivot ?

Messaggio da Andrea90 »

@Master

Hai due strade:

1) In Power Pivot crei una colonna calcolata (non una misura) che esegua la logica che dici ovvero che se il totale per cliente supera il valore soglia prendi l’importo sulla riga corrente e lo aumenti. A quel punto utilizzerai questo nuovo campo nella tua pivot con l’area sulle righe

2) crei una misura che abbia delle variabili all’interno. Una di queste variabili sarà una tabella virtuale (SUMMARIZE + ADDCOLUMNS ) dove calcolerai appunto il totale dell’importo per cliente e applicherai la logica di incremento.

Strada 1 più semplice a livello di codice, ma richiede l’aggiunta di un campo nel modello dati… Strada 2 più complesso il codice, ma più pulita come soluzione.

P.s. hai chiesto una soluzione per Power Pivot ? Se è così la discussione va aperta nella sezione delle Power Query + Power Pivot, non qui che è quella dedicata a Power BI.

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
Master
Messaggi: 46 | Topic creati
Iscritto il: sab 4 set 2021, 19:13
Ringraziato: 2 volte

Pivot di Pivot ?

Messaggio da Master »

Buonasera,

scusa il ritardo nella risposta ma prima di rispondere volevo testare le tue indicazioni.
Ho provato la prima strada, il campo calcolato, ma non funziona.

Forse ho commesso qualche errore ma con il campo calcolato la formula viene applicata sulla singola riga e non sul dato aggrato per codice cliente.
Quindi, il calcolo della soglia non è in linea. In allegato la mia prova.
Ho sbagliato qualcosa ?

PS 1: hai ragione. posso spostare in qualche modo la conversazione ?
PS 2: non posso ripondere subito ma, anche a distanza di giorni, rispondo sempre.
Allegati
Esempio_Pivot_2.xlsx
(152.07 KiB) Scaricato 6 volte
Avatar utente

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

Pivot di Pivot ?

Messaggio da Andrea90 »

@Master,

Questa è la formula che hai utilizzato per la colonna calcolata:

Codice: Seleziona tutto

=IF([Somma di Importo]>200,[Somma di Importo]*0.25,0)
In una colonna calcolata, dove i dati che hai sono questi:
Immagine

Cosa ti riporterà quel [Somma di Importo]>200 ? Quale vorresti che fosse il valore da controllare per quella specifica riga?

P.s. ho sottolineato colonna calcolata per un motivo ben specifico.

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
Master
Messaggi: 46 | Topic creati
Iscritto il: sab 4 set 2021, 19:13
Ringraziato: 2 volte

Pivot di Pivot ?

Messaggio da Master »

Il valore che devo controllare è la somma per codice cliente, "Somma di Importo" presente nella tabella pivot, non i singoli valori di riga.
E' normale che sia 0 nella colonna calcolata perchè gli addenti sono tutti inferiori a 200 quindi IF è falso e multiplica per 0.

Non ho capito dove sbaglio, rispetto alle tue indicazioni .

Grazie ancora per la gentile disponibilità
Avatar utente

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

Pivot di Pivot ?

Messaggio da Andrea90 »

@Master

Appunto, visto che in ogni riga ottieni il valore dell’importo per quella specifica riga, invece che l’importo totale per cliente, allora significa che non puoi usare un semplice [Somma di Importo] per fare il confronto (mi sembrava inoltre di averti già suggerito di non utilizzare le misure implicite).

Ti avevo anche detto in una precedente discussione che senza la nozione di “contesto filtro” sarebbe stato inutile continuare a creare delle misure. Hai seguito il suggerimento e studiato cosa significa contesto filtro in dax? Perché sennò ogni volta che pubblicherai una discussione dovremo sempre tornare sugli stessi argomenti, perché senza quella nozione con il Dax non si va avanti.

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
Master
Messaggi: 46 | Topic creati
Iscritto il: sab 4 set 2021, 19:13
Ringraziato: 2 volte

Pivot di Pivot ?

Messaggio da Master »

Buongiorno Andrea,

ti ringrazio come sempre per la gentile disponibilità.

Allora ho riletto qualcosa sul tema indicato, in particolar modo in questo link :

https://support.microsoft.com/it-it/off ... 600440a7ad

Da quello che ho capito, ma chiaramente posso sbagliare, con il DAX è importante definire il contesto in cui opero.... Se ad esempio a livello di riga o su un sottoinsieme di dati del dataset che posso creare in maniera dinamica.

Nel mio caso, l'incremento non lo posso calcolare sulla singola riga bensì sul valore del codice cliente aggregato.
Successivamente, la funzione IF è sempre sul risultato dell'aggregazione.
Quindi, perchè nella tua prima strada suggerisci il campo calcolato ? Il contesto filtro perchè servirebbe dato che non devo filtrare ?

Tengo a precisare che per mia ignoranza non riesco a capire efficacemente le tue corrette indicazioni.

Ho giocherellato (o meglio fatto tentativi a cavolo) ed ho ottenuto il file in versione 3 in allegato. Mi sembra che funzioni.
Ad ogni modo vorrei avere il tuo prezioso parere e/o ulteriori fonti per comprendere bene il tema.
Le tue considerazioni comunque sia sono importanti.
Allegati
Esempio_Pivot_3.xlsx
(155.44 KiB) Scaricato 8 volte
Avatar utente

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

Pivot di Pivot ?

Messaggio da Andrea90 »

@Master,
Master ha scritto: dom 11 feb 2024, 16:20 con il DAX è importante definire il contesto in cui opero
Assolutamente si, è il punto di partenza di qualsiasi analisi/report in Power BI.

Il contesto filtro lo si attiva in ogni visualizzazione che crei. Se ad esempio crei un oggetto matrice con il campo [Regione] sulle righe, e come misura utilizzi [Tot Valore] (la cui formula è SUM( Tabella1[Valore]) allora se la prima cella contiene la voce "Lombardia" il sistema andrà nella tabella dei fatti, filtrerà tutte le righe relative alla Lombardia e di solo quelle andrà a sommare i valori del campo [Valore].

Quindi la stessa misura, cambia di valore a seconda del contesto filtro in cui opera.

Se ben ricordi io ho sottolineato la frase "colonna calcolata" perché il discorso che ti ho fatto "non vale" se calcoli una colonna calcolata ed infatti nelle colonne calcolate non esiste "di default" il contesto filtro, ma quello di riga. Per attivare il contesto filtro in una colonna calcolata devi richiamare una misura oppure utilizzare CALCULATE. (se utilizzi una misura lui te la circonda con un CALCULATE in automatico).
Master ha scritto: dom 11 feb 2024, 16:20 Nel mio caso, l'incremento non lo posso calcolare sulla singola riga bensì sul valore del codice cliente aggregato.
Invece lo calcoli sulla singola riga, ma devi fare in modo di cambiare il contesto filtro in modo tale che non ti riporti il valore della riga corrente bensì il valore totale del cliente. Se più righe sono riferite allo stesso cliente tutte quelle righe avranno lo stesso valore. Per fare questo come dicevo devi utilizzare CALCULATE ed i filter modifiers.

Prova a crearti una colonna calcolata e scrivere e vedi cosa ottieni:

Codice: Seleziona tutto

= CALCULATE( SUM( Tabella1[Importo] ), ALLEXCEPT(Tabella1, Tabella1[Codice Cliente] ) )
Per come l'avevo capita io il risultato finale doveva essere una cosa simile:
Immagine

Ovvero che l'incremento lo calcoli su tutte le righe di importo, se quello specifico cliente ha un totale importo superiore a 200 (incremento del 25%)

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
Master
Messaggi: 46 | Topic creati
Iscritto il: sab 4 set 2021, 19:13
Ringraziato: 2 volte

Pivot di Pivot ?

Messaggio da Master »

Interessante...

Il tuo ragionamento non fa una piega ma non l'ho compreso al 100%.
Io sono interessato al solo Incremento, il toale non mi interessa.

Ho provato ad inserire nel mio modello un campo calcolato con la formula indicata ma ottengo quello in figura allegata.
Qualcosa non mi funzionato in quanto i valori sono diversi dai tuoi..

Immagine

Approfondirò ancora di più.

Grasie ancora per la gentile attenzione
Avatar utente

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

Pivot di Pivot ?

Messaggio da Andrea90 »

@Master

Mettiamola in questo modo:
“Io non fornisco la pappa pronta”

Ad esempio:
Master ha scritto: mer 14 feb 2024, 0:08 Io sono interessato al solo Incremento, il toale non mi interessa.
Io cerco di fornire spunti, ma poi l’utente deve metterci del suo. Dici che non sei interessato al totale, ma in realtà lo sei perché l’incremento lo calcoli sulla base del totale se supera o meno i 200. Quindi ti ho fornito un modo per avere il totale di ciascun cliente, in tutte le righe del tuo dataset. Ora sta a te completare la formula per ottenere su ciascuna riga il valore dell’incremento.

Se dal tuo tentativo fatto non ti tornano i numeri allega il file demo con quello che hai provato a fare così vediamo di capire come proseguire.

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