Forma breve tipo Twitter:
Aiuto! L'export CSV nel Datawarehouse di dati.istat.it non funziona (le email non arrivano). Excel funziona ma è un @°#$ %( £=)(.
In formato rant tecnologico/lettura estiva:
"Delle perduranti afflizioni che Excel infligge al libero movimento degli Open Data."
Il portale di business intelligence ISTAT permette di tagliare a fette i dati e riproiettarli secondo le nostre esigenze. E' un pezzo di software 'importato' da OECD e se si tratta di tagliare, proiettare e visualizzare i dati ISTAT sul web fa il suo porco dovere.
E' quando occorre esportare i dati che sono dolori.
Tra i formati proposti ci sono: PC-Axis e SDMX, CSV, Excel.
Il primo formato PC-Axis, è testuale, usato in un
programma di scambio statistico ideato in Svezia, è una specie di CSV, dice l'articolo linkato, che indica anche un modo per fare un parser rapido, c'è poi un app in Node che converte da PX a CSV. Ma c'è che io sono pigro e se c'è il CSV vorrei il CSV, anche perché l'export ci mette una vita (minuti) per tirar fuori una tabella di 8200x3 numeri. Poi se va male c'è Excel.
Il secondo formato SDMX è IL FORMATO, ci sono anche i
Web Service, per l'integrazione delle applicazioni, super-mega-fichissimo. Io per ora non ho tempo né voglia di studiare, scrivere o trovare un'integrazione. Lo so sono molto pigro, sono fatto male. Inoltre ODIO l'XML e diffido di chiunque porti
esempi in C#, VB .NET, PHP e Java, mi fa pensare a Google Code o Source Forge, polverosi magazzini abbandonati lungo vecchie strade sterrate, ma sono io, pigro, snob, , poi c'è il CSV, e comunque se va male c'è Excel.
[Poi magari un'occhiata a
PandaSDMX per importare dati da web service SDMX direttamente in Pandas la dò, che mi risolve la vita.]
La procedura di export di un file CSV mi chiede la mail e mi dice "Stai sereno, che quando il CSV sarà pronto, ti arriverà una mail da ISTAT".
... Forse non diceva proprio così, ma il senso, e soprattutto il risultato finale è lo stesso. Mail da ISTAT non arrivano, né in Inbox, né in Spam.
Vabbé, è andata male, però c'è Excel.
Dai che c'è Excel!
Dai dai dai dai... che la chiudiamo qui e ce ne andiamo tutti a casa (cit.).
Il file .xls scaricato lo potrebbe aprire chiunque, con il suo Windows XP, 7, Vista o 10. Ma appunto chiunque può, io con le librerie python xlrd o openpyxl, usate da Pandas, no. Perché?
Perché il file è un .xls, ma in realtà è in formato Microsoft Excel 2003 XML (.xml). Che è una roba strana che Microsoft ha adottato tra il formato Microsoft Excel 1997-2003 (.xls, binario) e il formato Microsoft Excel 2007-2013 (.xlsx, xml compressi).
Le librerie python supportano i formati .xlsx e .xls, che sono i più comuni, ma non il 2003 .xml, che evidentemente, a parte il Datawarehouse di Istat, non è molto usato, e io sono troppo pigro e forse un po' cinico, per partecipare con entusiasmo al movimento OpenSource e scrivere proprio quel pezzo che manca. Se ci sono volontari, fatemi sapere.
OpenOffice, LibreOffice?
L'ultima versione di LibreOffice, la 5.3 lo apre, la 5.0 no.
Lo apre sì, ma con estrema fatica; ~1 minuto, su un MacBookPro i5 con 16GB di RAM, che potrebbe essere un tempo sufficiente per fare il rendering 3D con AutoCAD, del nuovo stadio della Roma.
Quindi? Di che mi lamento?
1. Essendo fondamentalmente stupido, ci ho messo più di due ore a capire tutto questo.
2. Se devo lavorare su 50 'proiezioni' e ho messo qualcuno a fare estrazioni dal Datawarehouse, quel qualcuno, quando ha trovato l'export in XLS, ha pensato: è fatta. Ora quei 50 files, invece di darli in pasto a una procedura ETL automatica (le librerie), li devo processare a mano, aprire con LibreOffice, salvarli in CSV (o in un XLS più leggibile dalle librerie). Visti i tempi di apertura di un singolo file, non mi pare una soluzione percorribile, scalabile o ripetibile nel tempo.
3. Possibile che non ci sia nessuno che avverta ISTAT che le email dell'export CSV non funzionano? E' un problema noto? E' difficile inviare email?
4. La soluzione breve non c'è. Tocca studiare i web service e integrarli in una procedura ETL con Pandas. Così magari si evita qualsiasi lavoro "manuale".
5. C'è qualcuno che ha già sbattuto la testa su tutto questo e conosce un modo sano per uscirne?