Power Pivot Somma Totale Personalizzata L’argomento è risolto
Moderatore: Utilizzo_prof_Excel
-
- Messaggi: 8 | Topic creati
- Iscritto il: lun 10 lug 2023, 15:33
Power Pivot Somma Totale Personalizzata
Ho un problema con la somma totale. Nello screenshot allegato vorrei vedere nei campi di riga tutti i numeri ma nella somma totale deve sommare solo i numeri negativi con nella macchina 4004, quindi nell'esempio riportato dovrei vedere -2.000 e non 853.600. Ho provato con delle misure ma non ci sono riuscito.
Si riesce a fare una formula in DAX e gestirlo come una misura?
Grazie
Si riesce a fare una formula in DAX e gestirlo come una misura?
Grazie
- Allegati
-
- problema Power Pivot.JPG (80.6 KiB) Visto 442 volte
-
- Messaggi: 2320 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 678 volte
- Contatta:
Power Pivot Somma Totale Personalizzata
CCellini76,
Con degli screenshot non ci facciamo nulla.
Hai realizzato delle misure, bene comincia a postarne il codice (negli appositi tagcode).
Considera che per poter realizzare quello che chiedi devi riuscire a distinguere la riga di totale da quelle che non lo sono. Per farlo dovrai costruire un codice che contenga un IF() che come condizione vada a verificare se c'è un filtro applicato oppure no (puoi usare ISFILTERED()) e se si trova sulla riga di totale ti dovrà riportare il valore di una misura, oppure quello di un'altra che avrai già definito.
Andrea
Con degli screenshot non ci facciamo nulla.
Hai realizzato delle misure, bene comincia a postarne il codice (negli appositi tagcode).
Considera che per poter realizzare quello che chiedi devi riuscire a distinguere la riga di totale da quelle che non lo sono. Per farlo dovrai costruire un codice che contenga un IF() che come condizione vada a verificare se c'è un filtro applicato oppure no (puoi usare ISFILTERED()) e se si trova sulla riga di totale ti dovrà riportare il valore di una misura, oppure quello di un'altra che avrai già definito.
Andrea
-
Autore del topic - Messaggi: 8 | Topic creati
- Iscritto il: lun 10 lug 2023, 15:33
Power Pivot Somma Totale Personalizzata
ho creato queste due misure:
1. CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo;AND ([Qtà MC]<0; [Reparto]=1040)))
2. SUMX(STPROG_reparto_imballo;SWITCH(TRUE; AND(STPROG_reparto_imballo[QtàMC<0;STPROG_reparto_imballo[Reparto]=1040);STPROG_reparto_imballo[Qtà MC]))
Ma non mi danno il risultato sperato
1. CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo;AND ([Qtà MC]<0; [Reparto]=1040)))
2. SUMX(STPROG_reparto_imballo;SWITCH(TRUE; AND(STPROG_reparto_imballo[QtàMC<0;STPROG_reparto_imballo[Reparto]=1040);STPROG_reparto_imballo[Qtà MC]))
Ma non mi danno il risultato sperato
-
- Messaggi: 2320 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 678 volte
- Contatta:
Power Pivot Somma Totale Personalizzata
CCellini76,
le misure vanno inserite negli appositi tagcode, se non sai come fare leggi qui:
viewtopic.php?p=5293#p5293
Inoltre come leggerai al link che ti ho girato conviene vivamente lavorare con del codice DAX ben formattato per comprendere meglio la logica utilizzata per il calcolo.
Se utilizzi gli strumenti indicati nel link vedrai che ci sono anche degli errori nel modo con cui hai incollato le formule..
Rileggi poi il consiglio che ti ho girato nel precedente messaggio.
Andrea
le misure vanno inserite negli appositi tagcode, se non sai come fare leggi qui:
viewtopic.php?p=5293#p5293
Inoltre come leggerai al link che ti ho girato conviene vivamente lavorare con del codice DAX ben formattato per comprendere meglio la logica utilizzata per il calcolo.
Se utilizzi gli strumenti indicati nel link vedrai che ci sono anche degli errori nel modo con cui hai incollato le formule..
Rileggi poi il consiglio che ti ho girato nel precedente messaggio.
Andrea
-
Autore del topic - Messaggi: 8 | Topic creati
- Iscritto il: lun 10 lug 2023, 15:33
Power Pivot Somma Totale Personalizzata
Codice: Seleziona tutto
:SUMX(STPROG_reparto_imballo;SWITCH(TRUE; AND(STPROG_reparto_imballo[Qtà MC]<0;STPROG_reparto_imballo[Reparto]=1040);STPROG_reparto_imballo[Qtà MC]))
Codice: Seleziona tutto
:CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo;AND ([Qtà MC]<0; [Reparto]=1040)))
-
- Messaggi: 2320 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 678 volte
- Contatta:
Power Pivot Somma Totale Personalizzata
Ok, per i tag code (non hai formattato il codice ma amen, contento tu), ma hai provato ad implementare quello che ti ho suggerito prima?
Perché se il tuo obiettivo è quello di ottenere una delle due misure a seconda che ti trovi sulla riga di totale, oppure no, devi implementare una terza misura con IF() e l'utilizzo di ISFILTER.
Ci sono già alcune discussioni con lo stesso tema, basta cercare per ISFILTER* (una presa come esempio):
viewtopic.php?p=4753&hilit=isfilter%2A#p4753
Andrea
-
Autore del topic - Messaggi: 8 | Topic creati
- Iscritto il: lun 10 lug 2023, 15:33
Power Pivot Somma Totale Personalizzata
Scusami Andrea se ho formattato male il codice, migliorerò! Ho visto il topic. Ho fatto alcune prove con IF() ISFILTERED(), mi rimane sempre il problema che la somma me la fa corretta solo se nei campi usati per la somma NON viene visualizzato il numero.
-
- Messaggi: 2320 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 678 volte
- Contatta:
Power Pivot Somma Totale Personalizzata
CCellini76,
Allega un file demo con il tuo modello dati (o una porzione di esso) e le misure da te preparate, anche l’ultima che hai tentato di fare.
Andrea
Allega un file demo con il tuo modello dati (o una porzione di esso) e le misure da te preparate, anche l’ultima che hai tentato di fare.
Andrea
-
Autore del topic - Messaggi: 8 | Topic creati
- Iscritto il: lun 10 lug 2023, 15:33
Power Pivot Somma Totale Personalizzata
Andrea90
Ho allegato il file con le tre misure fatte. Il desiderata è avere in "Somma di Qtà MC" -219.000 pz al posto di 214.200
Buongiorno Ho allegato il file con le tre misure fatte. Il desiderata è avere in "Somma di Qtà MC" -219.000 pz al posto di 214.200
-
- Messaggi: 2320 | Topic creati
- Iscritto il: dom 28 giu 2020, 19:41
- Luogo: Bologna
- Ringraziato: 678 volte
- Contatta:
Power Pivot Somma Totale Personalizzata
Buongiorno CCellini76,
Tante cose da rivedere:
1) Questa è la misura da te allegata, ma non formattata:
ora dimmi se è di semplice lettura come questa:
Questa formula, che è la stessa che hai incollato tu, semplicemente formattata in modo corretto ci sono due aspetti importanti da chiarire:
1) Non usare mai le misure implicite, quel [Somma di Qtà...] che è semplicemente ottenuto spostando il campo [Qtà MC] nell'area valori.. Invece crea una misura ad hoc con un semplice SUM()
2) Mai filtrare una tabella intera, come hai fatto tu. Ci sono molti motivi per non farlo, ed è per questo che diciamo sempre di studiare prima il DAX, piuttosto che buttarsi a capofitto nel creare misure.
Piuttosto io scriverei la formula così:
Se creo una misura ad hoc posso sostituire quel "SUM ( STPROG_reparto_imballo[Qtà MC] )" con il nome della misura.
2) Hai creato questa misura:
Formattata è così:
Direi che anche in questo caso è evidente quale versione sia meglio. Anche perché così facendo vedresti che hai utilizzato un costrutto SWITCH che sinceramente è poco utile visto che la condizione da valutare è una sola (quella definita da AND()). Una versione più light:
3) Per il tuo problema hai definito questa misura:
formattata:
Anche qui ci sono le problematiche viste sopra, in aggiunta a quello che hai utilizzato dentro ISFILTERED() ovvero un campo "esterno" alla pivot, poiché non è un campo presente sulle righe, bensì è un campo utilizzato come "filtro".
Quello che te devi trovare è un campo che non è presente sulla riga dei tuoi subtotali/totali, a seconda di quello che vuoi ottenere. Ad esempio il campo [NumODP] non c'è ne nel subtotale ne sul totale in fondo. Mentre il campo [ID Seq.] esiste a livello di subtotale, ma non di totale in fondo.
Quindi perché non creare una misura con semplicemente un ISFILTERED() e un nome di un campo per vedere che valore mi restituisce una volta inserito dentro la pivot? in questo modo ne capiresti sicuramente il comportamento, poiché restituisce un TRUE o FALSE sulle righe a seconda del campo inserito come argomento.
Poi il resto è un semplice riferimento a misure già esistenti secondo una logica:
IF ( ISFILTERED( [Campo Corretto] ), [Misura1], [Misura2] )
Andrea
Tante cose da rivedere:
1) Questa è la misura da te allegata, ma non formattata:
Codice: Seleziona tutto
=CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo; [Qtà MC]<0))
Codice: Seleziona tutto
=
CALCULATE (
( [Somma di Qtà MC] );
FILTER ( STPROG_reparto_imballo; [Qtà MC] < 0 )
)
1) Non usare mai le misure implicite, quel [Somma di Qtà...] che è semplicemente ottenuto spostando il campo [Qtà MC] nell'area valori.. Invece crea una misura ad hoc con un semplice SUM()
2) Mai filtrare una tabella intera, come hai fatto tu. Ci sono molti motivi per non farlo, ed è per questo che diciamo sempre di studiare prima il DAX, piuttosto che buttarsi a capofitto nel creare misure.
Piuttosto io scriverei la formula così:
Codice: Seleziona tutto
=
CALCULATE (
SUM ( STPROG_reparto_imballo[Qtà MC] );
STPROG_reparto_imballo[Qtà MC] < 0
)
2) Hai creato questa misura:
Codice: Seleziona tutto
=SUMX(STPROG_reparto_imballo;SWITCH(TRUE; AND(STPROG_reparto_imballo[Qtà MC]<0;STPROG_reparto_imballo[Reparto]=1040);STPROG_reparto_imballo[Qtà MC]))
Codice: Seleziona tutto
=
SUMX (
STPROG_reparto_imballo;
SWITCH (
TRUE;
AND (
STPROG_reparto_imballo[Qtà MC] < 0;
STPROG_reparto_imballo[Reparto] = 1040
); STPROG_reparto_imballo[Qtà MC]
)
)
Codice: Seleziona tutto
=
SUMX (
STPROG_reparto_imballo;
IF (
AND (
STPROG_reparto_imballo[Qtà MC] < 0;
STPROG_reparto_imballo[Reparto] = 1040
);
STPROG_reparto_imballo[Qtà MC]
)
)
Codice: Seleziona tutto
=IF(ISFILTERED([Reparto]);CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo;AND ([Qtà MC]<0; [Reparto]=1040))))
Codice: Seleziona tutto
=
IF (
ISFILTERED ( [Reparto] );
CALCULATE (
( [Somma di Qtà MC] );
FILTER ( STPROG_reparto_imballo; AND ( [Qtà MC] < 0; [Reparto] = 1040 ) )
)
)
Quello che te devi trovare è un campo che non è presente sulla riga dei tuoi subtotali/totali, a seconda di quello che vuoi ottenere. Ad esempio il campo [NumODP] non c'è ne nel subtotale ne sul totale in fondo. Mentre il campo [ID Seq.] esiste a livello di subtotale, ma non di totale in fondo.
Quindi perché non creare una misura con semplicemente un ISFILTERED() e un nome di un campo per vedere che valore mi restituisce una volta inserito dentro la pivot? in questo modo ne capiresti sicuramente il comportamento, poiché restituisce un TRUE o FALSE sulle righe a seconda del campo inserito come argomento.
Poi il resto è un semplice riferimento a misure già esistenti secondo una logica:
IF ( ISFILTERED( [Campo Corretto] ), [Misura1], [Misura2] )
Andrea