torno su un report che avevo iniziato mesi fa e poi lasciato lì "a macerare". L'oggetto sono le giacenze di magazzino. Al tempo il mio problema era che nel gestionale non c'è una tabella con le giacenze, ma "solo" quella con i movimenti e volevo ricreare le giacenze con PQ (mi avete fatto capire che non era il caso ). Ho allora creato la misura sommando i movimenti "alla data", in questo modo:
Codice: Seleziona tutto
DAX.Giacenza = calculate(TOTALYTD(sum(Movimenti[Qta]),dimCalendario[Data]), dimArticoli)
Il mio obiettivo è però calcolare il valore di magazzino, usando un listino mensile. La misura è la seguente:
Codice: Seleziona tutto
DAX.Valore Giacenza =
VAR vDataMax =
MAX ( dimCalendario[Data] )
VAR vValore =
SUMX (
SUMMARIZE (
Listino,
Listino[Articolo Codice],
"_ImportoGiacenza",
[DAX.Giacenza]
* IF (
MAX ( dimDepositi[Deposito Valorizzato] ) = "N",
0,
CALCULATE ( MAX ( Listino[Prezzo Listino] ), dimCalendario[Data] = vDataMax )
)
),
[_ImportoGiacenza]
)
RETURN
vValore
Di principio, "tutto bene", ma gli oggetti sono "un po' lenti", se esplodo da anno a mese, o filtro una categoria, i grafici ci mettono un po' di secondi ad aggiornarsi. Tenete conto che i movimenti di magazzino per 3 anni "e rotti" sono circa 7 milioni di righe, gli articoli 50k, in 40 categorie, i depositi 80.
Volevo quindi chiedere se secondo voi c'è qualche strada alternativa per rendere più fluido il report - dal filtrare prima i movimenti, in PQ, a un approccio alternativo a SUMX(SUMMARIZE...) - .
Anche perchè, per completezza dovrei aggiungere ulteriore misura che calcola il wip alla data (materiale che viene scaricato dal magazzino da bolle di lavoro, ma che va considerato giacenza finchè la bolla non viene chiusa) da sommare alla giacenza e quindi aumenterebbe la complessità (senza contare che poi vorrei anche calcolare degli indici di rotazione... ma c'è tempo... )
Allego immagine del modello dati, che magari può aiutare.
Grazie per un eventuale aiuto