L'importanza di utilizzare i giusti strumenti nel mondo del lavoro

Articolo del 03/04/2023 - Redatto da Di Muro Francesco

L'importanza di conoscere e utilizzare gli strumenti adatti quando si svolge un lavoro è fondamentale per garantirne la correttezza del risultato e facilitarne l'esecuzione per chi lo svolge.

Prendiamo in esempio l'elaborazione di un file di testo;
nel caso in cui il file di testo contenga poche informazioni, si può optare per processarlo manualmente, estrapolando, riformattando e modificando le informazioni necessarie per produrre il risultato desiderato.

Ma cosa succede quando abbiamo un file con tante informazioni articolate, per il quale impiegheremmo molto più tempo per riformattarlo?
Per questo, è importante conoscere i giusti mezzi da utilizzare in base al risultato che stiamo cercando.

Parliamo di un esempio pratico.

Qualche giorno fa, un cliente ha avuto un malfunzionamento su dei servizi responsabili della storicizzazione degli allarmi e degli eventi del proprio sistema di monitoraggio, i quali sono fondamentali per l'analisi delle anomalie e per tenere traccia dei vari eventi occorsi a sistema.
Fortunatamente, la registrazione degli allarmi e degli eventi su file di testo era attiva, consentendo quindi al sistema di registrare ciò che stesse accadendo durante l'anomalia, la quale ha avuto una durata di circa tre giorni.
Affinché questi dati potessero essere presenti all'interno del database degli allarmi e degli eventi, è stato necessario estrapolarne le informazioni utili e formattarle secondo determinate strutture per far sì che il risultato prodotto (un altro file) potesse essere riconosciuto dal servizio responsabile dell'importazione del suddetto file di output.

File di testo prima della formattazione

Quali strumenti sono stati utilizzati affinché questo processo potesse essere quanto più semplice, veloce, e soprattutto potesse produrre un risultato ottimale?

In primis, quando si ha a che fare con grandi set di dati, in ogni ambito è importante applicare un processo grazie al quale vengono eliminati i dati inutili, riducendo quindi la dimensione del set di dati stesso e permettendoci di lavorare con dati "puliti": il data cleaning.

In questo specifico caso, il data cleaning (dall'inglese, "pulizia dei dati"), è stato applicato per rimuovere tutti quei dati (allarmi ed eventi) che non avevano utilità all'interno del nostro dataset.
Esistono una serie di strumenti per applicare il data cleaning, ognuno utilizzato in base allo scenario in cui ci si trova.

Dovendo lavorare con un file di testo, in cui ogni riga corrisponde a un record con una struttura ben definita, ho pensato di utilizzare uno strumento potente quanto spaventoso per l'apparente sintassi criptica: le espressioni regolari.

Grazie alle RegEx, ho avuto modo di rimuovere tutti quei dati non critici per un report di audit trail o un report di allarmi storici, avendo così un dataset più piccolo e "pulito" con il quale lavorare.

Data cleaning con le espressioni regolari

Utilizzando una funzionalità di Notepad++, un editor di file con funzionalità avanzate rispetto a Notepad (editor di file di testo di default di Windows), ho potuto rimuovere tutte le righe vuote del file (le righe che contenevano dati inutili) in un solo click, riducendo la quantità di righe totali da 1011 a 13.

File di testo dopo la prima espressione regolare per il data cleaning

Data Cleaning del file di testo in dettaglio

Rimozione dei trailing spaces alla fine di ogni riga

Sostituzione di almeno due spazi in un'unica tab

Sostituzione di almeno due spazi in un'unica tab per il timestamp

Formattazione del timestamp

Evidenziazione degli allarmi riconosciuti, catturando le informazioni di chi ha riconosciuto l'allarme e la tag di allarme

Una volta effettuato il data cleaning nel file di testo, ho applicato un ulteriore principio presente in molti ambienti della programmazione (specialmente nel Data Science), ovvero il data formatting, la pratica che definisce la struttura dei dati in un database o altro "contenitore", all'interno del quale è possibile descrivere i dati in maniera più dettagliata.

Anche per applicare il data formatting esistono una serie di strumenti, e in questo caso ho voluto utilizzare uno degli strumenti più utilizzati per dare una forma ai dati, ovvero Microsoft Excel.

Grazie alla struttura table-like dei fogli di lavoro, ho potuto visualizzare le informazioni da processare in maniera più strutturata e pulita, andando a definire delle procedure grazie alle quali ho potuto procedere con l'elaborazione del file.

Data formatting in Microsoft Excel

Dopo una rapida suddivisione degli allarmi dagli eventi, ho avuto modo di ordinare le informazioni necessarie secondo le strutture richieste dal servizio responsabile dell'importazione dei files all'interno del database degli allarmi e degli eventi, generando così due file in formato CSV (uno per gli allarmi, uno per gli eventi).

File formattato in Microsoft Excel

Essendo il formato CSV dipendente dalle impostazioni aggiuntive dell'Area Geografica impostata nel proprio OS (almeno per Windows), ho deciso di trasformare il file CSV in un file XML, la quale struttura rimane sempre human-readable, ma che non presenta regole strette come nel caso del formato CSV.

File CSV degli Allarmi

File XML degli Allarmi

Per questo task, ho deciso di utilizzare il linguaggio di programmazione Python, grazie alla quale semplice sintassi e alla moltitudine di metodi presenti per ogni tipo di dato, in poche righe di codice ho potuto trasformare un file CSV in un file XML.

Script Python per la conversione del file da CSV a XML

Una volta completato questo processo, ho importato il file XML all'interno del database degli allarmi e degli eventi tramite dei servizi dedicati, ripristinando i dati non storicizzati e permettendo al cliente di generare i report necessari per le proprie finalità aziendali.

Report degli Allarmi Storici contenente i dati importati