La società attuale grazie soprattutto all’intervento dei computer si è guadagnate il nome di società dei dati e le aziende che vogliono essere più al passo coi tempi e con la concorrenza dichiarano di avere assunto un approccio data-driven.

Avere raccolto dei dati però non è una condizione sufficiente a poterli analizzare per estrarne informazioni e indicazioni rilevanti per il business. È necessario che i dati siano coerenti, formattati, aggiornati e ripuliti da valori aberranti. Visti i costi dell’infrastruttura, è anche necessario che i dati raccolti siano rilevanti, evitando di accumulare dati spazzatura che possono solo confondere le idee e far lievitare i costi.

Di tutti questi aspetti, e molti altri, si occupa l’ingegneria dei dati, o data engineering, quell’insieme di tecniche che si occupa della produzione di dataset, intendendo in generale quei bacini di dati su cui si agisce mediante tecniche di analisi di Intelligenza Artificiale o con strumenti per Big Data.

Come ogni settore, anche la Data Engineering ha i propri strumenti, i propri fondamenti concettuali nonché le proprie tecniche: tutto quanto, ovviamente, in continua evoluzione.  Alcuni di questi strumenti saranno specifici dell’ambiente, altri saranno in condivisione con i tipici framework per Data Science e Big Data.

Data engineering: cos’è e a cosa serve

La Data Engineering è un settore indispensabile perché permette a tutti gli specialisti dell’analisi dati e data scientist, in generale, di lavorare  mettendo a loro disposizione la materia prima – i dati – predisposti in dataset utili e ben organizzati.

Ma perché è così complicato gestire la produzione dei dataset in questo periodo?  Quali sono gli elementi degli scenari attuali che rendono difficile l’accesso ai dati?

Di sicuro, i dati in  questa fase storica non mancano e sono contraddistinti da una serie di aspetti:

  • velocità di produzione;
  • distribuzione tramite vari canali e mezzi;
  • pubblicazione da parte di fonti eterogenee;
  • varietà di formati;
  • provenienza distribuita da paesi lontani sia culturalmente sia a livello linguistico.

Data engineering e social network

Un esempio di tutto ciò – tanto per parlare di contesti ampiamente noti sia a professionisti sia a utenti comuni – è quello dei social network.  In un social network, abbiamo una produzione velocissima di dati soprattutto perché sono strumenti utilizzati da una base di utenza estremamente ampia e variegata. Il loro utilizzo è fondato non solo su applicazioni web ma anche su applicazioni mobile che grazie alla connettività distribuita portano ad un continuo upload di dati da parte di utenti anche lontani da case ed uffici.

I social media hanno inoltre una varietà di  formati dei contenuti estremamente ampia permettendo un caricamento promiscuo di testo, video, immagini e altri contenuti multimediali che rendono pertanto difficilmente prevedibile la struttura dei dati da memorizzare.

Si tratta inoltre di strumenti utilizzati contemporaneamente da utenti provenienti da tutto il mondo quindi connotati da un’utenza praticamente globale.

Ecco, immaginiamo un’applicazione che si occupi di analizzare dati provenienti da un social network.  Per poterne catturare i contenuti e non perdere ciò che viene prodotto via via avrebbe bisogno di una tecnica non solo di analisi ma anche di preparazione del dataset che dovrebbe costantemente essere aggiornato con i nuovi contenuti.

Quindi, nel nostro esempio, il social network rappresenta la sorgente,  la nostra applicazione il consumatore, la  Data Engineering  è ciò che si frappone tra la sorgente e l’applicazione-consumatore dei dati.

Differenti tipi di dati da ingegnerizzare

In generale,  le tecniche di analisi dei dati sono per lo più  distinte in due grandi branche. Possiamo avere analisi:

  • batch ovvero su dati fermi collocati su un qualche strumento di storage;
  • in streaming dove si analizza non un dataset statico bensì un flusso continuo di dati.

Entrambe sono fondamentali e già nell’esempio del social network possiamo comprendere come  un’analisi sui dati in esso presenti possa essere condotta o su un dataset in cui sono stati immagazzinati contenuti catturati da questo (si tratterebbe in questo caso di analisi batch) oppure si potrebbe direttamente analizzare il flusso in streaming. Entrambi i casi permettono di estrarre informazioni utili, ma con implicazioni molto diverse.

Nel primo caso potremmo trarre informazioni fotografando una determinata circostanza, uno specifico evento o un particolare periodo.  Per esempio, se volessimo analizzare i messaggi pubblicati su un social network nelle due settimane precedenti un evento molto atteso (un concerto, il lancio di un prodotto, un annuncio di qualcosa) potremmo ricavarne dei modelli applicabili in circostanze simili in futuro.

Altrimenti, potrebbe essere utile un monitoraggio di dati in tempo reale su uno streaming sul social network. In questo caso potremmo avere informazioni aggiuntive grazie al flusso “vivo” dei dati, come per esempio la velocità con cui vengono prodotti  o altre dinamiche  relative all’interazione tra utenti.

