Statistiche o numerologia?

Vi è mai capitato di aver lavorato per giorni con numeri, tanti numeri, una vera e propria montagna di numeri e sognarveli anche la notte?

Ecco, direi che il mio stato, in questi giorni, si potrebbe riassumere proprio cosi!

Attualmente sto completando un componente di un software scritto in precedenza per un ente locale, nello specifico il software ha la funzione di "osservatorio" ovvero crea una serie di report per poter monitorare la situazione dell'ente stesso. In realtà ha anche altre funzioni, ma mettiamole da parte.

Metto come premessa che il software è scritto in php e gira su linux e, oltre a fare uso di MySQL per archiviare i propri dati, fa anche uso di unixODBC per connettersi alla loro base dati, ovvero ad un DB2 presente su un AS400. Detto questo, potete immaginare quanto sia divertente dover operare su una base dati di cui non si ha la minima informazione, come ad esempio l'organizzazione, la struttura, la logica con la quale è stata costruita, o, molto più banalmente, le chiavi di una tabella, o file fisico in questo caso. Un vero spasso!

Se io vi scrivessi la sigla MCCDC, MOIMP, MOHST e via dicendo, voi cosa capireste? Ecco, non stupitevi, sono sigle che indicano id, importi ed altro ancora: a momenti l'aramaico è più semplice :)

Il problema reale è stato che una parte dei report che ho dovuto implementare doveva sostituire una serie di report che loro software di gestione estreva già, anche se li estraeva male. E da qui il titolo: Statistiche o numerologia? Per ricostruire il report ho dovuto fare il reverse engineering (mi permettete di usare questa parolaccia vero?) delle estrazioni sbagliate senza avere nessuna documentazione della loro base dati con il risultato che ho tirato fuori un mostro: il file che descrive il report riprodotto è grande quasi 400kb è, per buona metà, contiene solo query sql con il record della query più lunga assegnato ad una di quasi 250 righe!!!!!

Il software di reportistica che ho scritto usa un file XML per descrivere le estrazioni ed è raggrupato in 4 sezioni:
- Informazioni Generali, che è la testata del file XML ed è ove risiedono le informazioni sul tipo di estrazioni effettuate;
- Parametri, ovvero i parametri utilizzati dalle query;
- Query, l'elenco delle query in formato sql con la possibilità di definire il connettore, in questo caso as400 o mysql, o query in formato php, ovvero codice php che, una volta interpretato, restituisce i record, come fosse una query in sql;
- Pagine, l'elenco delle pagine strutturate come tabelle con la possibilità di utilizzare dei cicli e la possibilità di acquisire dati da più query;
- Grafici, insieme di grafici generati tramite pChart, ottima libreria, di tipo a torta, a barre verticali o a punti, e, come per le pagine, possono fare uso di più query per confrontare i dati.

La cosa carina di questo sistema di report è che è indipendente dal formato di uscita finale, infatti attualmente scrive dei file XLS, ma non ci vorrebbe nulla a creare dei file PDF. A questo si aggiunge la capacità di gestire le dipendenze tra le pagine/grafici e le query, in modo di evitare lavoro inutile ed un'interfaccia in javascript, per far rendere conto a che punto è l'elaborazione dato che potrebbe richiedere diverso tempo.

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente. If you have a Gravatar account, used to display your avatar.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <csharp>, <diff>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <sql>, <xml>. Beside the tag style "<foo>" it is also possible to use "[foo]". PHP source code can also be enclosed in <?php ... ?> or <% ... %>.

Ulteriori informazioni sulle opzioni di formattazione

CAPTCHA
Test per verificare se la richiesta proviene da un software o meno.