covid-19

Opendata e Opensource per statistiche sul COVID-19

Nooo! Ancora un altro sito di statistiche sul COVID-19. Ebbene si, ho messo in piedi in poco tempo (un paio di giorni) un altro sito che mostra statistiche sulla diffusione del COVID-19. So benissimo che ve ne è la necessità, ma volevo semplicemente fare un esercizio di stile utilizzando solo opendata e strumenti opensource.

In quest'articolo elenco l'insieme di strumenti opensource utilizzati per raggiungere lo scopo.

Opendata

Per ora ho utilizzato solo gli opendata pubblicati dalla Protezione Civile Italiana su GitHub. In futuro, potrei divertirmi ad aggiungerne altri.

Metabase

Questa è una magnifica soluzione opensource di business intelligence. Semplice da installare e con un curva di apprendimento estremamente rapida.

Si basa su un concetto molto semplice: poni da domanda ed ottieni la risposta.

Con metabase è possibile realizzare dashboard con questions (grafici e tabelle). Ogni elemento può essere condiviso pubblicamente ed incluso in qualunque web application (nel mio caso l'ho inserito in una pagina di wordpress).

All'interno delle dashboard è possibile inserire filtri che permettono di agire su una o più question. Nel mio caso, ad esempio, ho inserito il filtro Regione con cui è possibile selezionare un insieme di regioni di cui analizzare i dati aggregati nei grafici sottostanti.

Può lavorare con svariati database: Amazon Redshitf, BigQuery, Druid, Google Analytics, H2, MongoDB, MySQL (e MariaDB ovviamente), PostgreSQL, Presto, Snoflake, Spark SQL, SQL Server e SQLIte.

Infine permette di schedulare ed inviare dashboard tramite e-mail o Slack.

metabase

GNU/Linux

Ve lo devo presentare? No dai, questo si presenta da solo. Dico soltanto che la distribuzione scelta come sistema operativo è Ubuntu Server 18.04 LTS.

Git

E' probabilmente lo strumento di controllo di versione più utilizzato dagli sviluppatori di tutto il mondo. Creato da Linus Torvalds per versionare il codice di Linux si è diffuso rapidamente tanto da essere adottato persino da Microsoft per il versionamento del codice delle sue applicazioni.

Su Git si basano moltissime famose piattaforme online dedicate al versioning: GitHub, GitLab, BitBucket e molte altre.

Nel mio caso lo utilizzo semplicemente per schedulare il download degli opendata (git pull) esposti sul repository di GitHub.

Pentaho Data Integration di Hitachi (CE)

Potente ETL (Extract, Transform and Load) che, come dice l'acronimo, permette di elaborare dati da svariate fonti (CSV, fogli di calcolo, qualunque database relazionale tramite JDBC driver, database No SQL, Salesforce, JSON, XML, YAML, webservices e molto altro), introdurre eventuali logiche di trasformazione ed infine caricare i dati su numerose tipologie di destinazione, tipicamente un qualunque database ma potrebbe anche essere una destinazione simile alle fonti elencate precedentemente.

Nel mio caso l'utilizzo è semplicissimo: leggo i CSV degli opendata e scrivo i dati in un database PostgreSQL. Il tutto è fatto all'interno di un job eseguito dopo la git pull nello script bash schedulato.

Un esempio di trasformazione di PDI che non c'entra niente con il mio caso che è decisamente molto più semplice:

Pentaho Data Integration

PostgreSQL

Come database ho utilizzato PostgreSQL, semplicemente lo adoro. E' un database eccezionale.

Probabilmente è il database cresciuto maggiormente negli ultimi anni in termini di utilizzo, tanto che nell'indagine 2019 di Stackoverflow tra i suoi iscritti (principalmente sviluppatori) risulta secondo dopo MySQL (altro database opensource) con il 36,3% di share tra gli sviluppatori professionisti (era il 23,3% nel 2017).

WordPress

Come per GNU/Linux anche questa soluzione non ha bisogno di presentazioni. E' il CMS (Content Management System) più diffuso e famoso al mondo.

No ho fatto altro che creare una semplice pagina (che diciamolo, andrebbe vestita un po' meglio, ma non era il mio obiettivo) in cui "embeddare" una dashboard di Metabase.

Docker

Anche Docker non ha bisogno di poche presentazioni. Lo utilizzo per gestire alcuni servizi in conteiner.

Conclusione

Per concludere, a parte il COVID-19 che prima o poi sconfiggeremo (think positive), questa è solo l'ennesima dimostrazione della bontà di molti strumenti opensource con i quali si possono realizzare soluzioni di altissimo livello.

Le soluzioni ci sono, non vi resta che iniziare ad usarle e supportarle 😉

(Letto 389 volte di cui 1 negli ultimi 30gg)
twitterlinkedinmailby feather

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *