SlideShare une entreprise Scribd logo
1  sur  18
Note di Data Warehouse e Business
Intelligence
Le Dimensioni di analisi (parte 2)
Le dimensioni di analisi sono le componenti
fondamentali per definire gli spazi analitici
all’interno di un Data Warehouse.
Analizziamo in dettaglio il loro design e la loro
implementazione.
Introduzione
• Nella puntata precedente, abbiamo affrontato l’argomento dal punto di vista logico/concettuale. I
concetti esposti erano necessari perché l’analisi, scusate il gioco di parole, delle dimensioni di
analisi, è un compito da non sottovalutare.
• In ambienti aziendali particolarmente complessi, dove lo stesso concetto dimensionale compare in
modi e valori diversi nei vari sistemi alimentanti, identificare correttamente tutti gli attributi che
fanno parte della stessa dimensione è, di per sé, un progetto nel progetto.
• Superata la fase di analisi, bisogna iniziare il design; l’aria rarefatta di alto livello che abbiamo
respirato nelle discussioni e negli incontri, e che abbiamo formalizzato in modo descrittivo in
qualche documento, deve ora affrontare la dura realtà delle “create table”. Come organizziamo
questi insiemi di attributi? Un’unica tabella o più tabelle? Qual è la chiave primaria?
• Per chi ha già lavorato sul campo, in progetti di Data Warehouse, le domande precedenti
equivalgono a prendere le seguenti decisioni: tabelle flat o snowflake, codici naturali o codici
artificiali.
• Risponderemo a queste domande, ma prima definiamo subito quale può essere la struttura
ottimale di una tabella dimensionale. Spostiamoci quindi dietro le quinte, sulla implementazione
fisica della dimensione di analisi.
La struttura della dimensione
• Una dimensione di analisi dovrebbe essere costituita fisicamente da un’unica tabella con le
seguenti componenti.
• Un unico campo primary key contenente un intero univoco senza significato, cioè una chiave
artificiale. Questo sarà il campo che sarà utilizzato come join con la tabella dei fatti.
• Uno o più campi che compongono la natural key della dimensione che sono la base per definire la
primary key.
• Tutti gli altri attributi descrittivi, sia indipendenti che associabili a una struttura gerarchica. Non
spaventarsi se il loro numero può diventare elevato.
• Una serie di campi tecnici per la gestione, se necessario, delle Slowly Changing Dimensions (SCD)
descritte nell’articolo precedente.
• Il nome della tabella dimensionale, se possibile, deve essere basata su una opportuna naming
convention . Basandosi sull’esempio già citato della fact-table delle vendite, il nome della
dimensione di analisi dei punti di vendita potrà essere DDW_COM_PDV_DIT, a indicare la tabella
dimensionale (DIT) dei punti di vendita (PDV) che fa parte dell’area comune (COM) del progetto di
Data warehouse. Vediamo ora di motivare perché deve essere un’unica tabella (flat) e perché deve
avere una chiave artificiale.
Struttura flat e struttura snowflake (1)
• Una dimensione strutturata flat, indica che è fisicamente un’unica e piatta tabella. Una
dimensione strutturata snowflake indica che sono fisicamente più tabelle, una per ogni livello
gerarchico.
• Quindi, con snowflaking si intende la normalizzazione della dimensione di analisi. La Figura 1
confronta visivamente le due strutture per la dimensione dei punti di vendita.
Struttura flat e struttura snowflake (1)
• La scelta della struttura è un argomento, insieme a quello dell’utilizzo delle chiavi artificiali, che
genera sempre discussioni accese su cui è opportuno fare chiarezza.
• Il punto di partenza non deve essere il tecnicismo adottato o un dogmatismo tecnico: dobbiamo
sempre avere presenti due obiettivi fondamentali in un progetto di Data warehouse: la semplicità
e, soprattutto, le prestazioni. Gli utenti finali decreteranno il successo del progetto se, dal
momento del “click”, vedranno comparire i dati dopo pochi secondi.
• Lo snowflaking impedisce il raggiungimento di entrambi gli obiettivi. Vediamo il perché:
• Con lo snowflaking, lo schema si complica notevolmente dal punto di vista strutturale. La realtà
aziendale è sempre più complessa di quella presentata sui libri: provate a pensare a una
dimensione di analisi di punto di vendita, con 6 diverse strutture gerarchiche ognuna di
mediamente 5 livelli. Questo significa 31 tabelle da gestire, ognuna con i propri vincoli di integrità.
Con il flatting la tabella è unica.
• Con lo snowflaking, lo schema si complica notevolmente dal punto di vista visivo. Non
dimentichiamoci che tutti i tool di reportistica necessitano di una struttura di metadati su cui
costruire i report. Utenti particolarmente esperti potranno vederla e manipolarla personalmente.
Avere davanti agli occhi una unica struttura che contiene tutte le informazioni che servono è
diverso che vederne 31.
Struttura flat e struttura snowflake
• Con lo snowflaking non funzionano gli indici bitmap, che sono fondamentali per ottenere delle
elevate performance di accesso ai dati.
• Con lo snowflaking il numero di join, e quindi il numero di tabelle da mettere in relazione per
raggiungere le misure presenti nella fact table può essere estremamente elevato. Più join sono
presenti, più le prestazioni decadono; nel flatting, la join è sempre una sola: fact table con
dimension table sulla artificial key e indice bitmap. Nient’ altro.
• Con lo snowflaking è sicuramente vero che i valori dei campi di tutte le strutture gerarchiche e dei
loro attributi non sono duplicate (l’effetto della vecchia normalizzazione); in effetti il flatting
denormalizza, ma, a conti fatti, il risparmio di spazio è insignificante rispetto alla mole di dati delle
tabelle dei fatti.
Le chiavi artificiali (1)
• Inizialmente, parlando della struttura delle dimensioni, si è affermato che tutte le chiavi del Data
Warehouse siano chiavi numeriche prive di significato logico di business. Questo è un punto
importante. Dalla chiave numerica artificiale non si deve desumere nulla sul contenuto del record
corrispondente.
• L’utilizzo delle chiavi artificiali (con i suoi sinonimi: artificial key, surrogate key, technical key,
synthetic key,ecc.) è sempre stato un argomento oggetto di discussioni accese. Vediamo di
motivare questa scelta mostrando i problemi che possono sorgere nell’utilizzare le chiavi o codici
di produzione.
1. Prima o poi i sistemi esterni decideranno di riutilizzare codici già utilizzati in passato. La chiave
artificiale protegge il data warehouse dalle modifiche operazionali che avvengono nei sistemi
alimentanti.
2. Nel mondo economico l’acquisizione di aziende competitor è un processo abbastanza frequente.
Provate a pensare alle possibili implicazioni se un’azienda utilizza come codice cliente un numero
di 6 cifre, e l’azienda acquisita, di cui dobbiamo integrare la dimensione clienti utilizza un codice
alfanumerico di 12 cfre. Modificare una sola tabella dimensionale è ben diverso da modificare
tutte le tabelle dei fatti che hanno quel codice.
Le chiavi artificiali (2)
3. E’ richiesto di tenere tracce di un cambiamento di alcuni campi della dimensione cliente senza
modificare il codice di produzione. L’utilizzo delle chiavi artificiali permette questo con la gestione
delle SCD (Slowly Changing Dimension).
4. I codici operazionali sono spesso codici alfanumerici di parecchi bytes. Una chiave artificiale
numerica di poche cifre è sufficiente a coprire la cardinalità massima di una dimensione. Questo
implica tabelle dei fatti più piccole, indici delle tabelle dei fatti più piccoli e un numero maggiore di
righe per ogni blocco dati di database. Queste implicazioni significano un consistente incremento
delle performance di accesso ai dati.
5. La chiave artificiale permette di identificare le situazioni in cui non esiste un codice operazionale.
In ogni tabella dimensionale ci sarà sempre una riga (diciamo con chiave artificiale 0) associata al
codice “Non applicabile”. Pensate a una tabella delle vendite con presente il codice della
promozione: se non c’è una promozione in atto, invece di esserci un codice null (che prima o poi
darà sempre problemi nelle estrazioni) ci sarà una chiave numerica 0 con associato il codice
“Nessuna promozione presente” nella tabella dimensionale. Qualunque tool di reportistica
permetterà di selezionare facilmente queste situazioni.
• Riprendiamo ora il discorso sulla gestione dinamica delle dimensioni di analisi, cioè il trattamento
fisico delle Slowly Changing Dimension descritto nell’articolo del mese scorso.
Slowly Changing Dimension (SCD) di tipo 1 (1)
• Come sappiamo, l’esigenza di questo tipo è molto semplice: all’utente finale non interessa il fatto
che è avvenuto un cambiamento La gestione dei cambiamenti di tipo 1 è quindi il semplice
overwrite degli attibuti gestiti secondo questa tecnica.
• Nella Figura 2 vediamo che successivi cambiamenti nella dimensione cliente non aumentano il
numero di record della tabella (come faranno gli SCD2) ma semplicemente aggiornano il valore
degli attributi.
Slowly Changing Dimension (SCD) di tipo 1 (2)
• Sull’utilizzo dei campi tecnici presenti in tabella, si darà una descrizione più dettagliata nel
prossimo paragrafo.
• Per applicare questa tecnica bisogna però essere certi che non si vuole tenere traccia dei
cambiamenti, e del fatto, non trascurabile, che se sono presenti delle strutture di aggregazione
che hanno già aggregato i dati a livello gerarchico superiore con i vecchi valori degli attributi,
queste strutture devono essere tutte ricalcolate per aggiornarsi al dato corrente.
Slowly Changing Dimension (SCD) di tipo 2 (1)
• La gestione dei cambiamenti negli attributi di una dimensione di tipo 2, ci permette di tracciare in
modo preciso ogni cambiamento nel momento stesso in cui avviene e di associarlo correttamente
ai fatti presenti nella fact table.
• Nella Figura 3 vediamo un esempio di come funziona il meccanismo SCD2, partendo da una
situazione iniziale e gestendo progressivamente due cambiamenti dimensionali di due attributi
della dimensione Cliente.
Slowly Changing Dimension (SCD) di tipo 2 (2)
• In essa possiamo notare la presenza di alcuni campi tecnici ( in rosso) che forniscono un notevole
valore aggiunto ai cambiamenti che avvengono nella dimensione Cliente: senza di essi, sarebbe
complicato, se non impossibile, identificare quale è la situazione corrente o quando è avvenuto il
cambiamento.
• Vediamoli in dettaglio, perché non possono mancare in un corretto design di ogni dimension table
che contiene attributi gestiti con la tecnica SCD2.
• Data (key) del cambiamento: deve essere espressa come chiave artificiale per permettere il join
con la dimensione tempo, ricca di attributi facilmente filtrabili.
• Inizio validità: Timestamp (cioè anno,mese,giorno,ore,minuti,secondi) iniziale del cambiamento
dimensionale.
• Fine validità: Timestamp (cioè anno,mese,giorno,ore,minuti,secondi) finale del cambiamento
dimensionale. Questa data e la precedente identificano il periodo di validità del cambiamento,
cioè di una certa composizione del valore degli attributi. Queste date non devoo mai essere nulle,
e devono essere inizializzate a una data fittizia del passato (per es. 1-gen-1800) e a una fittizia nel
futuro (per es. 31-dic-3000). Il processo di caricamento deve fare in modo che lo spazio temporale
sia suddiviso con continuità senza mai sovrapposizioni.
Slowly Changing Dimension (SCD) di tipo 2 (3)
• Causa del cambiamento: deve indicare il campo il cui valore ha subito un cambiamento. Se i campi
sono più di uno, poiché non è possibile inserire una relazione 1:N, si consiglia di indicare i nomi dei
campi separati da virgola. Alcuni designer associano una tabella con le righe di ogni cambiamento
e una chiave di gruppo come link con la dimensione: questo però complica notevolmente la
gestione della SCD.
• Flag di ultimo: è un banale flag 0/1 che indica quale è il record con l’ultima modifica, cioè quello
corrente.
• Ordinale del cambiamento: è solo un progressivo numerico. Può essere utile per identificare per
esempio, quali sono i clienti che non hanno mai avuto dei cambiamenti o quelli che variano di più.
• Descriviamo ora il processo indicato in tabella:
• Il sistema alimentante invia le informazioni di un nuovo cliente di nome Rossi.
• Il processo di caricamento inserisce una nuova riga a cui associa una nuova chiave artificiale (in
genere presa da una sequenza in continuo incremento) e inserisce i dati di Rossi con in più le
informazioni tecniche per la sua gestione.
Slowly Changing Dimension (SCD) di tipo 2 (4)
• Dopo qualche mese il sistema alimentante cambia le informazioni di Rossi per indicare che da
studente è diventato impiegato.
• Il processo di caricamento deve registrare il cambiamento, quindi crea una nuova chiave artificiale,
e inserisce una nuova riga per il cliente Rossi. Registra il giorno corrente come data di inizio
validità, e il campo (o i campi) che sono stati oggetto del cambiamento. Incrementa l’ordinale del
cambiamento e setta a 1 il flag di ultimo. Quindi deve modificare il record precedente di Rossi per
chiudere la sua data di fine validità a ieri e modificare il flag di ultimo a 0.
• A questo punto il processo proseguirà allo stesso modo per tutti i cambiamenti futuri. Come
possiamo vedere dalla situazione finale dei record, se dobbiamo estrarre tutti i finanziamenti
stipulati dal Signor Rossi, il vincolo Nome cliente = ‘Rossi’ estrarrà tutte le chiavi artificiali dalla
dimension table e li collegherà a tutti quelli presenti nella fact table. Se aggiungiamo però anche il
vincolo Stato civile = ‘celibe’, saranno estratti solo i fatti relativi al periodo in cui il Signor Rossi era
celibe.
• Questa capacità di associare i fatti alla particolare situazione anagrafica che è attiva in un certo
momento rende chiaro il motivo per cui la tecnica SCD2 è anche definita Partitioning History.
Slowly Changing Dimension (SCD) di tipo 3 (1)
• La gestione dei cambiamenti negli attributi di una dimensione di tipo 3, ci permette di
memorizzare due situazioni storiche, quella corrente e quella precedente al fine di permettere agli
analisti di fare confronti fra le due realtà.
• Nella Figura 4 vediamo un esempio di come funziona il meccanismo SCD3, notando subito l’
intervento strutturale necessario alla sua gestione: ogni attributo deve essere duplicato.
• Questo significa che la tabella dimensionale deve avere una colonna con il valore corrente e una
colonna con il valore precedente. (i campi tecnici non sono indicati ma sono ovviamente presenti)
Slowly Changing Dimension (SCD) di tipo 3 (2)
• Descriviamo ora il processo indicato in figura:
• Il sistema alimentante invia le informazioni di un nuovo cliente di nome Rossi. Il processo di
caricamento inserisce una nuova riga cui associa una chiave artificiale e inserisce i dati di Rossi
duplicando, nei campi di professione e stato civile precedente, gli stessi valori (oppure li lascia
nulli).
• Dopo qualche mese il sistema alimentante cambia le informazioni di Rossi per indicare che da
studente è diventato impiegato. Il processo di caricamento deve copiare il valore del campo
professione nel campo professione precedente e sovrascrivere il nuovo valore nel campo
professione.
• A questo punto il processo proseguirà con la coppia di sovrascritture per tutti i cambiamenti futuri
e per ogni attributo coinvolto.
Slowly Changing Dimension di tipo ibrido
• Nulla vieta di combinare le gestioni precedenti all’interno della stessa dimensione. Non
dimentichiamo, che il trattamento delle SCD è specifico del singolo attributo (consiglio di avere
sempre una tabella di metadati che conservi questa preziosa informazione).
• Ogni attributo sarà gestito in modo univoco, ma ogni attributo avrà le sue esigenze. Il lato negativo
delle scelte ibride è che sono particolarmente complesse da implementare, quindi conviene siano
motivate da forti esigenze di business.
Conclusioni
• Analizzare,implementare, testare e infine utilizzare le dimensioni di analisi non è un compito
semplice. Esse non sono, come alcuni tendono a pensare delle semplici tabelle anagrafiche.
• Sono oggetti che devono essere creati e alimentati avendo in mente una precisa missione:
permettere l’accesso ai dati con la massima precisione e la massima velocità.
• Utilizzare tabelle a struttura flat, associare chiavi artificiali come link con le tabelle dei fatti,
costruire indici bitmap e foreign key dai fatti alle dimensioni vi permetterà di raggiungere il vostro
obiettivo.

