Tabelle calcolate in DAX, domanda "teorica"

Il software per la BI di Microsoft, leader nel mercato
Rispondi
Avatar utente

alex77
Messaggi: 160 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 11 volte

Tabelle calcolate in DAX, domanda "teorica"

Messaggio 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


Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Tabelle calcolate in DAX, domanda "teorica"

Messaggio 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.
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Rispondi