I dati di soldipubblici.gov.it sul tuo portale open data
I portali open data hanno sempre bisogno di essere alimentati con dataset nuovi e soprattutto aggiornati. Attivare quei meccanismi che consentono di generare file aperti e allo stesso aggiornati, nella Pubblica Amministrazione, è un processo che molte volte richiede tempo e soprattutto un cambio di mentalità; è un discorso questo, che si sente spesso nella PA.
La comunità di opendatasicilia mi ha spesso insegnato che, è mostrando la potenzialità dei dati aperti con il riuso, che quei meccanismi di interesse si possono sbloccare, attirando nuove idee e nuovi dati. Avere quindi dati aperti, aggiornati e attendibili, è cosa rara e complicata, ma quando ne puoi discutere un po’ in gruppo e alimentare le tue fantasie e le tue idee con uno script di poche righe ma efficientissimo, allora la vita sembra prendere una piega del tutto diversa!
Sotto la spinta delle mie esigenze lo script (creato da Andrea Borruso), originariamente nato per scaricare i dati di un singolo ente da soldipubblici.gov.it, ha consentito la pubblicazione di una dataset sul portale open data della Città Metropolitana di Napoli, in due formati (csv e json), con aggiornamento automatico settimanale.
Ma andiamo per gradi.
Il sito soldipubblici.gov.it consente di consultare e scaricare i dati della spesa pubblica ricercando un ente.
È possibile fare il download del CSV, al click su un pulsante, ma nel mio caso avevo bisogno di automatizzare questo processo.
Lo script (accessibile qui) è scritto in bash, sfrutta le utility httpie, jq e csvkit e funziona in questo modo:
- si imposta il codice dell’ente di interesse (i codici dei vari enti si trovano qui)
- il dato viene scaricato in formato JSON, e le cifre spese espresse in origine come numero intero (è stata rimossa la parte decimale, moltiplicando per 100), vengono riportate a numero decimale;
- il file così trasformato viene salvato in JSON e CSV.
Alla versione originale dello script volevo aggiungere la possibilità di rimuovere quei record in cui le colonne con i valori numerici sono non valorizzate (sono “null”). E allora mi è stato suggerito di usare csvgrep, che può filtrare le righe di una tabella a partire da un’espressione regolare ed è stata aggiunta la riga:
<./input.csv csvgrep -c "imp_uscite_att,importo_2013,importo_2014,importo_2015,importo_2016,importo_2017" -r "^$" -i >./output.csv
Lo script viene eseguito su un server del mio Ente, e l’output è accessibile dall’esterno pubblicamente in http.
Essendo i dati di “soldipubblici” aggiornati settimanalmente, nasceva infine l’esigenza di doverne automatizzare il download senza la necessità di un intervento umano. Così, sempre su indicazioni apprese nello scambio in mailing list, ho modificato il file /etc/crontab (che negli ambienti Linux consente di impostare delle operazioni da eseguire in modo pianificato) aggiungendo:
0 4 */7 * * root /var/progetti/soldipubblici/getspscript.sh > /dev/null 2&1
La stringa “0 4 */7 * *” corrisponde a “ogni 7 giorni alle 4 di mattina”.
Verificato che il tutto funzionasse correttamente e ottenuti i link statici dei file creati dallo script, ho provveduto a caricarli in un dataset sul portale ckan degli Open Data della Città Metropolitana di Napoli.
È nato così il primo caso d’uso specifico dello script SpesaCron, dove grazie all’estrazione di due file csv e json dai dati di soldipubblici.gov.it è stato possibile pubblicare un dataset contenente tutte le voci di spesa di una Pubblica Amministrazione, automaticamente alimentato dallo stesso sito e con frequenza di aggiornamento settimanale.