Gestire i file con campi a lunghezza fissa : Parte 1 - Introduzione

Gestire le operazioni di importazione di file di dati con campi a lunghezza fissa con la libreria gratuita e opensource FileHelpers.

il
Sviluppatore / Ingegnere informatico / Funzionario, Collaboratore di IProgrammatori

Oggi abbiamo molti modi per trasmettere a distanza delle informazioni in modo efficiente ed efficace, ma i nuovi formati strutturati per i dati, come XML, non brillano certamente per la sintesi: occupano molto spazio perché sono molto “verbosi” e, di conseguenza, quando i dati sono veramente tanti, la loro trasmissione è tutt’altro che efficiente.

Una soluzione possibile è quella di utilizzare i file CSV, ma dobbiamo gestire i dati con attenzione per evitare di interpretarli nel modo sbagliato. Il problema più importante di cui soffrono i file CSV è l’esistenza di formati nazionali diversi: per esempio può esserci un carattere separatore diverso (soprattutto virgola o punto e virgola), oppure può cambiare la formattazione dei numeri e delle date (chi non si è mai scontrato con il problema della data in formato americano?). Si può fare in modo di ovviare a questi problemi, ma l’errore è sempre dietro l’angolo. Un altro modo per trasferire dati in grande quantità, ancora molto utilizzato anche se sembra forse un po' anacronistico, è quello dei “file di testo con campi a lunghezza fissa”. Cerchiamo di capire perché.

Ambiti di applicazione

Un “file di testo con campi a lunghezza fissa” è un modo più compatto per trasmettere i dati e quindi riduce il tempo di trasmissione e lo spazio di archiviazione. È un formato meno flessibile, ma che ci dà maggiore sicurezza contro gli errori di interpretazione. Il campo di applicazione è quasi sempre quello della trasmissione massiva di dati tra enti o aziende diversi, per esempio in ambito bancario oppure dagli enti pubblici locali verso gli enti amministrativi e previdenziali centrali degli Stati.

È un formato che si presta molto anche a una compressione spinta, perché contiene spesso degli schemi di dati molto simili, oppure aree contenenti molti spazi (si pensi per esempio ai campi dedicati al cognome e nome, i cui dati possono avere lunghezze diverse e che vengono completati con spazi).

Tutto questo facilita una trasmissione veloce e una ridotta occupazione di spazio su disco per l'archiviazione.

Procedure ETL

Un altro importante campo di applicazione, in senso generale, è quello che viene chiamato ETL: l'acronimo significa Extract, Transform, Load, cioè le tre fasi della procedura che consiste in estrazione, trasformazione dei dati e caricamento in un database, solitamente un DWH = DataWareHouse, cioè un "magazzino dati". Ma andiamo con ordine.

Un DSS è un sistema informativo a supporto delle decisioni direzionali e può consistere in un applicativo basato su OLAP (On-Line Analytical Processing) che a sua volta è strutturato in modo da poter gestire i cosiddetti iper-cubi, cioè strutture multidimensionali in grado di archiviare e recuperare moltissimi dati correlati. Attraverso la tecnologia OLAP è possibile definire, elaborare e distribuire reportistica di vario genere, in grado di fornire informazioni ai vertici di una azienda e ai vari responsabili, ciascuno per la propria parte di competenza. Allo stesso modo è possibile implementare dei cruscotti, formati spesso da elementi grafici (istogrammi, diagrammi a barre, "torte", linee di tendenza, semafori ecc.) che rappresentano la situazione aggiornata di indicatori-chiave predefiniti. Un indicatore-chiave per il settore manutenzioni, per esempio, potrebbe rappresentare il tasso di guasti di una linea di produzione: se si accende il semaforo giallo, c'è qualche problema sulla linea che deve essere risolto prima che il semaforo diventi rosso, indicando che la linea si è fermata. Un indicatore-chiave per il direttore del settore amministrativo potrebbe essere rappresentato dal trend di vendita che, in fase di calo, potrebbe far accendere un semaforo giallo o rosso per indicare che qualcosa non sta andando per il verso giusto.

Per avere un sistema davvero efficace è necessario che i dati siano periodicamente aggiornati, puliti da eventuali errori e "normalizzati" secondo una struttura che solitamente è diversa da quella di un database relazionale. È qui che entrano in gioco le procedure ETL:

  • la fase di Estrazione (E = Extraction) consiste nell'esportazione da tutte le fonti dati dell'insieme di dati e archivi necessari al DataWareHouse, in un formato di scambio concordato, solitamente basato su dei "tracciati record";
  • la fase di Trasformazione (T = Transform) consiste nel trasformare il formato di scambio secondo il tracciato di esportazione verso il formato previsto dal DataWareHouse, con una fase di verifica e di correzione degli errori (possiamo chiamarla "fase di pulizia"), perché dati errati o incompleti possono portare a reportistica e cruscotti inaffidabili;
  • la fase di caricamento (L = Load) è l'effettivo caricamento dei dati puliti nel DataWareHouse. Dopo questa fase è possibile rielaborare i cubi OLAP e aggiornare report e cruscotti.

Conclusione

Dopo queste premesse, nella seconda parte vedremo un esempio di come è fatto un tipico "tracciato record" contenente alcuni dati anagrafici e magari qualche informazione in più, giusto per arricchire la gamma di tipi di dati utilizzati. Infine, nella terza e ultima parte, vedremo come installare la libreria FileHelpers e come utilizzarla con un progetto in C#.