Contenu connexe

Tendances

Atividade fundamentos-de-redes
Atividade fundamentos-de-redesAtividade fundamentos-de-redes
Atividade fundamentos-de-redesArlimar Jacinto
 
ARQUITECTURAS PARALELAS
ARQUITECTURAS PARALELASARQUITECTURAS PARALELAS
ARQUITECTURAS PARALELASAlumic S.A
 
Preparación e instalación del software de aplicación
Preparación e instalación del software de aplicaciónPreparación e instalación del software de aplicación
Preparación e instalación del software de aplicaciónDiego Nicolas Ricaurte Lagos
 
RUP - Gerenciamento de configuração e mudança (corrigido)
RUP - Gerenciamento de configuração e mudança (corrigido)RUP - Gerenciamento de configuração e mudança (corrigido)
RUP - Gerenciamento de configuração e mudança (corrigido)Elen Arantza
 
Aula 1: Virtualização
Aula 1: VirtualizaçãoAula 1: Virtualização
Aula 1: Virtualizaçãocamila_seixas
 
Sistemas Operacionais em redes
Sistemas Operacionais em redesSistemas Operacionais em redes
Sistemas Operacionais em redesDaniel Brandão
 
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareTema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareSaraEAlcntaraR
 
Sistema Operativo WINDOWS
Sistema Operativo WINDOWSSistema Operativo WINDOWS
Sistema Operativo WINDOWSDaniel Barros
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Faculdade Mater Christi
 