Cosa fa un Data Engineer?

Trovare dati quindi al giorno d’oggi non è assolutamente difficile anzi è proprio la loro abbondanza, a volte, a complicare il lavoro. Il Data Engineer è quella figura non solo capace di trovare dati ma anche di metterli a disposizione dell’azienda creando da sorgenti, spesso piuttosto confuse e disordinate, dataset in formati comuni, utilizzabili e comodi da analizzare per i data scientist.

È un lavoro particolarmente variegato. Infatti, il Data Engineer deve essere in grado di:

  • recuperare dati dalle varie fonti.  Si tratterà spesso di sorgenti in rete i cui contenuti saranno facilmente scaricabili (sempre rispettando i diritti d’autore e permessi dei provider),  a volte saranno sistemi che offrono delle  API per il recupero dei dati,  in molti altri casi consisteranno in applicazioni legacy,  database piuttosto datati,  dispositivi elettronici con dati imprigionati all’interno  o applicazioni fuori rete chiuse in intranet aziendali. Ogni caso, come si può immaginare, andrà affrontato singolarmente;
  • pulire i dati. Con questa espressione, si intende fornire i dati di una prima organizzazione e sistemazione dei formati interni in modo da renderli più facilmente trattabili, evitando errori nel recupero delle informazioni o misunderstanding nella loro interpretazione;
  • convertire i dati puliti nei formati  più adatti all’analisi;
  • predisporre sistemi di storage per la conservazione dei dataset completati rispettando tutti i principi della sicurezza informatica;
  • mettere i dataset a disposizione dei data scientist mediante condivisione, permessi di accesso, API o altro ancora.

Competenze di un Data Engineer

Considerando la diversità  delle aree di lavoro appena elencate  si può immaginare quanto varie debbano essere  le competenze informatiche di un data engineer.

Nessuna delle seguenti sarà assolutamente obbligatoria  ma tutte costituiranno degli strumenti validissimi e molto utili per  questo genere di professionista:

  • capacità di programmare. I linguaggi più utili possono essere considerati quelli maggiormente diffusi nell’ambito della Data Science anche per poter avere degli strumenti in comune con chi poi analizzerà i dati: pensiamo a R e Python ma anche Java e Scala.  In questi linguaggi non sarà fondamentale saper fare qualsiasi cosa ma per lo più conoscere bene tutto ciò che serve in questa professione quindi come accedere ai dati attraverso la rete, interrogare database, eseguire operazioni di lettura/scrittura su/da file e tutto ciò che possa riguardare flussi di dati in ingresso e in uscita;
  • competenze sui database sia nell’ambito relazionale (in questo caso aggiungiamo il linguaggio SQL a quelli visti in precedenza) ma anche database NoSQL sempre più protagonisti nella moderna Informatica;
  • conoscenza dei formati di file, non solo quelli più generici dell’informatica come CSV, XML e JSON ma anche altri più specifici come Parquet, ORC e AVRO;
  • strumenti per la gestione di operazioni di ETL (Extract, Transform, Load) che tipicamente vengono utilizzati per operazioni di spostamenti di dati tra sorgenti, pulizia, conversioni e tanto altro di quello che abbiamo trattato sinora. In questo ambito possono essere utili framework molto utilizzati nei Big Data come, ad esempio, Apache Spark,  solo per fare un nome ma l’elenco potrebbe essere molto lungo;
  • strumenti tipici della Data Engineering come ciò che serve per l’organizzazione di data pipeline,  l’elemento centrale di un progetto di Data Engineering  in quanto rappresenta una sorta di “canale” in cui fluiscono i dati provenienti dalle sorgenti e destinati ai dataset. In questo ambito, la fanno da padrone non solo importanti librerie installabili all’interno dei propri sistemi come Apache Beam  ma soprattutto servizi in Cloud specifici offerti dai principali provider che permettono la creazione di pipeline con l’innesto di attività di elaborazione da parte del Data Engineer. Questi ultimi offrono indubbiamente la capacità di scalabilità tipica del Cloud, necessaria soprattutto quando si cerca di raccogliere dati in tempo reale, in momenti di particolare sovraccarico.

Conclusioni

Con questa breve introduzione alla materia, non si è certo voluto esaurire il discorso riguardante la Data Engineering  ma si è voluto provare a lasciar intuire perché al giorno d’oggi questa branca è considerata così importante e, soprattutto, qual è il motivo della sua centralità nelle moderne aziende.  Il viaggio è solo all’inizio infatti sarà necessario avventurarsi in scenari più tecnici ed in elementi architetturali come data lake e data pipeline.

Con la data Engineering qualsiasi tipo di sorgente dati potrà costituire una base utilizzabile da chi si occupa di analisi dati e sarà il passaggio che realmente renderà data-driven le aziende che l’abbracceranno.