Pivot di Pivot ? L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 46 | Topic creati
- Iscritto il: sab 4 set 2021, 19:13
- Ringraziato: 2 volte
Pivot di Pivot ?
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 !
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 52 volte
-
- Messaggi: 2360 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 687 volte
- Contatta:
Pivot di Pivot ?
@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
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
-
Autore del topic - Messaggi: 46 | Topic creati
- Iscritto il: sab 4 set 2021, 19:13
- Ringraziato: 2 volte
Pivot di Pivot ?
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.
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 49 volte
-
- Messaggi: 2360 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 687 volte
- Contatta:
Pivot di Pivot ?
@Master,
Questa è la formula che hai utilizzato per la colonna calcolata:
In una colonna calcolata, dove i dati che hai sono questi:
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
Questa è la formula che hai utilizzato per la colonna calcolata:
Codice: Seleziona tutto
=IF([Somma di Importo]>200,[Somma di Importo]*0.25,0)
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
-
Autore del topic - Messaggi: 46 | Topic creati
- Iscritto il: sab 4 set 2021, 19:13
- Ringraziato: 2 volte
Pivot di Pivot ?
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à
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à
-
- Messaggi: 2360 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 687 volte
- Contatta:
Pivot di Pivot ?
@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
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
-
Autore del topic - Messaggi: 46 | Topic creati
- Iscritto il: sab 4 set 2021, 19:13
- Ringraziato: 2 volte
Pivot di Pivot ?
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.
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 51 volte
-
- Messaggi: 2360 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 687 volte
- Contatta:
Pivot di Pivot ?
@Master,
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).
Prova a crearti una colonna calcolata e scrivere e vedi cosa ottieni:
Per come l'avevo capita io il risultato finale doveva essere una cosa simile:
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
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).
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] ) )
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
-
Autore del topic - Messaggi: 46 | Topic creati
- Iscritto il: sab 4 set 2021, 19:13
- Ringraziato: 2 volte
Pivot di Pivot ?
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..
Approfondirò ancora di più.
Grasie ancora per la gentile attenzione
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..
Approfondirò ancora di più.
Grasie ancora per la gentile attenzione
-
- Messaggi: 2360 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 687 volte
- Contatta:
Pivot di Pivot ?
@Master
Mettiamola in questo modo:
“Io non fornisco la pappa pronta”
Ad esempio:
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
Mettiamola in questo modo:
“Io non fornisco la pappa pronta”
Ad esempio:
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