Sistema autonomo cisco packet tracer
Sistema autonomo cisco packet tracerSistema autonomo cisco packet tracer
Sistema autonomo cisco packet tracerVicTorx D. Rko
 
Virtualização - O Futuro é na NUVEM
Virtualização - O Futuro é na NUVEMVirtualização - O Futuro é na NUVEM
Virtualização - O Futuro é na NUVEMRodrigo Felipe Betussi
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datosJose O- Vera
 
Ejercicios redes
Ejercicios redesEjercicios redes
Ejercicios redesStudent
 

Tendances (20)

Atividade fundamentos-de-redes
Atividade fundamentos-de-redesAtividade fundamentos-de-redes
Atividade fundamentos-de-redes
 
ARQUITECTURAS PARALELAS
ARQUITECTURAS PARALELASARQUITECTURAS PARALELAS
ARQUITECTURAS PARALELAS
 
2.3.1
2.3.12.3.1
2.3.1
 
Preparación e instalación del software de aplicación
Preparación e instalación del software de aplicaciónPreparación e instalación del software de aplicación
Preparación e instalación del software de aplicación
 
RUP - Gerenciamento de configuração e mudança (corrigido)
RUP - Gerenciamento de configuração e mudança (corrigido)RUP - Gerenciamento de configuração e mudança (corrigido)
RUP - Gerenciamento de configuração e mudança (corrigido)
 
