Power Pivot Somma Totale Personalizzata 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


CCellini76
Messaggi: 8 | Topic creati
Iscritto il: lun 10 lug 2023, 15:33

Power Pivot Somma Totale Personalizzata

Messaggio da CCellini76 »

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
Allegati
problema Power Pivot.JPG
problema Power Pivot.JPG (80.6 KiB) Visto 405 volte


Avatar utente

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

Power Pivot Somma Totale Personalizzata

Messaggio da Andrea90 »

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
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
CCellini76
Messaggi: 8 | Topic creati
Iscritto il: lun 10 lug 2023, 15:33

Power Pivot Somma Totale Personalizzata

Messaggio da CCellini76 »

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
Avatar utente

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

Power Pivot Somma Totale Personalizzata

Messaggio da Andrea90 »

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
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
CCellini76
Messaggi: 8 | Topic creati
Iscritto il: lun 10 lug 2023, 15:33

Power Pivot Somma Totale Personalizzata

Messaggio da CCellini76 »

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)))
Avatar utente

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

Power Pivot Somma Totale Personalizzata

Messaggio da Andrea90 »

Andrea90 ha scritto: lun 10 lug 2023, 16:29 Rileggi poi il consiglio che ti ho girato nel precedente messaggio.
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
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
CCellini76
Messaggi: 8 | Topic creati
Iscritto il: lun 10 lug 2023, 15:33

Power Pivot Somma Totale Personalizzata

Messaggio da CCellini76 »

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.
Avatar utente

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

Power Pivot Somma Totale Personalizzata

Messaggio da Andrea90 »

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
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
CCellini76
Messaggi: 8 | Topic creati
Iscritto il: lun 10 lug 2023, 15:33

Power Pivot Somma Totale Personalizzata

Messaggio da CCellini76 »

prova.xlsx
(877.01 KiB) Scaricato 32 volte
Buongiorno 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
Avatar utente

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

Power Pivot Somma Totale Personalizzata

Messaggio da Andrea90 »

Buongiorno CCellini76,

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))
ora dimmi se è di semplice lettura come questa:

Codice: Seleziona tutto

=
CALCULATE (
    ( [Somma di Qtà MC] );
    FILTER ( STPROG_reparto_imballo; [Qtà MC] < 0 )
)
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ì:

Codice: Seleziona tutto

=
CALCULATE (
    SUM ( STPROG_reparto_imballo[Qtà MC] );
    STPROG_reparto_imballo[Qtà MC] < 0
)
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:

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]))
Formattata è così:

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]
    )
)
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:

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]
    )
)
3) Per il tuo problema hai definito questa misura:

Codice: Seleziona tutto

=IF(ISFILTERED([Reparto]);CALCULATE(([Somma di Qtà MC]);FILTER(STPROG_reparto_imballo;AND ([Qtà MC]<0; [Reparto]=1040))))
formattata:

Codice: Seleziona tutto

=
IF (
    ISFILTERED ( [Reparto] );
    CALCULATE (
        ( [Somma di Qtà MC] );
        FILTER ( STPROG_reparto_imballo; AND ( [Qtà MC] < 0; [Reparto] = 1040 ) )
    )
)
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
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