Stefano Cazzella
Caccio's Blog Author

Last Tweet

Commenti

  • Azionifiat su Fiat Bravo Guerrilla Marketing
  • Amit su Business Intelligence Modeler (alpha version)
  • Stefano Cazzella su Dimensional Fact Model: dalla teoria alla pratica
  • Camillo su Dimensional Fact Model: dalla teoria alla pratica
  • Stefano Cazzella su Dimensional Fact Model

Tag Cloud

Dimensional Fact Model

Pubblicato il 20/06/2009 da Stefano Cazzella in Business Intelligence

Dimensional Fact Model

Fra i vari formalismi messi a punto dal mondo accademico per la definizione di modelli multi dimensionali, il Dimensional Fact Model (DFM) è fra quelli che più di altri negli ultimi anni è riuscito a valicare i confini universitari e ad essere conosciuto ed utilizzato in diverse realtà industriali e della pubblica amministrazione.

Personalmente sono circa sei anni (da quando ho curato la realizzazione di un CASE specifico per il disegno di modelli multi-dimensionali) che ho adottato il Dimensional Fact Model (DFM) come formalismo per la rappresentazione dei requisiti utente nell’ambito di progetti di Data Warehousing/Business Intelligence. In questo periodo mi è capitato spesso (specie in occasione dello start-up di un nuovo progetto) di dover riassumere “in pillole” gli elementi fondamentali del formalismo e come la sua adozione faciliti la definizione di un requisito di analisi univocamente interpretabile nel corso di tutto il ciclo di vita del progetto; mi fa piacere quindi dedicare alcuni post a questi argomenti.

NEWS: Per facilitare l’adozione dei DFM ho realizzato un software per il disegno di Dimensional Fact Model liberamente scaricabile.

Prima di introdurre i costrutti fondamentali del DFM è utile riassumere brevemente quelli che sono gli elementi principali della modellazione multi-dimensionale rappresentati dal formalismo.

Modello dati multi-dimensionale

Un modello dati multi-dimensionale è costituito da un insieme di grandezze numeriche (dette genericamente misure) il cui valore varia in funzione di alcuni parametri, definiti su domini discreti (o categorici). Tali domini (detti dimensioni di analisi) costituiscono lo spazio multi dimensionale in cui viene condotta l’analisi degli eventi (o fatti di interesse) descritti quantitativamente dalle misure.

Tale modello viene spesso esemplificato come un cubo i cui spigoli rappresentano le dimensioni di analisi; il cubo è suddiviso in tanti “cubetti”, ciascuno dei quali è identificato da una terna di coordinate; ogni cubetto contiene idealmente i valori assunti dalle misure per quella data terna. Tale elemento atomico (rispetto allo spazio dimensionale) viene comunemente denominato “fatto” in quanto rappresenta l’accadimento di un evento di interesse per il dominio di business.

L’esempio più classico di questo modello dimensionale è costituito dal “cubo delle vendite” che rappresenta lo spazio di analisi per le vendite di una catena di negozi; tipicamente le dimensioni di analisi sono:

  • il giorno in cui è stata effettuata la vendita
  • il negozio in cui è avvenuta la vendita
  • il prodotto venduto

mentre le misure che descrivono quantitativamente il fatto “vendita” sono:

  • la quantità di prodotto venduta
  • il prezzo di vendita
  • il prezzo di acquisto del prodotto venduto

Cubo delle Vendite

Modelli dimensionali più complessi possono prevedere un numero maggiore di dimensioni di analisi; in questi casi si parla spesso di ipercubo.

Gli elementi di una dimensione possono essere raggruppati gerarchicamente in vari livelli fino a comporre un albero: ogni livello rappresenta un raggruppamento uniforme degli elementi della dimensione rispetto ad una loro caratteristica: la radice dell’albero rappresenta l’intera dimensione, mentre le foglie rappresentano i suoi singoli elementi. I gruppi che costituiscono un livello di aggregazione (ossia gli elementi del livello) sono legati agli elementi del livello inferiore da relazioni di tipo uno-a-molti: ogni gruppo di un livello (a meno delle foglie dell’albero) include uno o più gruppi del suo sotto livello.

Gerarchia Territorio

Tale relazione costituisce una dipendenza funzionale fra un livello di aggregazione e quello superiore (che risulta dipendente dal primo); il legame funzionale deriva dalla corrispondenza esistente fra ogni gruppo di elementi di un livello di aggregazione e il gruppo (univocamente identificato) di elementi di livello superiore che lo include. La dimensione di analisi è l’unico livello di aggregazione indipendente di una gerarchia.

Il carattere di uniformità dei gruppi di elementi che costituisce un livello gerarchico di aggregazione conferisce un’identità propria al livello stesso. Il medesimo criterio di omogeneità da esso rappresentato può essere riapplicato anche ad elementi di altre dimensioni di analisi; viceversa gli elementi di una stessa dimensione possono essere raggruppati secondo criteri differenti così da generare alberature alternative.

Per riprendere l’esempio del cubo delle vendite, i negozi della dimensione Negozio possono essere raggruppati gerarchicamente in funzione della loro dislocazione sul territorio nazionale: il primo livello di aggregazione è rappresentato dalla provincia in cui il negozio risiede, quello successivo dalla regione e in fine dallo stato nazionale che rappresenta la radice dell’albero. Gli elementi del livello Provincia sono Roma, Milano e Brescia che rappresentano rispettivamente i tre insiemi di negozi Roma = {Negozio 1, Negozio 2} , Milano = {Negozio 3} e Brescia = {Negozio 4}.