Aula 1: Virtualização
Aula 1: VirtualizaçãoAula 1: Virtualização
Aula 1: Virtualização
 
Sistemas Operacionais em redes
Sistemas Operacionais em redesSistemas Operacionais em redes
Sistemas Operacionais em redes
 
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del SoftwareTema N° 5 Ingeniería de Requisitos y los Requisitos del Software
Tema N° 5 Ingeniería de Requisitos y los Requisitos del Software
 
Aula- Virtualização
Aula- VirtualizaçãoAula- Virtualização
Aula- Virtualização
 
Sistema Operativo WINDOWS
Sistema Operativo WINDOWSSistema Operativo WINDOWS
Sistema Operativo WINDOWS
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
 
Dos sistema operativo en disco
Dos sistema operativo en discoDos sistema operativo en disco
Dos sistema operativo en disco
 
Sistema autonomo cisco packet tracer
Sistema autonomo cisco packet tracerSistema autonomo cisco packet tracer
Sistema autonomo cisco packet tracer
 
Virtualização - O Futuro é na NUVEM
Virtualização - O Futuro é na NUVEMVirtualização - O Futuro é na NUVEM
Virtualização - O Futuro é na NUVEM
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 
Practica 7.5.3
Practica 7.5.3Practica 7.5.3
Practica 7.5.3
 
Tipos de Sistema operacional
Tipos de Sistema operacionalTipos de Sistema operacional
Tipos de Sistema operacional
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datos
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Ejercicios redes
Ejercicios redesEjercicios redes
Ejercicios redes
 

Similaire à Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi (parte 2)

Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi
Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisiNote di Data Warehouse e Business Intelligence - Le Dimensioni di analisi
Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisiMassimo Cenci
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdfMarco Pozzan
 
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Massimo Cenci
 
Data modelling for Power BI
Data modelling for Power BIData modelling for Power BI
Data modelling for Power BIMarco Pozzan
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniMassimo Cenci
 
