ETL e dintorni

banner

Il lavoro del/la data scientist a volte assomiglia a quello di un archeologo: nell’era dei Big Data, dove abbiamo dati ovunque, bisogna “scavare” per trovare delle informazioni utili, strutturarle, trasformare opportunamente…

Con oggi cominciamo una nuova mini-serie dedicata all’ETL: il processo di profilare, modificare e predisporre i dati per le esigenze business è un lavoro da supereroi e affatto noioso: ce lo racconta Giuseppe Checchia!

Cosa vedrai

Intro

Nel mondo della progettazione software spesso si sente parlare di ETL e questo è particolarmente vero se si parla di data warehousing, integrazioni e strumenti di Business Intelligence.

ETL significa “Extract, Transform, Load”, cioè “Estrarre, Trasformare, Caricare” ed è un pattern per la gestione dei dati, utilissimo quando abbiamo a disposizione diverse fonti e vogliamo centralizzare, cioè avere tutto a disposizione in un unico posto.

“Che succede? Qualcosa non va con il monitor?” “Sto aspettando che finisca di caricare…”

Per la maggior parte degli addetti ai lavori, questo è stato probabilmente il primo impatto con la metodologia di integrazione ETL.

Spesso chi è perso in questo genere di attività viene preso in giro dai colleghi, perché non di rado l’operatore può dare l’impressione di fissare un monitor senza fare niente: dopo aver programmato, il primo run delle procedure viene fatto osservando lo stato degli step e i log generati dal sistema per assicurarsi che tutto stia filando liscio.

Questo ha contribuito a generare il luogo comune per cui questo genere di lavoro dovrebbe essere noioso, poco attraente e adatto solo a chi non ha motivazione.

Niente di più falso: ETL è alla base di moltissime tecnologie che usiamo e se programmi, probabilmente hai applicato questi procedimenti anche tu, senza rendertene conto.

Inoltre, un pattern è uno schema, una mappa, un’indicazione e non il territorio: puoi usare bene la mappa ed arrivare a destinazione, oppure no.

Per applicare ETL con successo, di norma è necessario conoscere moltissime cose e avere una grande esperienza, a causa delle numerose tecnologie con cui sarà necessario rapportarsi. Questa metodologia permette infatti di dividere concettualmente il lavoro in processi e step.

Ogni processo può essere eseguito da solo o parallelamente ad altri, mentre gli step sono necessariamente sequenziali: ogni step può servire per estrarre dati, trasformarli o caricarli su un supporto finale e ognuno di essi può relazionarsi con sistemi
operativi diversi, protocolli diversi, tecnologie agli antipodi.

Generalmente chi è in grado di gestire processi ETL complessi ha quindi competenze che vanno dalla gestione di database tradizionali a quelli che stanno dietro ai cosiddetti Big Data, dalla conoscenza dei protocolli di rete ad aspetti più vicini alla programmazione, dall’ottimizzazione delle reti, fino alla comprensione di cosa sia davvero un cloud distribuito e di come possa funzionare.

ETL (Extract Transform Load)

Introdotto già una cinquantina di anni fa a causa del crescente utilizzo dei database, ETL è diventato molto
velocemente uno standard di gestione delle informazioni.

Il processo fornisce le basi per l’analisi dei dati ed è parte integrante di nuove materie come il Machine Learning: permette di organizzare tutto in modo da soddisfare specifiche esigenze di business intelligence, come i report mensili, ma può anche affrontare analisi più avanzate che possono migliorare i processi di back-end o le esperienze degli utenti finali.

Il processo ETL, come abbiamo detto, comprende tre fasi: estrazione, trasformazione e caricamento (loading).

Siccome la maggior parte delle attività commerciali hanno una quantità enorme di dati sparsi e frammentati (in programmi che vengono utilizzati di rado, in cloud sotto il controllo di vecchi fornitori e in sistemi legacy), inutilizzabili così come sono, sorge il bisogno di un unico sistema in grado di raccogliere tutti questi dati, ripulirli e utilizzarli.

È come se avessimo bisogno di vari strumenti sparsi per la casa, e pochi clic ci potessero aiutare a raccogliere immediatamente questi strumenti, a ripulirli dalla ruggine e a utilizzarli nel modo più efficace possibile. Facile, no? No. :-D

Come funziona

Costruire un sistema ETL è impegnativo perché è pesantemente vincolato da realtà inevitabili. Il team deve scendere a patti con i requisiti di business, i formati e le carenze dei dati di origine, i sistemi legacy esistenti, le competenze del personale disponibile e i sempre mutevoli (e legittimi) bisogni degli utenti finali.

Come se non bastasse, spesso il budget è limitato e il tempo a disposizione troppo poco.

Idealmente, la progettazione del sistema ETL inizia con una delle sfide più difficili: circoscrivere i requisiti.

Con questo si intende trasformare una richiesta apparentemente semplice da parte del cliente, che può essere interno o esterno, in una struttura dati voluta.

Questa struttura deve poter essere popolata sulla base dei dati esistenti, affinché possano essere riciclati per ottenere il prodotto voluto (un report, un grafico, un lake o qualsiasi altra cosa).

Negli ultimi anni però, è stata aggiunta complessità: con le nuove direttive europee (GDPR and so on) e la crescente trasparenza richiesta a società e imprese, le organizzazioni sono costrette a fornire la prova che i numeri riportati sul prodotto siano accurati, completi, e non siano stati manomessi. Come è facile intuire, tale attività di certificazione tecnica dei dati ha impatti sulla progettazione e sul lavoro degli sviluppatori.

Chiaramente i dati relativi ad attività regolamentate, come le telecomunicazioni o la sanità, avrebbero dovuto
rispettare i requisiti normativi già da molto tempo, ma le cose stanno diventando complesse anche per tutti gli altri settori.

È importante anche il profiling dei dati: è un esame sistematico della qualità, della portata e del contesto di una
fonte di dati, che assicura che il dato sia buono.

Una fonte di dati molto pulita che è stata ben mantenuta prima di arrivare al data warehouse richiede una trasformazione minima e un intervento umano limitato, prima di essere ri-caricato nelle tabelle finali.

Una fonte di dati sporchi, invece, può richiedere: l’eliminazione totale di alcuni campi di input, la segnalazione di dati
mancanti, la generazione di chiavi speciali, la sostituzione automatica dei valori corrotti (o, nella peggiore delle ipotesi, un intervento manuale da record, che prosciuga forza lavoro e tempo).

All’estremo, il profiling potrebbe rivelare che i dati di origine sono intrinsecamente errati e non possono sostenere gli obiettivi del business: la magia non esiste.

La fase di profiling dei dati è fondamentale perché permette al team di pronosticare tempi e mole di lavoro, ma anche possibili impatti e deviazioni che, se ben gestite, consentono di gestire i problemi nella maniera opportuna senza portare il progetto al fallimento.

Chiunque voglia costruire un sistema ETL, dovrebbe occuparsi del profiling dei dati fin da subito, così da avere programmi di sviluppo realistici, capire le limitazioni nei dati di origine e la necessità di investire in modi migliori per ottenere i dati necessari.

Contatti

Iscriviti al TheRedCode.it Corner

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!