Pagina 1 di 1

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 11:08
da Alexia
Ciao,

per creare una classifica ABC fornitori, utilizzo la seguente tabella di "appoggio".

Codice: Seleziona tutto

ABC = GROUPBY(Fact_Table,Fact_Table[ID_supplier],"Spend_CY",SUMX(CURRENTGROUP(),Fact_Table[Spend]))
Con questo codice dax, mi somma lo spend di tutti gli anni, io vorrei limitarlo solo all'anno corrente.

Suggerimenti?
(ditemi anche se l'approccio alla formula non è quello corretto)

grazie mille.

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 11:17
da Andrea90
Ciao Alexia,

L’analisi che vuoi fare immagino sia statica, nel senso che la categoria assegnata ad un fornitore non deve essere influenzata dal contesto filtro corrente, ma deve rimanere una sorta di dato anagrafico che si aggiorna solo al refresh dei dati.

Se questa è la premessa, bisogna poi vedere che logica vuoi applicare per categorizzare un fornitore.

Immagino che avrai una lookup table dei fornitori. Allora di solito io vado a creare una colonna di appoggio dentro questa tabella con il calcolo della misura che vorrai utilizzare per categorizzare (nel tuo caso lo spend).

Poi calcolo un cumulato per ciascun fornitore, utilizzando una logica di spend decrescente (è come se ordinassi i fornitori per spend dal più grande al più piccolo, e partissi poi dal più grande per calcolare il cumulato). Nel tuo caso dovrai calcolare lo spend per il solo anno che ti interessa prima di farne la cumulata.

a quel punto calcolo la cumulata %

poi sulla base del valore percentuale creo le categorie a cui assegnare ciascun fornitore.

A presto,
Andrea

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 12:08
da Enrico Galli
Ciao, oltre alle considerazioni di Andrea90 , prova questa soluzione per adeguare la tua query:

Codice: Seleziona tutto

ABC =
GROUPBY (
    Fact_Table,
    Fact_Table[ID_supplier],
    "Spend_CY", CALCULATE ( SUM ( Fact_Table[Spend] ), Fact_Table[Year] = YEAR ( TODAY () ) )
)
Ma è solo un tentativo, che non posso verificare (inoltre, non so se esiste la colonna "Year" nella tua fact, altrimenti va modificata la condizione)

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 14:11
da Alexia
Ciao Andrea90
Andrea90 ha scritto: mar 11 mag 2021, 11:17 L’analisi che vuoi fare immagino sia statica, nel senso che la categoria assegnata ad un fornitore non deve essere influenzata dal contesto filtro corrente, ma deve rimanere una sorta di dato anagrafico che si aggiorna solo al refresh dei dati.
Si, esatto.
Andrea90 ha scritto: mar 11 mag 2021, 11:17 Se questa è la premessa, bisogna poi vedere che logica vuoi applicare per categorizzare un fornitore.
Spend cumulato <= 0.8, "A",
Spend cumulato <= 0.95, "B",
else "C"
Andrea90 ha scritto: mar 11 mag 2021, 11:17 Poi calcolo un cumulato per ciascun fornitore, utilizzando una logica di spend decrescente (è come se ordinassi i fornitori per spend dal più grande al più piccolo, e partissi poi dal più grande per calcolare il cumulato). Nel tuo caso dovrai calcolare lo spend per il solo anno che ti interessa prima di farne la cumulata.
Grazie! provo a lavorarci e vediamo se riesco ad arrivare alla soluzione desiderata!

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 14:13
da Alexia
Enrico Galli ha scritto: mar 11 mag 2021, 12:08 Ciao, oltre alle considerazioni di Andrea90 , prova questa soluzione per adeguare la tua query:

Codice: Seleziona tutto

ABC =
GROUPBY (
    Fact_Table,
    Fact_Table[ID_supplier],
    "Spend_CY", CALCULATE ( SUM ( Fact_Table[Spend] ), Fact_Table[Year] = YEAR ( TODAY () ) )
)
Ma è solo un tentativo, che non posso verificare (inoltre, non so se esiste la colonna "Year" nella tua fact, altrimenti va modificata la condizione)
Ciao Enrico Galli, grazie per il suggerimento!
Ho provato la tua query, aggiungendo nella tabella Fact l'anno, ma non funziona. Nella tabella fact ho il campo data collegato ad una tabella data per la gestione della time intelligence.

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 14:56
da Enrico Galli
"Non funziona" è un po' vago... ;) comunque ovviamente non devi creare il campo anno sulla fact, ma devi spostare la definizione del filtro sulla tabella calendario (e qui, se non fosse presente, creare la colonna anno eventualmente)

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 15:19
da Alexia
Enrico Galli ha scritto: mar 11 mag 2021, 14:56 "Non funziona" è un po' vago...
Hai ragione Enrico Galli: ecco l'errore "Le espressioni scalari della funzione 'GROUPBY' devono essere funzioni di aggregazione su CurrentGroup(). L'espressione di ogni aggregazione deve essere una costante o fare riferimento direttamente alle colonne in CurrentGroup()."
Enrico Galli ha scritto: mar 11 mag 2021, 14:56 comunque ovviamente non devi creare il campo anno sulla fact, ma devi spostare la definizione del filtro sulla tabella calendario (e qui, se non fosse presente, creare la colonna anno eventualmente)
Ouch! ho inteso male io, porta pazienza. Nella tabella calendario ho la colonna data, adesso provo a mettere mano sul filtro..
Grazie.

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 15:57
da Enrico Galli
Allora la misura la scriverei circa così:

Codice: Seleziona tutto

ABC =
ADDCOLUMNS (
    VALUES ( Fact_Table[ID_supplier] ),
    "Spend_CY",
        CALCULATE (
            SUM ( Fact_Table[Spend] ),
            Calendar[Year]
                = YEAR (
                    TODAY ()
                )
        )
)

ABC fornitori / anno corrente

Inviato: mar 11 mag 2021, 16:39
da Alexia
Enrico Galli ha scritto: mar 11 mag 2021, 15:57 Allora la misura la scriverei circa così:

Codice: Seleziona tutto

ABC =
ADDCOLUMNS (
    VALUES ( Fact_Table[ID_supplier] ),
    "Spend_CY",
        CALCULATE (
            SUM ( Fact_Table[Spend] ),
            Calendar[Year]
                = YEAR (
                    TODAY ()
                )
        )
)
Grazie Enrico Galli