Mathcad prime 3.0 FAQS it
Mathcad prime 3.0 FAQS itMathcad prime 3.0 FAQS it
Mathcad prime 3.0 FAQS itGMSL S.r.l.
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologicoConsulthinkspa
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...KEA s.r.l.
 
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...Davide Ciambelli
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Fabio Armani
 
Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Neo4j
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
BDD in DDD
BDD in DDDBDD in DDD
BDD in DDDoehsani
 
Analysis Service Tabular per una soluzione di Business Intelligence
Analysis Service Tabular per una soluzione di Business IntelligenceAnalysis Service Tabular per una soluzione di Business Intelligence
Analysis Service Tabular per una soluzione di Business IntelligenceGianfranco Salamida
 

Similaire à Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi (parte 2) (20)

Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi
Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisiNote di Data Warehouse e Business Intelligence - Le Dimensioni di analisi
Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdf
 
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
 
Data modelling for Power BI
Data modelling for Power BIData modelling for Power BI
Data modelling for Power BI
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
 
Lean a commessa_a_gatto_ottobre_2014
Lean a commessa_a_gatto_ottobre_2014Lean a commessa_a_gatto_ottobre_2014
Lean a commessa_a_gatto_ottobre_2014
 
Mathcad prime 3.0 FAQS it
Mathcad prime 3.0 FAQS itMathcad prime 3.0 FAQS it
Mathcad prime 3.0 FAQS it
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologico
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Datawarehouse
DatawarehouseDatawarehouse
Datawarehouse
 
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...
Impaginazione automatica e sostituzioni automatiche sull’impaginato: la coppi...
 
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...
Introduzione al Data Warehousing ed alla Progettazione di Data Warehouse Dime...
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
BDD in DDD
BDD in DDDBDD in DDD
BDD in DDD
 
Analysis Service Tabular per una soluzione di Business Intelligence
Analysis Service Tabular per una soluzione di Business IntelligenceAnalysis Service Tabular per una soluzione di Business Intelligence
Analysis Service Tabular per una soluzione di Business Intelligence
 

Plus de Massimo Cenci

Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...
Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...
Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...Massimo Cenci
 
Il controllo temporale dei data file in staging area
Il controllo temporale dei data file in staging areaIl controllo temporale dei data file in staging area
Il controllo temporale dei data file in staging areaMassimo Cenci
 
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)Massimo Cenci
 
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...Massimo Cenci
 
Tecniche di progettazione della staging area in un processo etl
Tecniche di progettazione della staging area in un processo etlTecniche di progettazione della staging area in un processo etl
Tecniche di progettazione della staging area in un processo etlMassimo Cenci
 
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...Massimo Cenci
 
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...Massimo Cenci
 
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...Massimo Cenci
 
Data Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongData Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongMassimo Cenci
 
Letter to a programmer
Letter to a programmerLetter to a programmer
Letter to a programmerMassimo Cenci
 
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...Massimo Cenci
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...Massimo Cenci
 
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...Massimo Cenci
 
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...Massimo Cenci
 
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Massimo Cenci
 
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Massimo Cenci
 
Oracle All-in-One - how to send mail with attach using oracle pl/sql
Oracle All-in-One - how to send mail with attach using oracle pl/sqlOracle All-in-One - how to send mail with attach using oracle pl/sql
Oracle All-in-One - how to send mail with attach using oracle pl/sqlMassimo Cenci
 
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...Massimo Cenci
 
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...Massimo Cenci
 

Plus de Massimo Cenci (20)

Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...
Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...
Recipe 16 of Data Warehouse and Business Intelligence - The monitoring of the...
 
Il controllo temporale dei data file in staging area
Il controllo temporale dei data file in staging areaIl controllo temporale dei data file in staging area
Il controllo temporale dei data file in staging area
 
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
Recipe 14 - Build a Staging Area for an Oracle Data Warehouse (2)
 
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
Recipe 14 of Data Warehouse and Business Intelligence - Build a Staging Area ...
 
Tecniche di progettazione della staging area in un processo etl
Tecniche di progettazione della staging area in un processo etlTecniche di progettazione della staging area in un processo etl
Tecniche di progettazione della staging area in un processo etl
 
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...
Note di Data Warehouse e Business Intelligence - Il giorno di riferimento dei...
 
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...
Recipe 12 of Data Warehouse and Business Intelligence - How to identify and c...
 
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...
 
Data Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrongData Warehouse - What you know about etl process is wrong
Data Warehouse - What you know about etl process is wrong
 
Letter to a programmer
Letter to a programmerLetter to a programmer
Letter to a programmer
 
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...
Recipes 9 of Data Warehouse and Business Intelligence - Techniques to control...
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...
 
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
ata Warehouse and Business Intelligence - Recipe 7 - A messaging system for O...
 
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
Data Warehouse and Business Intelligence - Recipe 7 - A messaging system for ...
 
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
 
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
Data Warehouse e Business Intelligence in ambiente Oracle - Il sistema di mes...
 
Oracle All-in-One - how to send mail with attach using oracle pl/sql
Oracle All-in-One - how to send mail with attach using oracle pl/sqlOracle All-in-One - how to send mail with attach using oracle pl/sql
Oracle All-in-One - how to send mail with attach using oracle pl/sql
 
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...
Recipes 6 of Data Warehouse and Business Intelligence - Naming convention tec...
 
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...
Recipe 5 of Data Warehouse and Business Intelligence - The null values manage...
 