Le misure associate agli elementi della dimensione possono essere aggregate (es. sommate) ai diversi livelli della struttura gerarchica: la radice dell’albero rappresenta il livello di aggregazione massimo, mentre alle foglie è associato il valore elementare della misura (rispetto a quella data dimensione di analisi).

L’uso incrociato delle diverse gerarchie di analisi consente, ad esempio, di calcolare la quantità venduta di un particolare prodotto (o dell’insieme di prodotti di un particolare fornitore) in un determinato giorno dell’anno (o in una settimana, mese, ecc.) da un determinato negozio (o da tutti quelli presenti nella provincia di Roma o nel Lazio).

Dimensional Fact Model

Il DFM è un linguaggio di modellazione per rappresentare modelli multi-dimensionali in una forma sintetica e facilmente leggibile (grazie anche alla sua rappresentazione grafica coincisa); come ogni linguaggio formale ha i suoi costrutti e le sue regole che ne garantiscono l’univocità interpretativa.

L’elemento principale del formalismo è lo Schema di Fatto che raccoglie, in un unico diagramma, le misure che descrivono quantitativamente un fatto, le dimensioni che ne costituiscono lo spazio multi dimensionale di analisi e le gerarchie di aggregazione definite per ciascuna dimensione.

La figura seguente riporta lo schema di fatto (commentato) relativo al cubo delle vendite descritto precedentemente.

Schema di Fatto

Il fatto viene rappresentato da un’area rettangolare suddivisa in due parti: in alto la denominazione del fatto (che da il nome allo schema nel suo complesso) e sotto l’elenco delle sue misure.

Al fatto sono legate direttamente le dimensioni di analisi rappresentate da un cerchio affiancato dal nome della dimensione. Nell’esempio citato queste sono Negozio, Giorno e Prodotto.

I livelli di aggregazione che costituiscono la gerarchia di ciascuna dimensione sono chiamati attributi dimensionali della gerarchia; la loro rappresentazione è analoga a quella di una dimensione (che è a tutti gli effetti un attributo dimensionale della gerarchia). La gerarchia Territorio comprende gli attributi dimensionali: Negozio (la dimensione), Provincia, Regione e Stato.

Le relazioni che legano gli attributi dimensionali sono rappresentate da un segmento che unisce i due cerchi; il verso della relazione di dipendenza si deduce dalla posizione della dimensione nella gerarchia, quando ciò non è possibile o al fine di aumentare la leggibilità dello schema il verso viene esplicitato con una freccia. L’insieme delle relazioni di dipendenza costituisce un grafo diretto aciclico la cui sorgente è la dimensione di analisi. Nello schema di fatto vengono rappresentate solo le dipendenze non ridondanti.

La gerarchia Tempo presenta il classico schema a diamante in cui i giorni dell’anno possono essere raggruppati sia in mesi che in settimane. Dato un giorno dell’anno, sia il mese che la settimana cui il giorno appartiene risultano univocamente identificati, mentre fra settimane e mesi non esiste un’analoga dipendenza funzionale in quanto diverse settimane dell’anno si trovano a cavallo di due mesi. Per questo motivo esistono due percorsi di aggregazione indipendenti per l’attributo Giorno che passano per Mese e Settimana; data la settimana di un anno o un suo mese, l’anno cui questi appartengono è univocamente (e indipendentemente) identificato e pertanto i due percorsi indipendenti si ricongiungono sull’attributo Anno. Per facilitare la lettura degli schemi, quando un attributo dipende da due differenti attributi è bene indicare il verso della dipendenza in maniera esplicita.

Agli attributi dimensionali è possibile collegare anche attributi di dettaglio (detti non dimensionali) che non rappresentano un ulteriore livello di aggregazione, ma solo delle informazioni di corredo riferite all’attributo cui sono collegate. La loro rappresentazione è data semplicemente dal nome dell’attributo corredato da un tratto di sottolineatura come nel caso dell’Indirizzo di un Negozio raffigurato nello schema di esempio.

6 commenti »

  1. Commento di Claudio
    30 April 2010 @ 11:41

    Non sono un esperto navigatore, ma questa breve illustrazione del DFM mi è sembrata utile, semplice ed efficace. Ho apprezzato e ringrazio.

  2. Commento di Emanuele
    3 March 2011 @ 23:57

    Grazie, interessante, ben scritto e utile

  3. Commento di Mirko
    31 May 2012 @ 13:58

    Molto interessante, cercavo proprio un articolo in grado di rinfrescare le mie conoscenze universitarie un pò lontane e sopite. Articolo chiaro e conciso.
    Ringrazio sentitamente.

  4. Commento di Emilio
    2 July 2012 @ 15:52

    Ottimo software per modellare in DFM!
    Grazie mille.

    P.S. Non riesco a disegnare lo schema logico (forse la funzionalita’ non e’ prevista in questa versione).

  5. Commento di lina
    11 October 2013 @ 20:07

    come faccioa creare gli attributi non dimensionali con il programma?
    grazie

  6. Commento di Stefano Cazzella
    12 October 2013 @ 8:31

    E’ possibile trasformare un attributo dimensionale in attributo non dimensionale attraverso una voce apposita del menù contestuale che compare utilizzando il bottone destro del mouse.

RSS feed for comments on this post. TrackBack URL

Lascia un commento