Pagina 1 di 1

Misura DAX non somma correttamente

Inviato: mer 4 ott 2023, 13:43
da alex77
ciao a tutti,
sto cercando di calcolare la differenza tra il valore degli acquisti di un anno con quello risultante dal prodotto delle quantità di quest'anno con il prezzo medio dell'ultimo anno di acquisto. Ho creato la misura che riporto sotto ("DAX.Valore prezzo Medio Ultimo Anno Acquisto"). Funziona a livello di singolo codice, ma non quando nella matrice il dato viene aggregato per categoria. Se vedete nel file di esempio, con dati semplificati, in allegato, il codice "melanzane" (fornitore Marco) dà come risultato 20, corretto, che sommato agli altri 50 dovrebbe darmi 70. Il risultato della categoria "Verdura" è però 80 (pari al valore attuale).
Grazie per un eventuale aiuto

Codice: Seleziona tutto

DAX.Valore Prezzo Medio Ultimo Anno Acquisto = 
VAR vMaxDataPrec =
    MIN ( dimCalendario[Data] ) - 1
VAR vTabAnnoArtPrec =
    CALCULATETABLE (
        SUMMARIZE (
            fMovMag,
            dimArticolo[Articolo Codice],
            "Anno", YEAR ( MAX ( fMovMag[Data Ingresso] ) )
        ),
        FILTER (
            ALL ( dimCalendario ),
            dimCalendario[Anno] <= CONVERT ( YEAR ( vMaxDataPrec ), STRING )
        )
    )
VAR vTabArtPrec =
    SELECTCOLUMNS ( vTabAnnoArtPrec, "Articolo Codice", [Articolo Codice] )
VAR vTabAnnoArtCorr =
    ADDCOLUMNS (
        EXCEPT ( SUMMARIZE ( fMovMag, dimArticolo[Articolo Codice] ), vTabArtPrec ),
        "Anno", YEAR ( vMaxDataPrec + 1 )
    )
VAR vTabAnnoArt =
    UNION ( vTabAnnoArtPrec, vTabAnnoArtCorr )
VAR vTabPrezziPrec =
    ADDCOLUMNS (
        vTabAnnoArt,
        "@Prezzo Precedente",
            CALCULATE (
                [DAX.Prezzo Medio],
                VALUE ( dimCalendario[Anno] ) = MAXX ( vTabAnnoArt, [Anno] )
            ),
        "@Prezzo Periodo",
            CALCULATE (
                [DAX.Prezzo Medio],
                VALUE ( dimCalendario[Anno] )
                    = YEAR ( vMaxDataPrec ) + 1
            )
    )
VAR vTabPrezziBase =
    ADDCOLUMNS (
        vtabPrezziPrec,
        "@PrezzoBase", IF ( [@Prezzo Precedente] = BLANK (), [@Prezzo Periodo], [@Prezzo Precedente] )
    )
VAR vResult =
    SUMX (
        vTabPrezziBase,
        IF ( ISBLANK ( [@PrezzoBase] ), [DAX.Prezzo Medio], [@PrezzoBase] ) * [DAX.Qta]
    )
RETURN
    vResult

Misura DAX non somma correttamente

Inviato: gio 5 ott 2023, 8:34
da Andrea90
@alex77,

Se vuoi una mano devi quanto meno spiegare le logiche che hai applicato in quella misura, per ciascuna variabile che hai creato.

Andrea

Misura DAX non somma correttamente

Inviato: gio 5 ott 2023, 9:15
da alex77
Ciao,
certo, spero di aver capito la richiesta:
vMaxDataPrec: calcolo l'ultima data dell'anno precedente a quello preso in considerazione
vTabAnnoArtPrec: genero una tabella combinata, partendo dalla tabella fatti, degli articoli e dell'ultimo anno di acquisto precedente all'anno in considerazione:
vTabArtPrec= dalla tabella precedente estraggo solo i codici
vTabAnnoArtCorr: genero tabella dei codici acquistati solo nell'anno corrente (come differenza tra tutti gli articoli nella tabella fatti e gli articoli della tabella vTabArtPrec) e aggiungo l'anno corrente
vTabAnnoArt: unisco la tabella vTabAnnoArtPrec e la Tabella vTabAnnoArtCorr
vTabPrezziPrec = Aggiungo alla tabella vTabAnnoArt
- una colonna "@Prezzo Precedente" che, usando la misura DAX.Prezzo medio, calcola il prezzo medio dell'anno in riga
- una colonna "@Prezzo Periodo" che, sempre usando DAX.Prezzo medio, calcola il prezzo dell'anno in analisi
vTabPrezziBase: altra tabella in cui testo nella tabella vTabPrezziPrec se @Prezzo Precedente è nullo e quindi prende come prezzo base il @Prezzo Periodo, altrimenti tiene @Prezzo Precedente e genero quindi @Prezzo base
vResult: con SUMX, aggrego i dati di vTabPrezziBase, moltiplicando @Prezzo base, per la quantità dell'anno di analisi (usando la misura DAX.Qta)

Misura DAX non somma correttamente

Inviato: gio 5 ott 2023, 9:43
da Enrico Galli
Ciao, ho la versione di luglio di PowerBI (in azienda siamo un po' lenti ad aggiornare), e si rifiuta di aprire il tuo file in quanto incompatibile... quali "diavolerie" ultra-sperimentali ci hai messo dentro? :lol:

Misura DAX non somma correttamente

Inviato: gio 5 ott 2023, 10:40
da alex77
Ciao @Enrico Galli !
Accidenti, e dire che ne uso ben poche delle cose sperimentali. Secondo te basta che disattivo le anteprime delle nuove funzioni? Non saprei come fare a rendertelo compatibile (sempre che tu lo voglia :D )

Misura DAX non somma correttamente

Inviato: gio 5 ott 2023, 10:44
da Andrea90
@alex77,

Ho riscritto la prima parte della tua misura:

Codice: Seleziona tutto

VAR CY =
    YEAR ( MAX ( dimCalendario[Data] ) )
VAR PY =
    CY - 1
VAR ArtCY =
    CALCULATETABLE (
        ADDCOLUMNS ( SUMMARIZE ( fMovMag, fMovMag[Articolo Codice] ), "@LastY", CY ),
        dimCalendario[Anno] = CY
    )
VAR list_art =
    SELECTCOLUMNS ( ArtCY, "Articolo Codice", [Articolo Codice] )
VAR ArtPY =
    CALCULATETABLE (
        ADDCOLUMNS (
            SUMMARIZE ( fMovMag, fMovMag[Articolo Codice] ),
            "@LastY", CALCULATE ( YEAR ( MAX ( fMovMag[Data Ingresso] ) ) )
        ),
        dimCalendario[Anno] <= PY,
        EXCEPT ( VALUES ( dimArticolo[Articolo Codice] ), list_art )
    )
VAR vTabAnnoArt =
    UNION ( ArtCY, ArtPY )
Ad esempio utilizzavi SUMMARIZE per creare nuove colonne, e non si fa... sempre ADDCOLUMNS + SUMMARIZE

Da qui in poi sinceramente non capisco la logica che applichi, considera che per come sei filtrato al momento, quel vTabAnnoArt restituisce un qualcosa di simile (sulla riga di grand total della matrice, sulle altre ovviamente devi considerare i vari contesti filtro):

Pere 2023
Mele 2022
Melanzane 2021
Zucchine 2022

Andrea