Nozioni di base sui sistemi Extract Transform Load.
Slide presentate al corso post laurea per Data Scientist tenutosi a Marzo 2019 presso Fidia Trento.
3. ETL
❏ Estrarre i dati dalla sorgente e caricarli nel datawarehouse – alla fine è una
sofisticata copia di dati da una base di dati ad un’altra
❏ I dati sono estratti da sistemi OLTP, trasformati per conformarsi allo schema
del datawarehouse e caricati nel database del datawarehouse
❏ Molti datawarehouse incorporano dati da sistemi non relazionali come file di
testo, fogli di calcolo e sistemi legacy; questi dati necessitano di
trasformazioni
❏ Quanto si progetta un ETL per una datawarehouse è bene pensarlo come un
processo, non una semplice implementazione tecnica
4. ETL
❏ ETL è spesso una combinazione di tecnologia e processo ed impegna una
parte rilevante nello sviluppo di un datawarehouse. Servono competenze da
analista, progettista di database e sviluppatore
❏ La progettazione di un processo ETL non è one-shot. Va rivisita nel tempo
mano a mano che nuovo dati vengono richiesti o che variano le fonti
❏ Siccome un sistema ETL è una parte viva e importante di un datawarehouse
esso deve essere
– Automatizzato – Ben documentato – Facilmente modificabile
5. Database intermedio
❏ Le operazioni di ETL andrebbero eseguite su un apposito database separato
da quello OLTP e da quello OLAP
❏ In questo modo si crea un confine fisico oltre che logico tra sorgenti e
datawarehouse
❏ Consente di minimizzare l’impatto sulle performance dei lunghi processi batch
ETL
6. Estrazione
❏ L’integrazione di tutte le fonti presenti è la cosa veramente difficile di un
progetto di datawarehouse
❏ I dati sono estratti da fonti eterogenee
❏ Ogni sorgente ha le proprie caratteristiche peculiari che necessitano di essere
gestite singolarmente al fine di estrarre i dati efficacemente
7. Estrazione
❏ ETL deve integrare sistemi che differiscono per: DBMS - Operating Systems -
Hardware - Communication protocols
❏ E’ necessario avere una mappatura logica prima di lanciarsi nella
implementazione
❏ La mappa logica deve aiutare a collegare concettualmente la prima sorgente
dei dati con l’ultima destinazione nel datawarehouse
8. Estrazione
❏ Il documento che descrive la mappa logica è l’elemento critico per la
pianificazione di un processo ETL
❏ L’obiettivo principale del documento è di dare allo sviluppatore un riferimento
chiaro e non ambiguo sul corso delle azioni coinvolte nella trasformazione
❏ Per ciascun sorgente->destinazione, il documento contiene la descrizione
trasformazione da applicare, definita con il livello di dettaglio sufficiente
Sorgente
Nome Tabella
Nome Colonna
Tipo di dato
Destinazione
Nome Tabella
Nome Colonna
Tipo di dato
Trasformazione
da applicare
9. Estrazione - Analisi della sorgente
L’analisi della sorgente,per ciascuna sorgente, è solitamente divisa in 2 fasi :
❏ La perlustrazione dei dati
❏ La rilevazione delle anomalie sui dati
10. Estrazione - Perlustrazione dei dati
❏ E’ molto importante che il datawarehouse che progettiamo contenga dati puliti
e coesi
❏ Con questo obiettivo in testa, sapendo quindi come deve essere la
destinazione, si può cominciare a perlustrare la sorgente
11. Estrazione - Rilevazione anomalie
Capire il contenuto della base dei dati è determinante per pianificare l’estrazione
Esempi
- Valori NULL. Un valore NULL non gestito può inficiare un progetto intero. I
NULL sono massimamente un rischio quando sono in chiavi straniere, fare
una join su colonne con NULL rischia di fare perdere dati. Occorre individuare
tutti i NULL foreign, se ci sono, allora occorre usare outer joins
- Date in colonne non data. Le date sono un tipo di dato che presenta vari
formati possibili, questa condizione presenta elementi di attenzione.
Fortunatamente la maggior parte dei DBMS gestisce gran parte dei formati.
12. Estrazione - Caricamento iniziale
❏ Durante il caricamento iniziale non importa rilevare variazioni dei dati poichè
ci apprestiamo a estrarre un intero database da una certa data in poi
❏ Successivamente la possibilità di rilevare variazione dei dati diviene
importante
❏ A regime il caricamento diventa incrementale
13. Estrazione - Rilevamento dei cambiamenti
❏ Quando si estrae da un DB ci si può affidare a colonne di audit che
memorizzano data e ora del cambiamento su una certa riga
❏ Diversamente occorre individuare se vi sono colonne che siano buoni
‘stimatori’ della variazione
14. Estrazione - Rilevamento dei cambiamenti
❏ Un metodo alternativo di rilevamento dei cambiamenti
- Mantenere una copia della precedente estrazione in una area di stage
- Durante la successiva esecuzione il processo prende tutte le tabelle sorgente
nell’area di stage e fa il confronto con i dati mantenuti
- Solo i delta sono mandati in trasformazione
- Non è un metodo particolarmente efficiente ma è assai affidabile
15. Trasformazione
❏ La fase principale di aggiunta di valore in un processo ETL
❏ Mixa i dati per l’utilizzo vero e proprio
❏ Viene eseguita nell’area di stage
16. Trasformazione - Data Quality
❏ Correttezza
❏ Non ambiguità
❏ Consistenza
❏ Completezza
Il controllo di qualità avviene solitamente dopo l’estrazione e dopo la staging area
in trasformazione
17. Trasformazione - Data quality
❏ Rilevamento delle anomalie
-Campionamento dei dati. Es. conteggio delle righe per una colonna
‘dipartimento’
❏ Correzione di anomalie di campo
- Valori NULL in colonne richieste
- Valori numerici fuori range minmax
- Campi con lunghezze troppo lunghe-corte
- Appartenenza ad un set
18. Trasformazione - Data quality
Compromesso tra velocità dell’ETL e precisione dei quality
check
19. Trasformazione - Data quality
❏ Anomalie di struttura
- Chiave primaria e chiave straniera ok
- Integrità referenziale
❏ Anomalie di regole di dominio
- Regole di dominio
- Check logici
20. Trasformazione - Data quality
Quality check Stage area
Quality check
confirmation
Blocking
errors
Stop
Load
yes
no
21. Caricamento - Dimensioni
❏ Set minimo di componenti
❏ Chiave primaria è una chiave surrogata
❏ La chiave surrogata è di completo dominio del datawarehouse, nessun altro
interviene
❏ Contiene uno o più campi che compongono la chiave primaria naturale della
dimensione
❏ Denormalizzate sugli attributi - trade off
23. Caricamento - Responsabilità
❏ Gestione delle slowly changing dimensions
❏ Generazione delle chiavi surrogate
❏ Finalizzazione delle tabelle e messa online del risultato definitivo
28. Caricamento - Fact Table
❏ Facts
La tabella dei fatti contiene le misure di interesse. La relazione tra tabella dei
fatti e misurazione è triviale.
Se una misurazione esiste allora può essere modellata come riga di una
tabella dei fatti. Se una riga della tabella dei fatti esiste, allora essa è una
misurazione
29. Caricamento - Fact Table - Chiave
Quando si costruisce una fact table il passo finale dell’ ETL è la conversione delle
chiavi naturali nelle nuove chiavi surrogate
Esiste una chiave surrogata per ogni dimensione
Le tabelle di lookup dovrebbero risiedere tutte in memoria, per rendere il match
veloce. E’ una delle ragioni per cui tenere le tabelle di lookup separate dalle
originale tabelle delle dimensioni
31. Caricamento - Fact table
Gestione degli indici
- Influiscono negativamente in fase di load
- Occorrerebbe elminanarli prima del load iniziale
- Rebuild
Partizioni
- Permettono a una tabella (e ai suoi indici) di essere fisicamente separata in
chunks per ottimiazzre le qry
- Il metodo più comune di partizionamento della tabella dei fatti è per la chiave
date
32. Caricamento - Rollaback log
- Il log di rollback (redo) è usato per i sistemi transazionali. in un DWH è inutile
e rallenta il funzionamento
tutti i dati sono inseriti da un solo processo , l’ETL
i dati sono caricati in bulk
i dati possono essere facilmente ricaricati se qualcosa va storto