Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi

  • 372 views
Uploaded on

Le dimensioni di analisi sono le componenti fondamentali per definire gli spazi analitici all’interno di un Data Warehouse. L’obiettivo è quello di analizzare in dettaglio il loro design e la loro …

Le dimensioni di analisi sono le componenti fondamentali per definire gli spazi analitici all’interno di un Data Warehouse. L’obiettivo è quello di analizzare in dettaglio il loro design e la loro implementazione

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
372
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Note di Data Warehouse Le Dimensioni di analisi Le dimensioni di analisi sono le componenti fondamentali per definire gli spazi analitici all’interno di un Data Warehouse. L’obiettivo di questo articolo è quello di analizzare in dettaglio il loro design e la loro implementazione.
  • 2. Introduzione • In ambito Data Warehouse e Business Intelligence, le dimensioni di analisi sono sicuramente un asse portante del contenuto informativo. Su di esse state date, nel tempo, varie definizioni più o meno tecniche. Inizierei con una definizione dal sapore vagamente “astronomico” tratta dal libro di William Giovinazzo [1]. • In principio è la stella. I punti della stella sono le dimensioni, cioè le persone, i fatti e le cose collegate al business. Le dimensioni sono le chiavi di accesso ai fatti contenuti nel nucleo centrale della stella. • Per meglio comprendere le dimensioni di analisi all’interno di un Data Warehouse, dobbiamo pensare a una divisione strettamente dicotomica della realtà informativa. Da una parte i numeri, dall’altra parte i nomi. Da una parte i valori quantitativi presenti nelle tabelle dei fatti, dall’altra parte i valori qualitativi presenti nelle tabelle dimensionali. Non possono esistere disgiunti. Un fatto, per esempio l’estrazione di 10.000 litri di petrolio, non ha alcuna valenza analitica se non è correlato ad una sua dimensionalità che mi deve dire, al minimo, dove sono stati estratti i 10.000 litri, di che tipo di olio erano e quando sono stati estratti. • I valori descrittivi che costituiscono le dimensioni di analisi, definiscono quindi le singole quantità associate ai fatti, detti anche eventi transazionali. Altri esempi di tali valori sono il nome cliente, il tipo di volo aereo, il codice e la descrizione di un prodotto di vendita, l’indirizzo del fornitore, ecc. Quanto descritto ha una solida base concettuale nel dimensional model di cui si faranno alcuni cenni nel prossimo paragrafo.
  • 3. Il modello dimensionale (1) • Il modello dimensionale è il risultato dell’applicazione di una tecnica di design che cerca di rappresentare i dati in una forma intuitiva garantendo, al contempo, un accesso altamente prestazionale. Tale disciplina, a differenza dei classici modelli entity-relationship tipici dei sistemi OLTP, tende a ridurre al minimo il numero di join fra le varie tabelle organizzando i dati in una tabella centrale, la fact table, collegata a un insieme di tabelle più piccole chiamate dimension table. Lo schema così ottenuto si definisce star- schema e nei moderni Data Warehouse è la struttura fondamentale per l’analisi dei dati. • Non è scopo di questo articolo delineare le relazioni fra i due modelli e gli step necessari per passare da un modello all’altro: per un approfondimento vi rimando alla lettura del Kimball [2]. • Sottolineo solamente i seguenti punti di forza del modello dimensionale: – Attenersi scrupolosamente ai principi della modellazione dimensionale e organizzare sempre il vostro mondo informativo in star-schema. Tutti i moderni tool di analisi e reportistica (Business Objects, Oracle Business Intelligence, Cognos, Microstrategy, ecc. ) riconoscono e trattano al meglio queste strutture. – Cambiamenti e arricchimenti nelle necessità di analisi e nel contenuto dei dati sono realizzabili in modo molto semplice, dal punto di vista strutturale, con in genere dei comandi SQL del tipo “ALTER TABLE…”.
  • 4. Il modello dimensionale (2) • Ogni struttura aggregata che viene creata è a sua volta strutturata a star-schema. Se non si è adottato il modello dimensionale, le funzionalità di rewrite degli statement SQL che permette agli RDBMS come Oracle di accedere alle tabelle aggregate invece che alle tabelle di base, avranno difficoltà a funzionare. A questo punto abbiamo gli elementi introduttivi per entrare nel dettaglio delle dimensioni di analisi. Faremo un semplice esempio relativo al mondo della grande distribuzione organizzata (GDO) che, storicamente, è stato il primo a recepire e utilizzare le tecniche di Data Warehousing.
  • 5. La dimensione del punto di vendita (1) • Iniziamo ad associare alla fact table delle vendite di un prodotto di consumo, DDW_DM0_SLS_FAT la sua prima dimensione di analisi, cioè quella dei punti di vendita del prodotto. Per chi è interessato, la Naming Convention applicata agli oggetti è stata descritta sul mio blog [3]. • Il nome della fact table indica in modo facilmente intuitivo, che questa struttura informativa è una Fact table (FAT) delle vendite (SLS) che fa parte dei Data Mart di livello base (DM0) di un progetto di Data warehouse (DDW). • Basandosi sulla stessa tecnica, il nome della dimensione di analisi potrebbe essere DDW_COM_CDI_POS_DIT, a indicare la tabella dimensionale (DIT) dei punti di vendita (POS) che fa parte della sezione delle conformed dimension (CDI) dell’area comune (COM) del progetto di Data Warehouse (DDW). • Un fatto presente nel Data Mart delle vendite, per esempio la vendita di 5 prodotti, sarà associato al luogo, cioè al punto di vendita, in cui sono state venduti. Sulla base delle analisi richieste dalla reportistica e del contenuto del sistema che alimenterà questo tipo d’informazione, possiamo ipotizzare che saranno utili i seguenti elementi descrittivi del punto vendita: – Codice e descrizione del punto di vendita – Superficie del punto di vendita in mq. – Tipo del punto di vendita (per es. chiosco, negozio, libreria, ecc.) – Posizione del punto di vendita (piazza, via, interno di centro commerciale, autogrill, ecc.)
  • 6. La dimensione del punto di vendita (2) – Codice del quartiere in cui è situato il punto di vendita – Descrizione del quartiere in cui è situato il punto di vendita – Tipo del quartiere (centro, periferia, ecc.) – Città in cui è situato il punto di vendita – Numero medio di abitanti della città in cui è situato il punto di vendita – Regione in cui è situato il punto di vendita – Locazione della regione (Nord, Centro,Sud, Isole) – Nazione in cui è situato il punto di vendita Questo elenco di caratteristiche relative a un punto di vendita è la nostra dimensione di analisi. È ancora una definizione logica, non un’implementazione fisica. Non si deve vederla subito come una tabella costituita da un certo numero di colonne: rimaniamo a livello logico per analizzare meglio tutti gli aspetti che dovranno essere presi in considerazione al momento della progettazione fisica.
  • 7. La dimensione data (1) • Un’altra dimensione di analisi tipica (direi quasi obbligata) all’interno di un Data Warehouse è la dimensione temporale. Difficilmente i fatti giungono disgiunti da qualche riferimento relativo al momento in cui sono avvenuti. Una delle dimensioni temporali più utilizzate è quella con granularità a livello giorno o mese. Una particolarità di questa dimensione è quella di non avere, in genere, una alimentazione esterna, ma può essere quasi tutta alimentata con semplici statement SQL. Vediamo solo alcuni dei attributi, numerosissimi, che conviene sempre inserire in questa dimensione. • • Numero del giorno (da 1 a 31) • Giorno nel formato annomesegiorno numerico (YYYYMMDD) • Flag di ultimo giorno del mese • Mese di appartenenza in formato numerico (da 1 a 12) • Mese di appartenenza in formato testuale (da gennaio a dicembre) • … altri formati del mese • Trimestre di appartenenza in formato numerico (da 1 a 4) • … altri formati del trimestre • Anno di appartenenza in formato YYYY • ….
  • 8. La dimensione data (2) • Non bisogna avere timore nell’aggiungere caratteristiche a questa dimensione. Mi soffermo brevemente su due attributi in particolare, che, nel caso della vendita al dettaglio, conviene sempre inserire: • • Tipo giorno. Quest’informazione può essere utile per indicare situazioni particolari come scioperi nazionali, attentati, calamità che possono rappresentare un modo di inquinare i dati nel caso in cui non sia possibile identificare questi giorni particolari nelle condizioni di filtro. • Giorno di corrispondenza dell’anno precedente. Quest’informazione è utile per i raffronti con l’anno precedente. L’esempio tipico è la Pasqua che, di anno in anno, cade in giorni diversi. Se si vogliono confrontare le vendite della settimana pasquale, si deve poter confrontare la settimana pasquale corrente con la corrispondente settimana di Pasqua dell’anno precedente.
  • 9. La dimensione tempo • In alcuni casi la granularità dei fatti temporali è a livello inferiore al giorno, cioè scende al livello di minuti o di secondi. Ovviamente è impensabile costruire una dimensione giorno con una riga per ogni secondo (provate a calcolare quanti secondi ci sono in un anno). • In questo caso è preferibile affiancare alla dimensione giorno una dimensione tempo che conterrà solo una riga per ogni secondo (o minuto) di una giornata. • Sarà molto utile per costruire delle gerarchie che raggruppano i minuti della giornata nelle fasce orarie utilizzate dall’analisi. • C’è da dire che l’ultima tendenza della modellazione dimensionale tende comunque a spostare una data completa (full SQL date-time stamp) direttamente nella fact table, vista come se fosse un tipo un po’ particolare di fatto: questo per rispondere in modo più efficiente al calcolo di intervalli di tempo fra diversi record di fatti.
  • 10. La dimensione cliente • Questa dimensione di analisi è un’altra tipica dimensione presente in quasi tutti i Data Warehouse. Nel caso del Data Warehouse esemplificato, la si potrebbe applicare solo ai possessori di una Fidelity Card, di cui si hanno delle informazioni anagrafiche precise. • Ma, al di là del caso specifico, questa dimensione può essere una di quelle più difficili da gestire. Pensate quanti milioni di righe può contenere la dimensione cliente di una importante azienda telefonica o di una Banca Internazionale. • Le caratteristiche del cliente sono varie, e, in fase di analisi, dovranno essere identificate nel modo più completo. Vediamo qualche esempio: – Codice cliente – Nome/cognome cliente – Nazionalità – Sesso – Professione – Indirizzo – … altri tipi d’indirizzi – Numero di telefono – Indirizzo e-mail – …
  • 11. Dimensioni e tabelle dimensionali (1) • Quando ho introdotto la dimensione dei punti di vendita, ho sottolineato il fatto che stavo descrivendo una dimensione dal punto di vista logico e non fisico. Infatti, la dimensione di analisi, nel senso logico del termine, si compone di due parti – la tabella dimensionale – la dimensione o struttura dimensionale • Poiché questo concetto è spesso fonte di incomprensioni, cerchiamo di approfondirlo. L’elenco degli attributi dei punti di vendita descritto in precedenza, è solamente un elenco. Esso è privo di struttura, nel senso che non mostra le relazioni che ci sono fra gli attributi stessi. • Gli attributi nazione, regione, città, quartiere e punto di vendita costituiscono una chiara gerarchia topografica, relazionando in modo 1:N i vari livelli gerarchici: in una nazione ci sono N regioni, in una regione ci sono N città, e così via. • Gli attributi che sono parte di una struttura gerarchica vengono detti attributi di livello. Gli attributi tipo quartiere e descrizione quartiere sono invece specifici del quartiere, cioè sono in relazione 1:1 con il codice quartiere. • Conoscere queste relazioni fra gli attributi è importante, ecco perché alla vera tabella dimensionale con i suoi attributi, che conterrà i dati, è affiancata una struttura dimensionale che, utilizzando un particolare formalismo, tiene traccia delle relazioni fra gli attributi.
  • 12. Dimensioni e tabelle dimensionali (2) • Questa struttura, che in un DBMS come Oracle si chiama dimensione, è solo un oggetto di metadati, esattamente come una constraint. • Quando si crea una constraint di foreign key, si crea semplicemente un metadato che indica la relazione fra due campi di due tabelle; la stessa cosa vale per le dimensioni: quando si crea una dimensione si crea un metadato che mi descrive le dipendenze funzionali fra gli attributi della tabella dimensionale.
  • 13. Le Slowly Changing Dimension (SCD) (1) • Finora abbiamo analizzato le dimensioni di analisi da un punto di vista logico, diciamo, statico/strutturale. La realtà informativa che andiamo a progettare è sicuramente più dinamica, nel senso che le cose cambiano e noi, in qualche modo, dobbiamo analizzare tali cambiamenti. O, perlomeno, sapere che è un problema comunque da affrontare. • Noi sappiamo che i Data Mart di un Data Warehouse tracciano una storia d’eventi. Una volta che l’evento (il fatto) è avvenuto, esso rimane immutabile nel tempo. • Se il cliente Rossi ha acquistato un’automobile da 10.000 euro il 9 novembre di due anni fa, il prezzo di tale acquisto rimarrà lo stesso per tutti gli anni futuri. Un fatto è un fatto, e tale deve rimanere. • Le entità rappresentate nelle dimensioni di analisi, invece, si comportano diversamente: quasi sempre cambiano nel tempo. La persona che ha acquistato quell’automobile da 10.000 euro, due anni fa forse era uno studente, oggi è un impiegato, domani potrà essere un commerciante. Lo stesso ragionamento vale per il suo stato civile, due anni fa era celibe, oggi forse è sposato. • Ho fatto l’esempio della dimensione cliente perché storicamente è una delle più dinamiche, ma lo stesso discorso si può applicare ai punti di vendita. I business manager possono decidere in qualunque momento di modificare le strutture organizzative. • Se una dimensione ha delle caratteristiche che cambiano nel tempo, allora prende il nome di Slowly Changing Dimension (SCD), e questo comportamento ci impone di trovare un modo di gestirla senza intaccare i fatti associati ad essa.
  • 14. Le Slowly Changing Dimension (SCD) (2) • Gestirla significa che quando giunge il flusso di alimentazione della dimensione cliente, nel quale ieri l’attributo professione era valorizzato a “studente” e oggi è valorizzato a “impiegato”, si deve trovare un modo per trattare questo fatto basandoci sull’esigenze del cliente finale che utilizzerà la reportistica di analisi. Le esigenze possibili ricadono quasi sempre in tre categorie, che banalmente, sono storicamente indicate come Type 1, Type 2, e Type 3. Vediamole dal punto di vista logico. • SCD di tipo 1 (overwrite): l’esigenza di questo tipo è molto semplice. All’utente finale non interessa il fatto che è avvenuto un cambiamento. Per lui fa fede la situazione che c’è adesso e quindi vale anche per il passato. • Un esempio di tale situazione è un cambiamento nella struttura organizzativa. Se il management decide di suddividere una organizzazione territoriale da tre regioni in cinque regioni, è probabile che ora le analisi dovranno essere basate sulla nuova organizzazione. L’esigenza quindi è quella di sostituire o rimpiazzare la vecchia informazione con quella nuova. Bisogna prestare attenzione a questa scelta: si deve essere consapevoli che la soluzione di tipo 1 modifica i fatti del passato come se fossero correnti. • Tornando all’esempio dell’acquisto dell’automobile da parte dello studente Rossi di due anni fa, significa che se gestisco il cambiamento di tipo 1, lo studente Rossi oggi è un impiegato, e anche la vendita di due anni fa risulterà fatta a un impiegato. Ho perso l’informazione che era studente. Il vantaggio di questa soluzione è che è semplice e facilmente implementabile: in fondo si tratta di rimpiazzare il vecchio valore con il nuovo.
  • 15. Le Slowly Changing Dimension (SCD) (3) • SCD di tipo 2 (partitioning history): con i cambiamenti di tipo 2 si cerca di risolvere i problemi collegati alla soluzione di tipo 1. • Se l’esigenza di business è quella di tenere traccia dei cambiamenti dimensionali di certi attributi, la soluzione non può essere la sovrascrittura dei valori, ma bisogna trovare un modo per storicizzarli. Significa partizionare la storia dei fatti in modo preciso e senza sovrapposizioni in modo che la validità di un certo valore di un attributo sia circoscritta all’interno di un ben definito intervallo temporale. • Questo si può ottenere, aggiungendo una occorrenza specifica del cambiamento, da associare in modo cronologico con i fatti corrispondenti. Il modo con cui tecnicamente possiamo ottenere questo risultato lo vedremo nella seconda parte di questo articolo. • Qui è sufficiente notare che mentre nel caso SCD di tipo 1 si ha sempre un’unica occorrenza dimensionale associata per esempio al cliente Rossi, con le SCD di tipo 2 si avrà una occorrenza diversa per tenere traccia di ogni cambiamento.
  • 16. Le Slowly Changing Dimension (SCD) (4) • SCD di tipo 3 (two alternate realities): i due casi appena visti, sembrano coprire la totalità delle situazioni. O tengo traccia dei cambiamenti con il tipo 2, o considero solo la situazione corrente con il tipo 1. • La realtà economica sempre più competitiva, obbliga gli utenti e i manager a considerare attentamente i dati prima di prendere delle decisioni. Questo fa sì che sempre più spesso sia presente una nuova esigenza: poter confrontare diverse realtà prima di prendere la decisione finale. • In pratica l’utente vuole che nel momento che avviene un cambiamento ad un attributo dimensionale, il vecchio valore non scompaia, ma rimanga attivo come seconda scelta. Le due situazioni di business più comuni sono quelle relative a cambiamenti nelle strutture territoriali di vendita e quelle relative a riassegnamenti merceologici fra articoli. • Molto spesso gli utenti vogliono vedere l’andamento delle vendite di oggi basate sulla struttura organizzativa di ieri. La soluzione di questo caso, che comunque vedremo in dettaglio, è quella di aggiungere un altro attributo alla dimensione che memorizzi il vecchio valore assieme a quello nuovo.
  • 17. Le Minidimensioni (1) • Il paragrafo precedente ha mostrato la necessità dinamiche di una dimensione di analisi, rispondendo con tecniche diverse alle necessità degli utenti finali. • Le SCD di tipo 2 però hanno un problema di gestione. Non è da sottovalutare la parola “slowly”. • Le tecniche sopra esposte si adattano senza difficoltà a modifiche “lente”, cioè che avvengono in modo molto diluito nel tempo. Una ristrutturazione gerarchica non si farà tutti i giorni, ma sarà probabilmente annuale, o comunque abbastanza rara (non dimentichiamo che tali modiche arrivano sul Data Warehouse, ma in genere hanno impatti notevoli anche sui sistemi alimentanti). • La gestione della SCD di tipo 2 crea una nuova occorrenza al momento del cambiamento. Provate a pensare cosa significa se: – L’utente richiede di tenere traccia dei cambiamenti della dimensione cliente. – Le modifiche avvengono molto frequentemente. – Coinvolgono numerosi attributi in momenti diversi dell’orizzonte temporale. – La dimensione cliente ha 100 milioni di occorrenze. • Temo che la risposta sia una sola: la gestione SCD di tipo 2 diventerebbe un incubo. Per fortuna ci vengono in aiuto le minidimensioni.
  • 18. Le Minidimensioni (2) • Il concetto che sta alla base delle minidimensioni è semplice (il vecchio dividi e conquista): bisogna spezzare la dimensione principale, in questo caso quella cliente, in una o più dimensioni secondarie. • Il processo è il seguente. Si prende l’insieme degli attributi, si separano quelli statici (cioè quelli che non possono cambiare come la data di nascita, il luogo di nascita, il sesso, ecc e quelli per cui o non ha senso o non è richiesto di tracciare il cambiamento, come il numero di telefono, l’indirizzo, ecc) da quelli dinamici. • L’insieme degli attributi statici costituirà la vera dimensione cliente, l’insieme degli attributi dinamici costituirà la minidimensione “Attributi demografici”. • In questo modo la cardinalità della dimensione cliente rimarrà costante a 100 milioni di occorrenze, mentre la cardinalità della minidimensione avrà il numero di tutte le combinazioni correnti degli attributi che ne fanno parte. • La minidimensione sarà a tutti gli effetti una vera dimensione di analisi, e i cambiamenti verranno tracciati nella tabella dei fatti. A seconda del numero di combinazioni (che in genere è piccolo) sarà prerogativa del Data Warehouse Architect decidere di spezzarla in più minidimensioni.
  • 19. Le Dimensioni Degeneri (degenerate dimensions) • Nella prima parte di questo articolo abbiamo diviso la realtà informativa in valori quantitativi (fatti) e valori qualitativi (dimensioni). • In fase di design quasi sempre è presente una categoria di informazioni che è difficile classificare secondo quella modalità. In questa categoria rientrano il codice ordine, il codice fattura, il codice della bolla di spedizione, il numero dello scontrino, insomma tutti i codici di documenti di controllo di vario tipo. • Il modo di trattare questi codici è quello di inserirli direttamente nelle fact table. Compariranno dopo tutti i codici associati alle dimensioni e prima dei fatti numerici. Per questo motivo sono dette dimensioni degeneri: non hanno una dimensionale associata perché privi di attributi. • Il caso più classico è quello della fact table che contiene il dettaglio delle singole linee d’ordine o di fattura. Il codice ordine e il numero di linea d’ordine sono dimensioni degeneri.
  • 20. Conclusioni • Questa prima parte dell’articolo si è focalizzata principalmente sugli aspetti semantici e logici delle dimensioni di analisi. • Le abbiamo analizzate sia dal punto di vista statico che dinamico. Siamo quindi pronti per entrare nel design e nell’implementazione fisica dei concetti sopra esposti. Nel prossimo articolo affronteremo quindi due argomenti che sono oggetto di guerre di religione e discussioni senza fine: – Chiavi artificiali contro chiavi naturali – Dimensioni flat contro dimensioni snowflake • Vedremo inoltre, con un caso reale, come implementare le Slowly Changing Dimension dei tre tipi descritti.
  • 21. Riferimenti • [1] W.A.Giovinazzo – “Object-oriented Data Warehouse Design ”, Prentice Hall, 2000 • [2] R.Kimball – “The Data WarehouseLifecycle Toolkit ”, Wiley, 1998 • [3] Massimo Cenci Data Warehouse Blog http://massimocenci.blogspot.it/