come ottimizzare il modello dati, come costruire le aggregazioni

Il software per la BI di Microsoft, leader nel mercato

Moderatore: Aless

Rispondi
Avatar utente

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

come ottimizzare il modello dati, come costruire le aggregazioni

Messaggio da alex77 »

Buongiorno a tutti,
come saprete dai miei precedenti post, sono alle prime armi con PBI. Sto facendo anche un videocorso, seguendo i post qui ecc ecc, poi però nei miei primi esperimenti pratici ho (credo ovviamente) vari dubbi.
Vi allego il file (ridotto all'ultimo anno, filtrato solo una parte degli articoli per stare dentro al 1MB ed eliminato la dimensione clienti diciamo per "privacy"). Si tratta di un'analisi sulla vendita di ricambi, vogliamo in primis misurare il ritardo di consegna, suddiviso per fasce.
Dal gestionale ho estratto:
- testate e righe ordini e bolle (o fatture immediate) di consegna (con alcuni filtri sui tipi in modo da avere una cosa "semi-mirata"
- da queste tabelle ho creato la tabella con gli ordini e quella con le bolle di consegna (/fatture immediate) relative a quegli ordini
- ho creato una terza tabella "TabellaRitardi" in cui ho fatto il merge ordini-bolle. In questa ho calcolato la differenza tra data prevista consegna e data effettiva e calcolato le fasce di ritardo. Le righe ordine in alcuni casi si sono duplicate perchè evase con più consegne.

Nota
Oltre alle info sulle date ho mantenuto (e voglio mantenere) i riferimenti degli ordini, delle bolle, ecc perchè mi possono servire anche viste di dettaglio su quali ordini, articoli ecc hanno avuto determinati ritardi

Ho una serie di domande:
1. Innanzitutto, va bene (nel senso: è corretto rispetto ai principi con cui costruire il modello - Star schema, ecc ecc) quello che ho fatto a livello di costruzioni di tabelle e di modello? Nel modello ho importato solo le dimensioni calendario e articolo e la tabella fatti "TabellaRitardi".
2. Discutendo con chi mi ha proposto di fare questo analisi con PBI, siamo giunti alla conclusione di non misurare il ritardo su tutte le bolle di consegna, ma di prendere solo quelle "a saldo" (così non duplico la riga ordine). Per fare questo mi immagino di dover prendere la tabella bolle e raggruppare per numero di riga ordine (completamente) evasa e cercare la data massima di consegna e poi fare il merge con la tabella ordini per ottenere nuovamente la "tabella ritardi". Giusto fare così? Volendo però avere la possibilità di avere il dettaglio delle bolle di consegna (anche quelle con evasione parziale), nel modello ha senso avere quindi due tabelle fatti, una la "tabella ritardi" e una il dettaglio delle bolle di consegna?

Ho paura di essermi spiegato abbastanza male, ma se qualcuno ha pazienza di darmi una mano...
Perchè il mio interesse principale è avere un caso pratico da prendere come esempio per capire come fare un modello corretto, fin dove fare merge e aggregazioni tra le tabelle, e dove invece lavorare con le misure per elaborare i dati, specie se ho più tabelle fatti (come nel mio file qui allegato: ha senso avere la tabella col dettaglio bolle e la tabellaRitardi, che alla fine è un aggregato?)

Alessandro
Allegati
Ricambi 2020 .pbix
(755.04 KiB) Scaricato 5 volte


Avatar utente

Andrea90
Messaggi: 237 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Riccione
Ringraziato: 125 volte
Contatta:

come ottimizzare il modello dati, come costruire le aggregazioni

Messaggio da Andrea90 »

Ciao alex77,

A domande così strutturate credo che sia quasi impossibile fornire una risposta, c'è troppa carne al fuoco, e noi utenti, da esterni che siamo, non sappiamo che tipo di dati hai (io ad esempio non posso vedere ciò che hai creato in PowerQuery), che tipologie di analisi vuoi fare, ecc ecc.... E difficilmente possiamo cominciare a studiare il tuo modello in autonomia (la vedo più come una consulenza vera e propria).

Quello che possiamo fare è ad esempio, vedere un calcolo che stai provando a fare ma che non ti riesce, e cercare di darti una mano per risolvere il problema.

Dare giudizi su cosa sia meglio oppure no la vedo dura senza entrare per bene nel merito.

Ad esempio:
alex77 ha scritto: gio 14 gen 2021, 14:09 2. Discutendo con chi mi ha proposto di fare questo analisi con PBI, siamo giunti alla conclusione di non misurare il ritardo su tutte le bolle di consegna, ma di prendere solo quelle "a saldo" (così non duplico la riga ordine). Per fare questo mi immagino di dover prendere la tabella bolle e raggruppare per numero di riga ordine (completamente) evasa e cercare la data massima di consegna e poi fare il merge con la tabella ordini per ottenere nuovamente la "tabella ritardi". Giusto fare così?
Io sarei per un no.

Ovvio che tecnicamente sarà anche fattibile, ma creare un'aggregazione per ottenere una data informazione, ed infine tornare di nuovo al livello di dettaglio iniziale mi sembra uno spreco di risorse. E sappiamo che PowerQuery non è proprio un fulmine.

Questo è un calcolo che vedrei meglio, a prima vista, per DAX, anche perché puoi crearti in virtuale quei raggruppamenti che ti servono per ottenere l'informazione necessaria. Ma questo è un consiglio così a prima vista, leggendo quello che hai scritto.

Puoi provare ad impostarlo e nel caso far vedere che tipo di valore vorresti ottenere con qualche dato demo (bastano anche poche righe in excel se non vuoi star li a creare un modello in PowerBi, o se vuoi sfruttare questo lavoro che hai già allora prova a far vedere che misura ti servirebbe spiegandone i passaggi).

A presto,

Andrea
Avatar utente

Autore del topic
alex77
Messaggi: 39 | Topic creati
Iscritto il: sab 24 ott 2020, 23:04
Luogo: Treviso
Ringraziato: 2 volte

come ottimizzare il modello dati, come costruire le aggregazioni

Messaggio da alex77 »

ciao Andrea90
immaginavo la domanda fosse un po' troppo articolata, ma già la tua risposta mi ha dato una direzione "nuova". Per le mie conoscenze e capacità mi verrebbe infatti da fare il contrario :D perché con Power Query faccio passaggi per me più lineari, mentre DAX mi è ancora abbastanza oscuro.
Però dall'altra parte avevo già percepito che la strada più corretta (poi ok dici giusto tu: dipende da caso a caso) è avere il dettaglio come base e poi aggregare con DAX. Ci provo! :D

Grazie dell'aiuto

A.
Rispondi