Tag

, , , , , , , , , , , , , , , , , , , ,

Un cliente mi ha ingaggiato perché gli facessi delle analisi di media complessità su dei dati che, senza nessuna procedura di snellimento, pesano complessivamente una decina di gb. Non un compito particolarmente difficile, se uno avesse a che fare con esseri più o meno appartenenti alla categoria homo sapiens sapiens.

Al primo tentativo di accesso ai dati mi arrivano due file, di cui uno senza estensione e uno che, dopo qualche tentativo, un mio amico più esperto di me riesce ad identificare come una copia di back-up fatta da MS SQL server – che io ovviamente non ho a disposizione, ci manca altro che litigare con un altro aggeggio Microsoft. Arriva una seconda trasmissione dei dati: sempre una decina di gb, stavolta sparsi su alcuni file csv, il fatto di aver separato i dati segue una logica a me oscura. Mi metto all’opera per cercare di estrarre le informazioni utili (sorvoliamo su quelle inutili, basti specificare che in ogni riga della tabella è indicato il codice paese ed il nome del paese, il che già evidenzia una ridondanza, peraltro ripetuta per regioni, distretti e villaggi, ma assume toni surreali se si tiene conto che il paese considerato nell’indagine è uno).

Ad un certo punto salta fuori un problema: la suddivisione della tabella non funziona perché il separatore di campo, la virgola, è presente anche all’interno del campo medesimo, quindi alcune righe hanno una colonna in più di altre e, soprattutto, da un certo punto in avanti tutti i valori spostati di uno spazio verso destra. Noto che questo si verifica con diversi valori: non avendo modo di verificare manualmente quante tuple presentano il problema e, soprattutto, quanti siano i valori sbagliati, sottometto al cliente una dettagliata descrizione della faccenda, chiedendogli di ripetere l’esportazione del file csv utilizzando il punto e virgola come separatore di campo.

Dopo un paio di giorni mi arrivano file per circa 60 mb ad essere generosi, che rappresentano non si capisce bene quale sottoinsieme del data base originario, estratto come e su quali basi. Aggiungo che detti file hanno un problema analogo, ma con un campo diverso che tuttavia sposta alcune righe a destra di quattro celle. Faccio di nuovo presente la situazione al cliente, specificando che mi sembrava di aver chiesto una cosa tutto sommato gestibile – ripetere un’esportazione utilizzando un carattere diverso per separare i campi.

Dopo due giorni arrivano di nuovo i file, con il separatore modificato. Apro le prime 50 righe ed il problema è sempre là: in alcuni campi è contenuto il separatore (solo che il carattere è diventato un punto e virgola, peraltro non presente nella precedente versione del documento), quindi la suddivisione della tabella è ancora sballata ed i dati sono inutilizzabili. Faccio presente che i file mi sono stati mandati tutti in doppia copia, uno con la virgola come separatore di campo, uno col punto e virgola. Peccato che poi in entrambi i casi nella riga di intestazione i campi siano separati dal punto e virgola, il che credo dia un’idea della cura con cui la faccenda viene gestita.

Sollevo nuovamente il problema al cliente che replica che riferirà tutto ai suoi colleghi che lavorano sul data base, ma non vuole che nel frattempo questo inconveniente rallenti il progetto. Ora, qualcuno glielo spiega che, altro che rallentare, finché non è in grado di produrre i dati il progetto non parte proprio?

Chiudo dicendo che in più di una settimana io non ho ancora visto uno schema ER né qualsivoglia documentazione che mi descriva questo data base come diavolo sia fatto. Il mio sospetto è che lo schema ER non esista e che il data base consista semplicemente di una mega tabella in cui è inserito tutto, con buona pace dell’efficienza e della funzionalità. Ma non ho le prove. E se va avanti così non le avrò mai.

Annunci