Note di Data Warehouse e Business Intelligence - Le Dimensioni di analisi (parte 2)

  • 1. Note di Data Warehouse e Business Intelligence Le Dimensioni di analisi (parte 2) Le dimensioni di analisi sono le componenti fondamentali per definire gli spazi analitici all’interno di un Data Warehouse. Analizziamo in dettaglio il loro design e la loro implementazione.
  • 2. Introduzione • Nella puntata precedente, abbiamo affrontato l’argomento dal punto di vista logico/concettuale. I concetti esposti erano necessari perché l’analisi, scusate il gioco di parole, delle dimensioni di analisi, è un compito da non sottovalutare. • In ambienti aziendali particolarmente complessi, dove lo stesso concetto dimensionale compare in modi e valori diversi nei vari sistemi alimentanti, identificare correttamente tutti gli attributi che fanno parte della stessa dimensione è, di per sé, un progetto nel progetto. • Superata la fase di analisi, bisogna iniziare il design; l’aria rarefatta di alto livello che abbiamo respirato nelle discussioni e negli incontri, e che abbiamo formalizzato in modo descrittivo in qualche documento, deve ora affrontare la dura realtà delle “create table”. Come organizziamo questi insiemi di attributi? Un’unica tabella o più tabelle? Qual è la chiave primaria? • Per chi ha già lavorato sul campo, in progetti di Data Warehouse, le domande precedenti equivalgono a prendere le seguenti decisioni: tabelle flat o snowflake, codici naturali o codici artificiali. • Risponderemo a queste domande, ma prima definiamo subito quale può essere la struttura ottimale di una tabella dimensionale. Spostiamoci quindi dietro le quinte, sulla implementazione fisica della dimensione di analisi.
  • 3. La struttura della dimensione • Una dimensione di analisi dovrebbe essere costituita fisicamente da un’unica tabella con le seguenti componenti. • Un unico campo primary key contenente un intero univoco senza significato, cioè una chiave artificiale. Questo sarà il campo che sarà utilizzato come join con la tabella dei fatti. • Uno o più campi che compongono la natural key della dimensione che sono la base per definire la primary key. • Tutti gli altri attributi descrittivi, sia indipendenti che associabili a una struttura gerarchica. Non spaventarsi se il loro numero può diventare elevato. • Una serie di campi tecnici per la gestione, se necessario, delle Slowly Changing Dimensions (SCD) descritte nell’articolo precedente. • Il nome della tabella dimensionale, se possibile, deve essere basata su una opportuna naming convention . Basandosi sull’esempio già citato della fact-table delle vendite, il nome della dimensione di analisi dei punti di vendita potrà essere DDW_COM_PDV_DIT, a indicare la tabella dimensionale (DIT) dei punti di vendita (PDV) che fa parte dell’area comune (COM) del progetto di Data warehouse. Vediamo ora di motivare perché deve essere un’unica tabella (flat) e perché deve avere una chiave artificiale.
  • 4. Struttura flat e struttura snowflake (1) • Una dimensione strutturata flat, indica che è fisicamente un’unica e piatta tabella. Una dimensione strutturata snowflake indica che sono fisicamente più tabelle, una per ogni livello gerarchico. • Quindi, con snowflaking si intende la normalizzazione della dimensione di analisi. La Figura 1 confronta visivamente le due strutture per la dimensione dei punti di vendita.
  • 5. Struttura flat e struttura snowflake (1) • La scelta della struttura è un argomento, insieme a quello dell’utilizzo delle chiavi artificiali, che genera sempre discussioni accese su cui è opportuno fare chiarezza. • Il punto di partenza non deve essere il tecnicismo adottato o un dogmatismo tecnico: dobbiamo sempre avere presenti due obiettivi fondamentali in un progetto di Data warehouse: la semplicità e, soprattutto, le prestazioni. Gli utenti finali decreteranno il successo del progetto se, dal momento del “click”, vedranno comparire i dati dopo pochi secondi. • Lo snowflaking impedisce il raggiungimento di entrambi gli obiettivi. Vediamo il perché: • Con lo snowflaking, lo schema si complica notevolmente dal punto di vista strutturale. La realtà aziendale è sempre più complessa di quella presentata sui libri: provate a pensare a una dimensione di analisi di punto di vendita, con 6 diverse strutture gerarchiche ognuna di mediamente 5 livelli. Questo significa 31 tabelle da gestire, ognuna con i propri vincoli di integrità. Con il flatting la tabella è unica. • Con lo snowflaking, lo schema si complica notevolmente dal punto di vista visivo. Non dimentichiamoci che tutti i tool di reportistica necessitano di una struttura di metadati su cui costruire i report. Utenti particolarmente esperti potranno vederla e manipolarla personalmente. Avere davanti agli occhi una unica struttura che contiene tutte le informazioni che servono è diverso che vederne 31.
  • 6. Struttura flat e struttura snowflake • Con lo snowflaking non funzionano gli indici bitmap, che sono fondamentali per ottenere delle elevate performance di accesso ai dati. • Con lo snowflaking il numero di join, e quindi il numero di tabelle da mettere in relazione per raggiungere le misure presenti nella fact table può essere estremamente elevato. Più join sono presenti, più le prestazioni decadono; nel flatting, la join è sempre una sola: fact table con dimension table sulla artificial key e indice bitmap. Nient’ altro. • Con lo snowflaking è sicuramente vero che i valori dei campi di tutte le strutture gerarchiche e dei loro attributi non sono duplicate (l’effetto della vecchia normalizzazione); in effetti il flatting denormalizza, ma, a conti fatti, il risparmio di spazio è insignificante rispetto alla mole di dati delle tabelle dei fatti.
  • 7. Le chiavi artificiali (1) • Inizialmente, parlando della struttura delle dimensioni, si è affermato che tutte le chiavi del Data Warehouse siano chiavi numeriche prive di significato logico di business. Questo è un punto importante. Dalla chiave numerica artificiale non si deve desumere nulla sul contenuto del record corrispondente. • L’utilizzo delle chiavi artificiali (con i suoi sinonimi: artificial key, surrogate key, technical key, synthetic key,ecc.) è sempre stato un argomento oggetto di discussioni accese. Vediamo di motivare questa scelta mostrando i problemi che possono sorgere nell’utilizzare le chiavi o codici di produzione. 1. Prima o poi i sistemi esterni decideranno di riutilizzare codici già utilizzati in passato. La chiave artificiale protegge il data warehouse dalle modifiche operazionali che avvengono nei sistemi alimentanti. 2. Nel mondo economico l’acquisizione di aziende competitor è un processo abbastanza frequente. Provate a pensare alle possibili implicazioni se un’azienda utilizza come codice cliente un numero di 6 cifre, e l’azienda acquisita, di cui dobbiamo integrare la dimensione clienti utilizza un codice alfanumerico di 12 cfre. Modificare una sola tabella dimensionale è ben diverso da modificare tutte le tabelle dei fatti che hanno quel codice.
  • 8. Le chiavi artificiali (2) 3. E’ richiesto di tenere tracce di un cambiamento di alcuni campi della dimensione cliente senza modificare il codice di produzione. L’utilizzo delle chiavi artificiali permette questo con la gestione delle SCD (Slowly Changing Dimension). 4. I codici operazionali sono spesso codici alfanumerici di parecchi bytes. Una chiave artificiale numerica di poche cifre è sufficiente a coprire la cardinalità massima di una dimensione. Questo implica tabelle dei fatti più piccole, indici delle tabelle dei fatti più piccoli e un numero maggiore di righe per ogni blocco dati di database. Queste implicazioni significano un consistente incremento delle performance di accesso ai dati. 5. La chiave artificiale permette di identificare le situazioni in cui non esiste un codice operazionale. In ogni tabella dimensionale ci sarà sempre una riga (diciamo con chiave artificiale 0) associata al codice “Non applicabile”. Pensate a una tabella delle vendite con presente il codice della promozione: se non c’è una promozione in atto, invece di esserci un codice null (che prima o poi darà sempre problemi nelle estrazioni) ci sarà una chiave numerica 0 con associato il codice “Nessuna promozione presente” nella tabella dimensionale. Qualunque tool di reportistica permetterà di selezionare facilmente queste situazioni. • Riprendiamo ora il discorso sulla gestione dinamica delle dimensioni di analisi, cioè il trattamento fisico delle Slowly Changing Dimension descritto nell’articolo del mese scorso.
  • 9. Slowly Changing Dimension (SCD) di tipo 1 (1) • Come sappiamo, l’esigenza di questo tipo è molto semplice: all’utente finale non interessa il fatto che è avvenuto un cambiamento La gestione dei cambiamenti di tipo 1 è quindi il semplice overwrite degli attibuti gestiti secondo questa tecnica. • Nella Figura 2 vediamo che successivi cambiamenti nella dimensione cliente non aumentano il numero di record della tabella (come faranno gli SCD2) ma semplicemente aggiornano il valore degli attributi.
  • 10. Slowly Changing Dimension (SCD) di tipo 1 (2) • Sull’utilizzo dei campi tecnici presenti in tabella, si darà una descrizione più dettagliata nel prossimo paragrafo. • Per applicare questa tecnica bisogna però essere certi che non si vuole tenere traccia dei cambiamenti, e del fatto, non trascurabile, che se sono presenti delle strutture di aggregazione che hanno già aggregato i dati a livello gerarchico superiore con i vecchi valori degli attributi, queste strutture devono essere tutte ricalcolate per aggiornarsi al dato corrente.
  • 11. Slowly Changing Dimension (SCD) di tipo 2 (1) • La gestione dei cambiamenti negli attributi di una dimensione di tipo 2, ci permette di tracciare in modo preciso ogni cambiamento nel momento stesso in cui avviene e di associarlo correttamente ai fatti presenti nella fact table. • Nella Figura 3 vediamo un esempio di come funziona il meccanismo SCD2, partendo da una situazione iniziale e gestendo progressivamente due cambiamenti dimensionali di due attributi della dimensione Cliente.
  • 12. Slowly Changing Dimension (SCD) di tipo 2 (2) • In essa possiamo notare la presenza di alcuni campi tecnici ( in rosso) che forniscono un notevole valore aggiunto ai cambiamenti che avvengono nella dimensione Cliente: senza di essi, sarebbe complicato, se non impossibile, identificare quale è la situazione corrente o quando è avvenuto il cambiamento. • Vediamoli in dettaglio, perché non possono mancare in un corretto design di ogni dimension table che contiene attributi gestiti con la tecnica SCD2. • Data (key) del cambiamento: deve essere espressa come chiave artificiale per permettere il join con la dimensione tempo, ricca di attributi facilmente filtrabili. • Inizio validità: Timestamp (cioè anno,mese,giorno,ore,minuti,secondi) iniziale del cambiamento dimensionale. • Fine validità: Timestamp (cioè anno,mese,giorno,ore,minuti,secondi) finale del cambiamento dimensionale. Questa data e la precedente identificano il periodo di validità del cambiamento, cioè di una certa composizione del valore degli attributi. Queste date non devoo mai essere nulle, e devono essere inizializzate a una data fittizia del passato (per es. 1-gen-1800) e a una fittizia nel futuro (per es. 31-dic-3000). Il processo di caricamento deve fare in modo che lo spazio temporale sia suddiviso con continuità senza mai sovrapposizioni.
  • 13. Slowly Changing Dimension (SCD) di tipo 2 (3) • Causa del cambiamento: deve indicare il campo il cui valore ha subito un cambiamento. Se i campi sono più di uno, poiché non è possibile inserire una relazione 1:N, si consiglia di indicare i nomi dei campi separati da virgola. Alcuni designer associano una tabella con le righe di ogni cambiamento e una chiave di gruppo come link con la dimensione: questo però complica notevolmente la gestione della SCD. • Flag di ultimo: è un banale flag 0/1 che indica quale è il record con l’ultima modifica, cioè quello corrente. • Ordinale del cambiamento: è solo un progressivo numerico. Può essere utile per identificare per esempio, quali sono i clienti che non hanno mai avuto dei cambiamenti o quelli che variano di più. • Descriviamo ora il processo indicato in tabella: • Il sistema alimentante invia le informazioni di un nuovo cliente di nome Rossi. • Il processo di caricamento inserisce una nuova riga a cui associa una nuova chiave artificiale (in genere presa da una sequenza in continuo incremento) e inserisce i dati di Rossi con in più le informazioni tecniche per la sua gestione.
  • 14. Slowly Changing Dimension (SCD) di tipo 2 (4) • Dopo qualche mese il sistema alimentante cambia le informazioni di Rossi per indicare che da studente è diventato impiegato. • Il processo di caricamento deve registrare il cambiamento, quindi crea una nuova chiave artificiale, e inserisce una nuova riga per il cliente Rossi. Registra il giorno corrente come data di inizio validità, e il campo (o i campi) che sono stati oggetto del cambiamento. Incrementa l’ordinale del cambiamento e setta a 1 il flag di ultimo. Quindi deve modificare il record precedente di Rossi per chiudere la sua data di fine validità a ieri e modificare il flag di ultimo a 0. • A questo punto il processo proseguirà allo stesso modo per tutti i cambiamenti futuri. Come possiamo vedere dalla situazione finale dei record, se dobbiamo estrarre tutti i finanziamenti stipulati dal Signor Rossi, il vincolo Nome cliente = ‘Rossi’ estrarrà tutte le chiavi artificiali dalla dimension table e li collegherà a tutti quelli presenti nella fact table. Se aggiungiamo però anche il vincolo Stato civile = ‘celibe’, saranno estratti solo i fatti relativi al periodo in cui il Signor Rossi era celibe. • Questa capacità di associare i fatti alla particolare situazione anagrafica che è attiva in un certo momento rende chiaro il motivo per cui la tecnica SCD2 è anche definita Partitioning History.
  • 15. Slowly Changing Dimension (SCD) di tipo 3 (1) • La gestione dei cambiamenti negli attributi di una dimensione di tipo 3, ci permette di memorizzare due situazioni storiche, quella corrente e quella precedente al fine di permettere agli analisti di fare confronti fra le due realtà. • Nella Figura 4 vediamo un esempio di come funziona il meccanismo SCD3, notando subito l’ intervento strutturale necessario alla sua gestione: ogni attributo deve essere duplicato. • Questo significa che la tabella dimensionale deve avere una colonna con il valore corrente e una colonna con il valore precedente. (i campi tecnici non sono indicati ma sono ovviamente presenti)
  • 16. Slowly Changing Dimension (SCD) di tipo 3 (2) • Descriviamo ora il processo indicato in figura: • Il sistema alimentante invia le informazioni di un nuovo cliente di nome Rossi. Il processo di caricamento inserisce una nuova riga cui associa una chiave artificiale e inserisce i dati di Rossi duplicando, nei campi di professione e stato civile precedente, gli stessi valori (oppure li lascia nulli). • Dopo qualche mese il sistema alimentante cambia le informazioni di Rossi per indicare che da studente è diventato impiegato. Il processo di caricamento deve copiare il valore del campo professione nel campo professione precedente e sovrascrivere il nuovo valore nel campo professione. • A questo punto il processo proseguirà con la coppia di sovrascritture per tutti i cambiamenti futuri e per ogni attributo coinvolto.
  • 17. Slowly Changing Dimension di tipo ibrido • Nulla vieta di combinare le gestioni precedenti all’interno della stessa dimensione. Non dimentichiamo, che il trattamento delle SCD è specifico del singolo attributo (consiglio di avere sempre una tabella di metadati che conservi questa preziosa informazione). • Ogni attributo sarà gestito in modo univoco, ma ogni attributo avrà le sue esigenze. Il lato negativo delle scelte ibride è che sono particolarmente complesse da implementare, quindi conviene siano motivate da forti esigenze di business.
  • 18. Conclusioni • Analizzare,implementare, testare e infine utilizzare le dimensioni di analisi non è un compito semplice. Esse non sono, come alcuni tendono a pensare delle semplici tabelle anagrafiche. • Sono oggetti che devono essere creati e alimentati avendo in mente una precisa missione: permettere l’accesso ai dati con la massima precisione e la massima velocità. • Utilizzare tabelle a struttura flat, associare chiavi artificiali come link con le tabelle dei fatti, costruire indici bitmap e foreign key dai fatti alle dimensioni vi permetterà di raggiungere il vostro obiettivo.