Pagina 1 di 1

Tabelle calcolate in DAX, domanda "teorica"

Inviato: mar 23 nov 2021, 14:58
da alex77
Ciao a tutti,
rifaccio una domanda che avevo "annegato" in altro post (ma giustamente chiedendo troppe cose, difficile avere risposte su tutto, che la gente si perde).
Sto costruendo un report sul valore delle giacenze di magazzino. Come sorgente dati, dal ERP, ho "solo" i movimenti. Ho "limitato" l'analisi agli ultimi 3 anni, si tratta comunque di un paio di milioni di righe per anno. Devo quindi ricostruire le giacenze giorno per giorno, come cumulato da inizio di ciascun anno. Inizialmente ho tentato di farlo in Power Query, ma ho capito che "non era il suo" (si piantava tutto).
Cercando, leggendo, studiando chiedendo consigli in internet, ho cominciato a battere due strade:
- una misura che calcola la giacenza fisica con TOTALYTD, poi annido questa misura in un'altra che moltiplica la giacenza per singolo codice per il relativo prezzo unitario e poi somma (sumx). Tutto bene, solo che, presumo per la mole di dati da elaborare, l'aggiornamento dei dati sui grafici, mettendo e togliendo filtri con gli slicer, è piuttosto lento. Addirittura, caricato il report sul servizio PBI, un grafico in cui poi mostro la variazione percentuale rispetto al mese precedente, esploso per settimana, va in errore per mancanza risorse. Per questo motivo sto ancora battendo la seconda strada qui di seguito (e arrivo alla domanda)
- calcolo la giacenza, giorno per giorno, in una tabella calcolata in DAX, partendo appunto dai movimenti. Sistemato il calcolo, sembrava tutto ok, dato invio ci impiega qualche minuto ma la tabella è ok. La misura che calcola la giacenza valorizzata funziona... tutto bene. Addirittura "troppo" fluido, infatti la mia domanda nell'altro post era "quando" la tabella calcolata si rigenera ed è normale che sia così veloce. Però: chiudo il file e ci entro il giorno dopo. L'apertura è lenta, ci mette svariati minuti, in più anche se provo a creare una nuova misura o a modificare una esistente, comincia ad elaborare per parecchi minuti. Quindi: qualcuno sa darmi qualche indicazione su pregi e limiti delle tabelle calcolate, "quando" si calcolano, che effetto hanno sulle misure che le utilizzano?

Grazie per un eventuale chiarimento

Alessandro

Tabelle calcolate in DAX, domanda "teorica"

Inviato: mar 23 nov 2021, 15:37
da Enrico Galli
Ciao alex77 , le tabelle calcolate, similmente alle colonne calcolate, sono generate "in runtime", ovvero dopo che i dati esterni sono stati importati nel modello ed elaborati da Power Query, e ogni volta che i dati su cui insistono vengono modificati e ne richiedono il ricalcolo. Se la tabella calcolata è inserita all'interno di una misura, e fa riferimento a un anno di calendario (con SELECTEDVALUE sul campo anno ad esempio), e c'è uno slicer su quel campo, ogni volta che cambi il valore dello slicer nel report, la tabella verrà ricalcolata da zero.

Nel tuo caso, comunque, dalla descrizione che ne dai sembra che i dati siano storicizzati e non dinamici (almeno quelli degli anni e mesi precedenti), quindi (a maggior ragione visto che la mole di dati è consistente) il lavoro da fare è a monte: in SQL dovrai creare delle viste, o delle vere e proprie tabelle di snapshot, con i dati storicizzati nel formato in cui ti servono, e poi importare dati già pre-elaborati in PowerBI e costruirci il report. Non ha senso rendere dinamico ed estremamente resource-intensive un calcolo che può essere fatto una volta per tutte sul server remoto.